一种基于android系统的全局音频播放控制方法
技术领域
1.本发明涉及音频播放控制领域,具体涉及android 系统的全局音频播放控制方法。
背景技术:2.android 系统为同时运行的多个应用程序播放音频,提供了控制机制和策略,协调系统内的各个应用程序,避免冲突。但是各个应用程序基于自身利益等各方面的考虑,并未完全按照系统既定的控制策略实施,导致当多个应用同时播放音频时会出现冲突。例如当音乐播放器和导航同时打开时,两个应用会同时播放,声音发生混叠,影响用户体验。为此,本发明旨在提供一种安卓系统框架下的全局音频播放控制方法,避免播放冲突。由于绝大部分应用播放音频时,都会调用mediaplayer模块,本发明提供了一种通过修改mediaplayer播放模块,无需对每个应用都监听声音焦点的高效方法,解决多个应用程序音频播放冲突,实现android系统的全局音频播放控制。
技术实现要素:3.本发明提供了一种在安卓系统框架下的全局音频播放控制方法,旨在解决安卓系统中多个应用程序音频播放冲突的技术问题。
4.基于android系统的全局音频播放控制方法,包括:s1、应用程序调用并创建系统中的mediaplayer 对象;s2、在应用层调用应用media player对象;s3、在media player对象的play方法中获取音频管理模块audio manager;s4、在audio manager中获取调用者包名等信息,并将其保存至audiomanager 模块进程;s5、调用onaudiofocuschangelistener 方法,获取播放权限;s6、判断获取播放权限是否成功,若是,则转入步骤s7,若否,则直接返回,不执行音频播放;s7、监听是否有正在播放音频的应用程序,若当前无正在播放音频的应用程序时,则直接播放该应用程序的音频文件;否则,则首先暂停正在播放的应用程序,并播放最新请求应用程序的音频文件。
5.所述基于android系统的全局音频播放控制方法,其中所述步骤s1,在应用程序调用并创建系统中的mediaplayer 对象的操作之前,还需先执行步骤s0,具体为:s0、在应用程序创建mediaplayer时,设置调用播放方法时默认注册回调,修改mediaplayer对象。故在步骤s1中调用的是被修改的mediaplayer 对象,其调用方式与常规调用方式相同。
6.所述基于android系统的全局音频播放控制方法,其中步骤s4具体包括:在所述步骤s3获取调用者包名等信息的基础上,将mediaplayer默认实现的
onaudiofocuschangelistener 方法注册到audiomanger 模块,并建立其包名对应关系,即一个包名对应一个注册方法。
7.所述基于android系统的全局音频播放控制方法,其中所述步骤s7具体包括:调用onaudiofocuschangelistener ,监听是否有正在播放音频的应用程序,若监听到当前无正在播放音频的应用程序时,则直接播放该应用程序的音频文件;若监听到当前有正在播放音频的应用程序,则:1)在mediaplayer中,调用onaudiofocuschangelistener中的onaudiofocuschange方法,暂停正在播放的应用程序;2)将刚被暂停的应用程序加入待播放堆栈;3)将最新请求音频播放的应用程序加入待播放堆栈;4)判断堆栈是否为空,若是,则返回,否则,弹出待播放堆栈中的最新元素并进行播放;5)播放结束后释放该应用程序的播放权限,并返回步骤4)。
附图说明
8.图1是本发明实施例的泳道流程图。
具体实施方式
9.下面通过具体实施方式结合附图1对本发明作进一步详细说明。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
10.另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
11.具体实施方法为:s1、应用程序调用并创建系统中的mediaplayer 对象;s2、在应用层(即图中app层)调应用media player对象;s3、在mediaplayer层获取全局音频管理模块audio manager;s4、在audio manager中获取调用者包名等信息,并将其保存至audiomanager 模块进程;s5、在mediaplayer层调用onaudiofocuschangelistener 方法,获取播放权限;s6、判断获取播放权限是否成功,若否,则直接返回,不执行音频播放;若是,则转入步骤s7;s7、调用onaudiofocuschangelistener ,监听是否有正在播放音频的应用程序,
若监听到当前无正在播放音频的应用程序时,则直接播放该应用程序的音频文件;若监听到当前有正在播放音频的应用程序,则:1)在mediaplayer中,调用onaudiofocuschangelistener中的onaudiofocuschange方法,暂停正在播放的app;2)将刚被暂停的应用程序(app)加入待播放堆栈;3)将最新请求音频播放的应用程序(app)加入待播放堆栈;4)判断堆栈是否为空,若是,则返回,否则,弹出待播放堆栈中的最新元素并进行播放;5)播放结束后释放该应用程序的播放权限,并返回步骤4)。
12.所述基于android系统的全局音频播放控制方法,其中所述步骤s1,在应用程序调用并创建系统中的mediaplayer 对象的操作之前,还需先执行步骤s0,具体为:s0、在应用程序创建mediaplayer时,设置调用播放方法时默认注册回调,修改mediaplayer对象,故在步骤s1中调用的是被修改的mediaplayer 对象,其调用方式与常规调用方式相同。
13.所述基于android系统的全局音频播放控制方法,其中步骤s4具体包括:在所述步骤s3获取调用者包名等信息的基础上,将mediaplayer默认实现的onaudiofocuschangelistener 方法注册到audiomanger 模块,并建立其包名对应关系,即一个包名对应一个注册方法。
技术特征:1.一种基于android系统的全局音频播放控制方法,其特征在于,包括以下步骤,s1、应用程序调用并创建系统中的mediaplayer 对象;s2、在应用层调应用media player对象;s3、获取全局音频管理模块audio manager;s4、在audio manager中获取调用者包名等信息,并将其保存至audiomanager 模块进程;s5、调用onaudiofocuschangelistener 方法,获取播放权限;s6、判断是否获取播放权限,若是,则转入播放操作步骤s7,若否,则直接返回,不执行音频播放;s7、监听是否有正在播放音频的应用程序,若监听到当前没有正在播放音频的应用程序时,则直接播放该应用程序的音频文件;若监听到当前有正在播放音频的应用程序,则暂停正在播放的app,并将其放入待播放队列,并播放最新请求的应用程序。2.根据权利要求1,一种基于android系统的全局音频播放控制方法,其特征在于,所述步骤s1,在应用程序调用并创建系统中的mediaplayer 对象的操作之前,还需先执行步骤s0,具体为:s0、在应用程序创建mediaplayer时,设置调用播放方法时默认注册回调,修改mediaplayer对象。3.根据权利要求2,其特征在于,所述步骤s4具体包括:在所述步骤s3获取调用者包名等信息的基础上,将mediaplayer默认实现的onaudiofocuschangelistener 方法注册到audiomanger 模块,并建立其包名对应关系,即一个包名对应一个注册方法。4.根据权利要求3,其特征在于,所述步骤s7具体包括:调用onaudiofocuschangelistener ,监听是否有正在播放音频的应用程序,若监听到当前无正在播放音频的应用程序时,则直接播放该应用程序的音频文件;若监听到当前有正在播放音频的应用程序,则:1)在mediaplayer中,调用onaudiofocuschangelistener中的onaudiofocuschange方法,暂停正在播放的应用程序;2)将刚被暂停的应用程序加入待播放堆栈;3)将最新请求音频播放的应用程序加入待播放堆栈;4)判断堆栈是否为空,若是,则返回,否则,弹出待播放堆栈中的最新元素并进行播放;5)播放结束后释放该应用程序的播放权限,并返回步骤4)。
技术总结本发明提供了一种基于Android系统的全局音频播放控制方法,涉及音频播放控制领域。具体包括以下步骤:1)在应用程序层调用并创建系统中的MediaPlayer对象,并在该对象下获取全局音频管理模块Audio Manager;2)在Audio Manager中获取调用者包名等信息,并将其保存至AudioManager模块进程;3)在OnAudioFocusChangeListenerf方法中尝试获取播放权限,若获得,则监听是否有正在播放音频的应用程序,若监听到当前没有正在播放音频的应用程序时,则直接播放该应用程序的音频文件;若监听到当前有正在播放音频的应用程序,则暂停正在播放的应用程序,并将其放入待播放队列,并播放最新请求的应用程序,有效解决多个应用程序的音频播放冲突问题。个应用程序的音频播放冲突问题。个应用程序的音频播放冲突问题。
技术研发人员:邓颖娜
受保护的技术使用者:西安邮电大学
技术研发日:2022.02.22
技术公布日:2022/7/5