Comment puis-je déterminer si un périphérique Android a été déplacé? Par "déplacé", je veux dire que s'il reste allongé sur une table et que quelqu'un le ramasse, je peux détecter qu'il a bougé. Je pensais utiliser le capteur de gyroscope, mais je ne suis pas sûr si c'est la meilleure solution.Déterminez si le périphérique a été déplacé
Répondre
Je ne pense pas que vous ayez beaucoup de choix si vous voulez détecter un mouvement minimal. Le capteur gyroscope/accéléromètre est le chemin à parcourir. Même là, vous devez ajouter un peu de filtrage, car l'accéléromètre a une certaine hésitation.
Le GPS n'est pas assez précis pour être utilisé pour remarquer le mouvement de la table à la main.
La surveillance du capteur de proximité peut être utile, mais tout ce qui le bloque est déclenché, et il ne vous dit vraiment pas si le téléphone est en mouvement.
Si vous voulez consommer beaucoup de batterie, utilisez l'appareil photo. Diffusez une entrée via un filtre, qui détermine si l'image est en mouvement.
Vous pouvez utiliser l'accéléromètre pour résoudre ce problème. S'il n'y a pas de force externe sur l'appareil, la somme vectorielle des valeurs du capteur de l'accéléromètre sera seulement la gravité. S'il y a un changement dans le vectorsum de la gravité, alors il y a une force. Si cette force est significative, vous pouvez supposer que le périphérique est en mouvement.
Si la somme vectorielle est égale à la gravité avec +/- seuil, sa stabilité sur la table.
code ressemblera ci-dessous, (Note: MovingAverage ci-dessous des moyens de déplacement moyen de 50 échantillons de l'accéléromètre)
bool IsDeviceStill(const sensors_event_t& event)
{
if (event.type == SENSOR_TYPE_ACCELEROMETER) {
const vec3_t acc(event.data);
/*Avoiding square root for better performance*/
float vecsum = acc.x*acc.x + acc.y*acc.y + acc.z*acc.z;
vec3_t variance = mVariance->movingAverage(vecsum);
vec3_t var = mOffsetAvg->movingAverage(abs(variance.x - vecsum));
ALOGE("Current variance x:%f AvgVarianc:%f ",variance.x,var.x);
if(var.x < 2) /*Threshold is 2, Standard deviation should less than 2 */
mDeviceStill = true;
else
mDeviceStill = false;
}
ALOGE("%s Device is still:%d\n", __FUNCTION__, mDeviceStill);
return mDeviceStill;
}
- 1. Déterminez si une connexion a été rompue
- 2. Déterminez si la page a été actualisée
- 3. Déterminez si un événement a déjà été attaché
- 4. Déterminez si l'application a été lancée à partir d'AppleScript
- 5. Déterminez où une fonction a été exécutée?
- 6. Tableau déformé lorsque GIF a été déplacé
- 7. Déterminez quel contrôle a été ouvert sur le menu contextuel
- 8. gdata youtube api 302 'Le document a été déplacé'
- 9. Le document a été déplacé ici. en Perl
- 10. Déterminez si le fichier .class a été compilé avec les informations de débogage?
- 11. Comment vérifier si le format de fichier .mdb a été déplacé dans WinForms?
- 12. Comment lire un fichier spécifique s'il a été déplacé
- 13. Déterminez si un tableau a changé après le tri
- 14. répertoire courant après a été déplacé par un autre utilisateur
- 15. Comment déterminez-vous quel SKSpriteNode a été cliqué?
- 16. Déterminez quel bouton a été enfoncé dans Tkinter?
- 17. JQuery .sortable ("cancel") - comment obtenir l'objet qui a été déplacé?
- 18. Sélection d'un élément qui a été déplacé vers
- 19. Android: Après la suppression, editText qui a été déplacé disparaît
- 20. Déterminez si une exécution java à partir d'une autre application Java a été effectuée avec succès
- 21. Déterminez si EAR a été déployé dans WebLogic Server à l'aide de WLST?
- 22. Déterminez si la console.log() de Firebug a été appelée n'importe où sur une page
- 23. Subversion SVN: Le référentiel a été déplacé Le référentiel a été déplacé de manière permanente à XXX s'il vous plaît relocaliser
- 24. Déterminez si DateTime a été créé dans l'assembly Version of .NET au moment de la compilation?
- 25. Déterminez si une URL d'image distante ou une image a été chargée dans CarrierWave (RoR)
- 26. Déterminez si un canevas a été inséré dans chaque page dans Word
- 27. Détecter si le fichier a été importé
- 28. Dectect si le fichier a été téléchargé
- 29. Comment détecter si un appareil Android a été touché ou déplacé
- 30. Comment puis-je déterminer si un élément de la bibliothèque a été déplacé/renommé?
Salut, avez-vous obtenu une solution? J'essaie de faire la même chose avec un service d'arrière-plan, mais l'accéléromètre ne fonctionne pas lorsque l'écran est éteint. – Nitish