0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在connected idle狀態(tài)下向手機同步音量

藍牙 ? 來源:藍牙 ? 2023-10-20 12:22 ? 次閱讀

內容簡介

在QCC517x/QCC518x新的ADK下,headset工程如果有音量加減事件,只有當前有A2DP播放音樂或者HFP通話狀態(tài)下才會給手機發(fā)送事件,否則程序會忽略音量加減事件。本文介紹如何在connected idle狀態(tài)下向手機同步音量。

測試工具

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

分析

假設音量加減是通過ui_input_volume_down和ui_input_volume_up兩個事件觸發(fā)的,經(jīng)過查閱代碼發(fā)現(xiàn),在volumeService_HandleUiInput中會對這兩個事件進行處理:

3d88dcc4-6ea3-11ee-939d-92fbcf53809c.png

由上圖代碼可得知,在處理ui_input_volume_down和ui_input_volume_up之前,會先通過GenericSource_IsValid(source)函數(shù)去判斷當前活躍的source是否有效,如果有效才會進行下一步的操作,如果無效就直接忽略了。

解決方法

所以要在手機有連接且沒有音樂播放的情況下,如果要同步A2DP的音量,則需要在handle_ui_input為FALSE的情況下,對audio_source_a2dp_1和audio_source_a2dp_2進行音量加減操作即可。

所以在volumeService_HandleUiInput函數(shù)的末尾添加以下內容即可:

3d9d79c2-6ea3-11ee-939d-92fbcf53809c.png

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);

}

}

}

增加以上代碼后同時連接兩個手機測試,發(fā)現(xiàn)在當前沒有audio輸出的情況下,如果操作headset的音量加減按鍵,就會同時向兩個手機發(fā)送音量加減指令了,如果當前有音樂播放,則繼續(xù)按照原始程序進行操作。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 手機
    +關注

    關注

    34

    文章

    6792

    瀏覽量

    156673
  • 函數(shù)
    +關注

    關注

    3

    文章

    4235

    瀏覽量

    61965
  • 測試工具
    +關注

    關注

    0

    文章

    51

    瀏覽量

    11877
  • ADK
    ADK
    +關注

    關注

    0

    文章

    7

    瀏覽量

    4950

原文標題:如何讓QCC308x的headset工程實現(xiàn)在沒有音樂播放情況下可以向手機上報音量加減的功能

