如何以度为单位获取 Android 设备的物理方向。

fun*_*unk 5 android

我知道我必须使用 OrientationListener 类来获取设备的角度。我想得到 -90° 和 90° 之间的角度。我不知道该怎么做。左图:90度,中图:0度,右图:-90度

90度 0度 -90度

代码

class OrientationListener implements SensorEventListener
{

    @Override
    public void onSensorChanged(SensorEvent event)
    {
        angle = Math.round(event.values[2]);

        if (angle < 0)
        {
            angle = angle * -1;
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

Ele*_*eek 2

您可以使用此代码来实现简单的 0、90、180 度。

Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
Run Code Online (Sandbox Code Playgroud)

int 旋转 = display.getRotation();

Surface.ROTATION_0 为 0 度,Surface,ROTATION_90 为 90 度等。

如果您想要 0、90 等以外的度数,您还可以使用 SensorEventListener 接口:

@Override
public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {

        float rawX = event.values[0];
    }
}
Run Code Online (Sandbox Code Playgroud)

您需要使用此代码来获取学位:

double k = 90/9.8;
double degrees = rawX * k; // this is a rough estimate of degrees, converted from gravity
Run Code Online (Sandbox Code Playgroud)