BlueDroid介绍 【转】

简介: 转自:http://blog.csdn.net/fen_liu/article/details/41213167 [-] 基本结构 代码区 http://www.cnblogs.

转自:http://blog.csdn.net/fen_liu/article/details/41213167

[-]

  1. 基本结构
  2. 代码区


http://www.cnblogs.com/hzl6255/p/3887547.html

自从Android 4.2开始,Android开始使用自己的蓝牙协议栈BlueDroid,而不是bluez

BlueDroid可分为两层:
- BTE: Bluetooth Embedded System
- BTA: Bluetooth Application Layer

BTE实现了核心的蓝牙功能,BTA则与框架的应用程序进行通信

1. 基本结构

下图显示了协议栈的基本结构

bluedroid 

Application framework
framework/base/core/Java/android/bluetooth
这里是app代码,使用android.bluetooth APIs和蓝牙设备交互
其实现原理是通过Binder IPC机制使用蓝牙服务

Bluetooth system service
位于packages/app/Bluetooth,打包为一个Android应用程序(通过JNI与蓝牙协议栈交互)
它在Android框架层实现了蓝牙的服务和Profiles

JNI
有关代码位于packages/apps/Bluetooth/jni下
当进行蓝牙操作时,JNI的代码会调用到HAL层以获取回调

HAL
HAL层定义了android.bluetooth和Bluetooth process calls into的标准接口
其头文件位于hardware/libhardware/include/hardware

bluetooth.h: Contains the HAL for the Bluetooth hardware on the device 
bt_av.h:     Contains the HAL for the advanced audio profile. 
bt_hf.h:     Contains the HAL for the handsfree profile. 
bt_hh.h:     Contains the HAL for the HID host profile 
bt_hl.h:     Contains the HAL for the health profile 
bt_pan.h:    Contains the HAL for the pan profile bt_sock.h: Contains the HAL for the socket profile

Bluetooth stack
蓝牙协议栈,位于external/bluetooth/bluedroid
实现了通用的蓝牙HAL及可配置组件

Vendor extensions
厂商可通过创建libbt-vendor模块来自定义扩展接口和HCI层来方便调试

2. 代码区

如下网址可在线查看相关代码
AndroidXref
external/bluetooth/bluedroid
packages/apps/Bluetooth
hardware/libhardware/include/hardware

github上可进行代码的下载
external_bluetooth_bluedroid
packages_apps_Bluetooth

android_hardware_libhardware

也可以到Android官网去下载
android Git repositories

参考:
<Android BlueDroid>
<
BlueDroid的结构和代码分布>

【作者】 张昺华
【新浪微博】 张昺华--sky
【twitter】 @sky2030_
【facebook】 张昺华 zhangbinghua
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
目录
相关文章
|
编解码 语音技术
【经典蓝牙】 蓝牙HFP层协议分析
HFP(Hands-Free Profile), 是蓝牙免提协议, 可以让蓝牙设备对对端蓝牙设备的通话进行控制,例如蓝牙耳机控制手机通话的接听、 挂断、 拒接、 语音拨号等。HFP中蓝牙两端的数据交互是通过定义好的AT指令来通讯的
1483 0
【经典蓝牙】 蓝牙HFP层协议分析
|
4月前
|
存储 C语言 索引
深入解析 C 语言中的 for 循环、break 和 continue
当您确切地知道要循环执行代码块的次数时,可以使用 for 循环而不是 while 循环
183 0
|
5月前
|
人工智能 固态存储 Serverless
通义星尘,通义灵码,镇岳510,一文了解云栖重大发布
本届云栖大会,我们发布了千亿级参数规模的大模型通义千问2.0、一站式模型应用开发平台阿里云百炼以及8个行业大模型,同时全面升级了人工智能平台PAI,并对超40款云产品提供了Serverless的能力,推出全球首款容器计算服务ACS。
2433 2
|
存储 编解码 安全
AndroidQ(10.0) system app 增加访问 sys/class/ 权限
AndroidQ(10.0) system app 增加访问 sys/class/ 权限
297 0
|
Java Android开发
Android8.1 MTK平台 Dialer修改(通话常亮、按钮接听)
Android8.1 MTK平台 Dialer修改(通话常亮、按钮接听)
244 0
|
算法 安全 物联网
一种更优雅的蓝牙配对技术 - Cross-transport key derivation (CTKD)
蓝牙CTKD是蓝牙4.2版本引入的一种交叉传输密钥派生的安全机制,全称 Cross-transport key derivation,主要用在蓝牙双模设备上,它可以跨越BLE和BT的边界,通过将BLE配对生成的LTK转化成BT配对的LinkKey,从而直接实现BT的配对,当然也可以通过BT配对生成的LinnkKey转化成BLE的LTK来实现BLE的配对,目前我们主要研究和使用前者。通过CTKD可以通过一次配对将BT和BLE两个链路都配对上,从而提升蓝牙双模设备的配对体验。
663 0
一种更优雅的蓝牙配对技术 -  Cross-transport key derivation (CTKD)
|
编解码 Java Linux
|
人工智能 监控 算法
打造算法在线服务领域极致开发体验与性能 — 阿里TPP图化框架技术实践
TPP图化致力于打造一个算法在线服务领域易用、性能极致、迭代效率远超普通方式的产品。本文将介绍TPP图化以及2021年在性能、开发体验上的改进,并介绍未来TPP图化的规划。
打造算法在线服务领域极致开发体验与性能 — 阿里TPP图化框架技术实践
|
内存技术
STM32F103RCT6,STM32F103RCT6中文资料,STM32F103RCT6数据手册
STM32F103RCT6,STM32F103RCT6中文资料,STM32F103RCT6数据手册
684 0
|
人工智能 达摩院 算法
求职特训营火热来袭,阿里学长学姐助力求职之路!
本次我们邀请到了四位阿里的学姐学长进行分享。
71722 9
求职特训营火热来袭,阿里学长学姐助力求职之路!

热门文章

最新文章