web-dev-qa-db-fra.com

Existe-t-il une API Android permettant de détecter/détecter la température ambiante par programmation dans le code Android?

Je développe une application Android pour mon projet. Je dois donc trouver la température ambiante. J'utilise le modèle Droid 2 A955 pour les tests. 

Mes questions sont:

  1. Quels capteurs doivent être disponibles sur mon téléphone Android pour effectuer cette tâche de détection de la température?

  2. Le capteur de lumière ambiante (disponible dans Droid 2) peut-il aider à effectuer cette tâche ?

  3. Y at-il une api Android pour trouver/détecter la température de la pièce Par programme dans mon code Android?

Merci d'avance pour votre aide.

13
talasila

Pour répondre à vos trois questions d'un seul coup, non, je ne crois pas. Il peut y avoir un capteur de température dans les appareils Android, mais il détecte la température de la batterie, pas la température extérieure. Cela ne fournirait pas un indicateur précis à cette fin.

Je ne suis pas sûr de savoir comment un capteur de lumière ambiante aiderait avec la température, il peut être très brillant mais il pourrait être dans une pièce climatisée.

Enfin, il existe de nombreux exemples d'applications de température, mais là encore, la plupart sont liées à la batterie.

Edit:La documentation officielle dit

Device implementations MAY but SHOULD NOT include a thermometer (i.e. temperature sensor.) If a device implementation does include a thermometer, it MUST measure the temperature of the device CPU. It MUST NOT measure any other temperature. (Note that this sensor type is deprecated in the Android 2.3 APIs.)

Mettre à jour:

Niveau 14 de l'API (c'est-à-dire Android 4.0), la prise en charge de la mesure de la température ambiante a été ajoutée (via TYPE_AMBIENT_TEMPERATURE). [Référence doc Android]

Cela ne fonctionnera toutefois que sur les appareils dotés d'un capteur de température ambiante.

12
Otra

Il semble qu'il y ait un nouveau capteur dans l'API .

Celui-ci est pour la température ambiante, mais il y a probablement peu d'appareils avec cela implémenté.

UPDATE: il semblerait que le Galaxy S4 soit le premier téléphone intégrant un capteur de température ambiante

11
OriolJ

Jetez un coup d'œil à la classe Sensor dans la documentation.

Vous devez faire quelque chose dans le sens de this :

public class SensorActivity extends Activity, implements SensorEventListener {
 private final SensorManager mSensorManager;
 private final Sensor mTemp;

 public SensorActivity() {
     mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
     mtemp = mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE);
 }

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

 protected void onPause() {
     super.onPause();
     mSensorManager.unregisterListener(this);
 }

 public void onAccuracyChanged(Sensor sensor, int accuracy) {
 }

 public void onSensorChanged(SensorEvent event) {
 }
}

Cela devrait vous donner accès aux capteurs de température de votre propre activité.

Jouez avec cela et voyez ce que vous pouvez trouver. La documentation contient d'excellents exemples pour d'autres types de capteurs. Le capteur de température devrait être encore plus simple que la plupart des capteurs fournis.

J'espère que cela t'aides!

2
Codeman

Vous aurez envie de consulter les Documents de référence du capteur . Bien sûr, je ne pense pas qu'il existe des capteurs de température accessibles à bord de la plupart des ordinateurs de poche.

2
Austin Hanson

Vous pouvez utiliser le iCelsius Wireless de Kickstarter. Il a une API. Il est impossible de mesurer avec précision la température à l'aide d'un capteur interne d'un SmartPhone. Il y aura toujours peu de degré à haut.

1
Kiwi44

j'ai même votre question il y a longtemps. Et ce que j'ai trouvé est:

  • check this site officiel pour le capteur d'environnement
  • ceci fonctionne pour la sonde d'environnement: Température ambiante (temp. ambiante) Lumière ambiante ... Tutsplus . sur mon téléphone uniquement travail Ambient Light
  • maintenant, comme je le sais, seul le Samsung Galaxy S4 a une température ambiante. Si vous avez S4, recherchez la température ambiante Holo sur le Play Store GG.
0
ntvfx
0
drdrej

Essaye celui-là:

private float temperature = 0;

Dans onCreate, mettez ce code:

    SensorManager mySensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    Sensor AmbientTemperatureSensor
            = mySensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
    if (AmbientTemperatureSensor != null) {
        mySensorManager.registerListener(
                AmbientTemperatureSensorListener,
                AmbientTemperatureSensor,
                SensorManager.SENSOR_DELAY_NORMAL);
    }

Et la méthode ci-dessous:

private final SensorEventListener AmbientTemperatureSensorListener
            = new SensorEventListener() {

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onSensorChanged(SensorEvent event) {
            if (event.sensor.getType() == Sensor.TYPE_AMBIENT_TEMPERATURE) {
                temperature = event.values[0];
            }
        }

    };
0
Emulk

Il existe une méthode ancestrale consistant à laisser le téléphone et un "bon" thermomètre se stabiliser à la température ambiante (quelques heures) et à lire les deux.

Puis placez-le à l’extérieur dans un garage hivernal niçois à environ 35F, laissez-le se stabiliser. Alors priez pour la linéarité. 

Empirical est toujours gentil. Je suis très intéressé par la mesure d'une température constante dans une maison vide et je veille à ce que la température baisse (ou augmente !!) 

Bradshaw à Buzzards Bay

0
Str Rev