双屏异显异音实现方法、装置及存储介质与流程

文档序号:20485684发布日期:2020-04-21 21:39阅读:402来源:国知局
双屏异显异音实现方法、装置及存储介质与流程

本发明涉及显示技术领域,尤其是涉及一种双屏异显异音实现方法、装置及存储介质。



背景技术:

目前,android系统的双屏异显功能在许多应用场景中都有用到,但仅仅是实现了在不同屏上显示不同的画面,声音部分并没有实现双屏的独立控制,对于一些特殊场景便无法满足,比如在广告机、售卖机上,通常需要一个工控设备在不同屏幕上独立播放视频广告即同时播放视频和声音。目前行业内一些关于双屏异音功能的方案,大多不是基于android的双屏异显框架即android的presentation框架,大多实现上都相对复杂。

随着android系统在各领域中的广泛应用,用户不仅想要在主屏幕上显示,在副屏幕上同样也要显示不同的内容和声音。google在android4.2版本以后提供了presentation类用于实现在两块屏幕上同时显示不同的内容,即双屏异显。但presentation类仅能实现在不同屏幕上显示不同的ui即画面或者图像显示,而不能将音频播放无法与对应的屏关联起来。即使android设备上有多个声卡,但同一时刻只有一个声卡有声音输出。



技术实现要素:

本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种双屏异显异音实现方法,能够实现android设备在双显示屏异显示时,将主屏和副屏分别关联到不同的声卡上,实现主副屏音视频流的独立播放,互不干扰的有益效果。

本发明还提出一种异显异音实现装置。

本发明还提出一种执行异显异音方法的存储介质。

第一方面,本发明的一个实施例提供了一种双屏异显异音实现方法,包括以下步骤:

s100:定义主屏id和副屏id;

s200:将所述主屏id和所述副屏id分别关联至第一声卡和第二声卡;

s300:检测上层传输来的音频流,解析所述音频流中的audiosessionid,判断所述音频流属于所述第一声卡的音频流或所述第二声卡的音频流;

s400:根据判断结果将所述音频流输出至对应的声卡进行播放。

进一步地,步骤还包括:将主屏显示ui与所述主屏id关联,将副屏显示ui与所述副屏id关联。

进一步地,定义系统属性,通过判断所述系统属性的状态控制是否进入双屏异显异音模式。

进一步地,具体包括:

监测系统presentation接口类的show方法和dismiss方法的调用情况,当show方法被调用时,设置所述系统属性为双屏异显异音状态,控制进入双屏异显异音模式;

当dismiss方法被调用时,设置系统属性为非双屏异显异音状态,控制进入非双屏异显异音模式。

进一步地,所述双屏异显异音模式具体为:所述双屏异显异音模式具体为:所述主屏和所述副屏分别显示不同的画面和播放不同的音频。

本发明一种双屏异显异音实现方法至少具有如下有益效果:基于android系统平台,在android原生presentation框架上实现双屏异显异音,实现更为简单,同时无需添加私有接口,使用标准api接口,适用于标准androidapk软件开发,使得兼容性更好。

第二方面,本发明的一个实施例提供了一种双屏异显异音实现相关装置包括:

定义模块,用于定义主屏id和副屏id;

播放模块,用于播放主屏或副屏音频,所述音频和视频同时播放或/和单独播放;

第一关联模块,用于将所述主屏id和副屏id分别关联至第一声卡和第二声卡;

第一判断模块,用于检测上层传输来的音频流,解析所述音频流中的audiosessionid,判断所述音频流属于所述第一声卡的音频流或所述第二声卡的音频流;

输出模块,用于根据判断结果将所述音频流输出至对应的声卡进行播放。

所述装置还包括:第二关联模块,用于将主屏显示ui与所述主屏id关联,将副屏显示ui与所述副屏id关联。

所述装置还包括:控制模块,用于定义系统属性,通过判断系统属性的状态控制是否进入双屏异显异音模式。

进一步地,所述双屏异显异音模式具体为:所述主屏和所述副屏分别显示不同的画面和播放不同的音频。

第三方面,本发明的一个实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上涉及到的方法。

附图说明

图1是本发明实施例中双屏异显异音实现方法的一具体实施例流程图;

图2是本发明实施例中双屏异显异音实现装置的一具体实施例模块框图。

具体实施方式

ui:userinterface,指对软件的人机交互、操作逻辑、界面美观的整体设计,一般是指画面或者图像显示。

hal:hardwareabstractionlayer,android系统里上层应用对底层硬件操作屏蔽的一个软件层次。

以下将结合实施例对本发明的构思及产生的技术效果进行清楚、完整地描述,以充分地理解本发明的目的、特征和效果。显然,所描述的实施例只是本发明的一部分实施例,而不是全部实施例,基于本发明的实施例,本领域的技术人员在不付出创造性劳动的前提下所获得的其他实施例,均属于本发明保护的范围。

