2012-07-26 71 views
0

有什么方法可以检测手机摇晃到哪个方向? 例如:我想要从屏幕的右边缘拍摄某些东西,所以我需要查看是否有电话向左摇晃(从第一个移动开始时的坐标)。和左边界几乎相同。希望你能理解。摇动手机方向

非常感谢!

+0

只需检查加速度计读数,然后执行操作,并且您应该了解如何识别手势。也许你可以在你需要的特定坐标上检查加速度。 – codetiger 2012-07-26 12:29:21

回答

1

您可以通过实现SensorEventListener和检查检测在特定方向上的变化:

public void onSensorChanged(SensorEvent se) { 
    // Get sensor data. 
    float x = se.values[SensorManager.DATA_X]; 
    float y = se.values[SensorManager.DATA_Y]; 
    float z = se.values[SensorManager.DATA_Z]; 
} 

然后比较其中一个变量的几个连续的值来确定方向。我认为X是你感兴趣的那个。

+0

但是当手机旋转时,这也会起作用。我需要处理安静粗糙的手势,就像它朝着一个方向发抖。我考虑过在改变方向之前记住加速度,并将其与后面的加速度进行比较。如果它更大,也更大,那么一些阈值(以避免光线移动),这意味着电话在朝向方向改变的方向上摇动。 – Graykos 2012-07-26 12:47:00

+0

我无法理解是否有任何传感器事件中有加速度数据 – Graykos 2012-07-26 12:48:04

+0

您可以像您描述的那样检查X(具有treashold值),但同时确保其他两个接近其初始值。这会告诉你什么时候发生了一维“摇晃”。 (并且不会在手机旋转时给你虚惊)等等。这不是你想要的吗?还是你明确需要加速?你可以使用连续的X值来计算加速度。我还没有在传感器库中看到简单的方法来简单地获得您所建议的加速度。 :/ – TofferJ 2012-07-26 12:52:17