루틴 절전 모드

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 권한으로 보호됩니다. 이는 서명 또는 권한이 있는 권한입니다. 즉, 앱이 시스템 이미지의 priv-app 디렉터리에 있어야 하며 이 권한을 명시적으로 부여해야 합니다.

권한 있는 앱의 경우 앱과 동일한 파티션의 /etc/permissions/ 디렉터리에 있는 시스템 구성 XML 파일에서 권한을 부여해야 합니다. 예를 들어 패키지 이름이 com.google.android.apps.turbo인 앱에 android.permission.POWER_SAVER 권한을 부여하려면 다음을 실행합니다.

<!-- File located at /etc/permissions/privapp-permissions-DEVICE_NAME.xml -->
<permissions>
    <privapp-permissions package="com.google.android.apps.turbo">
        <permission name="android.permission.POWER_SAVER"/>
    </privapp-permissions>
</permissions>

시스템 이미지에서 앱에 이 권한을 미리 부여하지 않으면 앱이 권한을 획득하거나 API를 성공적으로 호출할 수 없습니다. 시스템은 표준 권한 오류 외에는 피드백을 제공하지 않으므로 앱이 API를 호출하고 그 효과를 관찰할 수 있는지 확인하는 것이 중요합니다.

설치

루틴 기반이 제대로 작동하기 위해서는 필수 권한을 보유한 시스템 이미지에 앱을 사전 설치해야 합니다. 한 개의 앱에만 android.permission.POWER_SAVER 권한을 부여하고 루틴 기반 API를 제어하도록 합니다. 2개 이상의 앱이 권한 및 API 사용을 시도하는 경우의 기능 동작은 지원되지 않으며 지정되지도 않습니다.

루틴 절전 모드 트리거

이 섹션에서는 제공된 API를 사용하여 앱이 일상에 기반한 배터리 절약 모드를 트리거하는 방법을 설명합니다.

API

설정이 성공하면 구성에 지정된 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에서 없음을 선택하면 절전 모드가 자동으로 켜지지 않습니다.
  • 수동 재정의: 앱에서 절전 모드를 켜고 빠른 설정, 설정 또는 기타 방법을 사용하여 절전 모드를 수동으로 재정의하여 사용 중지하면 수동으로 다시 사용 설정하거나 기기를 연결할 때까지 사용 중지 상태가 유지됩니다.