루틴 절전 모드

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)

루틴 기반 절전 모드 예약 옵션이 사용 설정되어 있고 앱이 powerSaveHinttrue 값으로 이 메서드를 호출하면 절전 모드가 켜집니다. 앱이 시스템과 통신할 수 없는 경우 시스템이 배터리 잔량이 어느 정도일 때 절전 모드를 꺼도 안전한지 알 수 있도록 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에서 없음을 선택합니다. 그러면 절전 모드가 자동으로 켜지면 안 됩니다.
  • 앱에서 절전 모드를 켜고 사용자가 빠른 설정 및 설정 등을 사용하여 수동으로 절전 모드가 꺼지도록 재정의하면 사용자가 수동으로 다시 켜거나 기기를 연결할 때까지 꺼진 상태를 유지해야 합니다.