OEM은 사용자가 잠금 해제되고 펼쳐진 상태에서 기기를 접을 때 외부 화면이 작동하는 방식을 선택할 수 있는 옵션을 폴더블 기기에서 구성할 수 있습니다.
이 설정은 설정 > 디스플레이 > 접은 상태에서 앱 계속 사용에 있습니다. 사용자에게는 다음 세 가지 옵션이 있습니다.
- 항상: 사용자가 기기를 접으면 전면 디스플레이가 항상 켜지고 잠금 해제된 상태로 유지됩니다.
- 위로 스와이프하여 계속하기: 사용자가 기기를 접으면 앱이 웨이크락을 보유하지 않는 한 기기에서 인증을 요구하지 않고 키가드를 표시합니다. 앱이 웨이크락을 보유하는 경우 기기는 앱에서 깨어 있습니다. 이는 기본 설정입니다.
- 사용 안함: 사용자가 기기를 접으면 기기가 잠기고 전면 디스플레이가 꺼집니다.
그림 1. 폴드 잠금 동작 설정입니다.
폴드 잠금 동작 설정 구성
설정에 폴드 잠금 동작 설정을 표시하려면 기기의 오버레이 config.xml
파일에서 config_fold_lock_behavior
불리언을 채우세요.
<!-- Whether to show Fold lock behavior setting feature in Settings app -->
<bool name="config_fold_lock_behavior">true</bool>
구현 세부정보
폴드 잠금 동작은 설정과 여러 백엔드 클래스로 제어됩니다.
설정 및 UI
FOLD_LOCK_BEHAVIOR
설정의 값은 문자열로 유지되며 이는 설정 > 디스플레이 > 접은 상태에서 앱 계속 사용의 사용자 선택에 해당합니다.
- 항상:
stay_awake_on_fold_key
- 위로 스와이프하여 계속하기:
selective_stay_awake_key
- 사용 안함:
sleep_on_fold_key
이 설정은 display_settings.xml
에서 확장됩니다. 설정 페이지 UI는 FoldLockBehaviorSettings
프래그먼트에서 구현되고 환경설정은 FoldLockBehaviorPreferenceController
에서 관리합니다.
백엔드 로직
기기가 접힌 경우 LogicalDisplayMapper
및 PowerManager
은 다음과 같이 기기 동작을 제어합니다.
LogicalDisplayMapper
는FoldSettingProvider
를 사용하여FOLD_LOCK_BEHAVIOR
설정 값을 읽습니다.- 설정 값에 따라 다음을 실행합니다.
- 값이
stay_awake_on_fold_key
이면 기기가 절전 모드로 전환되지 않습니다. - 값이
selective_stay_awake_key
또는sleep_on_fold_key
이면LogicalDisplayMapper
이PowerManager
에#goToSleep
신호를 보냅니다.selective_stay_awake_key
의 경우#goToSleep
신호에PowerManager.GO_TO_SLEEP_FLAG_SOFT_SLEEP
플래그가 포함됩니다. 이렇게 하면 인증 없이 기기에 키가드가 표시됩니다.sleep_on_fold_key
의 경우 이 플래그 없이#goToSleep
신호가 전송되어 기기가 잠깁니다.
- 값이