2010-11-10 49 views
0

Je suis en train de développer une application qui utilisera les données du magnétomètre pour l'interaction, en déplaçant un aimant vers et loin du téléphone. Cela fonctionne très bien (assez), mais il semble que quand je déplace l'aimant trop près du téléphone, un retard notable se produit, et ces messages sont recracher dans le journal:Magnétomètre entraînant un décalage?

Tag message AK8973 hRet = AKSC_HOF_DSS_START AK8973 hRet = AKSC_HOF_DSS_REQUEST AK8973 hRet = AKSC_HOF_DSS_REQUEST AK8973 hRet = AKSC_HOF_DSS_REQUEST AK8973 hRet = AKSC_HOF_DSS_REQUEST AK8973 hRet = AKSC_HOF_DSS_REQUEST AK8973 hRet = AKSC_HOF_DSS_REQUEST AK8973 hRet = AKSC_HOF_DSS_REQUEST AK8973 hRet = AKSC_HOF_DSS_COMPLETE

Cela peut également être démontré par exemple dans l'application "Compass 3D" qui est disponible sur le marché. Il suffit de déplacer un casque en contact direct avec le téléphone, cela produira un décalage d'au moins 4 à 500 msec, et les messages ci-dessus seront imprimés sur Logcat. C'est sur mon HTC Hero.

Des idées sur ce qui cause ce retard, ou comment contourner ce problème? Cela se produit-il aussi sur d'autres modèles de téléphone?

Toutes les idées et/ou théories vous seront utiles!

+0

intensité du champ, hystérésis? –

Répondre

0

Eh bien, l'AK8973 est le magnétomètre:

AK8973 - 3-axis Electronic Compass - Asahi Kasei Microsystems

On dirait qu'il se plaint sur le terrain fort, peut-être coups de pied au large d'une routine d'étalonnage?

Je note cette définition dans le code:

#define AK8973B_PERIOD 500000000 //0.5 sec

+0

Cela semble très plausible! Mais n'y a-t-il aucun moyen de contrôler cette valeur à partir d'un logiciel fonctionnant sous Android? Dans ce cas, il n'y a pas de moyen optimal de contrôler le téléphone avec un aimant, ce qui serait autrement possible. – MrJohs