9

加速度計と方向データの両方を取得しようとしています。現在、AccelerometerManagerとOrientationManagerを作成しました。どちらも同じことをします。SensorEventListenerを実装し、onSensorChanged()リスナーのvalues[]からデータを取得します。

これを行う簡単な方法はありますか?重複したコードを持つ2つのハンドラーを持つことは不必要なようです。加速度計と方向データを組み合わせてvalues[]配列にアクセスする方法はありますか?

2つのハンドラーがあるため、これも実行する必要があります。

    orientationManager = new OrientationManager(this);
    orientationSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    orientationSensorManager.registerListener(orientationManager, 
            orientationSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), 
            SensorManager.SENSOR_DELAY_GAME);

    accelerometerManager = new AccelerometerManager(this);
    accelerometerSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    accelerometerSensorManager.registerListener(accelerometerManager, 
            orientationSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
            SensorManager.SENSOR_DELAY_GAME);
4

1 に答える 1

40

あなたはこのようなことを試すことができますか?

private SensorManager mSensorManager;
private SensorEventListener mSensorListener;

////


mSensorManager = (SensorManager) this
                .getSystemService(Context.SENSOR_SERVICE);
mSensorListener = 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) {
            //TODO: get values
        }else if (sensor.getType() == Sensor.TYPE_ORIENTATION) {
            //TODO: get values
        }
    }
}

mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME);
mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_GAME);
于 2010-12-03T08:49:40.200 に答える