Androidはアプリによるバッテリー消費をどのように計算しますか?


24

Androidは個々のハードウェアコンポーネントが使用するエネルギーをどのように測定しますか?Androidは個々のプロセスで使用されるエネルギーをどのように測定しますか?


1秒間に実行される命令の数は推測します。
AZ_

6
@Algo:CPUを多く使用するバックグラウンドアプリケーションが、CPUをほとんど使用せず、Wi-FiとGPSとディスプレイを多く使用する別のアプリケーションよりもバッテリー消費量が多いと考えるのは、まったく誤解を招くでしょう。
ライライアン

その場合、アプリケーションが取得した許可の数からヒントを得ることができます。
AZ_

バッテリーの統計で@ LieRyan、wifi、gps、bluetoothなどは、バッテリーの独自の「消費者」として計算されていませんか?
ライアンコンラッド

回答:


11

Androidは、バッテリーの使用に影響するイベントを追跡し、この情報をbatterystats.binファイルに保存します。いくつかの例:

  • 特定のbrithness設定で時間の長さの画面がオンになっていた
  • どのアプリケーション(またはAndroidアプリ以外のプロセス)とウェイクロックを保持していた期間(デバイスがスリープ状態にならないようにする)
  • プロセスごとのCPU使用率(Androidアプリまたは他のプロセス)
  • 電話信号強度
  • GPSの使用

Androidは、メーカーによってデバイスに含まれている構成情報に基づいて、各アプリケーションまたはコンポーネント(画面など)が使用する電力を計算します。

すべてが測定されるわけではないため、統計が誤解を招く場合がありますが、Androidプラットフォームのリリースごとに改善されます。

バッテリー統計は、以下を使用してデバイスからダンプできます。

adb shell dumpsys batterystats

以下は、Diane Hackbornによる投稿の興味深い断片で、ウェイクロックの電力消費に関する詳細が含まれています。

ウェイクロックからの電力を計算する方法は2つあります。

  1. 一部のチップセットでは、ウェイクロックを保持するだけで、CPUが完全に深いスリープ状態になるのを防ぐ必要があります。報告されたバッテリー使用量では、この追加の電力使用量は、ウェイクロックを保持しているすべてのアプリに分散されます。

  2. ウェイクロック自体が電力の使用を引き起こさない場合でも、1つのアプリでウェイクロックを保持することで、他のアプリケーションが実行され、CPUがそうでない場合はCPUを実行できるようになります。(たとえば、一部のアプリには{sleep(1); do something;}ループがあり、ウェイクロックが保持されていない場合は実行されません。)これに対処するために、アプリケーションのCPU使用率の半分が非難されるウェイクロックを保持しているもの。


あなたの答えを証明するソース/リファレンスを提供できますか?
薄暗い深さ

すべての情報は、この分野に詳しいGoogle開発者が提供するgoogle +スレッドへのリンクからのものです。
パウェウナドルスキー

1
新しいデバイスの正しいコマンド(どのAPIからのものかわからない)は次のとおりです:adb shell dumpsys batterystats、または(ファイル内に必要な場合):adb shell dumpsys batterystats> batterystats.txt
android developer
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.