1

最後に携帯電話を充電した時間をプログラムで確認するにはどうすればよいですか? 私が探しているのは、呼び出された TextView で次のように表示されるものtimeです。

前回の充電: 3 時間前

もちろん、充電中の場合は

前回の充電: 0 時間前

またはこのようなもの。AlarmManager を登録する必要があると思いますが、確かです。この見積もりを作成したいだけです。どうすればできますか?

4

2 に答える 2

1

Androidがすぐに最終充電時間のAPIを提供するとは思わない.

または、ブロードキャストに登録することもできます。

ACTION_POWER_DISCONNECTED/ACTION_POWER_CONNECTED

充電器が切断されるたびに時間を節約し、それをアプリで使用します。

于 2013-08-27T13:27:00.787 に答える
0

Android 5.0以降では、権限を追加します。

<uses-permission android:name="android.permission.DUMP" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

次に、アプリから を使用Runtime.exec()して実行しdumpsys batterystats --checkin --chargedます。bt出力 (CSV) では、4 列目に次のような行があります。

9,0,l,bt,6,208938,208938,15441248,15441248,1434662557297,0,0

10 列目の数値 (1434662557297この場合) は、デバイスが最後にフル充電を完了したときのタイムスタンプ (エポックからのミリ秒単位)です。つまり、デバイスを取り外したときです。現在の日付と時刻からそれを差し引くことは (請求からの時間を取得するために) 簡単です。

これをadbシェルから実行したい場合は、スクリプトに保存して1d 2h 3mスタイル形式を生成できるやや複雑なコマンドを思いつきました。

busybox expr $(date +%s) - $(dumpsys batterystats --checkin | grep "l,bt" | busybox awk -F',' '{printf "%i", $10/1000}') | busybox awk '{printf "%id %ih %im\n", $1/60/60/24, $1/60/60 % 24, $1/60 % 60}'

それを説明するには:

  1. 最後の充電器切断のエポック時間からのミリ秒を含む batterystats 行を取得します
  2. awk を使用してその時間を取り除き、秒に変換します
  3. 現在の時刻からそれを減算して、間隔を秒単位で取得します
  4. awk を使用してフォーマットします

最後のフル充電よりも充電に関心がある場合は、「bt」行の 6 番目の列を見てくださいこれbatterystats --checkinは、充電器からの最後の切断からのミリ秒です。これは、以前のバージョンの Androidでも動作し、batteryinfo代わりにbatterystats.


充電器が現在接続されている場合、これらの値は反映されないため、そのための Gaurav Arora の回答で説明されている意図に耳を傾ける必要があります。

于 2015-06-26T14:33:30.113 に答える