一、Android Bluetooth現狀
(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對象
二、Android Bluetooth 架構
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基礎上開發的,大大降低了實現的難度。
三、 BlueZ介紹
(詳見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規定的是一些一般性的運行任務。因此,它具有強制性,並作為所有其它藍芽應用規範的基礎。