web-dev-qa-db-ja.com

Androidコードでプログラムによって室温を検出/検知するAndroid AP​​Iはありますか?

プロジェクト用にAndroidアプリを開発しています。その一部として室温を見つける必要があります。テストにはDroid 2 A955モデルを使用しています。

私の質問は:

  1. この温度感知タスクを実行するには、Androidの電話でどのセンサーを使用できる必要がありますか?

  2. 環境光センサー(Droid 2で利用可能)はこのタスクの実行に役立ちますか?

  3. 自分のAndroidコードで室温をプログラムで検索/検知するAndroid apiはありますか?

よろしくお願いします。

14
talasila

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]

ただし、これは周囲温度センサーを備えたデバイスでのみ機能します。

12
Otra

APIの新しいセンサー があるようです。

これは周囲温度用ですが、おそらくこれを実装したデバイスはほんのわずかです。

更新:Galaxy S4が周囲​​温度センサーを統合した最初の電話であるようです

11
OriolJ

ドキュメントの 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) {
 }
}

これにより、独自のアクティビティで温度センサーにアクセスできるようになります。

これで遊んで、あなたが見つけることができるものを見てください。ドキュメントには他のタイプのセンサーの優れた例が含まれています。温度センサーは、提供されているほとんどのセンサーよりもさらにシンプルである必要があります。

お役に立てれば!

2
Codeman

Sensor reference docs を確認してください。ただし、ほとんどのハンドヘルドには、アクセス可能な温度センサーが搭載されているとは思いません。

2
Austin Hanson

KickstarterのiCelsius Wirelessを使用できます。 APIがあります。スマートフォンの内部センサーを使用して正確に温度を測定することは不可能です。常に数度から高度になります。

1
Kiwi44

私はずっと前にあなたの質問と同じです。そして私が見つけたものは:

  • チェック this 環境センサーの公式サイト
  • この環境センサーのツット:周囲温度(室温)周囲光... Tutsplus 。私の電話でのみAmbient Light
  • 今私はサムスン銀河S4だけが周囲温度を持っていることを知っているので。 S4をお持ちの場合は、gg playstoreでHolo Ambient Temperatureを検索してください。
0
ntvfx
0
drdrej

これを試してください:

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];
            }
        }

    };
0
Emulk

電話と「良い」温度計を室温(数時間)で安定させ、両方を読み取る、昔からの方法があります。

次に、それを35F程度の素敵な冬のガレージに屋外に置き、安定させます。次に、線形性を祈ります。

経験的は常に素晴らしいです。私は空の家で一定の温度を測定することに非常に興味があり、温度の低下(または上昇!!)に注意します

バザーズベイのブラッドショー

0
Str Rev