Android开发:显示电池电量

car*_*erz 4 android power-management

我一直在寻找这个,只发现真的搞砸了.是不是有一种简单的方法可以在吐司或Textview上显示21%的电池电量?或者我怎样才能实现这一目标?

//西蒙

Com*_*are 14

要立即获得电池电量,请致电:

registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
Run Code Online (Sandbox Code Playgroud)

(注意:从内存中输入,请根据需要调整)

这将返回一个Intent记录在BatteryManager课堂上的各种额外内容.使用BatteryManager.EXTRA_LEVELBatteryManager.EXTRA_SCALE确定剩余的百分比.

如果您需要知道电池更换后的一段时间,请使用BroadcastReceiver他答案中概述的@Augusto方法.


Aug*_*sto 10

如果您的意思是更改仿真器上的电池状态,请执行以下操作.通过telnet连接到仿真器并更改状态和容量

> telnet localhost 5554
Android Console: type 'help' for a list of commands
OK
power ac off
OK
power discharging
OK
power capacity 21
OK
exit
>
Run Code Online (Sandbox Code Playgroud)

啊,你可以在Ted提到的页面上做它所说的,然后用一个处理程序来表示祝酒.这是您需要添加到活动中的代码.

private Handler handler = new Handler;

private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(final Context context, Intent intent) {
        int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
        int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
        Log.i(TAG, "level: " + level + "; scale: " + scale);
        int percent = (level*100)/scale;

        final String text = String.valueOf(percent) + "%";
        handler.post( new Runnable() {

            public void run() {
                Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
            }
        });

    }
};
Run Code Online (Sandbox Code Playgroud)

  • @Augusto:理想情况下,使用`BatteryManager.EXTRA_LEVEL`而不是`"level"`.此外,级别不是百分比.它的值范围从0到'BatteryManager.EXTRA_SCALE`附加值.在许多设备上,比例*是*100,但不要假设. (3认同)

XXX*_*XXX 6

    public static String batteryLevel(Context context)
    {
        Intent intent  = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));   
        int    level   = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
        int    scale   = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
        int    percent = (level*100)/scale;
        return String.valueOf(percent) + "%";
    }
Run Code Online (Sandbox Code Playgroud)