Производители оригинального оборудования могут настроить на складных устройствах опцию, которая позволит пользователям выбирать, как будет вести себя внешний экран при складывании устройства из разблокированного в развернутое состояние.
Этот параметр находится в разделе «Настройки» > «Дисплей» > «Продолжить использование приложений на сложенном устройстве» . Пользователю доступны следующие три варианта:
- Всегда: когда пользователь складывает устройство, передний дисплей всегда включается и остается разблокированным.
- Проведите пальцем вверх, чтобы продолжить: когда пользователь складывает устройство, блокировка клавиатуры отображается без необходимости аутентификации, если только приложение не блокирует экран. В этом случае устройство не активирует приложение. Это настройка по умолчанию.
- Никогда: Когда пользователь складывает устройство, оно блокируется, а передний дисплей отключается.

Рисунок 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отправляется без этого флага, что приводит к блокировке устройства.
- Для
- Если значение равно