2012-09-07 7 views
5

振動を監視するためのアプリケーションを作成しようとしています。私は、記録された加速度が特定のしきい値を超えたときに加速度計を使用して仕事を終え、それをトリガーと呼びます。トリガがあると、トリガ時の加速度、磁場、光レベルのデータをファイルに記録します。Androidで同時に複数のセンサーデータを取得する

問題は次のとおりです。個々のセンサーからデータを取得できますが、同時に複数のセンサーからデータを取得する方法を理解できませんでした。例えば、私は加速度計の変化を監視するためにセンサーリスナーを設定することができます。加速度データを記録するとき、まったく同じ時刻に他のセンサーからデータを取得することはできますか?

ありがとうございます。

+0

可能な複製(http://stackoverflow.com/questions/4343342/is-there [Androidの中の複数のセンサデータを取得する方法はあります] -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

パリティビットに感謝しましたが、これはデータを同時に収集していないようです。たとえば、センサーイベントの変化加速度計かジャイロスコープかを確認してください。私が望むのは、加速度計が変化すると同時に、加速度計とジャイロスコープからデータを収集することです。 – calBear

+2

私はイベントモデルがこのように動作するとは思わない。 Androidがセンサーデータを取得したときに、購読されたイベントリスナーを実行した後、センサーデータをイベントから取得します。どんなセンサからも、ある時点でデータを取得することはできません。 –

+0

@ GregRandall両方のセンサーが同時に変更された場合はどうなりますか? 'event.values []'に何が記録されますか? – Chaine

関連する問題