社区首页 >问答首页 >如何检测电池电量不足的时间: Android?

如何检测电池电量不足的时间: Android?
EN

Stack Overflow用户
提问于 2012-11-05 09:02:20
回答 5查看 18.8K关注 0票数 13

我想在设备电池电量不足时关闭我的应用程序。我在manifest中添加了以下代码。

代码语言:javascript
代码运行次数:0
复制
 <receiver android:name=".BatteryLevelReceiver" 
         <intent-filter>
            <action android:name="android.intent.action.ACTION_BATTERY_LOW" />
            <action android:name="android.intent.action.ACTION_BATTERY_OKAY" />
        </intent-filter>
 </receiver>

并在接收器中执行以下代码

代码语言:javascript
代码运行次数:0
复制
public class BatteryLevelReceiver extends BroadcastReceiver 
{

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        Toast.makeText(context, "BAttery's dying!!", Toast.LENGTH_LONG).show();
        Log.e("", "BATTERY LOW!!");
    }
}

我正在模拟器上运行应用程序,并使用telnet更改电池电平。它会改变电池电量,但不会显示任何toast或日志。

我遗漏了什么?如有任何帮助,我们不胜感激!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-11-05 09:07:40

在代码中注册接收器,而不是在AndroidManifest文件中。

代码语言:javascript
代码运行次数:0
复制
registerReceiver(batteryChangeReceiver, new IntentFilter(
    Intent.ACTION_BATTERY_CHANGED)); // register in activity or service

public class BatteryChangeReceiver extends BroadcastReceiver {

    int scale = -1;
    int level = -1;
    int voltage = -1;
    int temp = -1;

    @Override
    public void onReceive(Context context, Intent intent) {
        level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
        scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
        temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
        voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
    }
}

unregisterReceiver(batteryChangeReceiver);//unregister in the activity or service

或者使用null接收器收听电池电量。

代码语言:javascript
代码运行次数:0
复制
Intent BATTERYintent = this.registerReceiver(null, new IntentFilter(
        Intent.ACTION_BATTERY_CHANGED));
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
Log.v(null, "LEVEL" + level);
票数 7
EN

Stack Overflow用户

发布于 2013-05-14 19:20:42

您可以在AndroidManifest.xml中注册接收器,但请确保您要过滤的操作是

android.intent.action.BATTERY_LOW

而不是

android.intent.action.ACTION_BATTERY_LOW

(您已经在代码中使用了它)。

票数 41
EN

Stack Overflow用户

发布于 2013-08-22 21:29:32

k3v是正确的。

文档中实际上有一个错误。它特别提到要使用android.intent.action.ACTION_BATTERY_LOW。但是放在清单中的正确操作是android.intent.action.BATTERY_LOW请看这里:http://developer.android.com/training/monitoring-device-state/battery-monitoring.html

(不能投票给k3v的答案,没有足够的StackOverflow点东西...)

更新:我现在可以而且确实投票支持k3v的答案:-)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13228849

复制
相关文章
Linux 让进程在关闭终端后继续执行
后台进程退出是由于登陆shell收到了SIGHUP信号后在退出前将SIGHUP转发给所有的作业(jobs)。jobs由于收到SIGHUP而终止运行。
白墨石
2021/01/13
2.9K0
【Linux】后台进程
在Linux系统中,后台进程是一种能够在后台运行而不占用终端的进程。理解和有效管理后台进程对于系统管理员和开发者至关重要。本文将深入探讨Linux中的后台进程,包括后台运行的方式、管理后台进程的命令以及一些实用技巧。
人不走空
2024/02/21
4200
Windows安装MySQL提示由于找不到MSVCP120.dll,无法继续执行代码
在一个全新的Windows环境中安装MySQL,结果报错“由于找不到MSVCP120.dll,无法继续执行代码.重新安装程序可能会解决此问题”。
AiDBA宝典
2023/08/09
3890
Windows安装MySQL提示由于找不到MSVCP120.dll,无法继续执行代码
IAR故障解决:由于找不到mfc140u.dll,无法继续执行代码
美好的周一,打开电脑,启动IAR,准备继续解决上周遗留的bug,突然无法启动IAR,出现以下错误:
不脱发的程序猿
2021/03/02
2.7K0
IAR故障解决:由于找不到mfc140u.dll,无法继续执行代码
Tomcat shutdown执行后无法退出进程问题排查及解决
问题定位及排查 上周无意中调试程序在Linux上ps -ef|grep tomcat发现有许多tomcat的进程,当时因为没有影响系统运行就没当回事。而且我内心总觉得这可能是tomcat像nginx一
用户1105954
2018/01/12
2.8K0
[apue] 使用文件记录锁无法实现父子进程交互执行同步
父子进程间交互执行是指用一种同步原语,实现父进程和子进程在某一时刻只有一个进程执行,之后由另外一个进程执行,用一段代码举例如下:
海海
2022/08/19
8330
【Linux网络编程】:守护进程,前台进程,后台进程
●无控制终端:脱离控制终端,避免收到终端的干扰,它是和客户端进行交流的。和Xshell终端摆脱了联系。
用户11396661
2025/02/04
1000
【Linux网络编程】:守护进程,前台进程,后台进程
关于后台执行顺序
前言:了解应用程序移动到后台时执行自定义代码的顺序。 概述: 应用程序可以从几个不同的起点进入到后台,如图1所示。系统事件可以导致一个挂起的应用程序返回到后台,或者导致一个不运行的应用程序直接启动到后
Dwyane
2018/06/13
1.2K0
识别验证码继续爆破后台(三)
有的时候,并不是说所有验证码用api或者tesseract都可以正确识别出来的,还是需要经过相关训练,让tesseract知道你想让它识别出来的验证码。
Jumbo
2018/07/26
1K0
识别验证码继续爆破后台(三)
Python异常处理 -跳过异常继续执行
当循环中出现异常时,如何跳过循环中的异常继续执行,下面是一种可行的方法: import pandas as pd dates=range(20161010,20161114) pieces=[] for date in dates: try: data=pd.read_csv('A_stock/overview-push-%d/stock overview.csv' %date, encoding='gbk') pieces.append(data) exce
py3study
2020/01/06
3.3K0
apisix 如何拦截插件继续往下执行
    core.log.warn("plugin rewrite phase, conf: ", core.json.encode(conf))
