Je suis en train d'écrire un programme et je suis capable d'obtenir la valeur du capteur de lumière et le niveau actuel de la batterie, mais seulement la valeur de la lumière change et quand le niveau de la batterie change. Y a-t-il un moyen d'obtenir ces deux valeurs à tout moment? Comme quand un utilisateur exécute mon programme, je voudrais attraper les valeurs actuelles tout de suite au lieu de devoir attendre qu'elles changent.Comment obtenir la valeur du capteur de lumière et le niveau de la batterie à tout moment pour Android?
Répondre
Si vous avez le code pour recevoir la valeur quand il change, vous pouvez stocker la valeur dans une variable et quand à chaque changement il suffit de mettre à jour la variable avec une méthode de setter. Ensuite, chaque fois que vous avez besoin de la valeur actuelle, appelez simplement la variable en utilisant une méthode getter.
Donc, si votre méthode ressemble à ce
private void monitorBatteryState() {
BroadcastReceiver battReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
context.unregisterReceiver(this);
int rawlevel = intent.getIntExtra("level", -1);
int scale = intent.getIntExtra("scale", -1);
int status = intent.getIntExtra("status", -1);
int health = intent.getIntExtra("health", -1);
int level = -1; // percentage, or -1 for unknown
if (rawlevel >= 0 && scale > 0) {
level = (rawlevel * 100)/scale;
}
setBatteryLevel(rawlevel); // setter method.
}
}
public void setBatteryLevel(rawlevel) {
batteryLevel = rawlevel;
}
public int getBatteryLevel() {
return rawlevel;
}
Vous pouvez avoir une méthode de lecture pour ramener le niveau de la batterie currentl, rawlevel
, et vous pouvez faire de même pour la valeur de capteur de lumière.
mettez cela dans votre mainActivité: c'est pour la valeur de capteur de lumière seulement parce que je vois quelqu'un d'autre a posté sur le niveau de la batterie.
SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
Sensor mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
//don't know if you can put lightSensorValue here, if not try adding it as a member field
final int lightSensorValue;
mSensorManager.registerListener(new SensorEventListener()
{
public void onAccuracyChanged(Sensor sensor, int accuracy)
{
//do something when accuracy is changed, you probably don't need this
}
public void onSensorChanged(SensorEvent event)
{
lightSensorValue = event.values[0];
}
}, mLight, SensorManager.SENSOR_DELAY_NORMAL);
EDIT: j'ai relu votre question et je vois que vous voulez l'obtenir manuellement à tout moment. Eh bien, cette valeur est mise à jour chaque fois que la valeur est modifiée, de sorte que vous obtenez toujours les informations les plus récentes.
Vous pouvez essayer de régler le retard à SensorManager.SENSOR_DELAY_FASTEST
et le taux de rafraîchissement sera beaucoup plus rapide.
- 1. obtenir le niveau de la batterie au widget android
- 2. Désactiver le capteur de lumière pendant l'appel - Android
- 3. obtenir le niveau de la batterie en Java
- 4. Comment programmer le niveau actuel de la batterie avec COCOA
- 5. Comment obtenir des statistiques de batterie dans Android à l'exécution?
- 6. Obtenir la température de la batterie sur Android
- 7. Comment obtenir la durée possible du temps d'inactivité du téléphone en fonction de son niveau de batterie actuel
- 8. Android: service pour la consignation gps/capteur
- 9. Comment obtenir l'état de la batterie?
- 10. Obtenir les données du capteur de la carte mère
- 11. Capteur de direction Android
- 12. Capteur de lumière sur le Nexus One ne renvoie que deux valeurs distinctes
- 13. Comment obtenir la valeur de la colonne dynamiquement ajoutée de datagridview au moment de la publication
- 14. Android vie de la batterie XMPP
- 15. Obtenez le niveau de la batterie avant récepteur de radiodiffusion répond pour Intent.ACTION_BATTERY_CHANGED
- 16. Comment construire un simulateur de capteur pour Android?
- 17. Le niveau de batterie ne sera pas mis à jour
- 18. Obtenir l'état de la batterie à partir de J2ME
- 19. rails de temps économies utc_to_local et la lumière du jour
- 20. comment obtenir la valeur de la valeur du champ caché?
- 21. etags et la batterie de serveurs
- 22. Accéder à l'état de la batterie de la souris et du clavier via l'API
- 23. Comment puis-je obtenir la valeur de l'emplacement à partir du GPS et du GPRS?
- 24. La valeur du local ou argument « x » est impossible à obtenir à ce moment
- 25. Obtenez le niveau de la batterie avec une précision supérieure à 5%
- 26. Définir, obtenir du texte et de la valeur dans la vue listitem dans Android
- 27. Un collecteur de données de capteur de fond sous Android
- 28. Boîte de message apparaît à tout moment
- 29. comment puis-je obtenir la vue la plus haute à tout moment dans iphone sdk4?
- 30. Bibliothèque C# wiimote - calcul de la distance entre la barre du capteur et le wiimote
qui ne fonctionnerait pas pour moi et après avoir fait des recherches, je l'ai trouvé à ce sujet: Il n'y a pas de android.os.SystemProperties dans le SDK actuel. C'est une classe dans le code source pour une utilisation par le firmware uniquement. Existe-t-il un autre moyen d'obtenir la valeur du capteur de lumière et le niveau de la batterie sans attendre qu'il change? – John
J'ai mis à jour ma réponse, c'est une approche alternative s'il n'y a pas de moyen * direct * pour renvoyer la valeur à un moment donné. –