文章出處:【微信號:TalkBT,微信公眾號:藍牙】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    五款電源運行Furmark狀態(tài)下的不同功耗

    用五款不同的電源,分別測試它們在關機狀態(tài),待機狀態(tài),視頻狀態(tài),玩游戲狀態(tài)以及運行Furmark狀態(tài)下的不同功耗表現(xiàn)并記錄。
    發(fā)表于 10-05 11:53 ?2156次閱讀
    五款電源運行Furmark<b class='flag-5'>狀態(tài)下</b>的不同功耗

    電機在RUN狀態(tài)下,堵轉停住了的原因?

    電機在RUN狀態(tài)下,堵轉停住了,但是WB顯示的狀態(tài)IDLE;想請教一,一般來說電機堵轉WB是不是應該報過流的錯誤?直接進入IDLE是不是
    發(fā)表于 04-15 06:49

    stm8L如何在ROP激活狀態(tài)下,進行BootLoader的升級?

    求助:在stm8L如何在ROP激活狀態(tài)下,進行BootLoader的升級。調試發(fā)現(xiàn)在ROP激活狀態(tài)下,即使BOOTCLK_enable打開也無法進入boot模式,而是直接跳轉進入USER CODE,不知道有什么辦法可以在不解除讀
    發(fā)表于 04-17 07:16

    關于CC1101的WOR問題,請問SLLEP狀態(tài)下想切換進入WOR,是要先進入IDLE,然后延時發(fā)送sworrs以及swor指令嗎?

    )時間后,開始進行event1,標定,發(fā)送;還是說直接就開始event1,標定,發(fā)送,然后再進入SLEEP?2、SLLEP狀態(tài)下想切換進入WOR,是要先進入IDLE,然后延時發(fā)送sworrs以及swor指令嗎?3、利用sidle推出wor后,wor的內部時鐘是否還在計時
    發(fā)表于 06-06 06:37

    何在空閑狀態(tài)下啟動狀態(tài)同步從FIFO線程尋址?

    我們有一個同步奴隸FIFO設置和運行在40兆赫,與主動線程選擇的A0和A1引腳。似乎當在復位狀態(tài)下啟動狀態(tài)機時,即使地址引腳表示,例如線程2,寫入總是會轉到線程0。但是,一旦PKONCE第一次聲明
    發(fā)表于 04-03 14:09

    資料下載:雙饋異步發(fā)電機在超同步狀態(tài)下的勵磁

    同步狀態(tài)下,相當于定子產(chǎn)生磁場,轉子切割磁場產(chǎn)生產(chǎn)生電流通過轉子繞組傳電網(wǎng)。
    發(fā)表于 07-06 07:26

    CH582M在連接狀態(tài)下,如何快速斷開連接進入廣播狀態(tài)?

    582M 藍牙鍵盤項目,藍牙處于連接狀態(tài)下,我想快速斷開當前連接,并改地址進入廣播狀態(tài),但藍牙總進入Connected Advertising..,要等好久才會Advertising..。。在不擦除綁定信息的情況,有什么辦法可以
    發(fā)表于 08-01 07:34

    請問如何在運行調試狀態(tài)下觀察FreeRTOS的運行參數(shù)?

    STM32F103RE+FreeRTOS+MDK5+STlink21,如何在調試運行狀態(tài)下觀察:堆棧使用、任務資源使用等參數(shù)? 2,已經(jīng)在FreeRTOSConfig.h中打開以下
    發(fā)表于 09-28 06:01

    解決蘋果ios10.3.1鎖屏狀態(tài)下WiFi自動斷開的方法

    日前,有一些蘋果用戶反映自己手機升級到ios10.3.1之后,發(fā)現(xiàn)鎖屏狀態(tài)下WiFi就自動斷開了,這是怎么一回事呢?別急,來和小編一起來看看解決蘋果ios10.3.1鎖屏狀態(tài)下WiFi自動斷開的方法吧!
    發(fā)表于 04-06 11:10 ?1.3w次閱讀
    解決蘋果ios10.3.1鎖屏<b class='flag-5'>狀態(tài)下</b>WiFi自動斷開的方法

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

    物聯(lián)型可以通過 LUA 腳本配合工程完成豐富多樣的操作。本文將介紹在掉電狀態(tài)下還能保存數(shù)據(jù)的方法。在工程中通過鍵盤輸入數(shù)據(jù),然后點擊按鈕保存或讀取。
    發(fā)表于 10-17 08:00 ?18次下載
    串口屏LUA腳本如<b class='flag-5'>何在</b>掉電<b class='flag-5'>狀態(tài)下</b>還能保存數(shù)據(jù)的方法詳細說明

    華為手機解鎖狀態(tài)下抬手直接就能付款

    據(jù)數(shù)碼博主@長安數(shù)碼君爆料,華為智感支付功能目前已支持微信支付,手機解鎖狀態(tài)下抬手直接就能付款。
    的頭像 發(fā)表于 01-15 13:51 ?4713次閱讀

    NB-IoT終端在不同工作狀態(tài)下的簡要分析

    決定窗口的大小和呼叫次數(shù); 4.ActiveTimer超時后,NB-IoT終端從空閑狀態(tài)進入PSM狀態(tài),在此狀態(tài)下,終端不進行呼叫,不
    發(fā)表于 07-02 15:08 ?861次閱讀

    線性狀態(tài)下的SiC MOSFET

    SiC MOSFET在開/關切換模式運行。然而,了解其在線性狀態(tài)下的行為是有用的,當驅動程序發(fā)生故障或設計人員為特定目的對其進行編程時,可能會發(fā)生這種情況。
    的頭像 發(fā)表于 07-25 08:05 ?1237次閱讀
    線性<b class='flag-5'>狀態(tài)下</b>的SiC MOSFET

    靜電平衡狀態(tài)下導體的特點 凹陷的位置

    靜電平衡是指導體表面上的電荷分布達到穩(wěn)定的狀態(tài)。在靜電平衡狀態(tài)下,導體表面的電荷分布呈現(xiàn)出一些特點,同時凹陷的位置也會受到影響。 首先,靜電平衡狀態(tài)下導體的特點之一是電荷分布均勻。當一個導體處于靜電
    的頭像 發(fā)表于 02-26 17:31 ?838次閱讀

    ON狀態(tài)下高壓側開關開路負載檢測應用說明

    電子發(fā)燒友網(wǎng)站提供《ON狀態(tài)下高壓側開關開路負載檢測應用說明.pdf》資料免費下載
    發(fā)表于 09-13 10:19 ?0次下載
    ON<b class='flag-5'>狀態(tài)下</b>高壓側開關開路負載檢測應用說明