怎么抓到电池电量的剩余值,又是怎么对应显出来的呢?底层到上层的流程是?

解决方案 »

  1.   

    android的电量在发生变化时是会进行Intent广播的,你只要注册一个BroadcastReceiver组件就可以接收到,Intent.ACTION_BATTERY_CHANGED(电池电量发生改变时)、Intent.ACTION_BATTERY_LOW(电池电量达到下限时)、和Intent.ACTION_BATTERY_OKAY(电池电量从低恢复到高时)
      

  2.   

    原来是这样, 跟WinCE有点像.
      

  3.   

    BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
                
                @Override
                public void onReceive(Context context, Intent intent) {
                    //intent里是电池的各种
                }
            };
            IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
            registerReceiver(batteryReceiver, filter);
      

  4.   


    谢谢,但是不仅仅想知道的是java层面
      

  5.   

    原来是这样, 跟WinCE有点像.
      

  6.   

    流程大致 是这样的
    在内核驱动中,电池驱动先通过AD芯片采样电池电压参数----》经转换做成电池曲线,这个曲线的内容有电池电量(90%.80%.70%.60%.50%.等等,也可以做到精确为1%),---》在驱动中确定好电池的属性,并注册写到sysfs里,以使用户空间可以得到有关电源的信息。---》这些数据通过JNI传到上层,BATTERYSERVICE.JAVA通过读取SYSFS,得到电池的所有属性。--》针对这些属性做一些处理。低电量发送广播等,update等等。
    大致 应该是这样,如果有不对的地方,请大家指明。谢谢
      

  7.   

    唯一靠谱的就是jzp0409,其他的只要谈到底层驱动的都太不靠谱,还有检测电流的,真晕了,不知道不要乱说,省的误导别人,可以去驱动层里看看,到底检测是电流还是电压。AD转换模块也要看看,到底是转换的电流还是电压,一般微处理器有关的是用的SAR AD转换器,如果转换的是电流,那么比较器那一块怎么把电流进行比较?对放大器那一块看过没有。逻辑就分析不过去。