【发布时间】:2013-07-16 14:28:49
【问题描述】:
我想检测我的智能手机用户是左转还是右转或转身。
这里用一个例子来解释“右转”:
用户面临一个十字路口。现在我想检测我的用户是走右路还是左路还是直走。
因此我用它来获取方位角:
@Override
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
for (int i = 0; i < 3; i++) {
valuesAccelerometer[i] = event.values[i];
}
break;
case Sensor.TYPE_MAGNETIC_FIELD:
for (int i = 0; i < 3; i++) {
valuesMagneticField[i] = event.values[i];
}
break;
}
boolean success = SensorManager.getRotationMatrix(matrixR, matrixI,
valuesAccelerometer, valuesMagneticField);
if (success) {
SensorManager.getOrientation(matrixR, matrixValues);
Math.round(Math.toDegrees(Math.acos(matrixValues[0])));
azimuth = (float) Math.round(Math.toDegrees(matrixValues[0]));
if (azimuth < 0.0f) {
azimuth += 360.0f;
}
}
这很好用。但是现在我不知道如何设置旋转的起点和终点...
【问题讨论】:
-
如果您需要检测变化,您需要获取并存储感兴趣的参数(即角度)的初始值,并将当前值与它进行比较。如果没有有关您要检测的内容的更多详细信息,我无法更具体。 “用户右转”并没有真正定义太多。
-
我添加一个例子来更好地解释它!
-
这不是一个很好的例子。多少度构成“右转”?它应该在特定的时间范围内,还是应该缓慢而微妙的漂移算作转弯?如果用户转动手中的手机会发生什么?等等等等……
标签: android accelerometer android-sensors motion