首页 文章

用加速度计动态检测手部运动

提问于
浏览
2

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

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];
    }
    

    您可以从那里取下它,具体取决于您从加速度计获得的值,对音量进行更改等

相关问题