배터리 사용 정보는 배터리 사용 통계 및 전력 프로필 값에서 파생됩니다.
배터리 사용 통계
프레임워크는 기기 구성요소가 여러 상태로 있었던 시간을 추적하여 배터리 사용 통계를 자동으로 파악합니다. 구성요소(Wi-Fi 칩셋, 셀룰러 라디오, 블루투스, GPS, 디스플레이, CPU)가 상태를 변경하면(사용 중지/사용, 유휴/전출력, 밝기 낮음/높음 등) 제어 중인 서비스가 프레임워크 BatteryStats 서비스에 이를 보고합니다. BatteryStats는 시간 경과에 따른 정보를 수집하고 이를 저장하여 재부팅 전체에 활용합니다. 서비스는 배터리 전류 소모량을 직접적으로 추적하지는 않지만 대신 여러 구성요소에 의한 대략적인 배터리 소모를 파악하는 데 사용할 수 있는 시기 정보를 수집합니다.
프레임워크는 다음과 같은 방식을 사용하여 통계를 수집합니다.
- 푸시. 구성요소 변경을 인식하는 서비스가 상태 변경을 BatteryStats 서비스로 푸시합니다.
- 풀. 앱에서 사용하는 CPU와 같은 구성요소와 관련하여 프레임워크는 전환 지점의 데이터를 자동으로 풀링하여(에: 활동 시작 또는 중지) 스냅샷을 캡처합니다.
리소스 소모는 리소스를 사용 중인 애플리케이션과 관련이 있습니다. 여러 애플리케이션이 동시에 리소스를 사용하는 경우(예: 시스템 정지를 예방하는 wake lock) 프레임워크는 여러 애플리케이션에 걸쳐 소모량을 분산시키지만 소모량이 균일하지는 않습니다.
배터리 전력 소모 문제를 나타낼 수 있는 종료 이벤트(즉, 배터리 잔량이 0에 도달하여 종료가 발생)에 관한 사용 통계가 손실되는 것을 피할 수 있도록 프레임워크에서는 약 30분마다 통계를 플래시합니다.
배터리 사용 통계는 전적으로 프레임워크에 의해 처리되며 OEM 수정은 필요 없습니다.
전력 프로필 값
주의: 기기 제조업체는 구성요소의 전류 소모량 값과 시간 경과에 따른 대략적인 배터리 소모를 정의하는 구성요소 전력 프로필을 제공해야 합니다. 이 프로필은 platform/frameworks/base/core/res/res/xml/power_profile.xml에 정의되어 있습니다. 이 설정에 대한 정보는 전력 값을 참조하세요.
전력 프로필 내에는 전력 소모량이 전류 소모량의 밀리앰프(mA)(공칭 전압 시)로 지정되며, 마이크로암페어(uA)에 지정된 소수 값일 수 있습니다. 값은 배터리에서 소모된 전류에 해당하지 않는 전원 레일에 적용 가능한 값이 아닌 배터리에서 소모된 mA여야 하합니다.
예를 들어 디스플레이 전력 프로필은 디스플레이를 최소 밝기 및 최대 발기로 유지하는 데 필요한 전류의 mA를 지정합니다. 디스플레이를 켠 상태로 유지하기 위한 전력 소모량(디스플레이 구성요소에 의해 소모된 배터리)을 파악하기 위해 프레임워크는 각 밝기 수준에서 소비된 시간을 추적한 다음 이러한 시간 간격을 보간된 디스플레이 밝기 비용으로 곱합니다.
프레임워크 역시 각 애플리케이션의 CPU 시간에 특정 속도에서 CPU를 실행하는 데 필요한 mA를 곱합니다. 이 계산은 애플리케이션이 CPU 코드를 실행하여 얼마나 많은 배터리를 소비하는지에 대한 비교 순위를 설정합니다(포그라운드 앱으로서의 시간과 백그라운드 활동을 포함한 총시간이 별도로 보고됨).