プロジェクト用にAndroidアプリを開発しています。その一部として室温を見つける必要があります。テストにはDroid 2 A955モデルを使用しています。
私の質問は:
この温度感知タスクを実行するには、Androidの電話でどのセンサーを使用できる必要がありますか?
環境光センサー(Droid 2で利用可能)はこのタスクの実行に役立ちますか?
自分のAndroidコードで室温をプログラムで検索/検知するAndroid apiはありますか?
よろしくお願いします。
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 doc reference]
ただし、これは周囲温度センサーを備えたデバイスでのみ機能します。
ドキュメントの Sensor class を見てください。
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) {
}
}
これにより、独自のアクティビティで温度センサーにアクセスできるようになります。
これで遊んで、あなたが見つけることができるものを見てください。ドキュメントには他のタイプのセンサーの優れた例が含まれています。温度センサーは、提供されているほとんどのセンサーよりもさらにシンプルである必要があります。
お役に立てれば!
Sensor reference docs を確認してください。ただし、ほとんどのハンドヘルドには、アクセス可能な温度センサーが搭載されているとは思いません。
KickstarterのiCelsius Wirelessを使用できます。 APIがあります。スマートフォンの内部センサーを使用して正確に温度を測定することは不可能です。常に数度から高度になります。
これを試してください:
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];
}
}
};
電話と「良い」温度計を室温(数時間)で安定させ、両方を読み取る、昔からの方法があります。
次に、それを35F程度の素敵な冬のガレージに屋外に置き、安定させます。次に、線形性を祈ります。
経験的は常に素晴らしいです。私は空の家で一定の温度を測定することに非常に興味があり、温度の低下(または上昇!!)に注意します
バザーズベイのブラッドショー