在本发明实施例的描述中,如果涉及到“若干”,其含义是一个以上,如果涉及到“多个”,其含义是两个以上,如果涉及到“大于”、“小于”、“超过”,均应理解为不包括本数,如果涉及到“以上”、“以下”、“以内”,均应理解为包括本数。如果涉及到“第一”、“第二”,应当理解为用于区分技术特征,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。

以下实施例中涉及到的第一显示模块和第二显示模块可以理解为主副显示屏。

现有技术中,android双屏异显框架。本发明的基本构思是:在android双屏异显框架的基础上,添加了音频会话即audiosessionid的区别控制,在播放音频时,通过mediaplayer的setaudiosessionid()接口设置与主副屏对应的audiosessionid,在系统hal层对上层传下来的音频进行解析,获取对应的audiosessionid,再根据audiosessionid选择对应的声卡输出,这样每个显示屏上播放的声音会输出到与该屏关联的声卡上,其中此处所说的声卡包括其他有音频输出功能的设备,从而实现双屏异显异音;以下实施例通过presentation异显框架实现双屏异显。

实施例1本发明实施例中双屏异显异音实现方法的一具体实施例,本实施例中,双屏异显异音模式具体为:主屏和副屏分别显示不同的画面和播放不同的音频。如图1所示,该方法包括以下步骤:

s100:定义主屏id和副屏id;

具体的,定义两组私有audiosessionid,分别为主屏audiosessionid和副屏audiosessionid;

s200:将主屏id和副屏id分别关联至第一声卡和第二声卡;

具体的,将上述主屏audiosessionid和副屏audiosessionid分别关联至第一声卡和第二声卡;播放音频时,通过mediaplayer的setaudiosessionid()接口设置与主副屏对应的audiosessionid。

s300:检测上层传输来的音频流,解析音频流中的audiosessionid,判断所述音频流属于所述第一声卡的音频流或所述第二声卡的音频流;

具体的,在androidhal层检测上层传输来的音频流,解析上述音频流中的audiosessionid,判断所述音频流属于上述第一声卡的音频流或第二声卡的音频流;

s400:根据判断结果将所述音频流输出至对应的声卡进行播放。

本实施中,双屏包括主屏和副屏,异显和异音。

具体地,本实施例基于androdid原生的presentation异显框架来实现双屏异显,并在双屏异显上实现双屏异音。定义两组私有audiosessionid,分别为主屏id和副屏id,主屏与主屏id关联,副屏与副屏id关联。再将主屏id和副屏id分别关联至第一声卡和第二声卡。具体的,在android原有双屏异显框架添加了音频会话即audiosessionid的区别控制,在播放音频时,通过mediaplayer的setaudiosessionid()接口设置与主副屏对应的audiosessionid,这样每个显示屏上播放的声音会输出到与该屏关联的声卡上,其中此处所说的声卡包括其他有音频输出功能的设备。

具体的,当检测到上层传输来的音频流时,解析所述音频流中的audiosessionid,判断所述音频流属于所述第一声卡的音频流或所述第二声卡的音频流,根据判断结果将所述音频流输出至对应的声卡进行播放。

更为具体的,默认情况下,音频的输出所有声音在单一的声卡上混音输出。当系统进行双屏异显模式时,开启双屏异音功能。

进一步地,本实施例方法还包括:定义系统属性,通过判断所述系统属性的状态控制是否进入双屏异显异音模式。

定义系统属性,是通过判断系统属性的状态控制是否进入双屏异显异音模式。

具体的,在系统中定义一个系统属性,例如,定义系统属性为sys.presentation,系统通过判断sys.presentation的状态来判断是否进入到双屏异显模式,比如定义true表示已进入双屏异显模式,false表示已处在非双屏异显模式。

可以理解的,为实现双屏异音功能,首先系统必须存在至少两个声卡、在系统处在非双屏异显模式时,同一时刻只有一个声卡功能状态,所有音频会通过同一声卡播放,进入双屏异显模式时被指定的两路声卡都处于工作状态。

进一步地,上述步骤通过判断所述系统属性的状态控制是否进入双屏异显异音模式具体包括:

监测系统调用presentation的show方法和dismiss方法的调用情况,当show方法被调用时,设置所述系统属性为双屏异显异音状态,控制进入双屏异显异音模式;

当dismiss方法被调用时,设置系统属性为非双屏异显异音状态,控制进入非双屏异显异音模式。

具体的,监测系统判断是否有应用程序调用presentation的show方法和dismiss方法,当show方法被调用时,设置上述系统属性为双屏异显异音状态,控制进入双屏异显异音模式;监测系统接口类presentation的show方法和dismiss方法的调用情况,当show方法被调用时设置sys.presentation为双屏异显状态,例如,true表示已进入双屏异显模式,当dismiss方法被调用时设置sys.presentation为非双屏异显状态,例如,false表示已处在非双屏异显模式,在默认情况下sys.presentation为非双屏异显状态,在android源代码中,对presentation类的show和dismiss方法进行重构;

具体的,presentation类的show和dismiss方法进行重构具体代码实现过程如下:

