我想动态检测手的动作并相应地修改声音。手机处于固定方向,不会改变。例如,我伸出的手握着手机,当它向右或向左移动时,我的音量会动态变化;如果我上下移动,播放变化的速度和在某个中间角度移动会相应地改变速度和音量。我在做这些动作时绘制了加速度计数据,似乎有一些模式,但我不知道如何过滤这些。我看了很多帖子 - 高通/低通滤波器,卡尔曼滤波器,手势识别器,但很难理解什么是合适的方法。大多数帖子似乎没有动态检测 - 但仅在某个手势完成时才会检测到。我只需要使用加速度计而不是陀螺仪和任何其他传感器。这里的正确方法是什么?是否有任何现有的库可以执行此操作?
答案 0 :(得分: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];
}
你可以从那里取决于你从加速度计得到的值,对音量进行更改或其他