других приложениях, которые вы ссылаетесь сделать что-то другое, что вы могли бы ожидать. Они позволяют поворачивать экран на основе акселерометра устройства; то есть пользователь поворачивает устройство и меняется ориентация. Они не устанавливают конкретную ориентацию для любого приложения. Обратите внимание: если вы отключите автоматическое вращение в ландшафтном режиме, ориентация обычно возвращается к портрету.
Я уже делал то же, что и в других других приложениях. К сожалению, это проприетарный коммерческий код, который я не могу предоставить.
Есть два компонента подхода:
- Detect, когда на переднем плане приложения является целевым приложением
- Изменения общесистемного предпочтения ориентации дисплея
Очевидно, что вы должны сделать наоборот, т. е. изменить его обратно.
Есть несколько примеров части 1 в другом месте на SO. В моем случае я написал службу, которая постоянно опроса, чтобы узнать, что такое приложение переднего плана (потому что для уведомления об изменении приложения нет соответствующих системных событий). Это не тривиальное начинание, но это можно сделать.
Соответствующая установка для куска 2 - Settings.System.ACCELEROMETER_ROTATION
. Я думаю, вы можете написать это с помощью обычного разрешения на все версии. Фрагмент кода, который находится ниже:
Settings.System.putInt(
app.getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION,
orientationEnabled ? 1 : 0
);
Заметим также, что можно написать приложение, которое будет игнорировать поворот экрана системы; то есть будет оставаться заблокированным в любой ориентации, для которой он предназначен. Однако это не распространено.
Полезно? - http://developer.samsung.com/android/technical-docs/Handling-Orientation-in-Android – TN888
Вы имеете в виду ориентацию экрана? – Alpay
@Alpay да, чтобы изменить ориентацию экрана другого приложения. –