我想检测用户是否在使用Android手机上的传感器驾驶时转弯。我该如何编码呢?我正在从所有传感器(加速度计,位置,旋转,地磁)中实时采集数据并将其存储在SD卡上。所以现在我只想知道用户是否转了一圈以及转向了哪个方向。
答案 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。
使用传感器值的决定是基于一个不切实际的假设,即设备永远不会相对于车辆旋转。