Android 9 蓝牙协议初始化

先讲一下Application类的使用
要使用自定义的Application,首先就是要自己新建一个Application的子类,然后把它的名字写在manifest文件里面的application标签里的android:name属性就行,如我的Application子类名字是BaseApplication,则:

     android:name=".BaseApplication"

1. 初始化资源
由于Application类是在APP启动的时候就启动,启动在所有Activity之前,所以可以使用它做资源的初始化操作,如图片资源初始化,WebView的预加载,推送服务的注册等等,注意不要执行耗时操作,会拖慢APP启动速度。
2.数据全局共享
可以设置一些全局的共享常量,如一些TAG,枚举值等。
可以设置一些全局使用的共享变量数据,如一个全局的Handler等等,但是要注意,这里缓存的变量数据的作用周期只在APP的生命周期,如果APP因为内存不足而结束的话,再开启这些数据就会消失,所以这里只能存储一些不重要的数据来使数据全APP共享,想要储存重要数据的话需要SharePreference、数据库或者文件存储等这些本地存储。
可以设置一些静态方法来让其他类调用,来使用Application里面的全局变量,如实现APP一键退出功能时候会用到。

蓝牙协议的初始化

每一个应用都对应一个Application类,而且该类是一个应用的入口。而蓝牙协议的初始化就是放在这个入口当中进行初始化。在packages\apps\Bluetooth\AndroidManifest.xml中有:
在这里插入图片描述
所以应用程序首先执行AdapterAPP类,该类继承了Application。
在这里插入图片描述
Config.init()方法就是对各个协议做初始化工作:
在这里插入图片描述
在这里插入图片描述
PROFILE_SERVICES_FLAG数组包含了一些协议的“R.bool.协议”的资源属性,这些属性值在/packages/apps/Bluetooth/res/values/config.xml,当协议对应的flag要为true,就从PROFILE_SERVICES[]中将对应的协议类添加到profiles,最后通过“profiles.toArray(SUPPORTED_PROFILES)”转换为对应的类,比如A2dpService。

这个Config.java只是把所有协议添加到sSupportedProfiles。如果要加载某个协议,则调用Config.getSupportedProfiles()并进行判断、或启动协议。
在这里插入图片描述
启动协议:
在这里插入图片描述
AdapterService.startProfileServices()获得协议的配置信息后,将AdapterStateMachine切换到STARED模式(即OnState模式):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如上,用startService启动各个协议对应的服务。下面介绍A2DPService:
A2DPService的启动:
在这里插入图片描述
A2DPSinkService的启动:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值