为了账号安全,请及时绑定邮箱和手机立即绑定

检查设备是否已插入

/ 猿问

检查设备是否已插入

呼如林 2019-12-25 14:50:40

我的应用程序有一个广播接收器,用于监听对的更改ACTION_POWER_CONNECTED,并依次标记屏幕以保持打开状态。


我缺少的是该应用程序在首次运行时检查充电状态的能力。谁能帮我提供代码以手动检查充电状态吗?


查看完整描述

3 回答

?
撒科打诨

多亏了CommonsWare,这是我编写的代码。


public class Power {

    public static boolean isConnected(Context context) {

        Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

        int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);

        return plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS;

    }

}


if (Power.isConnected(context)) {

    ...

}

或Kotlin版本


object Power {

    fun isConnected(context: Context): Boolean {

        val intent = context.registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED))

        val plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1)

        return plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS

    }

}

http://developer.android.com/training/monitoring-device-state/battery-monitoring.html


查看完整回答
反对 2019-12-25
?
杨魅力

public static boolean isPlugged(Context context) {

    boolean isPlugged= false;

    Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

    int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);

    isPlugged = plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB;

    if (VERSION.SDK_INT > VERSION_CODES.JELLY_BEAN) {

        isPlugged = isPlugged || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS;

    }

    return isPlugged;

}

一个较小的更新,以支持无线充电。


查看完整回答
反对 2019-12-25
?
MMTTMM

在Android M +上,您可以BatteryManager通过来使用该服务getSystemService(BATTERY_SERVICE)。在运行pre-M的设备上,您可以使用其他人提到的即时广播。例:


public static boolean isCharging(Context context) {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

        BatteryManager batteryManager = (BatteryManager) context.getSystemService(Context.BATTERY_SERVICE);

        return batteryManager.isCharging();

    } else {

        IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);

        Intent intent = context.registerReceiver(null, filter);

        int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);

        if (status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL) {

            return true;

        }

    }

    return false;

}


查看完整回答
反对 2019-12-25

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信