- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android蓝牙协议指南
Android 蓝牙协议栈
Android 蓝牙协议栈使用的是BlueZ,支持GAP, SDP, and RFCOMM 规范,是一个SIG 认证的蓝牙协议栈。
Bluez 是GPL 许可的,因此Android 的框架内与用户空间的bluez 代码通过D-BUS 进程通讯进行交互,以避免专有代码。
Headset 和Handsfree(v1.5)规范就在Android 框架中实现的,它是跟Phone App 紧密耦合的。这些规范也是SIG 认证
的。
下面的图表提供了一个以库为导向的蓝牙栈视图。
实线框的是Android 模块,红色虚线部分为合作伙伴指定模块(译者注:芯片商提供)。
下面的图表是以进程为导向视图:
移植
BlueZ 是兼容蓝牙2.1 的,可以工作在任何2.1 芯片以及向后兼容的旧的蓝牙版本。有要有两个方面:
串口驱动 UART driver
蓝牙电源开/关 Bluetooth Power On/Off
串口驱动
BlueZ 核心子系统使用hciattach 守护进程添加你的指定硬件串口驱动。
例如,MSM7201A,这个文件是在drivers/serial/msm_serial.c。你还需要通过修改init.rc 为hciattach 来编辑命令
行选项。
蓝牙电源开/关
蓝牙芯片的电源开关方法1.0 和Post 1.0 是不同的,具体如下:
1.0:Android 框架写0 或1 到/sys/modules/board_[PLATFORM]/parameters/bluetooth_power_on
Post 1.0:Android 框架使用linux rfkill API,参考 arch/arm/mach-msm/board-trout-rfkill.c 例子。
编译
编译Android 打开蓝牙支持,添加下面这行内容到BoardConfig.mk。
BOARD_HAVE_BLUETOOTH :=true
解决问题
调试
调试你的蓝牙实现,可以通过读跟蓝牙相关的logs(adb logcat)和查找ERROR 和警告消息。Android 使用Bluez,同时
会带来一些有用的调式工具。下面的片段为了提供一个建议的例子:
hciconfig -a
# print BT chipset address and features. Useful to check if you can
communicate with your BT chipset.
hcidump -XVt
# print live HCI UART traffic.
hcitool scan
# scan for local devices. Useful to check if RX/TX works.
l2ping ADDRESS
# ping another BT device. Useful to check if RX/TX works.
sdptool records ADDRESS # request the SDP records of another BT device.
守护进程日志
hcid(STDOUT)和hciattach(STDERR)的守护进程日志缺省是被写到/dev/null。编辑init.rc 和init.PLATFORM.rc 在
logwrapper 下运行这些守护进程,把它们输出到logcat。
hciconfig -a 和 hcitool
如果你编译你自己的system.img,除了hcitool 扫描不行,hciconfig -a 是可以工作的,尝试安装固件到蓝牙芯片。
XXX TBD
工具
BlueZ 为调试和与蓝牙子系统通信提供很多设置命令行工具,包含下面这些:
hciconfig
hcitool
hcidump
sdptool
dbus-send
dbus-monitor
特性支持
这一部分提供在每个android 版本中的蓝牙的一些变化,主要是一些性能参数上的东西,就不翻译了。
Android 1.0 release
Platform features
Based on Bluez 3.36 and Linux Kernel 2.6.25
Bluetooth 2.0+EDR host stack
Headset Profile 1.0 in Audio Gateway role
Handsfree Profile 1.5 in Audio Gate
文档评论(0)