安卓手机电池剩余使用时间

3

我正在寻找一段代码,用于估算/猜测安卓手机电池完全耗尽前的剩余时间。我的搜索结果充斥着可用的应用程序以及常见评论,即计算它几乎没有用处。然而,我需要这段代码。任何帮助,即使是一个粗略的片段,都可以为入门提供帮助。


1
下面的人说得对,你真的猜不到。但是你可以大概计算一下,每次它下降1%。计算它下降1%需要多长时间,然后看看还剩下多少百分比。并且每下降1%就进行一次检查。 - Bigflow
2个回答

2
您无法准确猜测电池剩余使用时间,因为可能有不同的应用程序或服务在消耗电池。因此,剩余时间可能会有所不同。
但是,您可以通过注册接收器以获取广播接收器的帮助来获得电池寿命,以便于操作 Intent.ACTION_BATTERY_CHANGED。我的答案只是关键点,请从Android开发者网站获取信息。
通过在BroadcastReceiver的onReceive()方法中使用上述Intent操作,您将获得当前可用的电池电量(例如50%、60%等)。但是,您无法估计剩余时间,因为某些应用程序可能会消耗更多的电力。因此,我认为将电池电量转换为剩余时间的转换将无法给出正确的结果。
battery_level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);

我希望您可以从中获益。

所以,我正在尝试使用基于从100%到99%的时间来外推的方法,来计算剩余时间。为此,我需要从系统中获取电池状态,但我无法获取ACTION_BATTERY_CHANGED意图。我如何确保不管何时发送,都能获取它的值,即获取其上次发送时的值。我已将其添加到清单中: - user1841900

0
@Override
public void onCreate() {
    BroadcastReceiver batteryReceiver = new 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);
            Log.e("BatteryManager", "level is "+level+"/"+scale+", temp is "+temp+", voltage is "+voltage);
        }
    };
    IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(batteryReceiver, filter);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接