首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android BatteryManager仅返回1

Android BatteryManager仅返回1
EN

Stack Overflow用户
提问于 2013-02-11 11:07:04
回答 2查看 1.1K关注 0票数 3

当我的重复警报广播被调用时,我正在尝试读取Android电池的状态,我有以下设置:

代码语言:javascript
复制
public class RepeatingAlarm extends BroadcastReceiver {

    @Override       
    public void onReceive(Context context, Intent intent)
    {

            // Acquire the make of the device
            final String PhoneModel = android.os.Build.MODEL;
            final String AndroidVersion = android.os.Build.VERSION.RELEASE;

            // Grab the battery information
            int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
            int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
            final float batteryPct = level / (float)scale; 
    }

}

但我不明白它为什么要返回那个batteryPct = 1。我是不是漏掉了什么?我根据android Google页面添加了正确的权限,但这似乎没有帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-11 11:22:13

您将获得适用于levelscale-1。这是因为您可能正在尝试在清单中广播ACTION_BATTERY_CHANGED

ACTION_BATTERY_CHANGED是一个粘性意图,您不能在清单中注册它的接收者。请尝试以下操作

代码语言:javascript
复制
 Intent i = new ContextWrapper(applicationContext).registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
 // now you can get the level and scale from this intent variable
int level = i.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = i.getIntExtra(BatteryManager.EXTRA_SCALE, -1);

float battPct = level/(float)scale;

你不需要为了这个目的而设计一个接收器,只要你想用上面提到的方法就行了。

票数 9
EN

Stack Overflow用户

发布于 2013-02-11 11:11:27

对于levelscale变量,您可能都会得到-1 (您指定的默认值),因此请尝试打印它们的值,以确保intent正确设置了这些值。

你应该听ACTION_BATTERY_CHANGED to get battery level in Android

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

https://stackoverflow.com/questions/14805318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档