Производители оригинального оборудования могут настроить на складных устройствах параметр, позволяющий пользователям выбирать, как будет работать внешний экран, когда они складывают устройство из разблокированного и развернутого состояния.
Для этого выберите Настройки > Экран > Использовать приложения при складывании. У пользователя есть три варианта:
- Всегда. Когда пользователь складывает устройство, передний экран всегда включается и остается разблокированным.
- Если провести по экрану вверх. Когда пользователь складывает устройство, на нем показывается экран блокировки без необходимости аутентификации, если только приложение не удерживает блокировку пробуждения. В этом случае устройство остается включенным в приложении. Это настройка по умолчанию.
- Никогда. При складывании устройства оно блокируется, а передний экран отключается.
Рисунок 1. Настройка блокировки в сложенном виде.
Как настроить блокировку при складывании
Чтобы в настройках отображался параметр блокировки при складывании, добавьте логическое значение config_fold_lock_behavior в файл наложения устройства config.xml:
<!-- Whether to show Fold lock behavior setting feature in Settings app -->
<bool name="config_fold_lock_behavior">true</bool>
Подробная информация о реализации
Поведение блокировки при складывании контролируется настройкой и несколькими классами серверной части.
Настройки и интерфейс
Значение параметра FOLD_LOCK_BEHAVIOR сохраняется в виде строки, которая соответствует выбору пользователя в разделе Настройки > Экран > Использовать приложения при складывании:
- Всегда:
stay_awake_on_fold_key - Если провести по экрану вверх.
selective_stay_awake_key - Никогда
sleep_on_fold_key
Значение параметра завышено с display_settings.xml. Интерфейс страницы настроек реализован во фрагменте FoldLockBehaviorSettings, а настройками управляет FoldLockBehaviorPreferenceController.
Внутренняя логика
Когда устройство сложено, LogicalDisplayMapper и PowerManager управляют его поведением следующим образом:
LogicalDisplayMapperсчитывает значение настройкиFOLD_LOCK_BEHAVIORс помощьюFoldSettingProvider.- В зависимости от значения параметра:
- Если задано значение
stay_awake_on_fold_key, устройство не переходит в спящий режим. - Если значение равно
selective_stay_awake_keyилиsleep_on_fold_key,LogicalDisplayMapperотправляет сигнал#goToSleepвPowerManager.- Для
selective_stay_awake_keyсигнал#goToSleepвключает флагPowerManager.GO_TO_SLEEP_FLAG_SOFT_SLEEP. В результате на устройстве будет показываться экран блокировки без необходимости аутентификации. - Для
sleep_on_fold_keyсигнал#goToSleepотправляется без этого флага, из-за чего устройство блокируется.
- Для
- Если задано значение