空盒子里的巧克力糖
2022/12/02
5220
安装MySQL ,出现由于找不到 MSVCR120.dll,无法继续执行代码解决方法”
目录 1 问题 2 解决 1 问题 2 解决 下载一个工具软件,利用这个软件进行修复 百度云 链接:https://pan.baidu.com/s/1W5SVye5Ist0MHOAnNfCy1w 提取码:walj 安装完成,重启就可以了
一写代码就开心
2022/06/12
7410
安装MySQL ,出现由于找不到 MSVCR120.dll,无法继续执行代码解决方法”
命令执行之绕过防火墙继续执行命令
我们在实战中经常会遇到命令执行漏洞,而由于现在各类waf横行,就会导致我们在执行一些命令时直接被waf拦截,比如执行cat /etc/passwd的时候,直接被拦截了关键字,导致我们无法成功执行。类似于下图这种。
鸿鹄实验室
2021/04/15
1.4K0
命令执行之绕过防火墙继续执行命令
后台JOB监控(前台执行)
REPORT zup. *STATUS = 'R'.运行 'F' 完成 'A' 取消 DATA:message TYPE string. DATA:BEGIN OF gt_job OCCURS 0, jobname TYPE tbtcp-jobname, jobcount TYPE tbtcp-jobcount, status TYPE tbtcp-status, END OF gt_job. INCLUDE ole2incl. DO 10000
古道无仙
2022/01/10
1.1K0
CentOS后台执行命令
查看当前有多少在后台运行的命令 jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。
码客说
2022/11/22
2.7K0
Perl 程序后台执行示例
自己写示例发现这种方法可以使程序进入后台执行状态,大概原理是 fork 子进程,退出主进程,使得程序被 1 号父进程接管,在终端表现则是进入了后台执行状态。
宋天伦
2023/10/18
1360
Perl 程序后台执行示例
screen后台执行命令
系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。
胡齐
2019/11/12
2.7K0
maven执行单元测试失败后继续
最近在进行sonarqube与maven集成时,如果pom文件配置了sonarqube相关配置,那么在pom文件所在目录执行
johnhuster的分享
2022/03/28
1.8K0
【地平线5打不开(找不到XINPUT1_3.dll,无法继续执行代码)】
如果还剩下几个没有进行修复的话,可以鼠标右键,选择在线修复,一个一个进行修复,即可全部修复完成
magize
2023/07/11
7720
【地平线5打不开(找不到XINPUT1_3.dll,无法继续执行代码)】
【DB宝1】Windows安装MySQL提示由于找不到MSVCP120.dll,无法继续执行代码
在一个全新的Windows环境中安装MySQL,结果报错“由于找不到MSVCP120.dll,无法继续执行代码.重新安装程序可能会解决此问题”。
AiDBA宝典
2021/05/06
1.2K0
【DB宝1】Windows安装MySQL提示由于找不到MSVCP120.dll,无法继续执行代码

相似问题

Bash -读取输出时执行后台进程

10

不能将mplayer作为后台进程执行

10

无法在后台运行进程

20

进程继续启动

10

无法登录系统,只能继续显示“内存中断进程”。

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文