Android平台蓝牙技术解析

1星 需积分: 36 70 下载量 75 浏览量 更新于2024-07-19 1 收藏 1.29MB DOCX 举报
本文档是宇龙计算机通信科技有限公司内部使用的关于Android平台下蓝牙工作原理和流程的简介,由李涛于2013年8月28日编写。文档详细介绍了蓝牙的基本概念、规范、Android中的蓝牙实现、蓝牙系统架构、协议层分析以及蓝牙在Android系统的启动过程和驱动移植等内容。 ### 蓝牙简介 1. **蓝牙基本概念** 蓝牙是一种短距离无线通信技术,用于设备之间的无线连接,常见于移动设备、电脑、智能家居等,提供数据和音频传输服务。 1. **蓝牙规范介绍** - **蓝牙核心规范** 定义了蓝牙的基础通信协议和操作方式,包括射频、链路管理和控制协议等。 - **蓝牙应用规范** 包括各种特定用途的Profile,如A2DP(Advanced Audio Distribution Profile)用于高质量音频流传输,OPP(Object Push Profile)用于文件传输,HFP(Hands-Free Profile)支持车载蓝牙耳机,HRP(Heart Rate Profile)用于健康监测设备,CSCP(Cycling Speed and Cadence Profile)则服务于自行车速度和踏频测量。 ### Android中的蓝牙 1. **Android Bluetooth框架图** Android系统提供了对蓝牙的API接口,允许开发者通过BluetoothManager和BluetoothAdapter进行设备配对、连接和服务发现等操作。 2. **Bluetooth代码层次结构** 层次结构包括系统服务、HAL(硬件抽象层)和驱动程序等部分。 3. **常用类和名词解释** 如BluetoothAdapter、BluetoothDevice、BluetoothGatt等类,分别对应蓝牙适配器、设备和服务。 4. **BlueZ介绍** BlueZ是Linux内核中的蓝牙协议栈,Android系统在Linux上运行时会用到。 ### 蓝牙系统分析 1. **蓝牙核心系统架构** 包含底层硬件模块、中间协议层和高端协议层,各层负责不同的功能,如硬件模块处理射频信号,中间层实现链路管理,高端层处理应用层协议。 2. **Android与蓝牙协议栈的关系** Android通过HAL与BlueZ交互,实现了对蓝牙设备的控制。 ### 协议层分析 1. **HCI层** Host Controller Interface,主机控制器接口,负责主机与蓝牙控制器间的通信。 2. **L2CAP协议层** Logical Link Control and Adaptation Protocol,处理连接管理和数据包分片重组。 3. **RFCOMM协议层** 提供面向连接的串行通信服务,类似TCP/IP的TCP层。 4. **SDP发现服务** Service Discovery Protocol,用于查找其他蓝牙设备上的可用服务。 ### 蓝牙启动过程实现 1. **启动步骤** 包括初始化硬件、加载协议栈、设置参数等。 2. **启动流程** 描述了从系统启动到蓝牙服务可用的整个过程。 3. **数据流向** 解释了数据如何从应用层经过各个协议层到达物理层传输。 ### 驱动移植 1. **Android系统配置** 修改系统配置以支持蓝牙硬件。 2. **启动项修改** 将蓝牙服务添加到启动列表。 3. **电源管理rfkill驱动** 管理蓝牙的电源状态,允许快速开关。 4. **Rebuild Android image and reboot** 重新构建Android映像并重启设备,确保更改生效。 5. **BT睡眠唤醒机制** 节能机制,允许蓝牙在不活动时进入低功耗模式,需要时快速恢复。 ### Working with profile服务 这部分内容可能涉及如何实现或使用特定的蓝牙Profile,如A2DP、HFP等,以提供不同类型的蓝牙服务。 总结来说,这份文档详尽地介绍了蓝牙技术在Android平台下的工作原理和流程,涵盖了从基础概念到实际应用的各个层面,对理解Android蓝牙系统及开发相关应用具有重要的参考价值。
2010-05-03 上传
如果您看到本PDF,请发邮件给 21504965@qq.com,让我知道我的付出没有白费。谢谢! 自制GPS群:19504537 (电台(短波)+GPS(GPRS选配)+陀螺仪(MEMS)) 本项目征集 志愿者: 1、工程师:硬件/软件/模具(外壳) 2、VC:疑似头脑简单型。本项目暂时看不到盈利的希望。 3、测试者。喜欢户外的同学,测试产品,写测试报告,提供产品的建议和意见。 缘起:当户外邂逅工程师 现实中,难于让人理解自己,于是开始了户外活动。 一番辗转,来到了磨房。 由于方向感差,借助GPS。 但是对于手持GPS不满意: 1、便宜的有二手Lowrance。只有英文版的,由于是二手的,不知道那一天就挂了。 2、麦哲伦和高明的都是2000¥起价的。 3、车载GPS基本上都不支持轨迹导航(KML格式或者可以转换为KML格式),不支持等高线。 4、派特风只是一个玩具,价格还比较高。(不支持等高线) 于是决定自己做一个。 搜索到了: http://bbs.21ic.com/icview-119539-1-1.html 本人DIY的手持GPS~~~~ 它的GPS支持轨迹导航,做出了一个雏形。不想从头开始,就想找楼主要源代码。 看楼主 sun68 的个人资料: 自我介绍: 淘宝: http://shop59878916.taobao.com/ 个人网站: http://OurSTM.5d6d.com 进入了它的群:奋斗STM32讨论QQ群: 42465044(2009-12-20) 找到了群猪的QQ:9191274 和他商定,买他的开发板,给源代码。于是就有了压缩包中的 9191274-DIYGPSsun68.7z。 他说他本来想移植到 ARM 的,由于工作忙(业余去做ARM开发板了。) 于是说,我会在将来移植到 ARM 的。 由于板子以Si Labs的C8051F120为MCU,以 ST7565P12864-28(128X64点)为显示元件,于是上 TAOBAO 找C8051F120的开发板,找支持汉字库的12864点阵屏幕。以理解本程序。 开发板最后找到了 新华龙电子有限公司:http://www.xhl.com.cn/ 130¥ 卓越上面找到: 无线电电子电路制作(图解趣味电子制作) 作者:(日本)大久保忠 http://www.amazon.cn/ 扫描仪用的是新买的 清华紫光Uniscan A686。330¥ PHOTOSHOP 用的是 简体中文 v5.0.2 版本。 选用 初级模式 中的 文字识别 模式。 本模式扫描一页大概要 30秒钟,可以知道我付出的劳动。 存储为 BMP 图片格式(600M),由于体积太大,为了防止以后要识别它,就用 汉王PDF OCR 8.1.0.3 来识别为TXT文件。TXT文件没有经过校对。 最后,使用 FreePic2Pdf.exe V1.26 来生成 PDF 了。 GPS的打算: 10米电台:比 U段/V段(0.7米/2米)的波长要长,理论上在户外传播的远。 具体参考: http://www.gogojm.com/bbs/viewthread.php?tid=26980 小型背负式短波电台随想 带数据传输功能,用来在队友之间(留守人员)传输坐标。 电台的合作伙伴:BG3EE。 带 MEMS陀螺仪的GPS:采用高灵敏度的GPS模块。由于在山谷的时候没有GPS信号,或者GPS信号漂移大,准备使用 深迪的 MEMS陀螺仪来校正:MEMS惯性测量单元(六轴) - S4400 http://www.senodia.com/cn/index.php?option=com_content&view=article&id=8&Itemid=9 地图:支持 MP 格式的等高线地图。 显示部分打算采用 ILI9320 控制的 320×240 的 TFT屏幕(手机屏幕),3英寸左右。 MCU第一版采用 STC 的8051系列,第二版采用ST的ARM:STM32F103VET6TR。 同时关注 Energy Micro 的 EFM 32 Gecko 系列的ARM。