一种安卓应用输出音量的独立控制方法技术

技术编号:34753372 阅读:18 留言:0更新日期:2022-08-31 18:49
本发明专利技术公开了一种安卓应用输出音量的独立控制方法,通过将安卓应用与AudioTrack绑定,采用AudioTrack传递调整后的音量值,在安卓系统对音频数据重采样后再采用控制音量值对音频数据进行调整,最后采用对应的AudioTrack完成对调整后音频数据的输出,从而实现对安卓应用输出音量的独立控制,改善了用户体验。户体验。户体验。

【技术实现步骤摘要】
一种安卓应用输出音量的独立控制方法


[0001]本专利技术属于安卓系统开发
,具体涉及一种安卓应用输出音量的独立控制方法。

技术介绍

[0002]在安卓系统中,当多个安卓应用播放音频时,每个安卓应用都会创建AudioTrack,每个AudioTrack都会通过共享内存和播放线程的Track传递数据,每个安卓应用发送的音频数据格式可能各不相同,而声卡通常仅支持几种固定的格式,因此,大多数情况下需要对音频数据进行重采样和混音,重采样是指将硬件不支持的音频格式转化为硬件支持的音频格式的处理过程。
[0003]处理过程为AudioTrack通过共享内存将数据传递给混音线程,混音线程分析判断音频数据的格式是否为硬件所支持,根据支持与否设置该音频数据的Hook函数,再确定总的Hook函数,具体来说对于格式不同的音频数据则设置为进行重采样的Hook函数;在混音处理时只需要调用总的Hook函数即可完成对所有音频数据的处理,包括对音频数据的重采样,然后再对处理后的音频数据进行混音处理,最后将混音处理后的数据发送至硬件。安卓系统中采用上述操作即可提供对不同安卓应用输出音量进行独立控制的支持。
[0004]在桌面系统上运行安卓应用时,通常采用在桌面系统上安装安卓兼容环境的方式,使安卓应用运行在安卓兼容环境中,用户可在安卓兼容环境中使用安卓应用,例如,现有安卓兼容环境的实现方案有xDroid,它包括xDroidUI和xDroidServer,xDroidUI为安卓应用显示单元,xDroidServer为安卓应用兼容服务。然而,现有的此类使用方式不支持用户单独控制安卓应用的输出音量,为用户使用带来了不便,影响了用户体验。

技术实现思路

