具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明实施例提供的音频播放方法应用于移动终端,其可以通过移动虚拟化技术,允许多个虚拟操作系统或虚拟机(Virtual Machine,VM)同时运行在移动终端上。通过移动虚拟化技术带来的隔离性可实现单一移动终端上多个虚拟操作系统或虚拟机之间的隔离,避免各个虚拟操作系统或虚拟机上的进程对其他虚拟操作系统或虚拟机产生不利影响。举例而言,通过移动虚拟化技术在移动终端运行有个人虚拟操作系统与企业虚拟操作系统,并实现个人虚拟操作系统与企业虚拟操作系统之间的隔离,其能够防范个人虚拟操作系统上的进程给企业虚拟操作系统带来的潜在危害,满足一些具有安全要求的企业对“自带设备(Bring Your Own Device,BYOD)”的需求。
请参阅图1,图1是本发明实施例提供一种虚拟化模型的示意图。如图1所示,该虚拟化模型100包括硬件系统层11、虚拟机监控器12(Hypervisor/VMM)及虚拟机层13。
硬件系统层11包括处理器111、内存112及输入/输出设备113。处理器111通过总线分别与内存112和输入/输出设备113连接。
处理器111作为移动终端的控制核心,其可以是中央处理单元(CentralProcessing Unit,简称为“CPU”),亦可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
内存112作为移动终端的相关控制逻辑指令及数据的存储区,其可以为随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质。
输入/输出设备113可以是任何合适类型的,提供一种或者多种用户交互方式的外围设备,例如接收用户动作操作指令的鼠标、键盘或者触摸输入屏,用于采集图像信息的体感摄像机、用于采集声音信息的麦克风或者向用户展示图像信息的显示屏或者用于输出音频的扬声器。输入/输出设备113可以选择使用有线或者无线的外围设备与其他物理硬件设备连接。
虚拟机监控器12作为一种运行在硬件系统层和操作系统之间的中间软件层,其允许多个操作系统和应用共享一套基础物理硬件,因此虚拟机监控器12可以看作是虚拟环境中的“元”操作系统,其可以协调访问移动终端上的所有物理设备和虚拟机。因此,虚拟机监控器12能够管理真实的物理硬件平台,并为每个虚拟机提供对应的虚拟硬件平台。虚拟机监控器12通过主机(Host)实现前述职能,其中,主机上运行一主虚拟机(Host VM),在该虚拟机上运行有主机操作系统(Host OS)。
请再参阅图1,虚拟机层13包括3个虚拟机,每个虚拟机皆可看作一个小而完整的计算机系统,皆具有自己的“系统硬件”,其中,该“系统硬件”由软件模拟而成,“系统硬件”包括处理器、内存及输入输出设备。在此计算机系统上,虚拟机运行着自身的客户操作系统(Guest OS)。
主机操作系统和客户操作系统均属于管理和控制硬件系统层内各个物理硬件设备以及相应的软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在主机操作系统或客户操作系统的支持下才能运行。在本发明实施例中,主机操作系统和客户操作系统均可以为Android,用以接收用户指令并据此输出对应的处理结果向用户展示。
主机操作系统以及若干个客户操作系统之间共享硬件系统层内物理硬件设备。在实际运行时,主机操作系统可以直接使用硬件系统层内的物理硬件设备,而客户操作系统则使用由驱动该客户操作系统的虚拟机提供的虚拟设备。一个虚拟机对应驱动一个客户操作系统,每一虚拟机可以作为主机操作系统中的其中一个应用程序运行。
本实施例以虚拟机运行Android系统为例子,详细阐述Android系统下主机/客户操作系统的音频播放过程。请参阅图2,图2是现有技术提供一种Android系统下主机/客户操作系统的音频播放框架图。如图2所示,每个操作系统的音频播放框架皆包括内核空间(Kernel space)、用户空间C/C++(User space-C/C++)及用户空间Java(User space-Java)。
其中,对于客户操作系统的用户空间Java,其包括若干个第一音频应用程序(Audio APP)与客户音频管理模块(AudioManager)。客户操作系统播放音频时,第一音频应用程序通过客户音频管理模块可以调节音量、设置/读取声音模式等等。
同理可得,对于主机操作系统的用户空间Java,其包括若干个第二音频应用程序(Audio APP)与主机音频管理模块(AudioManager)。主机操作系统播放音频时,第二音频应用程序通过客户音频管理模块可以调节音量、设置/读取声音模式等等。其中,在一些实施例中,第一音频应用程序或第二音频应用程序可以为任意具有播放音频功能的程序,诸如音乐播放器、视频播放器、闹钟应用程序等等。
当主机操作系统与客户操作系统需要同时播放音频时,显然,由于主机/客户操作系统之间缺乏音频联系,主机操作系统与客户操作系统皆通过真实音频硬件设备将各自音频播放出,最终音频效果是两者音频的混音效果。因此,传统技术未能够有效地协调主机/客户操作系统之间的音频竞争播放。
基于此,本发明实施例提供一种音频竞争播放装置。不过,在阐述上述音频竞争播放装置之前,本发明实施例先对Android系统下音频竞争的工作原理作一个简短地阐述,以便理解更加深刻。
众所周知,Android系统是一个多任务系统,音频(Audio)系统是竞争资源。在Android2.2之前,其缺乏内建的机制以解决多个应用程序竞争音频资源的问题。在Android2.2之后,其引入了称作音频焦点(AudioFocus)的机制以管理对音频资源的竞争与协调。
按照音频焦点的机制,应用程序在使用音频之前,其需要申请音频焦点。当应用程序获得音频焦点之后,该应用程序方可使用音频。当其它应用程序竞争上述应用程序的音频资源时,上述应用程序需要在收到通知之后,作出停止播放或者降低声音的处理。值得提醒的是,此类机制需要两者应用程序的合作而完成的,亦即,需要使用音频资源的所有应用程序皆按照该机制进行。当某个应用程序丢失音频焦点时,其可以仍然在使用音频,亦即,该应用程序未遵守上述音频焦点的机制,导致用户体验感比较差。
在音频焦点的机制中,获取/放弃音频焦点的方法都在android.media.AudioManager中。获取音频焦点使用requestAudioFocus();使用完音频焦点之后,放弃音频焦点使用abandonAudioFocus()。其中,参数包括:
AUDIOFOCUS_GAIN:表示未知申请到的音频焦点的使用时间持续多久,一般是长期占有;
AUDIOFOCUS_GAIN_TRANSIENT:表示需要申请的音频焦点是暂时性的,音频焦点会很快使用完并释放的;
AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK:表示需要申请的音频焦点是暂时性的,并且当前正在使用音频焦点的可以继续播放,只是要“duck”一下(降低音量)。
AudioManager.OnAudioFocusChangeL istener是申请成功之后,监听音频焦点使用情况的监听器(Listener),后续若有其它应用程序竞争音频焦点时,其可以通过此监听器的onAudioFocusChange()方法通知音频焦点的使用者。其返回值可以是:1、AUDIOFOCUS_REQUEST_GRANTED:申请成功;2、AUDIOFOCUS_REQUEST_FAILED:申请失败。
由上述内容可知,申请/释放音频焦点时传入了AudioManager.OnAudioFocusChangeListener这参数,其onAudioFocusChange()方法是音频焦点被抢占与再次获得通知的地方。
onAudioFocusChange()方法的focusChange参数指示了该音频焦点的竞争者对音频焦点的拥有情况,取值如下:
AUDIOFOCUS_GAIN:获得音频焦点。
AUDIOFOCUS_LOSS:丢失音频焦点,并将会持续很长的时间。
AUDIOFOCUS_LOSS_TRANSIENT:暂时丢失音频焦点,并会很快再次获得。
AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:暂时丢失音频焦点,但是可以继续播放,不过要在降低音量。
阐述完上述Android系统下音频竞争的工作原理后,下面对本发明实施例提供的音频竞争播放装置作出介绍。值得提醒的是,音频竞争播放装置作为软件系统,其可以运行于移动终端等等终端内。音频竞争播放装置包括若干指令,该若干指令存储于存储器内,处理器可以访问该存储器,调用指令进行执行,以完成下述各个实施例所阐述的音频竞争播放的控制逻辑。
请一并参阅图3与图4,图3是本发明实施例提供一种音频竞争播放装置的结构示意图,图4是本发明实施例提供一种Android系统下主机/客户操作系统的音频播放框架图。如图3与图4所示,音频竞争播放装置300包括:主机代理模块31与客户代理模块32。主机代理模块31运行于客户操作系统41中,客户代理模块32运行于主机操作系统42中。其中,客户操作系统41还运行有第一音频应用程序33与客户音频管理模块34,主机操作系统42还运行有第二音频应用程序35与主机音频管理模块36。
在本实施例中,首先,当各个系统初始化时,客户操作系统41在后台启动。此时,主机代理模块31向客户音频管理模块34申请音频焦点,并开始监听音频焦点的变化。
紧接着,主机操作系统42播放音频。其中,第二音频应用程序35向主机音频管理模块36申请音频焦点,并开始监听音频焦点的变化。
紧接着,当第一音频应用程序33在客户操作系统41开始播放音频时,于是,第一音频应用程序33向客户音频管理模块34申请音频焦点,因此,第一音频应用程序33便获取音频焦点。此时,客户音频管理模块34的音频焦点出现变化。
与此同时,主机代理模块31监听到客户操作系统33的音频焦点出现变化,通过跨系统通信方式,向客户代理模块32通知该变化。
在一些实施例中,该变化包括音频焦点的变化类型。因此,客户代理模块32根据变化向主机音频管理模块36申请音频焦点的过程中,其可以根据音频焦点的变化类型向主机音频管理模块36申请音频焦点。
举例而言:如前所述,对于获取音频焦点的申请类型包括:AUDIOFOCUS_GAIN、AUDIOFOCUS_GAIN_TRANSIENT以及AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK。对于丢失音频焦点的类型包括:AUDIOFOCUS_LOSS、AUDIOFOCUS_LOSS_TRANSIENT以及AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK。
显然,将获取音频焦点的申请类型与丢失音频焦点的类型作个对比,其实每种获取音频焦点的申请类型皆有一丢失音频焦点的类型与之对应,例如:AUDIOFOCUS_GAIN对应AUDIOFOCUS_LOSS,以及等等。
因此,当第一音频应用程序33向客户音频管理模块34申请音频焦点的类型为:AUDIOFOCUS_GAIN_TRANSIENT,于是,客户代理模块32以同样类型“AUDIOFOCUS_GAIN_TRANSIENT”向主机音频管理模块36申请音频焦点。接着,第二音频应用程序35以丢失类型“AUDIOFOCUS_LOSS_TRANSIENT”而释放音频焦点。
当客户代理模块32知悉该变化后,客户代理模块32根据该变化向主机音频管理模块36申请音频焦点,主机音频管理模块36根据音频焦点的申请,向第二音频应用程序35发送音频焦点的丢失指令,以使第二音频应用程序35停止或继续播放音频。
如前所述,第二音频应用程序35可以根据音频焦点的丢失类型停止播放音频。因此,首先,主机音频管理模块36根据音频焦点的申请,确定音频焦点的丢失类型,例如,音频焦点的申请类型为“AUDIOFOCUS_GAIN_TRANSIENT”,此时,主机音频管理模块36确定音频焦点的丢失类型为“AUDIOFOCUS_LOSS_TRANSIENT”。其次,主机音频管理模块36根据音频焦点的丢失类型,向第二音频应用程序35发送音频焦点的丢失指令,以使第二音频应用程序35停止播放音频。
一般地,一些音频应用程序在接收到丢失指令后,其可以释放当前的音频焦点。然而,一些音频应用程序并未响应丢失指令,并继续播放音频。因此,第二音频应用程序35未响应于丢失指令,继续播放音频。
在第一音频应用程序33停止播放音频后,主机代理模块31重新获取音频焦点,并通知客户代理模块32,以使客户代理模块32释放音频焦点以及第二音频应用程序35重新获取音频焦点。
为了更加详细地阐述本发明实施例提供的音频竞争装置的工作原理。本发明实施例结合图5对此作出进一步的阐述。
此处假设第一音频应用程序33为闹铃应用程序,第二音频应用程序35为音乐播放器。
如图5所示:
第一部分:客户操作系统41后台启动。
步骤51、主机代理模块初始化为新监听器;
在步骤51中,主机代理模块31作为监听器(new OnAudioFocusChangeListener),用于监听音频焦点的变化。
步骤52、主机代理模块向客户音频管理模块申请音频焦点;
在步骤52中,主机代理模块31向客户音频管理模块34发送指令“requestAudioFocus(AUDIOFOCUS_GAIN)”。
步骤53、客户音频管理模块记录主机代理模块作为新监听器;
步骤54、客户音频管理模块向主机代理模块发送音频焦点申请成功指令;
对于步骤53与步骤54,两者可以同步进行或异步进行,在此并不局限于步骤的上下顺序,其原理同样适用于下述各个步骤,在此不再赘述。
第二部分:主机操作系统42播放音频。
步骤55、第二音频应用程序成为新监听器;
步骤56、第二音频应用程序向主机音频管理模块申请音频焦点;
在步骤52中,第二音频应用程序35向主机音频管理模块36发送指令“requestAudioFocus(AUDIOFOCUS_GAIN)”。
步骤57、主机音频管理模块记录第二音频应用程序作为新监听器;
步骤58、主机音频管理模块向第二音频应用程序发送音频焦点申请成功指令;
第三部分:客户操作系统41开始播放音频,主机操作系统42暂停播放音频。
步骤59、第一音频应用程序成为新监听器;
步骤510、第一音频应用程序开始播放音频;
步骤511、第一音频应用程序向客户音频管理模块申请音频焦点;
在步骤511中,第一音频应用程序33向客户音频管理模块34发送指令“AUDIOFOCUS_GAIN_TRANSIENT”。
步骤512、客户音频管理模块记录第一音频应用程序作为新监听器;
步骤513、客户音频管理模块向第一音频应用程序发送音频焦点申请成功指令;
步骤514、客户音频管理模块向主机代理模块发送音频焦点的丢失指令;
在步骤514中,主机代理模块31能够监听到客户操作系统41的音频焦点出现了变化,其中,此处丢失指令为“AudioFocusChange(AUDIOFOCUS_LOSS_TRANSIENT)”,当然,该丢失指令还可以为其它类型指令。
步骤515、主机代理模块通过跨系统通信方式向客户代理模块通知音频焦点的变化;
在步骤515中,在主机操作系统42播放音频后,并客户操作系统41开始播放音频时,第一音频应用程序33向客户音频管理模块34申请音频焦点,以使客户音频管理模块34的音频焦点出现上述变化。于是,主机代理模块31通过跨系统通信方式向客户代理模块32传递指令“Need request audi o focus(AUDIOFOCUS_GAIN_TRANSIENT)”。
步骤516、客户代理模块成为新监听器;
步骤517、客户代理模块向向主机音频管理模块申请音频焦点;
在步骤517中,客户代理模块32根据变化申请音频焦点,以使主机操作系统42根据音频焦点的申请控制音频的播放,于是,客户代理模块32向主机音频管理模块36发送指令“requestAudioFocus(AUDIOFOCUS_GAIN_TRANSIENT)”。
步骤518、主机音频管理模块记录客户代理模块作为新监听器;
步骤519、主机音频管理模块向客户代理模块发送音频焦点申请成功指令;
步骤520、主机音频管理模块根据音频焦点的申请,向第二音频应用程序发送音频焦点的丢失指令;
在步骤520中,主机音频管理模块36向第二音频应用程序35发送指令“AudioFocusChange(AUDIOFOCUS_LOSS_TRANSIENT)”,该丢失指令与客户代理模块32向主机音频管理模块申请音频焦点的指令相对应,亦即,“AUDIOFOCUS_LOSS_TRANSIENT”对应于“AUDIOFOCUS_GAIN_TRANSIENT”。因此,在一些实施例中,客户代理模块32根据音频焦点的变化类型向主机音频管理模块36申请音频焦点。
步骤521、第二音频应用程序停止播放音乐。
在步骤521中,对于一些不遵守音频焦点机制的第二音频应用程序,其可以拒绝释放音频焦点,并继续播放音乐。因此,步骤521所示的只是一个实施例,并不局限于此。
第四部分:客户操作系统41结束播放音频,主机操作系统42重新播放音频。
步骤522、第一音频应用程序播放音频;
步骤523、第一音频应用程序向客户音频管理模块申请放弃音频焦点;
在步骤523中,第一音频应用程序33向客户音频管理模块34发送指令“abandonAudi oFocus”。
步骤524、主机代理模块监听到音频焦点的变化;
在步骤524中,客户音频管理模块34向主机代理模块31发送指令“AudioFocusChange(AUDIOFOCUS_GAIN)”,于是,主机代理模块31重新获取音频焦点。
步骤525、主机代理模块通过跨系统通信方式向客户代理模块通知音频焦点的变化;
在步骤525中,主机代理模块31通过跨系统通信方式向客户代理模块32传递指令“Need abandon audi o focus”。
步骤526、客户代理模块向主机音频管理模块申请放弃音频焦点;
在步骤526中,客户代理模块32释放音频焦点。
在步骤526中,客户代理模块向主机音频管理模块发送指令“abandonAudioFocus”。
步骤527、第二音频应用程序重新获取音频焦点;
在步骤527中,主机音频管理模块36向第二音频应用程序发送指令“AudioFocusChange(AUDIOFOCUS_GAIN)”。
步骤28、第二音频应用程序重新播放音频。
因此,在本实施例中,在多操作系统同时播放音频时,主机/客户操作系统通过联系,其能够有效地处理主机/客户操作系统的音频竞争播放的问题。
作为本发明实施例的另一方面,本发明实施例提供一种音频竞争播放方法。请参阅图6,图6是本发明实施例提供一种音频竞争播放方法的流程示意图。如图6所示,该音频竞争播放方法600包括:
步骤61、在主机操作系统播放音频后,并客户操作系统开始播放音频时,监听客户操作系统的音频焦点是否出现变化;
步骤62、在监听到客户操作系统的音频焦点出现变化时,根据变化申请音频焦点,以使主机操作系统根据音频焦点的申请控制音频的播放。
在本实施例中,在多操作系统同时播放音频时,主机/客户操作系统通过联系,其能够有效地处理主机/客户操作系统的音频竞争播放的问题。
在一些实施例中,客户操作系统运行有第一音频应用程序与客户音频管理模块,在主机操作系统播放音频后,并客户操作系统开始播放音频时,第一音频应用程序向客户音频管理模块申请音频焦点,以使客户音频管理模块的音频焦点出现上述变化。
在一些实施例中,主机操作系统还运行有第二音频应用程序与主机音频管理模块。步骤62包括:根据变化向所述主机音频管理模块申请音频焦点,以使主机音频管理模块根据音频焦点的申请,向第二音频应用程序发送音频焦点的丢失指令,第二音频应用程序根据丢失指令停止或继续播放音频。
在一些实施例中,变化包括音频焦点的变化类型。因此,根据变化向所述主机音频管理模块申请音频焦点包括:根据音频焦点的变化类型向主机音频管理模块申请音频焦点。
在一些实施例中,如图7所示,该音频竞争播放方法600还包括:
步骤63、在第一音频应用程序停止播放音频后,重新获取音频焦点;
步骤64、向主机操作系统通知音频焦点的获取,以使第二音频应用程序重新获取音频焦点。
由于装置实施例和方法实施例是基于同一构思,在内容不互相冲突的前提下,方法实施例的内容可以引用装置实施例的,在此不赘述。
作为本发明实施例的另一方面,本发明实施例提供一种移动终端。如图8所示,该移动终端800包括:一个或多个处理器81以及存储器82。其中,图8中以一个处理器81为例。处理器81和存储器82可以通过总线或者其他方式连接,图8中以通过总线连接为例。
存储器82作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的音频竞争播放方法对应的程序指令/模块。处理器81通过运行存储在存储器82中的非易失性软件程序、指令以及模块,从而执行如图6至7所示的支付方法,或者如图3或图4所示的音频竞争播放装置的各种功能应用以及数据处理。
存储器82可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器82可选包括相对于处理器81远程设置的存储器,这些远程存储器可以通过网络连接至处理器81。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器82中,当被所述一个或者多个处理器81执行时,执行上述任意方法实施例中的音频竞争播放方法,例如,执行以上描述的图6或图7所示的各个步骤的功能。
本发明实施例的移动终端800以多种形式存在,在执行以上描述的图6或图7所示的各个步骤的功能时,上述移动终端800包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能与捕捉物体图像功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算、处理功能及捕捉物体图像功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放视频内容,一般也具备移动上网特性及捕捉物体图像功能。该类设备包括:视频播放器,掌上游戏机,以及智能玩具和便携式车载导航设备。
(4)其他具有视频播放功能和上网功能的电子设备。
本发明实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如图8中的一个处理器81,可使得上述一个或多个处理器可执行上述任意方法实施例中的音频竞争播放方法,例如,执行上述任意方法实施例中的音频竞争播放方法,例如,执行以上描述的图6至图7所示的各个步骤的功能。
以上所描述的装置或设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。