【问题标题】:How to identify the connection to charger port? [duplicate]如何识别充电器端口的连接? [复制]
【发布时间】:2013-06-30 17:08:46
【问题描述】:

我想检测充电器或USB之类的东西是否连接到设备的充电器端口。有没有办法实现这一点?

我试过这个link。它在充电器连接和断开时工作。它适用于所有设备吗?

提前致谢

【问题讨论】:

  • 我问你,它适用于充电器和usb连接吗?在一些更高版本的设备中,即使使用相同的端口,也有充电和usb的选项。
  • 从下面的答案中看到这一点:plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB - 你可以用任何一种方式返回,USB 和 AC 充电有单独的标志。

标签: android connection port detect


【解决方案1】:

是的,您可以通过意图广播监控电池状态。

电池监视器示例:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;

public class ChargeMon extends BroadcastReceiver {
    private boolean mCharging;
    private boolean mUsb;
    private boolean mAC;

    public void start(Context c) {
        c.registerReceiver(this, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
    }

    public void stop(Context c) {
        c.unregisterReceiver(this);
    }

    public boolean isCharging() {
        return mCharging;
    }

    public boolean isUsb() {
        return mUsb;
    }

    public boolean isAC() {
        return mAC;
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        if(Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())){
            int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS,-1);

            mCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                       status == BatteryManager.BATTERY_STATUS_FULL;

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

            mUsb = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
            mAC = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
        }
    }
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-04-04
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
相关资源
最近更新 更多