android藍牙hfp
1. Android Bluetooth怎麼同時建立A2DP,HSP/HFP連接
牙耳機現在主要有三大規格———HSP、HFP和A2DP。
HeadsetPro-file(HSP)代表耳機功能,提供手機與耳機之間通信所需的基本功能。
HandProfile(HFP)則代表免提功能,HFP在HSP的基礎上增加了某些擴展功能。
Advanced Audio Distribution Profile(A2DP),指的是 藍牙音頻傳輸模型協定。
HFP格式的藍牙耳機支持手機功能比較完整,消費者可在耳機上操作手機設定好的重撥、來電保留、來電拒聽等免提選項功能。
A2DP是高級音頻傳送規格,允許傳輸立體聲音頻信號,相比用於 HSP 和 HFP 的單聲道加密,質量要好得多。
A2DP能夠讓兩個同樣支持藍牙音效傳輸的裝置互相連接,都能輸出如CD音質(16 bits,44.1 kHz)般的音樂。假如有一方沒有支持A2DP的話,這時音效就只能輸出Handsfree Profile(8 bits,8 kHz),就算耳機是採用雙耳筒的設計,也只能有一般電話的單聲道音質,與真正的立體聲相去甚遠。
2. 藍牙模塊service uuid有什麼用
Android系統的源碼中藍牙部分的分布式這樣的:1.App部分主要包括OPP和PBAP以及HFP,當然還有settings部分,代碼分布如下:(1)/packages/app/Bluetooth/src/com/android/bluetooth/opp(2)/packages/app/Bluetooth/src/com/android/bluetooth/pbap(3)/packages/app/Phone/src/com/android/phone/中和BT相關的部分,主要是HFHS打電話相關的(4)/packages/app/Settings/src/com/android/settings/bluetooth/主要是藍牙開啟,搜索,配對等2.Framework部分主要包括BluetoothAdapter,BluetoothService,BluetoothEventLoop,BluetoothA2dpService等核心類,代碼分布如下:(1)/frameworks/base/core/java/android/server/包含BluetoothService,BluetoothEventLoop等核心類,但是並沒有向用戶應用程序提供介面,屬於系統的類。(2)/frameworks/base/core/java/android/bluetooth包含了BluetoothAdapter,BluetoothSocket,BluetoothServerSocket等一系列類,這些類是系統向應用程序提供的介面,編寫藍牙相關的應用程序時會用到這些類,檢查BT是否打開,搜索設備等等。如果編寫藍牙應用程序,需要熟悉該部分類的功能。(3)/frameworks/base/core/jni/中包含Bluetooth相關的文件,如android_server_BluetoothService.cpp該部分主要是java層和c/c++層進行通信的3.Bluez部分,主要包括各個協議的實現,如A2dp,AVRCP,AVDTP,HID,HDP,PAN,DUN以及對BThost的實現,通過該部分向BTControler部分發送HCI命令,代碼分布服下:/external/bluetooth/bluez4.BluetDroid部分,主要用於開關藍牙,晶元上電部分(不屬於驅動,可以算是硬體抽象層(HAL)),代碼分布如下:/system/bluetooth/5.kernel部分,主要包括RFCOMM,L2CAP等協議以及HCI的實現,代碼分布如下:/kernel/net/bluetooth/6.driver部分,該部分代碼還真沒了解過,代碼分布:/kernel/drivers/bluetooth/另外,driver部分和具體晶元密切相關,有時在下面的目錄下也會有:/vendor//device/
3. 安卓藍牙驅動
安卓藍牙驅動是一款通過藍牙連接其他設備的驅動軟體
有以下功能:
1、藍牙區域網(PAN)、藍牙高質量音頻(A2DP,HFP);
2、藍牙圖像傳輸功能(BIP)、串 行埠功能 (SPP);
3、藍牙列印服務(HCRP)、 藍牙文件傳輸服務(FTP);
4、藍牙信息交換服務(OPP)、 藍牙撥號上網服務(DUN);
4. 有藍牙的智能手機手機是否可以通過藍牙連接連接另外一台手機當藍牙耳機用
不可以!
這個想法很好,也有很多人提過,就是有一台帶藍牙的舊手機能當藍牙耳機用就好了,還有人幻想把手機當藍牙接收設備用耳機孔輸出到音箱上,但這些目前是行不通的。
1 Android系統至今沒有提供藍牙的從機模式。Android手機的系統開發從最開始就沒打算當一從機用,一直都設計成設備的管理者、操作者、網路的中心。當然從操作系統本身,這個東西是可以實現的,代碼的角度沒有問題。如果有人開發,有實現的可能。
2 iOS系統到了藍牙4.0時代才提供了從機模式。手機雖然是雙模的(2.1+4.0都可以使用),但是藍牙耳機所使用的Profile:A2DP和HFP都是 BR/EDR Based 是基於2.0的,4.0是用於低功耗設備的,藍牙耳機這種高帶寬的東西肯定不是低功耗。所以iOS也不行。
所以目前這個想法還不能實現,好在現在藍牙耳機並不算貴,而且手機做藍牙耳機用也實在太過笨重。
以上主要內容引用自知乎 4.0設備開發者 盛欣哲 略有改動。
5. 關於android系統藍牙都用什麼模塊,有單獨的android驅動嗎
Android系統的源碼中藍牙部分的分布式這樣的:
1. App部分主要包括OPP和PBAP以及HFP,當然還有settings部分,代碼分布如下:
(1) /packages/app/Bluetooth/src/com/android/bluetooth/opp
(2) /packages/app/Bluetooth/src/com/android/bluetooth/pbap
(3) /packages/app/Phone/src/com/android/phone/ 中和BT相關的部分,主要是HFHS打電話相關的
(4) /packages/app/Settings/src/com/android/settings/bluetooth/ 主要是藍牙開啟,搜索,配對等
2. Framework部分主要包括BluetoothAdapter,BluetoothService,BluetoothEventLoop,BluetoothA2dpService等核心類,代碼分布如下:
(1)/frameworks/base/core/java/android/server/ 包含BluetoothService,BluetoothEventLoop等核心類,但是並沒有向用戶應用程序提供介面,屬於系統的類。
(2)/frameworks/base/core/java/android/bluetooth 包含了BluetoothAdapter, BluetoothSocket, BluetoothServerSocket等一系列類,這些類是系統向應用程序提供的介面,編寫藍牙相關的應用程序時會用到這些類,檢查BT是否打開,搜索設備等等。如果編寫藍牙應用程序,需要熟悉該部分類的功能。
(3) /frameworks/base/core/jni/ 中包含Bluetooth相關的文件,如 android_server_BluetoothService.cpp 該部分主要是java層和c/c++層進行通信的
3. Bluez部分,主要包括各個協議的實現,如A2dp,AVRCP,AVDTP,HID,HDP,PAN,DUN以及對BT host的實現,通過該部分向BT Controler部分發送HCI命令,代碼分布服下:
/external/bluetooth/bluez
4. BluetDroid部分,主要用於開關藍牙,晶元上電部分(不屬於驅動,可以算是硬體抽象層(HAL)), 代碼分布如下:
/system/bluetooth/
5. kernel部分,主要包括RFCOMM,L2CAP等協議以及HCI的實現,代碼分布如下:
/kernel/net/bluetooth/
6. driver部分,該部分代碼還真沒了解過,代碼分布:
/kernel/drivers/bluetooth/
另外,driver部分和具體晶元密切相關,有時在下面的目錄下也會有:
/vendor/
/device/
6. iOS 藍牙HFP和GATT協議可以同時建立連接嗎
android4.3 nei內置了ble並為上層app提供相應的介面來使用BLE功能。BLE主要涉及的協議及術語:GenericAttribute Profile (GATT)BLE上層的協議都是基於GATT,它是一個通用的規范,通過BLE連接發送/接收屬性值。bluetoothSIG定義了很多的ble協議。
7. Android 怎麼實現Bluetooth HFP unit功能
1.即只支持耳機模式進行通話,不支持手機在免提(外放)接聽。
2.耳機模式(HSP) 這是最常用的配置,為當前流行支持藍牙耳機與行動電話使用。 依賴於在64千比特編碼的音頻/ s的CVSD的或PCM以及AT命令從GSM 07.07的一個子集,包括環的能力最小的
8. a2dp sink 在android kk和L實現的區別
bluetooth HID dev, HFP client ,a2dp sink在android平台已經支持,下面做下簡單說明:
在高通平台android4.4已經實現了a2dp sink,只要打開BTA_AVK_INCLUDED這個定義就可以啟用a2dp sink的功能。
不過存在一個問題:在兩個手機配對成功後,如果手機a主動連接手機b,那麼手機a就會作為sourc端,斷開連接後,如果b去主動連接a那麼b就成為source端。在5.0中 framework通過系統屬性「persist.service.bt.a2dp.sink」在打開藍牙時進行sink和source的判斷,一旦確定角色就不會因為發起連接的不同而導致角色不同。
咋打開藍牙時執行AdapterService.java::processStart->checkA2dpState(),根據系統屬性把需要禁用的角色服務放到HashSet mDisabledProfiles中,然後啟動需要的角色服務,然後啟動其他需要啟動的服務。
Bluedroid中通過BTA_AV_SINK_INCLUDED來控制a2dp sink功能的啟用。
9. 如何打開android hfp協議
各種藍牙協議的全稱:
OPP:對象存儲規范(Object Push Profile),最為常見的,文件的傳輸都是使用此協議。
HFP:(Hands-free Profile),讓藍牙設備可以控制電話,如接聽、掛斷、拒接、語音撥號等,拒接、語音撥號要視藍牙耳機及電話是否支持。
HDP: HDP (Health Device Profile) 藍牙醫療設備模式 可以創建支持藍牙的醫療設備,使用藍牙通信的應用程序,例如心率監視器,血液,溫度計和秤。
A2DP: Advanced Audio Distribution Profile (A2DP) 高級音頻傳輸模式 A2DP是能夠採用耳機內的晶元來堆棧數據,達到聲音的高清晰度。有A2DP的耳機就是藍牙立體聲耳機。
PAN:個人區域網(Personal Area Network)最新為了滿足需求而出現的, 在小范圍內能夠將個人設備(自己的手機 電腦筆記本等)互聯而組成的網路。