Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何确定上次充电后的时间_Android_Battery_Batterylevel - Fatal编程技术网

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}'
解释如下:

  • 获取batterystats行,该行包含自上次充电器断开的历元时间起的毫秒数
  • 使用awk去掉该时间并将其转换为秒
  • 将其从当前时间中减去,得到以秒为单位的间隔
  • 使用awk格式化它

  • 如果您关心的是任何充电而不是最后一次完全充电,请查看
    电池测试-签入
    “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}'
    
    解释如下:

  • 获取batterystats行,该行包含自上次充电器断开的历元时间起的毫秒数
  • 使用awk去掉该时间并将其转换为秒
  • 将其从当前时间中减去,得到以秒为单位的间隔
  • 使用awk格式化它

  • 如果您关心的是任何充电而不是最后一次完全充电,请查看
    电池测试-签入
    “bt”行中的第6列-这是自上次断开充电器后的毫秒数。这也适用于Android的早期版本,使用
    batteryinfo
    而不是
    batterystats



    这些值并不反映充电器当前是否已连接,因此您应该听取Gaurav Arora对此的回答。

    您最好使用电池管理器。它会更新充电状态(因此当你将手机插入充电状态时,它会知道)。然后,当你开始卸货时,你就可以开始计时了。我不确定这是不是最好的方法,但这是我脑子里首先想到的。您可能需要注册一个服务来收听电池充电广播(不确定是否有粘性)。文档:我使用电池管理器来计算有关电池的一些信息(如电量、温度以及是否正在充电)。所以我已经在用这个广播了。。但是我不知道当
    动作电源断开/动作电源接通时,如何记录这两个时刻并计算时间。你最好使用击球手管理器。它会更新充电状态(因此当你将手机插入充电状态时,它会知道)。然后,当你开始卸货时,你就可以开始计时了。我不确定这是不是最好的方法,但这是我脑子里首先想到的。您可能需要注册一个服务来收听电池充电广播(不确定是否有粘性)。文档:我使用电池管理器来计算有关电池的一些信息(如电量、温度以及是否正在充电)。所以我已经在用这个广播了。。但我不知道当
    动作电源断开/动作电源接通时如何记录这两个时刻并计算时间。是的,但我怎么能做到呢?我在考虑这个解决方案,但我不知道如何使用它。实际上,在我的文本视图应用程序中,我会显示手机是否正在充电,因此我已经有了一个这样做的广播。。但是,我怎样才能“注册”我插上电话的那一刻和我拔下电话的那一刻呢?然后我要计算所经过的时间..你有什么解决方案吗?或者一个例子?我没有一个有效的代码例子,但是你可以这样做:1。为上述操作注册广播接收器。2.一旦你接收到连接的广播,保存时间戳,它可能不会精确到秒,但我非常确定准确度不会超过几秒。那么无论如何