2012-08-14 5 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()); 
    } 
} 

Ich möchte die Temperatur vom Gerät bekommen.Temperatursensor auf Android

Ich habe diesen Code geschrieben und ich habe es auf HTC One X versucht, aber es hat nicht funktioniert.

+0

Können Sie die Ausgabe oder den Fehler posten. – prayagupd

+0

nichts getan. kein Fehler. keine Benachrichtigung. Kein Ergebnis – Furkan

+0

Hat das HTC One X sogar einen Temperatursensor? – nkr

Antwort

6

Soweit Spezifikation von HTC eins X sagt, es sieht aus wie dieses Gerät hat keinen Temperatursensor.

Werfen Sie einen Blick in seine official specifications.

+0

ovv. Du hast recht. Danke – Furkan

+2

Es gibt eine App im Android Market namens "Andro Sensor", die Ihnen die Informationen über verfügbare und nicht verfügbare Sensoren für Ihr Gerät geben wird. Versuchen Sie es – AndroidCrazy

1

Im Moment haben nur wenige Geräte einen Temperatursensor (z. B. Samsung S4).

Sie sollten immer prüfen, ob der Sensor zur Verfügung steht, dh {

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

Was Sie auf dem HTC tun können, ist eine andere Thermistor im System zu finden und sysfs Pfad lesen, wo ihr Wert ausgesetzt ist B. Thermistor in der Batterie oder im Drucksensor, wenn in diesem Telefon irgendwelche vorhanden sind.

Nachteil dieses Ansatzes ist, dass dies rohe Thermistorwerte sind - manchmal muss man wissen, wie man sie in Grad Celsius umrechnet und was noch schlimmer ist, sie werden nicht kompensiert (wie die Temperatur von API) - also zB Wenn das Telefon einige Berechnungen ausführen und der Prozessor das Telefon aufheizen wird, kann dieser Wert leicht 10 Grad höher als die Umgebungstemperatur sein und somit nicht wirklich nützlich ...