最後に携帯電話を充電した時間をプログラムで確認するにはどうすればよいですか? 私が探しているのは、呼び出された TextView で次のように表示されるものtime
です。
前回の充電: 3 時間前
もちろん、充電中の場合は
前回の充電: 0 時間前
またはこのようなもの。AlarmManager を登録する必要があると思いますが、確かです。この見積もりを作成したいだけです。どうすればできますか?
最後に携帯電話を充電した時間をプログラムで確認するにはどうすればよいですか? 私が探しているのは、呼び出された TextView で次のように表示されるものtime
です。
前回の充電: 3 時間前
もちろん、充電中の場合は
前回の充電: 0 時間前
またはこのようなもの。AlarmManager を登録する必要があると思いますが、確かです。この見積もりを作成したいだけです。どうすればできますか?
Androidがすぐに最終充電時間のAPIを提供するとは思わない.
または、ブロードキャストに登録することもできます。
ACTION_POWER_DISCONNECTED/ACTION_POWER_CONNECTED
充電器が切断されるたびに時間を節約し、それをアプリで使用します。
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}'
それを説明するには:
最後のフル充電よりも充電に関心がある場合は、「bt」行の 6 番目の列を見てください。これbatterystats --checkin
は、充電器からの最後の切断からのミリ秒です。これは、以前のバージョンの Androidでも動作し、batteryinfo
代わりにbatterystats
.
充電器が現在接続されている場合、これらの値は反映されないため、そのための Gaurav Arora の回答で説明されている意図に耳を傾ける必要があります。