zoukankan      html  css  js  c++  java
  • 第九周安卓开发学习总结(2)

    写在前面

    现在时间是2020年4月17日 01:29:20,即半夜。在经过一天的忙碌学习和处理作业后,终于空下来时间可以学习一下安卓开发的知识。今天学习的是安卓四大组件之一的广播。广播的内容在安卓8.0后被谷歌大幅度修改,所以这块的内容学习的不多,且用的也不多。

    通过广播监听显示电量等内容

    还是老套路,通过例子来学习。这里我们写一个监听电量的小demo。界面就不再展示了,主要看一下Activity的写法:

       private void registerBatteryReceiver() {
            //第二步:我们要收听的频道是:电量变化
            IntentFilter intentFilter = new IntentFilter();
            //第三步:设置频道
            intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
            mBatteryLevelReceiver = new BatteryLevelReceiver();
            //这种注册方式是动态注册
            //第四步:注册广播
            this.registerReceiver(mBatteryLevelReceiver,intentFilter);
        }
    

    以上是注册了广播接收者(动态注册)在安卓8.0后动态注册要更为的方便和好用。静态注册被谷歌限制了很多,很多功能已经无法使用。
    下面是对接受来的内容的处理

              if (intent.ACTION_BATTERY_CHANGED.equals(action)) {
                    Log.d(TAG,"收到了电量变化的广播   action is  "+action);
                    Log.d(TAG,"当前电量为:"+ intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0));
                    int currentLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0);
                    if(mBatteryLevelText!=null){
                        mBatteryLevelText.setText("当前电量为:"+ intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0));
                    }
                    int maxLevel = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 0);
                    //拿到当前电量的最大值后,再除以最大值
                    float percent = currentLevel*1.0f/maxLevel;
                    Log.d(TAG,"当前电量百分比为:"+percent*100+"%");
                }
    

    可以看到,操作还是很简单的。同样的,我们添加代码可以实现监听应用安装,USB插拔等等:

            intentFilter.addAction(Intent.ACTION_POWER_CONNECTED);
            intentFilter.addAction(Intent.ACTION_POWER_DISCONNECTED);
            intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
            intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
            intentFilter.addDataScheme("package");
    
    else if(Intent.ACTION_POWER_CONNECTED.equals(action)){
                    Log.d(TAG,"usb线连接上了...");
                    mUsbStatusText.setText("usb连上了");
                }else if(Intent.ACTION_POWER_DISCONNECTED.equals(action)){
                    Log.d(TAG,"usb线断开了...");
                    mUsbStatusText.setText("usb断开了");
                }else if(Intent.ACTION_PACKAGE_ADDED.equals(action)){
                    Log.d(TAG,"应用安装了....");
                }else if(Intent.ACTION_PACKAGE_REMOVED.equals(action)){
                    Log.d(TAG,"应用卸载了...");
                }
    

    (以上都是安卓8.0以后的写法)

    有序广播

    有序广播使用的频率较低,这里仅做了解。所谓的有序广播就是发送的广播是有顺序的,从高到低依次传达。在安卓8.0以上版本要定义有序广播就需要使用动态注册。这里就不再贴代码了,赶时间要紧。

    后记

    由于自己的基础薄弱,需要付出比别人更多的努力才能赶上。本来寒假应该学习安卓开发,但我都用来巩固自己的java web基础了。导致我拉下了很多内容。辛苦一点也是必然的。现在不奋斗的话,迟早自己要后悔的。加油吧。晚安。

  • 相关阅读:
    2018-div-matrix
    cf663div2
    生成树
    Call to your teacher
    并查集总结
    分组背包
    被3整除的子序列
    多重背包
    12.05
    django生命周期图
  • 原文地址:https://www.cnblogs.com/wushenjiang/p/12717141.html
Copyright © 2011-2022 走看看