2010-11-04 16 views
2

J'écris donc une application qui détecte les mouvements et doit être calibrée pour divers mouvements. Au cours des derniers jours, j'ai remarqué que juste après un SensorEventListener est enregistré, onSensorChanged(SensorEvent) jette incomplète (et donc erronée) .values[]. Ce comportement détraque mon processus d'étalonnage, et la quantité de force qui signifie un mouvement est trop élevée. J'ai vérifié que c'est le cas pour toutes les applications d'enregistrement d'accéléromètre que j'ai téléchargées et testées, donc ce n'est pas une erreur spécifique à mon code. Je pense que cela pourrait être causé par un mauvais matériel (peut-être spécifique à mon moto droid 1), ou un bug logiciel par la ROM personnalisée que j'utilise (Simply Stunning 4.9, source Froyo 2.2.1.)Android - accéléromètre sur motodroid 1 signale des valeurs incorrectes au premier abord?

Exemple:

sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
SENSOR_DELAY); 
.... 
onSensorChanged(SensorEvent event){ 
    // event.values[0] = 0.0 
    // event.values[1] = -0.47 
    // event.values[2] = 0.0 
} 
.... 
onSensorChanged(SensorEvent event){ 
    // event.values[0] = 0.08 
    // event.values[1] = -0.47 
    // event.values[2] = 0.0 
} 
.... 
onSensorChanged(SensorEvent event){ 
    // event.values[0] = 0.08 
    // event.values[1] = -0.47 
    // event.values[2] = 10.1 
} 

Comme vous pouvez le voir, il faut souvent 2 lectures avant que toutes les valeurs correctes soient accessibles.

Est-ce que quelqu'un peut confirmer ou infirmer ce comportement sur le moto droid 1 ou un autre téléphone? Pensez-vous qu'une bonne solution consiste simplement à laisser tomber les 2 ou 3 premières lectures afin qu'elles ne déforment pas mon étalonnage?

+0

Expérience similaire avec deux droïdes motorola. – luser845

Répondre

2

Cela me semble raisonnable. Peut-être que vous pourriez enregistrer votre auditeur au début avec le délai le plus rapide afin que vous obteniez ces quelques mauvaises lectures rapidement, puis ré-enregistrez-vous avec votre taux de mise à jour désiré pour votre étalonnage. Vous pouvez utiliser deux auditeurs différents, le premier élimine le crud, puis se désinscrit et enregistre l'autre (bon).