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는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신호가 전송되어 기기가 잠깁니다.
- 값이