Как узнать, что Android OS mobile является альбомной или портретной, когда ориентация зафиксирована в вертикальной ориентации файла манифеста

В моем приложении для чтения визитных карточек я зафиксировал ориентацию экрана в своей первой операции захвата камеры, теперь я хочу знать, что ориентация - это ландшафт или портрет. Я использую SensorManager, но он будет давать большую часть времени, когда мало изменен угол поворота мобильного телефона.

здесь screenOrientation=0, когда альбомная ориентация

и screenOrientation=1, когда Портрет

private void registerAccelerometerSensor() {
    SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

    if (getPackageManager().hasSystemFeature(
            PackageManager.FEATURE_SENSOR_ACCELEROMETER)) {
        eventListener = new SensorEventListener() {

        @Override
            public void onSensorChanged(SensorEvent event) {
                // TODO Auto-generated method stub
                if (event.values[1] < 6.5 && event.values[1] > -6.5) {
                    if (orientation != 1) {
                        Log.d("Sensor", "Landscape");
                        screenOrientation = 0;
                    }

                } else {
                    if (orientation != 0) {
                        Log.d("Sensor", "Portrait");
                        screenOrientation = 1;
                    }
                }
            }

            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {
                // TODO Auto-generated method stub
            }
        };
        sensorManager.registerListener(eventListener,
                sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_FASTEST);
    } else {
        screenOrientation = -1;
    }
}

1 ответ

Смотрите пример кода здесь:

public int getScreenOrientation() {
    int rotation = getWindowManager().getDefaultDisplay()
            .getRotation();
    int orientation = getResources().getConfiguration().orientation;

    if (orientation == Configuration.ORIENTATION_PORTRAIT) {
        if (rotation == Surface.ROTATION_0
                || rotation == Surface.ROTATION_270) {
            return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
        } else {
            return ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
        }
    }
    if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
        if (rotation == Surface.ROTATION_0
                || rotation == Surface.ROTATION_90) {
            return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
        } else {
            return ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
        }
    }
    return ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
}
Другие вопросы по тегам