【发布时间】:2017-09-23 03:37:22
【问题描述】:
目前我正在使用 Arduino 开发空气质量监测设备原型。该设备集成了三个气体传感器,可通过 HC-05 蓝牙模块将数据发送到我的 Android 应用程序。我能够实时接收值并使用 textview 显示它,但不知道必须使用 SQL 数据库将数据保存在 android 设备本身中。我已经尝试了我在其他地方找到的所有教程,但它只在单击按钮时保存数据,但即使在尝试 buttonclick 方法时,应用程序也会崩溃(相反,我想在每次应用程序启动时在后台连续保存数据)。我对android开发很陌生,请帮助我。
目前我需要保存(时间/日期、gps 坐标、sensor1 数据、sensor2 数据、sensor3 数据、整体空气质量)。
对不起,已经删除了SQL存储部分,这里是从Arduino获取实时数据的代码。
//data received from Arduino as #data+data+data+~
bluetoothIn = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == handlerState) { //if message is what we want
String readMessage = (String) msg.obj; // msg.arg1 = bytes from connect thread
recDataString.append(readMessage); //keep appending to string until ~
int endOfLineIndex = recDataString.indexOf("~"); // determine the end-of-line
if (endOfLineIndex > 0) { // make sure there data before ~
String dataInPrint = recDataString.substring(0, endOfLineIndex);
if (recDataString.charAt(0) == '#') //if it starts with # we know it is what we are looking for
{
dataInPrint = dataInPrint.substring(1, dataInPrint.length() - 1); //remove the Hash tag symbol
StringTokenizer st = new StringTokenizer(dataInPrint,"+");
String sensor0 = st.nextToken();
String sensor1 = st.nextToken();
String sensor2 = st.nextToken();
showMq135.setText(sensor0); //update the textviews with sensor values
showMq9.setText(sensor1);
showDust.setText(sensor2);
p1 = (ProgressBar) findViewById(R.id.progressBarMq135);
int p135 = Integer.parseInt(sensor0);
p1.setMax(100);
p1.setProgress(p135);
p2 = (ProgressBar) findViewById(R.id.progressBarMq9);
int p9 = Integer.parseInt(sensor1);
p2.setMax(100);
p2.setProgress(p9);
p3 = (ProgressBar) findViewById(R.id.progressBarDust);
int pDust = Integer.parseInt(sensor2);
p3.setMax(100);
p3.setProgress(pDust);
if (p135 >= 51 || p9 >= 51 || pDust >= 51) {
showAirQuality.setTextColor(Color.RED);
showAirQuality.setText("Hazardous/Very unhealthy");
sound.start();
}
else {
showAirQuality.setTextColor(Color.BLUE);
showAirQuality.setText("Normal/Intermediate");
}
}
recDataString.delete(0, recDataString.length());//clear all string data
}
}
}
};
【问题讨论】:
-
我建议您包含Minimal, Complete and verifiable example 的代码。这应该包括从 logcat 中提取的相关错误、来自活动的相关代码和 databasehelper(即作为 SQLiteOpenHelper 的子类的类)或您用于创建数据库的任何其他方法,如果有的话用于存储数据的代码。
-
关于 SQL,您的意思是要将数据保存在 SQLite 数据库中吗?如果不确定,我建议您阅读Appropriate Uses For SQLite,底部有一个有用的清单。 SQL 本身不是数据库管理系统,而是一种用于访问数据库的语言。例如SQLite 使用 SQL,MySQL 使用 SQL 等等。
标签: android sql database bluetooth air