2012-09-05 119 views
0

有沒有一種方法可以每隔5分鐘從Android傳感器獲取值?採樣Android傳感器

例如,是否有一種方法可以每隔5分鐘輪詢一次AMBIENT_TEMPERATURE傳感器,而不管溫度是否發生變化?

現在,我只能訪問onSensorChanged(SensorEvent arg0)當它被調用時的值,所以如果溫度沒有從啓動變化,我永遠不能訪問溫度值?

謝謝! =]

+0

你看過這個嗎? http://stackoverflow.com/questions/6985396/is-there-any-android-api-to-find-sense-room-temperature-programmatically-in-andr – sschrass

回答

0

據我記得,傳感器每onSensorChanged -event返回一個值。您可以設置一個線程,每5分鐘讀入一次值。

編輯

public class OrientationHandler implements SensorEventListener { 
    private SensorManager sensorManager = null; 
    private static float[] values = new float[3]; 

    public OrientationHandler(Context context) { 
     sensorManager = (SensorManager) context 
         .getSystemService(Context.SENSOR_SERVICE); 
     sensorManager.registerListener(this, sensorManager 
             .getDefaultSensor(Sensor.TYPE_ORIENTATION), 
             SensorManager.SENSOR_DELAY_FASTEST); 
    } 

    public void onSensorChanged(SensorEvent event) { 
     if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) { 
      synchronized (this) { 
       OrientationHandler.values = event.values; 
      } 
     } 
    } 
} 

OrientationHandler.values可以從類外部訪問(如果你自己寫一個公共的getter方法)。

+0

是的,但它永遠不會改變,所以它不'不會被稱爲永遠?我的問題是獲得第一個價值。我寫了一個測試應用程序來試用它,我無法獲得「環境溫度」值,因爲'onSensorChanged'永遠不會被調用? –

+0

將onSensorChanged(SensorEvent事件)中的值保存到可從外部訪問的類變量。 – sschrass

+0

soSensorChanged(SensorEvent事件)只會更新該類變量。 – sschrass

0

您可以嘗試使用報警服務並每五分鐘重複設置一次。

雖然我從來沒有使用傳感器,但無論如何,我認爲有一些方法可以獲得傳感器值一次。

我建議你閱讀this first,然後this瞭解如何設置一個重複報警,它是廣播接收機可以更新您的傳感器信息。

希望這有助於=)