0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在connected idle状态下向手机同步音量

蓝牙 来源:蓝牙 2023-10-20 12:22 次阅读

内容简介

在QCC517x/QCC518x新的ADK下,headset工程如果有音量加减事件,只有当前有A2DP播放音乐或者HFP通话状态下才会给手机发送事件,否则程序会忽略音量加减事件。本文介绍如何在connected idle状态下向手机同步音量。

测试工具

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两个事件触发的,经过查阅代码发现,在volumeService_HandleUiInput中会对这两个事件进行处理:

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

由上图代码可得知,在处理ui_input_volume_down和ui_input_volume_up之前,会先通过GenericSource_IsValid(source)函数去判断当前活跃的source是否有效,如果有效才会进行下一步的操作,如果无效就直接忽略了。

解决方法

所以要在手机有连接且没有音乐播放的情况下,如果要同步A2DP的音量,则需要在handle_ui_input为FALSE的情况下,对audio_source_a2dp_1和audio_source_a2dp_2进行音量加减操作即可。

所以在volumeService_HandleUiInput函数的末尾添加以下内容即可:

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

}

}

}

增加以上代码后同时连接两个手机测试,发现在当前没有audio输出的情况下,如果操作headset的音量加减按键,就会同时向两个手机发送音量加减指令了,如果当前有音乐播放,则继续按照原始程序进行操作。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 手机
    +关注

    关注

    35

    文章

    6847

    浏览量

    157377
  • 函数
    +关注

    关注

    3

    文章

    4302

    浏览量

    62390
  • 测试工具
    +关注

    关注

    0

    文章

    53

    浏览量

    11907
  • ADK
    ADK
    +关注

    关注

    0

    文章

    7

    浏览量

    4967

原文标题:如何让QCC308x的headset工程实现在没有音乐播放情况下可以向手机上报音量加减的功能

文章出处:【微信号:TalkBT,微信公众号:蓝牙】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    五款电源运行Furmark状态下的不同功耗

    用五款不同的电源,分别测试它们在关机状态,待机状态,视频状态,玩游戏状态以及运行Furmark状态下的不同功耗表现并记录。
    发表于 10-05 11:53 2269次阅读
    五款电源运行Furmark<b class='flag-5'>状态下</b>的不同功耗

    电机在RUN状态下,堵转停住了的原因?

    电机在RUN状态下,堵转停住了,但是WB显示的状态IDLE;想请教一,一般来说电机堵转WB是不是应该报过流的错误?直接进入IDLE是不是
    发表于 04-15 06:49

    stm8L如何在ROP激活状态下,进行BootLoader的升级?

    求助:在stm8L如何在ROP激活状态下,进行BootLoader的升级。调试发现在ROP激活状态下,即使BOOTCLK_enable打开也无法进入boot模式,而是直接跳转进入USER CODE,不知道有什么办法可以在不解除读
    发表于 04-17 07:16

    TAS5805在BYPASS状态下音量播放音乐,在遇到低频大动态时会有“POPO”的爆音,怎么解决?

    TAS5805测试电路的失真在1%以下。但在BYPASS状态下音量播放音乐,在遇到低频大动态时会有“POPO”的爆音。请问怎么解决。
    发表于 10-12 06:37

    何在空闲状态下启动状态同步从FIFO线程寻址?

    我们有一个同步奴隶FIFO设置和运行在40兆赫,与主动线程选择的A0和A1引脚。似乎当在复位状态下启动状态机时,即使地址引脚表示,例如线程2,写入总是会转到线程0。但是,一旦PKONCE第一次声明
    发表于 04-03 14:09

    资料下载:双馈异步发电机在超同步状态下的励磁

    同步状态下,相当于定子产生磁场,转子切割磁场产生产生电流通过转子绕组传电网。
    发表于 07-06 07:26

    CH582M在连接状态下,如何快速断开连接进入广播状态

    582M 蓝牙键盘项目,蓝牙处于连接状态下,我想快速断开当前连接,并改地址进入广播状态,但蓝牙总进入Connected Advertising..,要等好久才会Advertising..。。在不擦除绑定信息的情况,有什么办法可以
    发表于 08-01 07:34

    请问如何在运行调试状态下观察FreeRTOS的运行参数?

    STM32F103RE+FreeRTOS+MDK5+STlink21,如何在调试运行状态下观察:堆栈使用、任务资源使用等参数? 2,已经在FreeRTOSConfig.h中打开以下
    发表于 09-28 06:01

    解决苹果ios10.3.1锁屏状态下WiFi自动断开的方法

    日前,有一些苹果用户反映自己手机升级到ios10.3.1之后,发现锁屏状态下WiFi就自动断开了,这是怎么一回事呢?别急,来和小编一起来看看解决苹果ios10.3.1锁屏状态下WiFi自动断开的方法吧!
    发表于 04-06 11:10 1.3w次阅读
    解决苹果ios10.3.1锁屏<b class='flag-5'>状态下</b>WiFi自动断开的方法

    串口屏LUA脚本如何在掉电状态下还能保存数据的方法详细说明

    物联型可以通过 LUA 脚本配合工程完成丰富多样的操作。本文将介绍在掉电状态下还能保存数据的方法。在工程中通过键盘输入数据,然后点击按钮保存或读取。
    发表于 10-17 08:00 18次下载
    串口屏LUA脚本如<b class='flag-5'>何在</b>掉电<b class='flag-5'>状态下</b>还能保存数据的方法详细说明

    华为手机解锁状态下抬手直接就能付款

    据数码博主@长安数码君爆料,华为智感支付功能目前已支持微信支付,手机解锁状态下抬手直接就能付款。
    的头像 发表于 01-15 13:51 4857次阅读

    NB-IoT终端在不同工作状态下的简要分析

    决定窗口的大小和呼叫次数; 4.ActiveTimer超时后,NB-IoT终端从空闲状态进入PSM状态,在此状态下,终端不进行呼叫,不
    发表于 07-02 15:08 904次阅读

    线性状态下的SiC MOSFET

    SiC MOSFET在开/关切换模式运行。然而,了解其在线性状态下的行为是有用的,当驱动程序发生故障或设计人员为特定目的对其进行编程时,可能会发生这种情况。
    的头像 发表于 07-25 08:05 1330次阅读
    线性<b class='flag-5'>状态下</b>的SiC MOSFET

    静电平衡状态下导体的特点 凹陷的位置

    静电平衡是指导体表面上的电荷分布达到稳定的状态。在静电平衡状态下,导体表面的电荷分布呈现出一些特点,同时凹陷的位置也会受到影响。 首先,静电平衡状态下导体的特点之一是电荷分布均匀。当一个导体处于静电
    的头像 发表于 02-26 17:31 1207次阅读

    ON状态下高压侧开关开路负载检测应用说明

    电子发烧友网站提供《ON状态下高压侧开关开路负载检测应用说明.pdf》资料免费下载
    发表于 09-13 10:19 0次下载
    ON<b class='flag-5'>状态下</b>高压侧开关开路负载检测应用说明