藍芽耳機簡單的流程分析

2021-06-15 06:08:43 字數 1303 閱讀 6280

最近在關注藍芽耳機方面的問題,做下簡單的流程分析。

解碼後,在audioflinger裡把音訊資料寫到裝置裡。這裡主要看看audioflinger,audiopolicymanager和external/bluetooth/bluez/audio裡面的android_audio_hw.c和liba2dp.c。

在audiopolicymanager裡有裝置連線判斷。

status_t audiopolicymanagerbase::setdeviceconnectionstate(audiosystem::audio_devices device,

audiosystem::device_connection_state state,

const char *device_address)

} else

#endif

}。。。。。

status_t audiopolicymanagerbase::handlea2dpconnection(audiosystem::audio_devices device,

const char *device_address)

mutex::autolock _l(mlock);

/* todo: move all this work into an init() function */

mhardwarestatus = audio_hw_idle;

for (size_t i = 0; i < array_size(audio_inte***ces); i++)

這裡會遍歷audio介面。

void audioflinger::recordthread::onfirstref()

int audioflinger::openoutput(uint32_t *pdevices,

uint32_t *psamplingrate,

uint32_t *pformat,

uint32_t *pchannels,

uint32_t *platencyms,

uint32_t flags)

outhwdev->open_output_stream 來自藍芽audio裡的介面函式。

再看android_audio_hw.c

static int adev_open(const hw_module_t* module, const char* name,

hw_device_t** device)

這樣audioflinger裡需要的引數,通過這裡設定。接著藍芽audio進行相關init,config,start,stop等狀態操作。當然包括藍芽讀寫。

藍芽耳機Priority設定流程

當藍芽耳機配對成功後,會傳送乙個bonding state change的訊息,在bondstatemachine狀態機裡會對這個訊息進行處理,呼叫setprofilepriorty dev 函式對當前的耳機進行優先順序的設定,把以前的設定優先順序順序hid a2dp headset改為headse...

藍芽耳機Priority設定流程

當藍芽耳機配對成功後,會傳送乙個bonding state change的訊息,在bondstatemachine狀態機裡會對這個訊息進行處理,呼叫setprofilepriorty dev 函式對當前的耳機進行優先順序的設定,把以前的設定優先順序順序hid a2dp headset改為headse...

藍芽耳機怎麼串聯 藍芽耳機怎麼用的

藍芽耳機怎麼用的 人們日常在公眾場所打 聽歌 看電影 玩遊戲為了追求音質效果,常常會隨身帶乙個耳機。但是帶線耳機不好收納,在要用耳機時,耳機線又常常打結。人們就通過藍芽技術應用在免持耳機上,研究出 藍芽耳機 讓使用者可以免除惱人電線的牽絆。藍芽耳機該怎麼用呢?接下來就為大家分享我的心得!1.首次連線...