【问题标题】:How to know if the phone is charging如何知道手机是否在充电
【发布时间】:2015-06-07 03:05:43
【问题描述】:

我需要知道(通过我的应用程序)Android 设备是否正在充电。有任何想法吗?谢谢

【问题讨论】:

    标签: java android


    【解决方案1】:

    我发现的一件事是,如果您的手机电量为 100%,您将不会收到充电通知。有些人的意思是充电,有些人的意思是当它有外部电源时,不管它是否 100%。我将它们归为一个,如果任何条件为真,则返回真。

    public static boolean isPhonePluggedIn(Context context){
        boolean charging = false;
    
        final Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
        int status = batteryIntent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
        boolean batteryCharge = status==BatteryManager.BATTERY_STATUS_CHARGING;
    
        int chargePlug = batteryIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
        boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
        boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
    
        if (batteryCharge) charging=true;
        if (usbCharge) charging=true;
        if (acCharge) charging=true; 
    
        return charging;
    }
    

    【讨论】:

      【解决方案2】:

      这是有效的代码:

      Intent bat = loader.registerReceiver(null, new
              IntentFilter(Intent.ACTION_BATTERY_CHANGED));
      int level = bat.getIntExtra("level", 0);
      int scale = bat.getIntExtra("scale", 100);
      return level * 100 / scale; 
      

      【讨论】:

        【解决方案3】:
            public static boolean isBatteryCharging(Context context){
            // Check battery sticky broadcast
            final Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
            return (batteryIntent.getIntExtra(BatteryManager.EXTRA_STATUS, -1) == BatteryManager.BATTERY_STATUS_CHARGING);
        }
        

        【讨论】:

          猜你喜欢
          • 2023-03-25
          • 1970-01-01
          • 2016-12-14
          • 2022-11-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-24
          • 2019-09-06
          相关资源
          最近更新 更多