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