Android 如何确定上次充电后的时间
如何以编程方式确定上次为手机充电的时间?我要找的是在名为Android 如何确定上次充电后的时间,android,battery,batterylevel,Android,Battery,Batterylevel,如何以编程方式确定上次为手机充电的时间?我要找的是在名为time的文本视图中显示的内容: 上次充电时间:3小时前 当然,如果是收费的话 上次充电时间:0小时前 或者类似的事情。我想我必须注册一个AlarmManager,但我不确定。我只想创建这个估计值。你怎么能做到 我认为android不会在最后一次充电时立即提供API 或者,您可以注册广播,例如 ACTION_POWER_DISCONNECTED/ACTION_POWER_CONNECTED 只要充电器断开连接,就可以节省时间,并在你的应用
time
的文本视图中显示的内容:
上次充电时间:3小时前
当然,如果是收费的话
上次充电时间:0小时前
或者类似的事情。我想我必须注册一个AlarmManager,但我不确定。我只想创建这个估计值。你怎么能做到 我认为android不会在最后一次充电时立即提供API 或者,您可以注册广播,例如
ACTION_POWER_DISCONNECTED/ACTION_POWER_CONNECTED
只要充电器断开连接,就可以节省时间,并在你的应用程序中使用。我认为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" />
第10列中的数字(1434662557297
在本例中)是设备上次完成完全充电时的时间戳(从历元开始以毫秒为单位),即断开连接时。从当前日期和时间中减去它(得到充电后的时间)是很容易的
如果您想从adb shell执行此操作,我确实提出了一个有点复杂的命令,您可以将其保存到脚本中,以生成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列-这是自上次断开充电器后的毫秒数。这也适用于Android的早期版本,使用batteryinfo
而不是batterystats
这些值并不反映充电器当前是否已连接,因此您应该听取Gaurav Arora对此的回答。在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" />
第10列中的数字(1434662557297
在本例中)是设备上次完成完全充电时的时间戳(从历元开始以毫秒为单位),即断开连接时。从当前日期和时间中减去它(得到充电后的时间)是很容易的
如果您想从adb shell执行此操作,我确实提出了一个有点复杂的命令,您可以将其保存到脚本中,以生成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列-这是自上次断开充电器后的毫秒数。这也适用于Android的早期版本,使用batteryinfo
而不是batterystats
这些值并不反映充电器当前是否已连接,因此您应该听取Gaurav Arora对此的回答。您最好使用电池管理器。它会更新充电状态(因此当你将手机插入充电状态时,它会知道)。然后,当你开始卸货时,你就可以开始计时了。我不确定这是不是最好的方法,但这是我脑子里首先想到的。您可能需要注册一个服务来收听电池充电广播(不确定是否有粘性)。文档:我使用电池管理器来计算有关电池的一些信息(如电量、温度以及是否正在充电)。所以我已经在用这个广播了。。但是我不知道当
动作电源断开/动作电源接通时,如何记录这两个时刻并计算时间。你最好使用击球手管理器。它会更新充电状态(因此当你将手机插入充电状态时,它会知道)。然后,当你开始卸货时,你就可以开始计时了。我不确定这是不是最好的方法,但这是我脑子里首先想到的。您可能需要注册一个服务来收听电池充电广播(不确定是否有粘性)。文档:我使用电池管理器来计算有关电池的一些信息(如电量、温度以及是否正在充电)。所以我已经在用这个广播了。。但我不知道当动作电源断开/动作电源接通时如何记录这两个时刻并计算时间。是的,但我怎么能做到呢?我在考虑这个解决方案,但我不知道如何使用它。实际上,在我的文本视图应用程序中,我会显示手机是否正在充电,因此我已经有了一个这样做的广播。。但是,我怎样才能“注册”我插上电话的那一刻和我拔下电话的那一刻呢?然后我要计算所经过的时间..你有什么解决方案吗?或者一个例子?我没有一个有效的代码例子,但是你可以这样做:1。为上述操作注册广播接收器。2.一旦你接收到连接的广播,保存时间戳,它可能不会精确到秒,但我非常确定准确度不会超过几秒。那么无论如何