2

動的に手の動きを検出し、それに応じてサウンドを変更したい。携帯電話は、変更されない固定された向きで手にあります。たとえば、伸ばした手で携帯電話を持っていて、右または左に動かすと、音楽の音量が動的に変化します。上下に移動すると再生速度が変化し、中間の角度で移動すると速度と音量がそれに応じて変化します。これらの動きをしながら加速度計のデータをグラフ化したところ、いくつかのパターンがあるようですが、それらをフィルタリングする方法がわかりません。ハイパス/ローパスフィルター、カルマンフィルター、ジェスチャレコグナイザーなど、多くの投稿を見てきましたが、適切な方法が何であるかを理解するのは困難です。ほとんどの投稿は動的に検出されないようですが、特定のジェスチャーが終了したときのみです。ジャイロスコープやその他のセンサーではなく、加速度計のみを使用する必要があります。ここで正しいアプローチは何ですか?これを行う既存のライブラリはありますか?

4

1 に答える 1

0

あなたの活動が実装されている場合

SensorEventListener

そして、変数を使用します

private SensorManager sensorManager;
private Sensor mAccelerometer;

OnCreate() でそれらをインスタンス化し、次のようにリスナーを登録します。

sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mAccelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(this, mAccelerometer,
                SensorManager.SENSOR_DELAY_FASTEST);

次に、このメソッドを使用して加速度計データを取得します

 public void onSensorChanged(SensorEvent event) {

        double x = event.values[0];
        double y = event.values[1];
        double z = event.values[2];
}

加速度計から取得した値に応じてそこから取得し、ボリュームなどに変更を加えることができます

于 2013-07-31T05:11:27.617 に答える