Android 9 蓝牙协议初始化

这篇具有很好参考价值的文章主要介绍了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中有:
Android 9 蓝牙协议初始化
所以应用程序首先执行AdapterAPP类,该类继承了Application。
Android 9 蓝牙协议初始化
Config.init()方法就是对各个协议做初始化工作:
Android 9 蓝牙协议初始化
Android 9 蓝牙协议初始化
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()并进行判断、或启动协议。
Android 9 蓝牙协议初始化
启动协议:
Android 9 蓝牙协议初始化
AdapterService.startProfileServices()获得协议的配置信息后,将AdapterStateMachine切换到STARED模式(即OnState模式):
Android 9 蓝牙协议初始化
Android 9 蓝牙协议初始化
Android 9 蓝牙协议初始化
如上,用startService启动各个协议对应的服务。下面介绍A2DPService:
A2DPService的启动:
Android 9 蓝牙协议初始化
A2DPSinkService的启动:
Android 9 蓝牙协议初始化文章来源地址https://www.toymoban.com/news/detail-500086.html

到了这里,关于Android 9 蓝牙协议初始化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android OpenGL 教程——Native 工程初始化

    NDK 的适用场景官方给出三点: 平台间的 App 移植 复用现有库 对软件性能要求较高的场合比如游戏等 有两种方式可以实现 native activity。 native_activity.h android_native_app_glue 由于第二种方法启用另一个线程处理回调和输入事件,NDK 的例子中就采用了这个实现方式。       NDK 工程

    2024年02月16日
    浏览(36)
  • Android OpenGL 教程——窗口初始化&绘制矩形

    上节介绍了 Native 工程初始化,但是我们的窗口什么都没有,这节我们将 NativeActivity 创建的 window 绑定到 OpenGL 创建的 display 的 surface 上,并且绘制背景颜色和三角形,通过三角形绘制出一个矩形 初始化 绘制  只需要将三角形的索引改为6个即可 绘制 源码:OpenGLDemo#triangle 你

    2024年02月16日
    浏览(42)
  • Android12 P2P 初始化

    目录  学习资料:Android Miracast 投屏 1. 开机log 2. WifiP2pService 启动

    2024年02月06日
    浏览(48)
  • Android性能优化之游戏引擎初始化ANR

    近期,着手对bugly上的anr 处理,记录下优化的方向。 借用网上的一张图: 这里的anr 问题是属于主线程的call 耗时操作。需要使用trace 来获取发生anr前一些列的耗时方法调用时间,再次梳理业务,才可能解决。 问题1 java 调用栈: 从调用栈中发现onActivityResult()执行对游戏侧的

    2024年02月15日
    浏览(48)
  • android存储3--初始化.unlock事件的处理

    android版本:android-11.0.0_r21 http://aospxref.com/android-11.0.0_r21 概述:SystemServiceManager收到unlock事件后,遍历service链表,执行各个service的onUserUnlocking。对于存储service,执行的是StorageManagerService$Lifecycle中的 onUserUnlocking,在这个方法中,存储的 StorageSessionController、vold、storaged模块进行

    2024年02月10日
    浏览(49)
  • android存储4--初始化.emulated设备的挂载

    android版本:android-11.0.0_r21 http://aospxref.com/android-11.0.0_r21 android手机的挂载非常复杂。这篇文章针对emulated存储,介绍它的挂载过程。 android早期,手机内部flash容量比较小,为了能让手机存放更多的文件,需要通过外部存储(如SD卡)来扩展存储容量。随着技术的进步,大容量

    2024年02月15日
    浏览(102)
  • Android13音频子系统分析(二)---初始化

    目录 一、AudioPolicyService初始化 1.1 AudioPolicyService::onFirstRef()函数 1.2 AudioCommandThread线程 1.3 AudioPolicyManager初始化 1.3.1 解析audio_policy_configuration.xml配置文件 1.3.2 解析audio_policy_engine_configuration.xml配置文件 1.3.3 AudioPolicyManager::onNewAudioModulesAvailableInt()函数 1.3.4 AudioPolicyManager::updateDe

    2024年02月03日
    浏览(43)
  • Android 11 Ethernet以太网架构分析(1)——初始化

    android中以太网常被用作共享网络,或者是定制化设备连接网线的需求。 本章将会详细分析该模块对以太网的逻辑实现,是大家对此有更深入认识。 初始化 Systemserver 在安卓系统中有一个关于以太网的服务,在systemserver中启动 frameworks/base/services/java/com/android/server/SystemServer.j

    2024年02月04日
    浏览(73)
  • Android 自定义view 中增加属性,初始化时读取

    因为自定义View 有正向和反向两个状态,所以需要在初始化时区分加载哪个layout 在Android中,要在自定义View中增加属性,你需要完成以下步骤: 在res/values/attrs.xml文件中定义属性。 在自定义View的构造函数中获取这些属性。 在布局文件中使用这些属性。 attrs.xml: 自定义VIEW 中

    2024年04月25日
    浏览(38)
  • Android---Class 对象在执行引擎中的初始化过程

    一个 class 文件被加载到内存中的步骤如下图所示: 装载  装载是指 Java 虚拟机查找 .class 文件并生成 字节流 ,然后根据字节流创建 java.lang.Class 对象的过程。 1. ClassLoader 通过一个类的 全限定名 ( 包名+类名 )来查找 .class 文件,并生成二进制字节流。其中 class 字节码文件

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包