폴드 잠금 동작 설정

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 설정의 값은 문자열로 유지되며 이는 설정 > 디스플레이 > 접은 상태에서 앱 계속 사용의 사용자 선택에 해당합니다.

이 설정은 display_settings.xml에서 확장됩니다. 설정 페이지 UI는 FoldLockBehaviorSettings 프래그먼트에서 구현되고 환경설정은 FoldLockBehaviorPreferenceController에서 관리합니다.

백엔드 로직

기기가 접힌 경우 LogicalDisplayMapperPowerManager은 다음과 같이 기기 동작을 제어합니다.

  1. LogicalDisplayMapperFoldSettingProvider를 사용하여 FOLD_LOCK_BEHAVIOR 설정 값을 읽습니다.
  2. 설정 값에 따라 다음을 실행합니다.
    • 값이 stay_awake_on_fold_key이면 기기가 절전 모드로 전환되지 않습니다.
    • 값이 selective_stay_awake_key 또는 sleep_on_fold_key이면 LogicalDisplayMapperPowerManager#goToSleep 신호를 보냅니다.
      • selective_stay_awake_key의 경우 #goToSleep 신호에 PowerManager.GO_TO_SLEEP_FLAG_SOFT_SLEEP 플래그가 포함됩니다. 이렇게 하면 인증 없이 기기에 키가드가 표시됩니다.
      • sleep_on_fold_key의 경우 이 플래그 없이 #goToSleep 신호가 전송되어 기기가 잠깁니다.