目前我开发使用Arduino的空气质量监测设备的原型。该设备集成了三个气体传感器,将数据通过HC-05蓝牙模块发送到我的android应用程序。我能够实时接收值并使用textview显示它,但不知道必须使用SQL数据库将数据保存在android设备本身中。我已经试过,我发现其他地方的所有教程,但它只能保存按钮上点击数据,但尝试buttonclick方法即使在应用程序崩溃(而不是我想继续保存在后台的数据,每一个应用程序启动时)。我对android开发很陌生,请帮助我。如何保存从Android的Arduino板使用SQL数据库收到的数据?
目前我需要保存(时间/日期,GPS坐标,传感器1数据,传感器2数据,传感器3的数据,总体空气质量)。
对不起,已经删除了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
}
}
}
};
我建议你包括一个[最少的代码,完整且可验证的示例](https://stackoverflow.com/help/mcve)。这应包括,从logcat中,初步认识代码从活动和databasehelper(即类是SQLiteOpenHelper的子类)用于创建数据库或任何其他方法的相关提取物的方式,如果错误任您用来存储数据的代码。 – MikeT
关于SQL你的意思是你想将数据保存在SQLite数据库?如果不确定的话,那么我建议你阅读[宜用SQLite的(https://www.sqlite.org/whentouse.html),有在底部的有用清单。 SQL本身不是数据库管理系统,而是用于访问数据库的语言。例如SQLite使用SQL,MySQL使用SQL等。 – MikeT