複数のセンサーから同時にデータを取得できるアプリケーションを構築しようとしています。そこにたどり着くまでの道のりはまだわからないので、構造化されたレイアウト用に SensorObject クラスを実装することから始めました。
このセンサー オブジェクトは、通常の onaccuracychanged および onsensorchanged メソッドと共に SensorEventListener を実装します。このクラスは継承されているため、ここでは両方のメソッドを空のままにします。また、次のように OnResume メソッドを実装しました。
public void OnResume() {
sensorManager.registerListener(this, sensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
続いて、センサー オブジェクトを拡張する加速度計オブジェクトを実装しました。実質的に、それは onSensor Changed で機能します。
私の主な質問はここにあります。
AccelerometerObject ao = new AccelerometerObject(Sensor.TYPE_ACCELEROMETER, this);
ao.OnResume();
txtAccelerometerData = (TextView) findViewById(R.id.txtAccelerometerData);
txtAccelerometerData.setText(ao.toString());
センサー データにすぐにアクセスせず、順次処理を進めているのはなぜですか? onresume メソッドにアクセスしていないため、オブジェクトにはまだ値がありません。別のスレッドを使用する必要がありますか? 効率はそれほど重要ではありません。必要なのは、実験用の有効なデータだけです。
2) 上記のアプローチを使用して複数の同時センサーを実装することは可能ですか?
どんな助けでも大歓迎です。
以下は、要求された AccelerometerObject です。
public class AccelerometerObject extends SensorObject {
public float[] values;
public AccelerometerObject(int sensorType, Context _Context) {
super(sensorType, _Context);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
AccelerometerValues = event.values;
onPause();
}
@Override
public String toString() {
if (values != null) {
return "X is " + values[0]
+ ", Y is " + values[1]
+ " and Z is "
+ values[2]);
} else
return "N/A";
}
}