BlueDroid介绍 【转】

简介:

转自: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>










本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/6029566.html,如需转载请自行联系原作者

相关文章
|
Python
python生成股票K线网页动态图案例
python生成股票K线网页动态图案例
1173 3
|
机器学习/深度学习 人工智能 Cloud Native
高性能深度学习推理平台 OpenPPL 正式开源!
高性能深度学习推理平台 OpenPPL 正式开源!
2565 0
|
Java
环境变量配置 linux-Debian 实测-有效
环境变量配置 linux-Debian 实测-有效
271 0
|
缓存 NoSQL Java
阿里巴巴开源的通用缓存访问框架JetCache介绍
JetCache是由阿里巴巴开源的通用缓存访问框架,如果你对Spring Cache很熟悉的话,请一定花一点时间了解一下JetCache,它更好用。JetCache可以做类似Spring Cache的注解式缓存,支持TTL、多级缓存、分布式自动刷新,也提供类似JSR107规范的Cache API。
13861 1
|
SQL 人工智能 关系型数据库
Flink CDC YAML:面向数据集成的 API 设计
Flink CDC YAML:面向数据集成的 API 设计
668 5
|
开发框架 前端开发 Java
【Spring】Spring框架介绍,功能模块,容器知识和有关Spring的生态圈的详细讲解
【Spring】Spring框架介绍,功能模块,容器知识和有关Spring的生态圈的详细讲解
705 0
|
Ubuntu 前端开发 安全
在Ubuntu 14.04上安装和配置SNMP守护程序和客户端的方法
在Ubuntu 14.04上安装和配置SNMP守护程序和客户端的方法
413 0
|
JavaScript 测试技术 开发者
IPD流程验证阶段模板及表单
在IPD流程的验证阶段,不仅涉及功能测试,更注重确保产品符合市场需求,包括审视市场、客户、财务假设,及时调整。此阶段强调基于市场的开发,检查发布计划、销售准备,验证开发假设,确保功能、制造准备就绪。活动涵盖试生产测试、系统验证、受控销售等。相关表单如成本核算、Bug分析报告、测试报告等在IPD资源群更新,详情见链接。由《硬件产品经理》作者卫朋分享。
776 2
|
设计模式 Java 测试技术
【Selenium使用误区】Iframe元素定位失败:避免误提GitHub Issue的技巧
本文分享了作者在使用Selenium进行UI自动化测试时遇到的一个常见问题:在模拟登录163邮箱的过程中,元素定位失败,原因是没有正确地定位到iframe内的元素。文章通过分析问题原因、提供解决方案和附录代码,指导读者如何避免类似的错误,并强调了在UI自动化测试中准确定位页面元素的重要性。
408 1
|
算法 关系型数据库 程序员
程序员必备技能)基于Python的鼠标与键盘控制实战扩展与源码
这篇文章是关于如何使用Python的`pyautogui`库来控制鼠标和键盘进行各种操作,包括移动、点击、滚轮控制以及键盘的按键和快捷键输出,并介绍了如何结合图像处理和计算机视觉技术来扩展其应用。

热门文章

最新文章

下一篇
开通oss服务