2011-08-08 6 views
13

私は自分のプロジェクトにアンドロイドアプリを開発していますが、その一部として室温を見つける必要があります。私はテストのためにDroid 2 A955モデルを使用しています。アンドロイドコードでプログラムで室温を検出/検出するためのAndroid APIがありますか?

私の質問は以下のとおりです。センサーが私のAndroid携帯電話で利用できるようにするために必要なもの

  1. は 、この温度検出タスクを実行するために?

  2. 缶環境光センサー(ドロイド2で利用可能)この 作業を行う際に役立ちますか?

  3. 私のアンドロイドコードでプログラム/センス室温 を見つけるために任意のAndroidのAPIはありますか?

ご協力いただきありがとうございます。

+0

#2で無意味か、非常にオープンのいずれかが

を終了さを監視します。いくつかの外部アイテムでは、例えば、カメラを温度計に向けたり、光センサーの温度をエンコードするライトを照準したりするなど、ほとんどのものが「助けて」いけます。 –

+0

はい、私は#2は無関係であることに同意します。しかし、私はアンドロイド市場で "Thermo"アプリを疑っていましたが、このアプリが部屋の温度をどのくらい正確に与えているのですか。それは偽のアプリですか? "http://www.appbrain.com/app/thermo/com.antonio.thermo2.activity" – tinku

+0

なぜAPIが必要ですか?代わりにハードウェアセンサーを使用してください! EDIT 私は、私のお母さんの電話機(Galaxy S4)が温度センサーをサポートしている唯一のものであることを知りました。 – Confuse

答えて

12

あなたの質問の3つすべてに1つの答えを答えるには、慌ててしまいました。私はそう信じません。アンドロイドデバイスには温度センサーがありますが、バッテリーの温度を感知し、外部温度は感知しません。それはその目的のための正確なゲージを提供しないであろう。

環境光センサーが温度にどのように役立つかわかりませんが、非常に明るいことがありますが、エアコン付きの部屋にいる可能性があります。

最後に、温度アプリケーションの例がたくさんありますが、ほとんどの場合、バッテリに関連しています。

編集:Official documentation says

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以降、周囲温度を測定するための支持体(TYPE_AMBIENT_TEMPERATUREを介して)追加されている(すなわち、アンドロイド4.0)。[Android doc reference]

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

+0

参照していただきありがとうございます。今ではドロイド2の温度センサーの使用法を理解しています。 – tinku

+0

こんにちは、最初のリンクはもう動作しません。 –

2

あなたはSensor reference docsをチェックアウトしたいと思うでしょう。オフハンドでは、私はアクセス可能な温度センサーがほとんどのハンドヘルドに搭載されているとは思わない。

2

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

これは、あなたがそれ自身の活動における温度センサへのアクセス権を与える必要があります。

あなたが見つけたものを見てください。ドキュメンテーションには他のタイプのセンサーの優れた例があります。温度センサーは、提供されているセンサーのほとんどよりも簡単にすべきです。

希望すると便利です。

+1

CPUまたはバッテリの温度ではなく、周囲温度を提供するという事実を述べることができますか? –

+2

これは実際にバッテリ/ CPUの温度です。 Android API 14(Ice Cream Sandwich)はSensor.TYPE_AMBIENT_TEMPERATUREに対応しました。 – Tom

11

a new sensor in the APIがあるようです。

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

UPDATE:ギャラクシーS4は、あなたがキックスターターからiCelsiusワイヤレスを使用することができ、周囲温度センサー

+2

4.0以降のみ利用可能です。 – Flynn81

1

を統合する最初の電話であると思われます。それはAPIを持っています。 SmartPhoneの内部センサーを使用して正確な温度を測定することは不可能です。それは常に数度高いでしょう。

0

私はずっと前と同じ質問があります。そして、私のFOUNDは何です:周囲温度(室温)アンビエントライト... Tutsplus:環境センサのための環境センサー

  • ため

    • チェックthis公式サイトを、このtuts。私の電話だけでAmbient Lightの仕事
    • 今私が知っているように、samsung galaxy S4には周囲温度があります。あなたがgg playstoreでS4検索Holo周囲温度を持っているなら。
  • 0

    から、この方法を試してください。

    onCreateプットwìthisコードで
    private float temperature = 0; 
    

    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

    電話と「良い」温度計は室温(数時間)で安定化との両方を読みせるの時代の古い方法があります。

    その後、約35°Fの良い冬のガレージに入れて安定させてください。そして、直線性を祈ってください。

    経験的には常に良いです。私は、空の家の中で一定の温度を測定するのに非常に興味を持っていて、温度ドロップ(または立ち上がり!!)ブラッドショーはバザーズベイ

    関連する問題