資源描述:
《基于Android的藍(lán)牙A2DP功能的實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、http://www.paper.edu.cn基于Android的藍(lán)牙A2DP功能的實(shí)現(xiàn)王巍北京郵電大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,北京(100876)E-mail:zeus-wang@163.com摘要:藍(lán)牙(Bluetooth)技術(shù)是一種低成本的無(wú)線數(shù)據(jù)與數(shù)字通信的開放性全球規(guī)范。Android是Google于2007年11月5日宣布的基于Linux平臺(tái)開源手機(jī)操作系統(tǒng)名稱,該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號(hào)稱是首個(gè)為移動(dòng)終端打造的真正開放和完整的移動(dòng)軟件。本文通過研究藍(lán)牙無(wú)線通信協(xié)議棧,在Android手機(jī)平
2、臺(tái)上設(shè)計(jì)并實(shí)現(xiàn)了藍(lán)牙立體聲耳機(jī)收聽高保真音樂的功能(即A2DP應(yīng)用框架的實(shí)現(xiàn))。關(guān)鍵詞:藍(lán)牙;A2DP;Android中圖分類號(hào):1.引言藍(lán)牙(Bluetooth)技術(shù)規(guī)范由藍(lán)牙特別興趣小組(SIG)制訂,在使用通用無(wú)線傳輸模塊和數(shù)據(jù)通信協(xié)議的基礎(chǔ)上,開發(fā)交互式服務(wù)和應(yīng)用,多用于便攜式通信設(shè)備。藍(lán)牙規(guī)范包括核心協(xié)議與應(yīng)用框架(profiles)兩個(gè)文件。協(xié)議規(guī)范部分定義了藍(lán)牙的各[1]層通信協(xié)議,應(yīng)用框架只出了如何采用這些協(xié)議實(shí)現(xiàn)具體的應(yīng)用產(chǎn)品。藍(lán)牙協(xié)議規(guī)范遵循開放系統(tǒng)互聯(lián)參考模型(OpenSystemInterconnect
3、ion/ReferencedModel,OSI/RM),從低到高地定義了藍(lán)牙協(xié)議棧的各個(gè)層次,如圖1。TCP/IP服務(wù)AT對(duì)象交換發(fā)現(xiàn)指令協(xié)議點(diǎn)對(duì)點(diǎn)協(xié)協(xié)議AVCTPAVDTP集OBEX議(PPP)SDP網(wǎng)絡(luò)封裝協(xié)議音頻串口仿真(RFCOMM)(BNEP)Audio邏輯鏈路控制與適配協(xié)議(L2CAP)主機(jī)控制器接口(HCI)鏈路管理器協(xié)議(LinkManagerProtocol)基帶與鏈路控制(Baseband&LinkController)射頻(Radio)圖1藍(lán)牙協(xié)議棧體系結(jié)構(gòu)邏輯鏈路控制與適配協(xié)議以下的協(xié)議都是藍(lán)牙無(wú)線通信
4、的核心協(xié)議,為藍(lán)牙通信提供無(wú)連接與面向連接的數(shù)據(jù)通道。串口仿真協(xié)議將很容易地實(shí)現(xiàn)有具有電纜的串行通信應(yīng)用模型向無(wú)線串行通信領(lǐng)域的轉(zhuǎn)移。服務(wù)發(fā)現(xiàn)協(xié)議服務(wù)發(fā)現(xiàn)協(xié)議(SDP)是藍(lán)牙技術(shù)框架中非常重要-1-http://www.paper.edu.cn的一個(gè)部分,它是所有應(yīng)用模型的基礎(chǔ)。任一藍(lán)牙應(yīng)用模型的實(shí)現(xiàn)都是利用某些服務(wù)的結(jié)果。在設(shè)備之間組網(wǎng)的基本動(dòng)機(jī)就是使這些設(shè)備相互通信,并且獲得彼此的服務(wù)。其他協(xié)議都是[2]藍(lán)牙應(yīng)用協(xié)議,本文就是在AVDTP(音視頻發(fā)布傳輸協(xié)議)基礎(chǔ)上實(shí)現(xiàn)A2DP的功能。2.開發(fā)平臺(tái)及Android系統(tǒng)文本的
5、硬件平臺(tái)是以Mavell公司的Tavor平臺(tái)為基礎(chǔ),Tavor平臺(tái)包換兩各部分:應(yīng)用程序子系統(tǒng)和通信子系統(tǒng)。其中XscaleCPU(624MHz)用于應(yīng)用程序子系統(tǒng),ARMCPU(34.67MHzto208MHz)與MSAcore(52MHzto312MHz)一同專門處理通信模塊子系統(tǒng),當(dāng)手機(jī)處于待機(jī)狀態(tài)時(shí),XScaleCPU會(huì)處于休眠狀態(tài)以節(jié)省電量,兩個(gè)CPU使用自己的DDR內(nèi)存,通信通過MSL串行總線。藍(lán)牙芯片通過串口與XScale相連。2.1音頻系統(tǒng)如圖2,藍(lán)牙芯片(WLAN/Bluetooth88W8688,串口連接最
6、大3.6Mbps,64-byteFIFOs)作為外設(shè)有兩條數(shù)據(jù)通路,一條是SSP3串行接口用于語(yǔ)音通信PCM數(shù)據(jù)的收發(fā),用于創(chuàng)建SCO鏈路。另一條是和串口控制器的連接用于ACL數(shù)據(jù)分組的收發(fā)以及以數(shù)據(jù)分組為基礎(chǔ)的其他應(yīng)用。I2C總線用與控制音頻解碼芯片進(jìn)行選路的操作(聲音從哪里出來,喇叭,有線耳機(jī)或藍(lán)牙設(shè)備)。SSP2接口是音頻數(shù)據(jù)傳送的通道。圖2音頻系統(tǒng)與藍(lán)牙通路-2-http://www.paper.edu.cn2.2Android系統(tǒng)Android是一個(gè)為移動(dòng)設(shè)備設(shè)計(jì)的軟件平臺(tái),包括操作系統(tǒng)、中間件和一些關(guān)鍵應(yīng)用。目前發(fā)
7、布的AndroidSDK提供了必須的工具和進(jìn)行應(yīng)用開發(fā)所必須的API,在Android上的開發(fā)使用Java語(yǔ)言。開發(fā)者開發(fā)自己的應(yīng)用時(shí)可以調(diào)用核心應(yīng)用所使用的相同的API接口。這個(gè)應(yīng)用程序架構(gòu)被設(shè)計(jì)用來簡(jiǎn)化組件的重用;任何應(yīng)用都可以宣布它的功能,其他的任何應(yīng)用都可以使用這些功能。相同的機(jī)制允許組件被用戶替換。Android包括了一套C/C++庫(kù),這些功能是通過Android應(yīng)用框架提供給開發(fā)者的。每個(gè)Android應(yīng)用程序在它自己的進(jìn)程中運(yùn)行,有它自己的Dalvik虛擬機(jī)的實(shí)例。Dalvik已經(jīng)被改寫過,使得一個(gè)設(shè)備可以有效得
8、運(yùn)行多個(gè)VM。Dalvik虛擬機(jī)運(yùn)行自己獨(dú)特的可執(zhí)行文件格式--.dex,該格式經(jīng)過優(yōu)化,使用盡量少的內(nèi)存。Dalvik虛擬機(jī)依賴LinuxKernel提供底層功能支持,如線程、底層內(nèi)存管理。Android依賴Linux內(nèi)核2.6提供核心系統(tǒng)服務(wù),比如安全、內(nèi)存管理、進(jìn)程管理