私は自分のプロジェクト用のAndroidアプリを開発していますが、その一部として室温を見つける必要があります。テストにはDroid2A955モデルを使用しています。
私の質問は次のとおりです。
この温度検知タスクを実行するには、Androidフォンでどのセンサーを使用できる必要がありますか?
周囲光センサー(Droid 2で利用可能)はこのタスクの実行に役立ちますか?
私のAndroidコードでプログラムで室温を検出/検知するAndroidAPIはありますか?
よろしくお願いします。
私は自分のプロジェクト用のAndroidアプリを開発していますが、その一部として室温を見つける必要があります。テストにはDroid2A955モデルを使用しています。
私の質問は次のとおりです。
この温度検知タスクを実行するには、Androidフォンでどのセンサーを使用できる必要がありますか?
周囲光センサー(Droid 2で利用可能)はこのタスクの実行に役立ちますか?
私のAndroidコードでプログラムで室温を検出/検知するAndroidAPIはありますか?
よろしくお願いします。
あなたの 3 つの質問すべてに一気に答えるなんて、いや、そうは思いません。Android デバイスには温度センサーが搭載されている場合がありますが、これは外気温ではなくバッテリーの温度を感知します。そのための正確なゲージは提供されません。
環境光センサーが温度にどのように役立つかはわかりません。非常に明るい場合がありますが、空調された部屋にある可能性があります。
最後に、温度アプリの例はたくさんありますが、繰り返しになりますが、ほとんどはバッテリーに関連しています。
編集: 公式文書には次のように書かれています:
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.)
アップデート:
API レベル 14 (つまり、Android 4.0) 以降では、周囲温度の測定のサポートが追加されました (経由TYPE_AMBIENT_TEMPERATURE
)。[Android ドキュメント リファレンス]
ただし、これは周囲温度センサーを備えたデバイスでのみ機能します。
Sensor のリファレンス ドキュメントを確認してください。ただし、ほとんどのハンドヘルドに搭載されているアクセス可能な温度センサーはないと思います。
ドキュメントのSensor クラスを見てください。
これに沿って何かをする必要があります:
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) {
}
}
これにより、それ自体のアクティビティで温度センサーにアクセスできるようになります。
これで遊んで、何が見つかるか見てみましょう。ドキュメントには、他のタイプのセンサーの優れた例があります。温度センサーは、提供されているほとんどのセンサーよりもさらに単純である必要があります。
お役に立てれば!
これは興味深いですね:
http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_AMBIENT_TEMPERATURE
API >= 13 から
これを試してください:
private float temperature = 0;
このonCreate
コードを入力してください:
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);
}
そして、以下の方法:
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];
}
}
};
私はずっと前にあなたの質問と同じです。そして、私が見つけたのは: