2012-09-07 42 views
5

我正在嘗試創建一個應用程序來監視振動。我使用加速計來完成這項工作,當記錄的加速度超過一定的閾值時,我稱之爲觸發器。當出現觸發時,我想在觸發時刻將加速度,磁場,光照水平數據(來自不同傳感器)記錄到文件中。在Android中同時獲取多個傳感器數據

現在的問題是:我可以從單個傳感器獲取數據,但無法弄清楚如何從多個傳感器同時獲取數據。例如:我可以設置一個sensorlistener來監視加速度計的變化,當我記錄加速度數據時,我是否也可以在同一時間從其他傳感器獲取數據?

在此先感謝。

+0

的[有沒有辦法在Android中檢索多個傳感器數據(可能的複製http://stackoverflow.com/questions/4343342/is-there -a-way-to-retrieve-multiple-sensor-data-in-android) –

回答

6

是的,你可以做到這一點,如下所示:

private SensorManager manager; 
private SensorEventListener listener; 

manager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE); 
listener = new SensorEventListener() { 
    @Override 
    public void onAccuracyChanged(Sensor arg0, int arg1) { 
    } 

    @Override 
    public void onSensorChanged(SensorEvent event) { 
     Sensor sensor = event.sensor; 
     if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) { 
      ... 
     } 
     else if (sensor.getType() == Sensor.TYPE_GYROSCOPE) { 
      ... 
     } 
    } 
} 

manager.registerListener(listener, manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME); 
manager.registerListener(listener, manager.getDefaultSensor(TYPE_GYROSCOPE), SensorManager.SENSOR_DELAY_GAME); 
+1

感謝paritybit,我試過這個,但是這似乎並不是在同一時間收集數據,例如,當傳感器事件發生變化時,它只是檢查它是加速度計還是陀螺儀。我想要的是當加速度計發生變化時,同時我從加速度計和陀螺儀收集數據。 – calBear

+2

我不認爲他們的事件模型是這樣工作的。似乎Android獲取傳感器數據時,會執行訂閱的事件偵聽器,然後我們將傳感器數據從事件中取出。並不是說我們可以從任何傳感器的設定時間點獲取數據。 –

+0

@GregRandall如果兩個傳感器同時發生變化,該怎麼辦?什麼會記錄到'event.values []'? – Chaine