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

私はデバイスから温度を取得したいです。Androidの温度センサー

私はこのコードを書いており、HTC One Xでも試してみましたが、うまくいきませんでした。

+0

出力またはエラーを通知できますか? – prayagupd

+0

何もしていません。エラーはありません。通知なし。いいえ結果 – Furkan

+0

HTC One Xに温度センサーが付いていますか?もちろん – nkr

答えて

6

これまでのhtc one xの仕様では、このデバイスのように温度センサーがないようです。

official specificationsをご覧ください。

+0

ovv。あなたが正しいです。おかげで – Furkan

+2

アンドロイドマーケットには "アンドロセンサー"と呼ばれるアプリケーションがあり、これはあなたのデバイスに利用可能なセンサーと利用不可能なセンサーの情報を提供します。試してみてください – AndroidCrazy

1

現在のところ、温度センサー(たとえば、Samsung S4)が搭載されているデバイスはごくわずかです。

センサーが利用可能な場合は常に、あなたがHTCの上に何ができるか、すなわち、 {

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

をテストする必要があり、システム内の他のいくつかのサーミスタを見つけ、sysfsのパスを読み取ることで、その値が露出しているところ例えば、電池内のサーミスタまたは圧力センサにサーミスタがある場合は、この電話機に何かがあるかどうかを確認します。

この手法の欠点は、サーミスタの生の値であることです。時には、それらを摂氏度に変換する方法、さらに悪いことに、APIの温度が補償されないため、電話が計算を実行し、プロセッサが電話を加熱する場合、その値は周囲温度よりも10℃高いので、実際には有用ではありません。

関連する問題