заблокировать альбомную ориентацию экрана Android

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

private void lockScreenOrientation() {
if (!mScreenOrientationLocked) {
    final int orientation = getResources().getConfiguration().orientation;
    final int rotation = getWindowManager().getDefaultDisplay().getOrientation();
    if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) {
        if (orientation == Configuration.ORIENTATION_PORTRAIT) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
        else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        }
    }
    else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) {
        if (orientation == Configuration.ORIENTATION_PORTRAIT) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
        }
        else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
        }
    }

    mScreenOrientationLocked = true;
}
}

private void unlockScreenOrientation() {
 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
 mScreenOrientationLocked = false;
}

Но это временное изменение, оно не влияет на все приложения, кто-нибудь знает способ применить ориентацию блокировки ко всем приложениям? Спасибо


person Ahmed    schedule 04.09.2012    source источник
comment
Это предположение, но я совершенно уверен, что невозможно заблокировать все приложения в альбомной ориентации.   -  person harism    schedule 04.09.2012
comment
Взгляните на это приложение, оно работает так, как я и хотел play.google.com/store/apps/   -  person Ahmed    schedule 04.09.2012
comment
Я согласен с тем, что вы, вероятно, не должны быть в состоянии... но, по-видимому, это возможно. Я использую приложение Set Orientation на своем Nexus 7, и оно может заставить систему выбрать любую конкретную ориентацию.   -  person Kevin Coppock    schedule 04.09.2012
comment
Дублировать stackoverflow.com/questions/3611457/ и точный код из stackoverflow. com/questions/6599770/экран-ориентация-блокировка   -  person xdumaine    schedule 04.09.2012


Ответы (1)


Приложения, подобные тому, которое вы связали, делают это, изменяя значения глобальных системных настроек, связанных с вращением. Просмотрите класс Settings.System, чтобы узнать о доступных константах. к приложениям. В частности, значения ACCELEROMETER_ROTATION и USER_ROTATION, вероятно, будут представлять интерес.

Вам также потребуется объявить разрешения android.permission.WRITE_SETTINGS и, возможно, android.permission.WRITE_SECURE_SETTINGS в манифесте.

person devunwired    schedule 04.09.2012
comment
Эти настройки также были более удобными для пользователя по сравнению с Rotation Locker приложением, поскольку это влияет только на приложения — и, что наиболее важно, — на те, которые явно не запрашивают только портретный режим. - person harism; 04.09.2012
comment
@Devunwired, спасибо, но на самом деле он блокирует текущую ориентацию и ничего больше, не влияя на другие приложения. - person Ahmed; 04.09.2012