第九周安卓开发学习总结(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基础了。导致我拉下了很多内容。辛苦一点也是必然的。现在不奋斗的话,迟早自己要后悔的。加油吧。晚安。

猜你喜欢

转载自www.cnblogs.com/wushenjiang/p/12717141.html
今日推荐