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

Рисунок 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 сохраняется в виде строки, соответствующей выбору пользователя в разделе «Настройки» > «Дисплей» > «Продолжить использование приложений на Fold» :
- Всегда:
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отправляется без этого флага, что приводит к блокировке устройства.
- Для
- Если значение равно