blueocean_gao 2017-07-06 11:59 采纳率: 22.2%
浏览 3071
已采纳

andorid6.0获取手机是否充电的状态

Android6.0或andorid7.0获取手机的电量状态怎么拿到?谢谢

  • 写回答

4条回答 默认 最新

  • JPF1024 2017-07-07 03:30
    关注

    https://developer.android.google.cn/training/monitoring-device-state/battery-monitoring.html

    官方中文网站,国内的,不用翻

    多关注官方例子,
    下面摘抄一段:

     确定当前充电状态
    首先,确定当前充电状态。BatteryManager 在一个包含充电状态的粘性 Intent 中广播所有电池和充电详情。
    
    由于它是一种粘性 Intent,因此您并不需要如下一代码段中所示的那样通过简单地调用 registerReceiver传入 null 作为接收器来注册 BroadcastReceiver,便可返回当前电池状态 Intent。您可以在此处传入实际 BroadcastReceiver 对象,但由于稍后我们将会处理更新,因此并不需要这样做。
    
    IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    Intent batteryStatus = context.registerReceiver(null, ifilter);
    您可以提取当前充电状态,并且如果设备正在充电,则还可以提取设备是通过 USB 还是交流充电器进行充电。
    
    // Are we charging / charged?
    int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
    boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                         status == BatteryManager.BATTERY_STATUS_FULL;
    
    // How are we charging?
    int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
    boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
    boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
    通常,如果设备连接了交流充电器,您应该最大限度提高后台更新的频率;而如果设备是通过 USB 充电,则应降低更新频率,如果电池正在放电,则应进一步降低更新频率。
    
    监控充电状态变化
    就像设备可以轻松地插入电源,充电状态也很容易发生变化,因此必须监控充电状态的变化并相应地改变更新频率。
    
    每当设备连接或断开电源时,BatteryManager 都会广播一个操作。 必须接收这些事件,即便您的应用并未运行 — 尤其要考虑到这些事件可能会影响您启用应用以便发起后台更新的频率 — 因此您应该在清单文件中注册一个 BroadcastReceiver,通过在一个 Intent 过滤器内定义 ACTION_POWER_CONNECTED 和 ACTION_POWER_DISCONNECTED 来同时侦听这两种事件。
    
    <receiver android:name=".PowerConnectionReceiver">
      <intent-filter>
        <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
        <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
      </intent-filter>
    </receiver>
    在关联的 BroadcastReceiver 实现内,您可以按上一步所述提取当前充电状态和方法。
    
    public class PowerConnectionReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
            boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                                status == BatteryManager.BATTERY_STATUS_FULL;
    
            int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
            boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
            boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 我想在一个软件里添加一个优惠弹窗,应该怎么写代码
  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流