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 回答