Android蓝牙系统框架和代码结构

概述

在 Android 4.2版本中,谷歌公司和博通合作,引入了博通的 BTE/BTA 协议栈,重构了蓝牙子系统。新的蓝牙协议栈被命名为 BlueDroid。它包含了两层:BTE(完成蓝牙核心功能)和 BTA(与 Android 蓝牙服务层进行通信)。蓝牙服务层与 Bluedroid (封装了 BTIF 层)通过 JNI 进行通信,与上层应用通过 Binder IPC 进行通信。BlueZ 及配套框架在 Android 系统上被移除。

Application Framework

该层代码主要是利用 android.bluetooth API 和蓝牙进程(Bluetooth Process)进行交互,也就是通过 Binder IPC 机制调用了蓝牙进程的各个服务(Service)封装的接口。代码位于 frameworks/base/core/java/android/bluetooth 下。

Bluetooth Process

该层代码主要是在 Bluetooth Process 里实现各种 Bluetooth Service 和各种配置文件(Profile),Service 通过 JNI 调用到硬件抽象(HAL)层。代码最后编译形成一个 Android Application 包(Bluetooth.apk)。代码位于 packages/apps/Bluetooth 下。

Bluetooth JNI

该层代码位于 packages/apps/bluetooth/jni 下,定义了蓝牙适配层和协议层对应的 JNI 服务,直接调用 HAL 层并给 HAL 层提供相应的回调。

Bluetooth HAL

该层代码定义了 android.bluetooth API 和 Bluetooth Process 调用的标准接口,通过调用这些接口使得硬件(Hardware)运行正常。代码位于 hardware/libhardware/include/hardware 下。

在 HAL 层并没有实现定义的蓝牙协议与属性,默认实现在 Bluedroid 中,位于 external/bluetooth/bluedroid 下(6.0版本之后在system/bt),用户可以根据自己的需求增加属性。

Bluetooth Stack

该层代码实现了 HAL 层中的定义,可以通过扩展和改变配置来自定义。代码位于 external/bluetooth/bluedroid 下(6.0版本之后在system/bt)。

参考资料

《低功耗蓝牙智能硬件开发实战》第2章《Android蓝牙系统框架和代码结构》

Android蓝牙系统框架和代码结构相关推荐

  1. Android蓝牙系统框架和代码架构

    二.蓝牙Bluetooth源码目录分析 1.Bluetooth的设置应用 路径:\packages\apps\Settings\src\com\android\settings\bluetooth 蓝 ...

  2. 第一节:Android蓝牙系统

    第1章 Android蓝牙系统 1.1 蓝牙技术简介 蓝牙(Bleuetooth)原是十世纪统一了丹麦的一个国王的名字,现取其"统一"的含义,用来意在统一无线局域网通讯的标准的蓝牙 ...

  3. Android蓝牙系统

    蓝牙技术的特点 全球范围适用: 蓝牙技术使用无需经过许可的工业.科研和医疗(ISM)波段(2.4至2.485 GHz),使用展频.调频.全双工信号,标称速率为1600跳/秒.在大多数国家,无需经过许可 ...

  4. Android GUI系统框架介绍

    这个又是内部技术分享时准备的PPT,Android GUI框架是一个非常庞大的系统,也是Android最重要的系统之一,其决定了一个Android界面究竟如何显示出来,显示效果/效率怎样,也一直是An ...

  5. Spring Cloud-honghu Cloud分布式微服务云系统--云架构代码结构构建

    根据微服务化设计思想,结合spring cloud一些优秀的项目,如服务发现.治理.配置化管理.路由负载.安全控制等优秀解决方案,使用Maven技术将框架进行模块化.服务化.原子化封装并构建,也为后期 ...

  6. Spring Cloud--鸿鹄Cloud分布式微服务云系统—云架构代码结构构建(五)

    根据微服务化设计思想,结合spring cloud一些优秀的项目,如服务发现.治理.配置化管理.路由负载.安全控制等优秀解决方案,使用Maven技术将框架进行模块化.服务化.原子化封装并构建,也为后期 ...

  7. Android 蓝牙 搜索周围设备代码流程分析-framework到协议栈流程

    本文详细的将Android 蓝牙扫描周围设备流程进行了梳理,从UI开始扫描到协议栈发送扫描命令到controller,进行了源码分析. 更多源码分析: android-蓝牙A2dp-avrcp-hfp ...

  8. Android 蓝牙系统打开蓝牙源码分析(一)--- 全网最详细

    同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. Androi ...

  9. MQTT协议框架MOP代码结构解析

    一.MoP是啥 MoP 即MQTT on Pulsar ,是一个在Pulsar基础上实现的MQTT协议,git地址:https://github.com/streamnative/mop 通过MoP可 ...

最新文章

  1. qt 实现的电视遥控系统,如何让qt响应来自遥控器的按键信息?
  2. 这届不敢看体检报告的年轻人还能“年轻”多久?
  3. [Python图像处理] 十五.图像的灰度线性变换
  4. MAP/REDUCE:Google和Nutch实现异同及其他
  5. 使用FiddlerCore来测试WebAPI
  6. 我的2021年度总结
  7. 果园机器人反思稿_《果园机器人》教学反思
  8. 教培机构实际运营过程中会遇到的问题
  9. DbVisualizer 12.0.* Ubuntu
  10. 电脑故障检测软件_硬核科普—常用电脑检测软件手把手教学!
  11. delphi 2010 mysql_delphi2010读取MySQL数据库TEXT类型乱码的解决方案
  12. keras对MNIST数据集分类
  13. 【Rust日报】 2019-05-22:Mozilla图像团队发布WebRender MVP
  14. javaweb课程设计在线学习论坛
  15. 王天官系古盐山县(今孟村县王帽圈)人
  16. 华为3COM正式更名为『杭州华三通信技术有限公司(H3C)』
  17. wincc随机数的生成
  18. OpenFoam安装swak4Foam
  19. 天津科技大学计算机科学与信息工程学院,天津科技大学计算机科学与信息工程学院简介...
  20. Acro Design Pro vue - table 行点击高亮显示

热门文章

  1. JVM--藤原豆腐店自用
  2. 使用 EF Core Power Tools 和 CoreAdmin 在 5 分钟内将管理员 CRUD 网页添加到您的 ASP.NET Core Web 应用程序
  3. 暴多的教学视频,想要的就快下!
  4. 计算机维修工(4级)试题,计算机维修工 (初级) 上机动手排除故障试题【优质】.doc...
  5. 2022年考研计算机组成原理_4 指令系统
  6. 微信小程序的事件处理,含BATJM大厂
  7. 积木游戏 (Standard IO)
  8. 小程序 php cookie,微信小程序模拟 cookie
  9. 分部积分法解决二重积分问题
  10. NameNode和DataNode中重要的数据结构解析