最近在關注藍芽耳機方面的問題,做下簡單的流程分析。
解碼後,在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.首次連線...