[0005]有鉴于此,本专利技术提供了一种安卓应用输出音量的独立控制方法,能够实现对运行在安卓兼容环境内的安卓应用的输出音量的独立控制。
[0006]本专利技术提供的一种安卓应用输出音量的独立控制方法,包括以下步骤:步骤1、用户在桌面系统中打开安卓应用时,将安卓应用的taskID发送至安卓兼容环境;用户使用安卓应用输出音频时,安卓兼容环境确定安卓应用所需采用的AudioTrack的实例Track的类型,若Track的类型为STREAM_MUSIC则将接收到的taskId与Track绑定,同时为Track增加保存各声道音量值的音量数组后,完成Track的创建;若Track的类型为非STREAM_MUSIC则完成Track的创建;步骤2、当用户调节安卓应用输出音量时,判断当前操作的对象是否为位于桌面最上层的安卓应用,如果是则执行步骤3,否则执行步骤2;步骤3、暂停将调节安卓应用输出音量的事件发送至安卓应用兼容服务,获取调节后的安卓应用输出音量的音量值,所述音量值为取值在0到1之间的浮点值;将音量值及安卓应用的taskId发送至安卓兼容环境内的AudioFlinger;
步骤4、AudioFlinger找到绑定了相同taskId的Track作为目标Track,采用音量值为目标Track的音量数组中每个元素赋值;完成对音频数据基于音量值的调整及音频数据的重采样得到新的音频数据,采用目标Track输出新的音频数据。
[0007]进一步地,所述步骤4中的所述完成对音频数据基于音量值的调整及音频数据的重采样得到新的音频数据的方式为:启动安卓系统内置的重采样器对音频数据进行重采样后,采用音量值调整音频数据的每个字节后得到新的音频数据。
[0008]进一步地,所述采用音量值调整音频数据的每个字节后得到新的音频数据的方式为:令音量值与音频数据的每个字节做乘法运算后得到新的音频数据。
[0009]进一步地,所述步骤4中的所述完成对音频数据基于音量值的调整及音频数据的重采样得到新的音频数据的方式为:采用音量值调整音频数据的每个字节后得到中间音频数据,启动重采样器完成对中间音频数据的处理得到新的音频数据。
[0010]进一步地,所述采用音量值调整音频数据的每个字节后得到中间音频数据的方式为:令音量值与音频数据的每个字节做乘法运算后得到中间音频数据。
[0011]进一步地,所述步骤1中的所述用户在桌面系统中打开安卓应用时,由安卓应用显示单元将安卓应用的taskId发送至安卓兼容环境。
[0012]进一步地,所述安卓应用显示单元为xDroidUI,所述安卓应用兼容服务为xDroidServer。
[0013]有益效果:本专利技术通过将安卓应用与AudioTrack绑定,采用AudioTrack传递调整后的音量值,在安卓系统对音频数据重采样后再采用控制音量值对音频数据进行调整,最后采用对应的AudioTrack完成对调整后音频数据的输出,从而实现对安卓应用输出音量的独立控制,改善了用户体验。
附图说明
[0014]图1为本专利技术提供的一种安卓应用输出音量的独立控制方法的流程图。
具体实施方式
[0015]下面结合附图并举实施例,对本专利技术进行详细描述。
[0016]本专利技术提供的一种安卓应用输出音量的独立控制方法,其核心思想是:通过获取安卓应用的输出音频的音量值,采用音量值对输出音频的每个字节进行处理,再将处理后的音频进行输出,已实现针对安卓应用的独立音量控制。
[0017]本专利技术提供的一种安卓应用输出音量的独立控制方法,流程如图1所示,包括以下步骤:步骤1、用户在桌面系统中打开安卓应用时,安卓应用显示单元将安卓应用的taskID发送至安卓兼容环境。
[0018]步骤2、用户使用安卓应用输出音频时,安卓兼容环境确定安卓应用所需采用的AudioTrack的实例Track的类型,若Track的类型为STREAM_MUSIC则将接收到的taskId与Track绑定,同时为Track增加保存各声道音量值的音量数组后,完成Track的创建;若Track的类型为非STREAM_MUSIC则完成Track的创建。
[0019]步骤3、当安卓应用显示单元监测到用户控制安卓应用输出音量的操作时,判断当前操作的对象是否为位于桌面最上层的安卓应用,如果是则执行步骤4,否则执行步骤3,继续监测。
[0020]具体来说,安卓应用显示单元在桌面系统端检测输出音量控制操作的方法包括:检测多媒体键盘音量键的输入、检测通过系统任务栏上的音量控制、检测安卓应用显示单元自定义的音量控制快捷键或检测通过安卓应用显示单元的应用窗口的右键菜单的音量控制等方式。
[0021]步骤4、安卓应用显示单元拦截控制输出音量的操作,限制将当前操作发送至安卓应用兼容服务;安卓应用显示单元获取当前操作执行后的音量值,记为appVolume,appVolume为取值在0到1之间的浮点值;安卓应用显示单元将音量值及安卓应用的taskId发送至安卓应用兼容服务。
[0022]步骤5、安卓应用兼容服务将音量值和安卓应用的taskId发送到AudioFlinger,AudioFlinger遍历当前所有的Track找到绑定了相同taskId的Track作为目标Track,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种安卓应用输出音量的独立控制方法,其特征在于,包括以下步骤:步骤1、用户在桌面系统中打开安卓应用时,将安卓应用的taskID发送至安卓兼容环境;用户使用安卓应用输出音频时,安卓兼容环境确定安卓应用所需采用的AudioTrack的实例Track的类型,若Track的类型为STREAM_MUSIC则将接收到的taskId与Track绑定,同时为Track增加保存各声道音量值的音量数组后,完成Track的创建;若Track的类型为非STREAM_MUSIC则完成Track的创建;步骤2、当用户调节安卓应用输出音量时,判断当前操作的对象是否为位于桌面最上层的安卓应用,如果是则执行步骤3,否则执行步骤2;步骤3、暂停将调节安卓应用输出音量的事件发送至安卓应用兼容服务,获取调节后的安卓应用输出音量的音量值,所述音量值为取值在0到1之间的浮点值;将音量值及安卓应用的taskId发送至安卓兼容环境内的AudioFlinger;步骤4、AudioFlinger找到绑定了相同taskId的Track作为目标Track,采用音量值为目标Track的音量数组中每个元素赋值;完成对音频数据基于音量值的调整及音频数据的重采样得到新的音频数据,采用目标Track输出新的音频数据。2.根据权利要求1所述的独立控制方法,...

【专利技术属性】
技术研发人员:温研
申请(专利权)人:北京麟卓信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1