J'ai mis en place une application qui intègre les capteurs suivants:valeurs non fiables gyroscopiques après étalonnage
- Accéléromètre
- Champ magnétique
- Orientation (dépréciée)
- Gyroscope
- Gravity
Ceci est un exemple de code de onSen Procédé sorChanged():
@Override
public void onSensorChanged(SensorEvent event) {
int type = event.sensor.getType();
if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE) {
if (type == Sensor.TYPE_GYROSCOPE) {
// Log.e(TAG, "Unreliable gyroscope");
} else if (type == Sensor.TYPE_GRAVITY) {
// Log.e(TAG, "Unreliable gravity");
}
return;
}
if (type == Sensor.TYPE_ACCELEROMETER) {
mmAcceleration = event.values.clone();
} else if (type == Sensor.TYPE_MAGNETIC_FIELD) {
mmGeomagnetic = event.values.clone();
} else if (type == Sensor.TYPE_GYROSCOPE) {
mmRotation = event.values.clone();
} else if (type == Sensor.TYPE_ORIENTATION) {
mmOrientation = event.values.clone();
} else if (type == Sensor.TYPE_GRAVITY) {
mmGravity = event.values.clone();
}
if (mmAcceleration != null && mmGeomagnetic != null
&& mmOrientation != null) {
// Handling the data ...
mmAcceleration = null;
mmGeomagnetic = null;
mmRotation = null;
mmOrientation = null;
mmGravity = null;
}
}
Les dispositifs que j'ai essayé sur le code sont HTC One S. nous avons essayé sur 3 dispositifs discrets. J'ai également calibré le G-sensor plusieurs fois et ensuite commencé l'application mais je continue à obtenir des résultats peu fiables. J'ai aussi essayé de calibrer, redémarrer le téléphone et ensuite calibrer à nouveau, ou même après le redémarrage exécuter directement mon application. Les autres capteurs fonctionnent bien. J'ai également essayé différents environnements (intérieur) et je ne suis pas proche de n'importe quelle source d'interférence.
Je ai toujours obtenir des résultats non fiables (SENSOR_STATUS_UNRELIABLE) pour Gyroscope et gravité (utilise le gyroscope) des capteurs.
Avez-vous une suggestion à propos de ce qui pourrait mal tourner?
Merci d'avance.
lecture connexes : http://www.thousand-thoughts.com/2012/03/android-sensor-fusion-tutorial/ –
Merci pour le lien, je suis au courant de ce travail. Mon problème est le event.accuracy == SENSOR_STATUS_UNRELIABLE pour le gyroscope et le capteur de gravité, pas la fusion du capteur. – npal
Et je suppose que vous avez lu: http://stackoverflow.com/questions/6256256/android-compass-seems-unreliable que je viens de réaliser est pour la boussole et non la gravité/gyro. –