Android 11의 자동 절전 모드는 사용자 비활성 제한 시간을 설정하여 지정된 시간이 지나면 FLAG_KEEP_SCREEN_ON
이 있는 창이 표시되어 있거나 FULL_WAKE_LOCK
, SCREEN_BRIGHT_WAKE_LOCK
, SCREEN_DIM_WAKE_LOCK
수준의 wake lock이 유지되더라도 화면을 끄는 절전 기능입니다.
레벨 PARTIAL_WAKE_LOCK
의 wakelock은 이 기능에 영향을 받지 않습니다.
제한 시간이 만료되기 직전에 기기와 상호작용하지 않을 경우 기기가 절전 모드로 전환된다는 경고 메시지가 사용자에게 표시될 수 있습니다.
이 컨텍스트에서 사용자 활동은 USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS
플래그를 포함하지 않고 PowerManager#userActivity
호출을 트리거하는 모든 것을 의미합니다 (다음을 포함하되 이에 국한되지 않음).
- 터치스크린과 상호작용
- 물리적 버튼 누르기
- 외부 액세서리의 입력 이벤트 (예: 연결된 키보드, 블루투스 리모컨, IR 원격)
- 음성 상호작용
- 원터치 플레이와 같은 특정 HDMI CEC 메시지 수신
- 새 전송 세션 시작
맞춤설정
기능이 사용 설정되면 지정된 사용자 비활성 시간 후 기기 화면에 경고가 표시됩니다. 아무 조치도 취하지 않으면 화면이 꺼집니다. 이러한 구성 옵션을 사용하여 기능을 맞춤설정할 수 있습니다.
제한 시간 구성
제한 시간을 구성하려면 frameworks/base/core/res/res/values/config.xml
에서 다음 요소를 업데이트합니다.
config_attentiveTimeout
- 기본 사용자 비활성 시간(밀리초)을 지정합니다. 지정된 시간이 지나면 화면이 꺼지며 이는 화면 wake lock이 설정된 경우에도 마찬가지입니다.
- 빌드 시간에 설정합니다.
- 값이
0
~config_minimumScreenOffTimeout
이면 제한 시간이config_minimumScreenOffTimeout
으로 설정되어 절전 모드가 해제된 직후 기기의 화면이 꺼지지 않도록 합니다. - 기본값은
-1
이며, 이 기능을 사용 중지합니다.
기본 제한 시간 재정의
기본 제한 시간 설정을 재정의하려면 다음 요소를 업데이트하세요.
Settings.Secure.ATTENTIVE_TIMEOUT
- 이 매개변수를 설정하면
config_attentiveTimeout
으로 설정된 기본 대기 시간 제한 시간을 재정의합니다. - 런타임 시 설정할 수 있습니다.
경고 전 지속 시간 구성
지속 시간을 구성하려면 frameworks/base/core/res/res/values/config.xml
에서 다음 요소를 업데이트합니다.
config_attentiveWarningDuration
- 오랜 시간 사용자의 활동이 없을 때 화면이 꺼지기 전에 사용자에게 얼마나 오랫동안 경고 메시지를 표시할지를 나타냅니다.
- 이 값은 자동 절전 모드의 설정된 제한 시간보다 훨씬 짧아야 합니다. 그러지 않으면 경고 대화상자가 계속 표시되고 이를 닫을 수 없습니다.
- 기본:
30000
(30s).
TV 설정 제한 시간 설정 표시
제한 시간 환경설정을 표시하려면 packages/apps/TvSettings/Settings/res/values/config.xml
에서 다음 요소를 업데이트합니다.
config_show_standby_timeout
- 미디어 재생 중에 화면을 끄도록 허용하는 환경설정 항목을 표시할지 여부입니다.
- 기본값은
false
입니다.
경고 UI를 위한 리소스
- 경고 대화상자의 레이아웃은
frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml
에 정의되어 있습니다. - 대화상자의 다음 문자열은
frameworks/base/packages/SystemUI/res/values/strings.xml
와frameworks/base/packages/SystemUI/res-product/values/strings.xml
에서 정의됩니다. inattentive_sleep_warning_title
inattentive_sleep_warning_message
빌드 시간 구성과 리소스는 리소스 오버레이에 의해 변경될 수 있습니다.
구현
다음을 사용하여 기능을 사용 설정합니다.
- 기본
config_attentiveTimeout
을 재정의합니다. - AOSP
TvSettings
를 사용하는 경우: config_show_standby_timeout
를 재정의하여 설정에서 이 기능을 사용 중지합니다.Settings.Secure.ATTENTIVE_TIMEOUT
를 설정하는 자체 설정을 구현합니다.
유효성 검사
이 기능의 CTS 테스트는 cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java
에 있습니다.
예시 및 소스
frameworks/base/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningView.java
에는 기본 경고 UI 구현이 포함되어 있습니다.packages/apps/TvSettings
는 설정에서 기능을 노출하는 방법의 예시를 제공합니다.
직접 테스트 사례 예시
기기의 상태 HAL(하드웨어 추상화 계층)이 기기에 배터리가 있다고(
battery_present
가true
임) 보고하는 경우stay_on_while_plugged_in
개발자 설정이 꺼져 있어야 합니다. 그러지 않으면 이 기능으로 화면이 꺼지지 않을 수 있습니다.adb shell settings put global stay_on_while_plugged_in 0
- 자동 절전 모드의 제한 시간을 경고 대화상자의 지속 시간보다 몇 초 더 길게 설정합니다.
adb shell settings put secure attentive_timeout 32000
- 동영상 재생을 다시 시작하여 화면 wake lock을 확보합니다.
- 절전 모드 경고 대화상자가 몇 초 후에 표시되는지 확인합니다.
- 설정된 제한 시간이 지나면 화면이 꺼지는지 확인합니다.