版权声明:本文为博主原创文章,未经博主允许不得转载。

BT Application 构成

好在Android开放性,以及它的代码清晰性(观其名,即可知其意),Application的框架能容易地被梳理出来。

这里以Android原生的Setting应用为切入点,一点点拆解
先来看看Setting的整体代码构成
Android系统蓝牙框架一 之Application

熟悉应用开发的同学,对以上apk骨架构成再熟悉不过了,当然了上面少了AS的gradle,对专搞系统的同学可以借助Android系统整体源码(环境)来编译该apk.

从Setting下面的AndroidManifest.xml可以看到bluetooth相关的activity = BluetoothSettingsActivity + bluetooth.DevicePickerActivity + bluetooth.BluetoothPairingDialog 等等。我们常用对Bluetooth的操作,都会有对应的Activity来辅助实现。
Android系统蓝牙框架一 之Application

以上的每个Activity在Setting接下来的src下面,有专门的文件来管控实现,如下图
注意以下

  1. bluetooth设置相关代码是放在bluetooth目录下面
  2. 以及Android原生Setting代码路径(bluetooh上层目录下面有很多地其他(如wifi、datetime等等)设置管控实现代码。
    Android系统蓝牙框架一 之Application
    Android系统蓝牙框架一 之Application

bluetooth 下面的各个组件关系如下图
Android系统蓝牙框架一 之Application

BluetoothSetting部分,主要完成蓝牙设置的整体view的布局(包括一些选项的条目)
BluetoothPairing主要为配对的事项,包含了相关的service、request、Activity、DialogFramgment等,关于配对详细flow,敬请关注后续文章更新;
BluetoothEnable主要负责管控bluetooth开关设置控制。


Android8.0 BT Enable Flow

有了上半部分的介绍,现在可以较为清晰的知道BT Enable的控制代码,接下来将从App层 —> Framework 层 —> Native(jni)层 —> btstack层 梳理bt enable 流程

重点总结一下Android8.0之后,Google将btstack 管理部分分解到stack_manager的线程来管控,后续可以详细的看到btstack的每个组件部分,也由对应的线程来进行管控,这也是BlueDroid的一大优化改进。

其中具体的Enable Flow 见下面的UML图
Android系统蓝牙框架一 之Application


参考链接
AndroidManifest.xml 解析
Android8.0 Settings Bluetooth
Android8.0 BlueDroid
Android8.0 bluetooth app

相关文章:

  • 2022-12-23
  • 2021-07-01
  • 2021-11-23
  • 2022-12-23
  • 2021-05-18
  • 2022-01-13
  • 2021-11-23
  • 2021-05-26
猜你喜欢
  • 2021-12-18
  • 2021-05-28
  • 2021-09-07
  • 2021-10-15
  • 2021-11-16
  • 2021-09-03
  • 2021-08-13
相关资源
相似解决方案