Android: Alternative à onSensorChanged? pas de données de l'accéléromètre lorsque le téléphone est couché sur le dos sur une table (quand aucun mouvement)
-
24-10-2019 - |
Question
Je suis en utilisant ce code pour obtenir les données d'accéléromètres. Quand je suis en mode DDMS pour vérifier ce que ma déclaration d'impression est en cours, j'ai remarqué que rien est imprimé lorsque le téléphone ne se déplace pas. c'est à dire. c'est sur la table. Je pense que la raison est que onSensorChanged n'est pas appelé lorsque le téléphone ne bouge pas, puis son appelé lorsque le téléphone commence à se déplacer à nouveau. Si je veux des données de capture indépendamment du fait que le téléphone est en mouvement ou non, dois-je utiliser une autre fonction? Toutes les solutions de rechange? ou une solution? Toute aide appréciée.
Merci!
public void onSensorChanged(SensorEvent event) {
StringBuffer buff = new StringBuffer();
buff.append(String.valueOf(event.timestamp));
buff.append(comma);
buff.append(String.valueOf(event.values[0]));
buff.append(comma);
buff.append(String.valueOf(event.values[1]));
buff.append(comma);
buff.append(String.valueOf(event.values[2]));
mCurrentFile.println(buff.toString());
mCurrentFile.write(buff.toString()+ '\n');
System.out.println( "**" + buff.toString());
}
La solution
Vous pouvez avoir un fil d'écoute aux changements de capteurs (c.-à-onSensorChanged()
qui va écrire les données dans les variables globales) et un autre thread en cours d'exécution d'une minuterie (regardez postDelayed
, http://developer.android.com/reference/android/os/Handler.html ) qui lira parfois ensemble. S'il n'y a aucun changement, il sera lu à nouveau les mêmes données. Facile, propre et agréable à la batterie.
Autres conseils
Si cette méthode est appelée uniquement lorsque « les changements de capteurs », essayez d'enregistrer les valeurs que vous lisez quand il est exécuté. Si la méthode est pas appelé cela ne signifie pas que les valeurs sont les mêmes?