2015-04-20 1 views
0

Je cherche un moyen d'obtenir des données de capteurs (en particulier Light Sensor) rapidement, disons, le taux d'échantillonnage à 500Hz ou plus. Je suis totalement nouveau sur Android. J'ai Nexus 5 et Nexus 7 à utiliser. Est-ce possible sans l'accès au code du pilote? Merci d'avanceLire les données de capteur rapidement dans Android

+0

Qu'avez-vous essayé? Et pourquoi devrait-il être rapide? et vous avez besoin d'une autorisation manifeste. –

+0

Cela ne semble pas possible, sauf si nous avons le code source. J'ai besoin de lire les données rapidement pour détecter le changement rapide de la lumière. Que voulez-vous dire par autorisation manifeste? Aucune suggestion? Merci beaucoup! –

+0

Stackoverflow n'est pas un site pour demander tout le code source de votre application. Et si vous êtes nouveau à Android, alors vous devriez commencer avec quelque chose de simple ... –

Répondre

1

Comme dans la documentation officielle, vous pouvez spécifier la fréquence dans registerListener.

@Override 
protected void onResume() { 
    super.onResume(); 
    mSensorManager.registerListener(this, mLight,SensorManager.SENSOR_DELAY_NORMAL); 
} 

Dans cet exemple, le retard de données par défaut (SENSOR_DELAY_NORMAL) est spécifié lorsque la méthode registerListener() est invoquée. Le délai de transmission de données (ou fréquence d'échantillonnage) contrôle l'intervalle auquel les événements de capteur sont envoyés à votre application via la méthode de rappel onSensorChanged(). Le délai de données par défaut convient pour surveiller les changements d'orientation d'écran typiques et utilise un délai de 200 000 microsecondes. Vous pouvez spécifier d'autres délais de données, tels que SENSOR_DELAY_GAME (délai de 20 000 microsecondes), SENSOR_DELAY_UI (délai de 60 000 microsecondes) ou SENSOR_DELAY_FASTEST (délai de 0 microsecondes). Depuis Android 3.0 (niveau API 11), vous pouvez également spécifier le délai en tant que valeur absolue (en microsecondes).

Le délai que vous spécifiez est seulement un délai suggéré. Le système Android et d'autres applications peuvent modifier ce délai. Comme meilleure pratique, vous devez spécifier le délai le plus long possible car le système utilise généralement un délai inférieur à celui que vous spécifiez (vous devez choisir le taux d'échantillonnage le plus lent qui réponde toujours aux besoins de votre application). L'utilisation d'un délai plus important impose une charge plus faible sur le processeur et consomme donc moins d'énergie.

Si vous voulez 500Hz, vous pouvez utiliser SENSOR_DELAY_FASTEST pour vérifier quel est le débit le plus rapide que vous pouvez obtenir. Si c'est possible avec cela, vous pouvez spécifier la valeur à un délai de 2000 microsecondes.

Il n'existe pas de méthode publique pour déterminer la vitesse à laquelle la structure de capteur envoie des événements de capteur à votre application; Toutefois, vous pouvez utiliser les horodatages associés à chaque événement de capteur pour calculer la fréquence d'échantillonnage sur plusieurs événements. Vous ne devriez pas avoir à changer le taux d'échantillonnage (délai) une fois que vous l'avez réglé. Si, pour une raison quelconque, vous devez modifier le délai, vous devrez annuler l'inscription et réenregistrer l'écouteur du capteur.

+0

Merci. Mais je ne pense pas que nous puissions simplement définir le délai à 2000 microsecondes. –

+0

@ZYang En utilisant le plus rapide, vous pouvez essayer et tester la limite supérieure, alors peut-être vous pouvez simplement utiliser cela. La documentation suggère que vous pouvez spécifier l'heure vous-même. – Anhong