Actuellement, je développe un prototype de dispositif de surveillance de la qualité de l'air en utilisant Arduino. L'appareil intégré avec trois capteurs de gaz qui enverra les données sur le module Bluetooth HC-05 à mon application Android. Je suis en mesure de recevoir les valeurs en temps réel et de l'afficher en utilisant textview mais je n'ai aucune idée de devoir enregistrer les données dans l'appareil Android lui-même en utilisant la base de données SQL. J'ai essayé tous les didacticiels que j'ai trouvés ailleurs, mais il enregistre seulement les données sur un clic, mais même en essayant la méthode buttonclick, l'application plante (à la place, je veux enregistrer les données en continu, chaque fois que l'application démarre). Je suis très nouveau pour le développement Android, s'il vous plaît aidez-moi.Comment enregistrer les données reçues de la carte Arduino dans Android en utilisant la base de données SQL?
Actuellement, je dois enregistrer (date/heure, coordonnées GPS, données du capteur1, données du capteur2, données du capteur3, qualité globale de l'air).
Je suis désolé, déjà supprimé la partie de stockage SQL, voici le code pour obtenir des données en temps réel à partir d'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
}
}
}
};
Je vous suggère d'inclure du code pour un [minimal, Exemple complet et vérifiable] (https://stackoverflow.com/help/mcve). Cela devrait inclure, l'erreur par l'extrait pertinent du logcat, le code relavant de l'activité et le databasehelper (c'est-à-dire la classe qui est une sous-classe de SQLiteOpenHelper) ou toute autre méthode que vous utilisez pour créer la base de données code que vous utilisez pour stocker les données. – MikeT
Concernant SQL, voulez-vous dire que vous voulez sauvegarder les données dans une base de données SQLite? Si vous n'êtes pas sûr, alors je vous suggère de lire [Utilisations appropriées pour SQLite] (https://www.sqlite.org/whentouse.html), il y a une liste de vérification utile en bas. SQL lui-même n'est pas un système de gestion de base de données mais plutôt un langage utilisé pour accéder aux bases de données. par exemple. SQLite utilise SQL, MySQL utilise SQL et ainsi de suite. – MikeT