2011-08-08 26 views
13

Estoy desarrollando una aplicación para Android para mi proyecto, necesito encontrar la temperatura ambiente como parte de ella. Estoy usando el modelo Droid 2 A955 para probar.¿Hay alguna aplicación de Android para encontrar/detectar la temperatura ambiente mediante programación en el código de Android?

Mis preguntas son:

  1. Qué sensores tienen que estar disponibles en mi teléfono Android para llevar a cabo esta tarea detección de la temperatura?

  2. Puede Sensor de luz ambiental (disponible en Droid 2) ayuda para hacer esta tarea ?

  3. ¿Hay alguna API de Android para encontrar/sentido temperatura ambiente mediante programación en mi código androide?

Gracias de antemano por su ayuda.

+0

# 2 está bien inútil o bastante abierta terminó. Con algunos elementos externos, casi cualquier cosa podría "ayudar", por ejemplo, podría apuntar la cámara a un termómetro u orientar una luz que codifica la temperatura en el sensor de luz. –

+0

Sí, estoy de acuerdo que el número 2 no está relacionado. Pero, dudaba de la aplicación "Thermo" en el mercado de Android, ¿cómo exactamente esta aplicación está dando la temperatura de la habitación. ¿Es una aplicación falsa? "http://www.appbrain.com/app/thermo/com.antonio.thermo2.activity" – tinku

+0

¿Por qué necesita una API? ¡Usa el sensor de hardware! EDIT Acabo de descubrir que el teléfono de mi madre (Galaxy S4) es el único sensor de temperatura de apoyo. – Confuse

Respuesta

12

Para responder a las tres preguntas de una sola vez, no, no lo creo. Puede haber un sensor de temperatura en dispositivos Android, pero detecta la temperatura de la batería, no la temperatura exterior. No proporcionaría un indicador preciso para ese propósito.

No estoy seguro de cómo un sensor de luz ambiental podría ayudar con la temperatura, puede ser muy brillante pero podría estar en una habitación con aire acondicionado.

Por último: hay muchos ejemplos de aplicaciones de temperatura, pero de nuevo, la mayoría están relacionadas con la batería.

Editar:Official documentation says:

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.)

Actualización:

nivel API 14 (es decir, Android 4.0) en adelante, se ha añadido soporte para la medición de la temperatura ambiente (a través de TYPE_AMBIENT_TEMPERATURE).[Android doc reference]

Esto, sin embargo, funcionará solo en dispositivos con sensor de temperatura ambiente.

+0

Gracias por la referencia, ahora entiendo el uso del sensor de temperatura en droid 2. – tinku

+0

Hola, su primer enlace ya no funcionará. –

2

Querrá echarle un vistazo al Sensor reference docs. Sin embargo, no creo que haya sensores de temperatura accesibles en la mayoría de las computadoras de mano.

2

Eche un vistazo a Sensor class en la documentación.

que tiene que hacer algo en la línea 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) { 
} 
} 

Esto debería dar acceso a los sensores de temperatura en su propia actividad.

Juega con esto y mira lo que puedes encontrar. La documentación tiene excelentes ejemplos para otros tipos de sensores, el sensor de temperatura debe ser incluso más simple que la mayoría de los provistos.

Espero que esto ayude!

+1

¿Puede indicar que esto proporciona una temperatura ambiente y no una CPU o temperatura de la batería? –

+2

Esta es, de hecho, la temperatura de la batería/CPU. Android API 14 (Ice Cream Sandwich) ahora es compatible con Sensor.TYPE_AMBIENT_TEMPERATURE. – Tom

11

Parece que hay a new sensor in the API.

Este es para la temperatura ambiente, pero es probable que solo haya algunos dispositivos implementados.

ACTUALIZACIÓN: parece que el Galaxy S4 es el primer teléfono integración de sensor de temperatura ambiente

+2

Solo disponible 4.0 y más. – Flynn81

1

Puede utilizar el Wireless iCelsius del pedal de arranque. Tiene una API. Es imposible medir con precisión la temperatura usando un sensor interno desde un SmartPhone. Siempre será de pocos grados a alto.

0

tengo la misma pregunta hace mucho tiempo. Y lo que mi encontrado es:

  • cheque this sitio oficial para el sensor de Medio Ambiente
  • este tuts para el sensor de ambiente: Temperatura ambiente (temperatura ambiente) de luz ambiente ... Tutsplus. en mi teléfono solo funciona Luz ambiental
  • ahora como sé que solo Samsung Galaxy S4 tiene temperatura ambiente. si tiene S4 busque Holo Temperatura ambiente en gg playstore.
0

prueba este:

private float temperature = 0; 

En onCreate poner wìthis código:

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); 
    } 

Y el método siguiente:

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

No es el método vejez de dejar el teléfono y un "buen" termómetro estabilizar a temperatura ambiente (unas horas) y leer tanto.

Luego colóquelo afuera en un agradable garaje invernal a unos 35 ° F para que se estabilice. Entonces reza por la linealidad.

Empírico siempre es agradable. Estoy muy interesado en la medición de una temperatura constante en una casa vacía, y esté pendiente de la caída de temperatura (o aumento !!)

Bradshaw en la bahía de Buzzards

Cuestiones relacionadas