显示模块通过mediaplayer播放音视频,主屏和副屏分别显示;

具体的,mediaplayer是android提供给应用层的一个接口类,应用程序或者应用软件可通过该接口类提供的应用程序,实现音视频的播放,现实应用中也可以通过setaudiosessionid()接口设置音频流的audiosessionid。

进一步地,双屏异显异音模式具体为:主屏和副屏分别显示不同的画面和播放不同的音频。

本实施例中双屏异音的方法是在主屏ui中播放的声音通过音频播放函数mediaplayer的setaudiosessionid()接口设置主屏已关联好的audiosessionid即id1,而在系统接口类presentation中绘制的ui中设置副屏已关联好的audiosessionid即id2。

具体的,设置模块通过设置audiosessionid设置显示模块关联的id;将主屏id和副屏id分别关联至第一声卡和第二声卡。

具体的,android设备上至少拥有两个声卡输出,下面以两路声卡输出举例说明,如果有两路声卡,则就有两路hdmi,每一路hdmi都对应一个声卡输出,因此就定义了定义两组audiosessionid,此时主屏id为id1,副屏id为id2。

解析audiosessionid,判断所述audiosessionid属于第一声卡的音频流或第二声卡的音频流;

具体的,在系统hal层解析上层传入的音频流,获取对应的audiosessionid,判断所述audiosessionid属于第一声卡的音频流或第二声卡的音频流;

根据判断结果将所述音频流输出至对应的声卡进行播放。

具体的,第一判断模块判断当前音频流归属组;

具体的,第一判断模块通过系统hal层获取得到当前音频流信息中的audiosessionid判断出是主屏的声卡输出还是副屏的声卡输出,如果判断audiosessionid为id1,则音频信号输出到主屏上,如果判断audiosessionid为id2,则音频信号输出到副屏上。系统hal层获取当前音频流信息,其中音频流信息包括第一声卡audiosessionid组和第二声卡audiosessionid组。

具体的,在android系统hal层,将两组audiosessionid分别关联到两个硬件声卡上,如果检测到上层传输来的音频流,先解析audiosessionid,判断它属于那一个声卡的音频流,并且输出到该声卡上播放。与主屏和副屏关联的声卡,可以在代码中定义成json数据表的格式,也可以定义成配置文件的方式保存在系统中,下面以定义成json数据格式为例,具体实现代码如下:

json数据:{mainscr:["17","33","49"],assistscr:["25","41","57"]}

mainscr表为主屏audiosessionid

assistscr为副屏audiosessionid

需要理解的,在android系统中audiosessionid的定义需要满足id值转换成二进制后三位必须是001。

本实施例实现了,系统启动双屏异显之后,触发双屏异音,通过以上方法主屏和副屏分别显示不同的画面和播放不同的音频。

实施例2,如图2所示本实施例提供了一种双屏异显异音实现装置,该装置包括:

定义模块,用于定义主屏id和副屏id;

播放模块,用于播放主屏或副屏音频和视频;需要通过mediaplayer的setaudiosessionid()接口设置与主副屏对应的audiosessionid,上述音频和视频可以同时播放,也可以单独播放;

第一关联模块,用于将所述主屏id和副屏id分别关联至第一声卡和第二声卡;

具体的,第一关联模块,用于将上述主屏audiosessionid和副屏audiosessionid分别关联至第一声卡和第二声卡;

播放音频时,通过mediaplayer的setaudiosessionid()接口设置与主副屏对应的audiosessionid;

第一判断模块,用于检测上层传输来的音频流,解析所述音频流中的audiosessionid,判断所述音频流属于所述第一声卡的音频流或所述第二声卡的音频流;

输出模块,用于根据判断结果将所述音频流输出至对应的声卡进行播放。

进一步地,上述装置还包括:第二关联模块,用于将主屏显示ui与主屏id关联,将副屏显示ui与副屏id关联。

具体的,第二关联模块,用于将主屏显示ui与主屏audiosessionid关联,将副屏显示ui与副屏audiosessionid关联。

进一步地,上述装置还包括:控制模块,用于定义系统属性,通过判断系统属性的状态控制是否进入双屏异显异音模式。

进一步地,上述双屏异显异音模式具体为:主屏和所述副屏分别显示不同的画面和播放不同的音频。

本实施中的双屏异显异音实现装置的工作过程参照实施例1中对双屏异显异音实现方法的描述,此处不再赘述。

实施例3:一种计算机可读存储介质,上述计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行涉及到的异显异音实现方法。

上述实施例可以将两个屏幕上播放的声音分别输出到对应的声卡上,两个屏幕上播放的声音互不干扰,可独立控制。比如一个屏幕上不停地播放带有声音的广告视频,另一个屏幕还可以通过声音进行人机交互,两个声音互干扰,实现android设备的异显异音控制。同时本方法不需要添加私有接口,遵循android标准api,对开发对应的apk应用非常方便。

上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所述技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。此外,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1