使用位置服务android检测设备是否已经转弯

时间:2015-05-31 12:41:27

标签: android android-sensors

我想检测用户是否在使用Android手机上的传感器驾驶时转弯。我该如何编码呢?我正在从所有传感器(加速度计,位置,旋转,地磁)中实时采集数据并将其存储在SD卡上。所以现在我只想知道用户是否转了一圈以及转向了哪个方向。

2 个答案:

答案 0 :(得分:2)

我假设传感器的注册正确完成。您可以使用方向传感器(不建议使用)检测方向,如下所示:

@Override
public void onSensorChanged(SensorEvent event) {

    float azimuth_angle = event.values[0];
    int precision = 2;

    if (prevAzimuth - azimuth_angle < precision * -1)
        Log.v("->", "RIGHT");

    else if (prevAzimuth - azimuth_angle > precision)
        Log.v("<-", "LEFT");

    prevAzimuth = azimuth_angle;

}

注意:&#34; prevAzimuth&#34;的变量被宣布为全球性的。你可以改变&#34;精度&#34;任何你想要的价值。我们需要这个值,因为我们不希望在方位角的每个微小变化之后看到输出。但是,太大的精度会导致不精确的结果。对我来说,&#34; 2&#34;是最佳的。

答案 1 :(得分:0)

如果您正在跟踪位置坐标,您还可以跟踪以前位置的角度之间的转换。

angle = arctan((Y2 - Y1) / (X2 - X1)) * 180 / PI

有关计算x和y的信息,请参阅this answer

使用传感器值的决定是基于一个不切实际的假设,即设备永远不会相对于车辆旋转。