android – 获取电话方向,但将屏幕方向固定为纵向

我想要获得电话方向,但要保持屏幕方向为纵向。
所以无论用户将手机变成横向或纵向,视图都保持不变,但是我可以看到它是转向横向还是纵向。

将活动设置为android:screenOrientation =“portrait”将修复两者,但我无法通过检测手机方向

public void onConfigurationChanged(Configuration newConfig) {
    switch (newConfig.orientation) {
    case Configuration.ORIENTATION_PORTRAIT:
        Toast.makeText(this, "Portrait", Toast.LENGTH_SHORT).show();
        break;
    case Configuration.ORIENTATION_LANDSCAPE:
        Toast.makeText(this, "Landscape", Toast.LENGTH_SHORT).show();
        break;
    default:
        break;
    }
}

有谁有一个想法如何解决?

您能用加速度计满足您的要求吗?如果是这样,也许像这样(未经测试)的片段将适合您的目的。

SensorManager sensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);
        sensorManager.registerListener(new SensorEventListener() {
            int orientation=-1;;

            @Override
            public void onSensorChanged(SensorEvent event) {
                if (event.values[1]<6.5 && event.values[1]>-6.5) {
                    if (orientation!=1) {
                        Log.d("Sensor", "Landscape");
                    }
                    orientation=1;
                } else {
                    if (orientation!=0) {
                        Log.d("Sensor", "Portrait");
                    }
                    orientation=0;
                }
            }

            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {
                // TODO Auto-generated method stub

            }
        }, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME);
翻译自:https://stackoverflow.com/questions/9021890/get-phone-orientation-but-fix-screen-orientation-to-portrait

转载注明原文:android – 获取电话方向,但将屏幕方向固定为纵向