(1)Android2.2版 支持的蓝牙核心版本是Bluetooth 2.0 +
EDR。
(2)Android 的蓝牙 使用了BlueZ协议栈,但只实现了
Handset/Handfree和A2DP/AVRCP等Profile。
(一些常用的Profile(如HID/DUN/SPP/OPP/FTP/PAN等)在现
在的Android2.2版中并没有实现。需要自己在Android中实现
Profile)。
(3)目前版本(Android2.2) 只支持 绑定设备(bonded
devices)之间通信,而不支持ad-hoc网络通信。
(4)目前版本(Android2.2) emulator(仿真器、模拟器)不
支持蓝牙的调试,只能通过LOG和BlueZ带的工具来调试。
(5)Android2.0 API level5 之后的版本才支持Bluetooth。
(6)Android 的Bluetooth通信API是BlueZ 的RFCOMM的封
装。
RfcommSocket 在 API level7 之后的版本才提供Bluetooth 的通
信
RfcommSocket 使用JAVA 的IputStream 和OutputStream对象
1、面向库的架构视图
2、面向进程的架构视图
LinuxKernel层:
bluez协议栈、uart驱动, h4协议, hci,l2cap, sco, rfcomm
Library层:
libbluedroid.so 等
Framework层:
实现了Headset /Handsfree 和 A2DP/AVRCP profile,但其实现
方式不同Handset/Handfree是直接 在bluez的RFCOMM Socket
上开发的,没有利用bluez的audio plugin,而A2DP/AVRCP是在
bluez的audio plugin基础上开发的,大大降低了实现的难度。
(详见http://www.bluez.org/):
BlueZ 是Linux OS开放的bluetooth 协议栈主要包括IBM公司的
BlueDrekar, Nokia公司的Affix, Axis公司的OpenBT和官方的协
议栈BlueZ.
Bluetooth协议栈BlueZ分为两部分:内核代码和用户态程序及工具
集。
内核代码:由BlueZ核心协议和驱动程序组 成;Bluetooth协议实
现在内核源代码 /net/bluetooth中。包括
hci,l2cap,hid,rfcomm,sco,SDP,BNEP等协议的实现。驱动程
序放在 /driver/bluetooth中,包含Linux kernel对各种接口的
Bluetooth device的驱动。例如:USB接口,串口等。
用户态程序及工具集:包括应用程序接口和BlueZ工具集。BlueZ提
供函数库以及应用程序接口,便于程序员开发bluetooth应用程
序。BlueZ utils是主要工具集,实现对bluetooth设备的初始化和
控制。
HFP(Hands-free Profile)耳机模式:
让蓝牙设备可以控制电话,如接听、挂断、拒接、语音拨号等,拒
接、语音拨号要视蓝牙耳机及电话是否支持。
HSP(Handset Profile)耳机模式
用于支持蓝牙耳机与移动电话之间使用
HID() 人机接口设备配置文件
HID 配置文件定义了 Bluetooth HID(如键盘、指向设备、游戏
设备及远程监视设备)使用的协议、程序及功能
拨号网络配置文件 (DUN)
DUN 提供了通过 Bluetooth 无线技术接入 Internet 和其它拨号
服务的标准。最常见的情况是在手机上拨号,从膝上型计算机以无
线方式接入 Internet。
个人局域网配置文件 (PAN)
PAN 描述了两个或更多个 Bluetooth 设备如何构成一个即时网
络,以及如何使用同一机制通过网络接入点接入远程网络。配置文
件角色包括网络接入点、组即时网络及个人局域网用户。
SDP( Service Discovery Protocol )服务发现协议
提供应用程序在蓝牙环境中发现哪个服务可用和决定那些可用服务
的特征。
GAP(Generic Access Profile)通用访问应用
一般访问应用规范定义了蓝牙设备如何发现和建立与其他设备的安
全(或不安全)连接。它处理一些一般模式的业务(如询问、命名
和搜索)和一些安全性问 题(如担保),同时还处理一些有关连接
的业务(如链路建立、信道和连接建立)。GAP规定的是一些一般
性的运行任务。因此,它具有强制性,并作为所有其它 蓝牙应用规
范的基础