2016-03-19 15 views
1

加速度計とジャイロスコープから同時にデータを取得する際に問題が発生しています。私は、これらのセンサーを使って、私が取り組んでいるプロジェクトの相対的な位置を計算するために加速と向きを取得する必要があります。両方のセンサーを同時に使用すると、非常に奇妙なデータ出力が発生し、データは1秒に1回しか変化しません。加速度計だけを動かすと、そのデータが最速の設定で約10回/秒しか変化しないので、データはあまり良くありません。このデータは、各センサーの読み取りごとにタイムスタンプを付けてファイルに出力されます。Android:加速度計とジャイロスコープから同時にデータを取得する

インターネットで、特に複数のセンサーを同時に使用してチュートリアルを見つけるのが難しいです。各センサーを別のスレッドに配置する必要はありますか?私はスレッドを使用して多くの経験を持っていない、どのように私はこれを行うことができます。

+0

あなたのアプローチを示すことができますか(コード)。 –

+0

次のリンクがいくつかあります。 https://source.android.com/devices/sensors/sensor-types.html https://source.android.com/devices/sensors/index.html http:// developer.android.com/guide/topics/sensors/sensors_overview.html –

答えて

3

各センサーを別のスレッドに配置する必要はありません。

public void onSensorChanged(SensorEvent sensorEvent) { 
    sensorName = sensorEvent.sensor.getName(); 
    Log.d(sensorName + ": X: " + sensorEvent.values[0] + "; Y: " + sensorEvent.values[1] + "; Z: " + sensorEvent.values[2] + ";"); 

}

:ヨは

public class SensorActivity extends Activity, implements SensorEventListener { 
private final SensorManager mSensorManager; 
private final Sensor mAccelerometer; 
private final Sensor mGyroscope; 

public SensorActivity() { 
    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 
    mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
    mGyroscope = mSensorManager.getDefaultSensor(TYPE_GYROSCOPE); 
} 

protected void onResume() { 
    super.onResume(); 
    mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
    mSensorManager.registerListener(this, mGyroscope, SensorManager.SENSOR_DELAY_NORMAL); 
} 

protected void onPause() { 
    super.onPause(); 
    mSensorManager.unregisterListener(this); 
} 

がsensorEventListハンドラを実装します(特別な方法がonSensorChanged)と、受信したデータを属する人チェックし、必要異なるセンサを登録し、登録解除するクラスSensorManagerを使用することができます

+0

はい、それは基本的に私がやったことです。 –

関連する問題