Android 10에는 루틴 기반이라 불리는 절전 모드 예약 옵션이 도입되었습니다. 이 옵션을 사용하면 OEM이 선택한 앱이 시스템에 대한 신호를 제공하여 좀 더 지능적인 절전 모드 예약을 사용할 수 있습니다. 이 옵션에는 구성이 필요하며 구현 여부는 선택사항입니다.
기기 설정
공급업체 사양
기기가 올바르게 구성되었음을 설정 UI에 알리려면 config 오버레이를 사용하여 앱의 패키지 이름으로 값 config_batterySaverScheduleProvider
를 재정의합니다.
예를 들어 앱 패키지 com.google.android.apps.turbo
가 루틴 기반 설정을 제어하도록 하고 싶은 경우에는 이 config 값을 아래와 같이 구성해야 합니다.
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
그러면 휴대전화에 루틴 기반 옵션이 표시됩니다. 확인하려면 이미지를 빌드하고 휴대전화에 플래시한 다음 설정 > 배터리 > 절전 모드 > 절전 모드 예약으로 이동합니다. 루틴 기반 옵션이 표시됩니다.
기본값 off 기준
새로운 config_dynamicPowerSavingsDefaultDisableThreshold
필드는 루틴 기반 스케줄러가 절전 모드를 사용 설정한 경우 시스템이 절전 모드를 사용 중지하는 배터리 수준을 지정합니다. 시스템 기본값은 80%이지만 변경할 수 있습니다.
앱 구성
권한
앱이 앱에서 절전 모드를 켜도록 하는 데 필요한 API는 android.permission.POWER_SAVER
권한으로 보호됩니다. 이는 서명/독점 권한이므로 privapp-whitelist
에서 절전 모드를 트리거할 수 있도록 허용할 앱에 이 권한을 부여하세요.
다음은 앱에 privapp
권한을 부여하는 방법의 예입니다.
<privapp-permissions package="com.google.android.apps.turbo">
<permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>
이 권한을 시스템 이미지의 앱 버전에 미리 부여하지 않으면 앱이 권한을 얻거나 API를 제대로 호출할 수 없습니다. 시스템은 일반적인 권한 오류 외의 어떠한 피드백도 제공하지 않으므로 API를 호출할 수 있고 효과를 관찰할 수 있는지 확인해야 합니다.
설치
루틴 기반이 제대로 작동하기 위해서는 필수 권한을 보유한 시스템 이미지에 앱을 사전 설치해야 합니다. 한 개의 앱에만 POWER_SAVER
권한을 부여하고 루틴 기반 API를 제어하도록 허용합니다. 2개 이상의 앱이 권한을 사용하려고 시도할 때 이 기능의 동작은 지원되지 않으며 지정되지도 않습니다.
절전 모드 트리거
API
설정이 현재까지 정상적이라는 가정 하에, config에 지정된 OEM 앱은 PowerManager에서 관련 메서드를 정상적으로 호출하여 절전 모드를 트리거할 수 있어야 합니다.
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
루틴 기반 절전 모드 예약 옵션이 사용 설정되어 있고 앱이 powerSaveHint
의 true
값으로 이 메서드를 호출하면 절전 모드가 켜집니다. 앱이 시스템과 통신할 수 없는 경우 시스템이 배터리 잔량이 어느 정도일 때 절전 모드를 꺼도 안전한지 알 수 있도록 disableThreshold
를 지정합니다.
이 API는 사용자에 의해 재정의될 수 있으며 절전 모드가 백분율 기반 자동 절전 모드와 같은 방식으로 일시중지될 수 있습니다. 자세한 내용은 API 문서를 참조하세요.
API가 정상적으로 호출되었는지 확인하려면 설정을 전역적으로 쿼리하여 지원 설정에서 API 호출에 따라 값을 변경했는지 확인합니다.
예를 들어 사용자가 루틴 절전 모드를 선택했고 앱에서 setDynamicPowerSaveHint(true, 10)
를 호출할 경우 전역 설정의 값은 다음과 같아야 합니다.
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1
그런 다음 setDynamicPowerSaveHint(false, 25)
를 호출하면 값이 다음과 같아야 합니다.
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0
이 adb
명령어를 사용하여 이러한 값을 확인할 수 있습니다.
adb shell settings get global <setting-name>
인증
OEM에서 어떤 동작을 사용하여 루틴 절전 모드 트리거 시점을 결정할지 알 수 없으므로 이 기능을 확인할 수 있는 자동화된 방법은 없습니다. 따라서 OEM은 통합을 테스트하여 동작이 예상을 충족하는지 확인해야 합니다. 특히 기기가 아래의 작업을 수행할 수 있는지 확인해야 합니다.
- 사용자가 절전 모드 예약 UI에서 백분율 기반을 선택하고 15%를 선택합니다. 절전 모드는 배터리 수준이 15%에 도달했을 때에만 자동으로 켜져야 합니다.
- 사용자가 절전 모드 예약 UI에서 루틴 기반을 선택합니다. 앱이
true
로 API를 호출하면 절전 모드가 켜집니다. 또한 기기가 지정된 기준 수준으로 충전되고 연결이 해제되면 절전 모드가 자동으로 꺼집니다. - 사용자가 절전 모드 예약 UI에서 없음을 선택합니다. 그러면 절전 모드가 자동으로 켜지면 안 됩니다.
- 앱에서 절전 모드를 켜고 사용자가 빠른 설정 및 설정 등을 사용하여 수동으로 절전 모드가 꺼지도록 재정의하면 사용자가 수동으로 다시 켜거나 기기를 연결할 때까지 꺼진 상태를 유지해야 합니다.