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