2012-08-14 13 views
7
public class MainActivity extends Activity implements SensorEventListener { 
    private TextView temperaturelabel; 
    private SensorManager sensormanager; 
    private Sensor temperature; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    temperaturelabel = (TextView) findViewById(R.id.text); 

    sensormanager = (SensorManager)getSystemService(SENSOR_SERVICE); 

    temperature= sensormanager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE); 

    temperaturelabel.setText(""+temperature.getPower()); 
} 

protected void onResume() { 
    super.onResume(); 
    sensormanager.registerListener(this, temperature, SensorManager.SENSOR_DELAY_FASTEST); 
} 

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

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

public void onSensorChanged(SensorEvent event) { 
     if (event.sensor.getType() != Sensor.TYPE_AMBIENT_TEMPERATURE) return; 

     temperaturelabel.setText(""+temperature.getPower()); 
    } 
} 

Desidero ottenere la temperatura dal dispositivo.Sensore di temperatura su Android

Ho scritto questo codice e l'ho provato su HTC One X, ma non ha funzionato.

+0

È possibile pubblicare l'output o l'errore. – prayagupd

+0

niente fatto. nessun errore. nessuna notifica. nessun risultato – Furkan

+0

L'HTC One X ha persino un sensore di temperatura? – nkr

risposta

6

Una specifica di htc one x dice, sembra che questo dispositivo non abbia sensore di temperatura.

Dai uno sguardo al suo official specifications.

+0

ovv. hai ragione. grazie – Furkan

+2

C'è un'app nel mercato Android chiamata "Andro Sensor" che ti darà le informazioni sui sensori disponibili e non disponibili per il tuo dispositivo. Prova – AndroidCrazy

1

Al momento, solo pochi dispositivi dispongono di un sensore di temperatura (ad esempio, Samsung S4).

Si dovrebbe sempre verificare se il sensore è disponibile, vale a dire, {

temperatureSensor = sensormanager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE) 
if (temperatureSensor != null) { 
    /* register listener and do other magic... */ 
} 

Cosa si può fare su HTC, è quello di trovare qualche altro termistore nel sistema e leggere percorso sysfs, dove è esposto il suo valore Ad esempio, il termistore nella batteria o nel sensore di pressione, se ce n'è in questo telefono.

svantaggio di questo approccio è che questi sono valori termistore prime - a volte si deve sapere, come convertirli in gradi di Celsius e quel che è peggio, non sono compensati (come la temperatura da API è) - così per esempio, se il telefono eseguirà alcuni calcoli e il processore riscalderà il telefono, tale valore può essere facilmente superiore di 10 gradi rispetto alla temperatura ambiente e quindi non molto utile ...

Problemi correlati