內(nèi)容簡介
在QCC517x/QCC518x新的ADK下,headset工程如果有音量加減事件,只有當(dāng)前有A2DP播放音樂或者HFP通話狀態(tài)下才會給手機(jī)發(fā)送事件,否則程序會忽略音量加減事件。本文介紹如何在connected idle狀態(tài)下向手機(jī)同步音量。
測試工具
MDE:MDE_WIN_2.8.0.37_x64
Toolkit:ADK Toolkit 1.2.16.21_x64
QACT:NULL
Bluesuite:NULL
Hardware:Qualcomm QCC3084
Software:adk-src-1-0_qtil_standard_oem_qcc518x-qcc308x,ADK-23.1-CS1-r00593.1 headset
Here we go
分析
假設(shè)音量加減是通過ui_input_volume_down和ui_input_volume_up兩個事件觸發(fā)的,經(jīng)過查閱代碼發(fā)現(xiàn),在volumeService_HandleUiInput中會對這兩個事件進(jìn)行處理:
由上圖代碼可得知,在處理ui_input_volume_down和ui_input_volume_up之前,會先通過GenericSource_IsValid(source)函數(shù)去判斷當(dāng)前活躍的source是否有效,如果有效才會進(jìn)行下一步的操作,如果無效就直接忽略了。
解決方法
所以要在手機(jī)有連接且沒有音樂播放的情況下,如果要同步A2DP的音量,則需要在handle_ui_input為FALSE的情況下,對audio_source_a2dp_1和audio_source_a2dp_2進(jìn)行音量加減操作即可。
所以在volumeService_HandleUiInput函數(shù)的末尾添加以下內(nèi)容即可:
else
{
if(ui_input ==ui_input_volume_up || ui_input == ui_input_volume_down)
{
bdaddr* bd_addr = NULL;
unsigned num_addresses= 0;
unsigned charnum_a2dp_connected = 0;
if(BtDevice_GetAllHandsetBdAddr(&bd_addr, &num_addresses))
{
bool isConnected =FALSE;
for(unsigned chari=0; i
{
isConnected =FALSE;
avInstanceTaskData *theInst =appAvInstanceFindFromBdAddr(&bd_addr[i]);
isConnected =theInst && appA2dpIsConnected(theInst);
if(isConnected== TRUE)
{
num_a2dp_connected++;
}
}
free(bd_addr);
bd_addr = NULL;
}
if(num_a2dp_connected>= 1)
{
source.type =source_type_audio;
source.u.audio =audio_source_a2dp_1;
step_size =VolumeService_GetUiStepSize(AudioSources_GetVolume(source.u.audio).config);
if(ui_input ==ui_input_volume_down)
{
step_size =-step_size;
}
VolumeService_ChangeAudioSourceVolume(source.u.audio, step_size);
}
if(num_a2dp_connected>= 2)
{
source.type =source_type_audio;
source.u.audio =audio_source_a2dp_2;
step_size =VolumeService_GetUiStepSize(AudioSources_GetVolume(source.u.audio).config);
if(ui_input ==ui_input_volume_down)
{
step_size =-step_size;
}
VolumeService_ChangeAudioSourceVolume(source.u.audio, step_size);
}
}
}
增加以上代碼后同時連接兩個手機(jī)測試,發(fā)現(xiàn)在當(dāng)前沒有audio輸出的情況下,如果操作headset的音量加減按鍵,就會同時向兩個手機(jī)發(fā)送音量加減指令了,如果當(dāng)前有音樂播放,則繼續(xù)按照原始程序進(jìn)行操作。
審核編輯:湯梓紅
-
手機(jī)
+關(guān)注
關(guān)注
35文章
6880瀏覽量
157595 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4331瀏覽量
62610 -
測試工具
+關(guān)注
關(guān)注
0文章
54瀏覽量
11920 -
ADK
+關(guān)注
關(guān)注
0文章
7瀏覽量
4978
原文標(biāo)題:如何讓QCC308x的headset工程實(shí)現(xiàn)在沒有音樂播放情況下可以向手機(jī)上報(bào)音量加減的功能
文章出處:【微信號:TalkBT,微信公眾號:藍(lán)牙】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
五款電源運(yùn)行Furmark狀態(tài)下的不同功耗

電機(jī)在RUN狀態(tài)下,堵轉(zhuǎn)停住了的原因?
stm8L如何在ROP激活狀態(tài)下,進(jìn)行BootLoader的升級?
TAS5805在BYPASS狀態(tài)下小音量播放音樂,在遇到低頻大動態(tài)時會有“POPO”的爆音,怎么解決?
如何在空閑狀態(tài)下啟動狀態(tài)機(jī)同步從FIFO線程尋址?
資料下載:雙饋異步發(fā)電機(jī)在超同步狀態(tài)下的勵磁
CH582M在連接狀態(tài)下,如何快速斷開連接進(jìn)入廣播狀態(tài)?
請問如何在運(yùn)行調(diào)試狀態(tài)下觀察FreeRTOS的運(yùn)行參數(shù)?
解決蘋果ios10.3.1鎖屏狀態(tài)下WiFi自動斷開的方法

串口屏LUA腳本如何在掉電狀態(tài)下還能保存數(shù)據(jù)的方法詳細(xì)說明

華為手機(jī)解鎖狀態(tài)下抬手直接就能付款
NB-IoT終端在不同工作狀態(tài)下的簡要分析
線性狀態(tài)下的SiC MOSFET

靜電平衡狀態(tài)下導(dǎo)體的特點(diǎn) 凹陷的位置
ON狀態(tài)下高壓側(cè)開關(guān)開路負(fù)載檢測應(yīng)用說明

評論