スマートフォンのユーザーが左または右に曲がるか、方向転換するかを検出したい。
「右折」を説明する例を次に示します。
ユーザーは交差点に面しています。ここで、ユーザーが正しい道をたどるか、左の道を進むか、直進するかを検出したいと考えています。
したがって、これを使用して方位角を取得します。
@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;
}
}
これはうまくいきます。しかし、回転の開始点と終了点を設定する方法がわかりません...