Android系统的码流清晰度切换方法、装置、终端及可读介质与流程

文档序号:17065004发布日期:2019-03-08 22:51阅读:210来源:国知局
Android系统的码流清晰度切换方法、装置、终端及可读介质与流程

本发明实施例涉及计算机技术,尤其涉及一种android系统的码流清晰度切换方法、装置、终端及可读介质。



背景技术:

利用android终端拉取网络音视频资源(例如观看直播)时,用户可以根据需求进行清晰度切换。通常清晰度切换方法为,通过http请求获取切换后清晰度的码流地址,并通过访问该码流地址获取相应的码流信息。现有的获取码流信息过程中,播放器呈现的视图通常为黑屏页面或加载页面,使用户明显感觉到播放切换前码流信息与播放切换后码流信息之间存在一个断开时间,用户体验较差。



技术实现要素:

有鉴于此,本发明实施例提供了一种android系统的码流清晰度切换方法、装置、终端及可读介质,实现了清晰度的无缝切换,提高了用户体验。

第一方面,本发明实施例提供了一种android系统的码流清晰度切换方法,包括:

当监听到清晰度切换事件时,调用第一视图对象对应的自定义视图类的对象构造方法构造第二视图对象,并根据第一视图对象的布局参数对所述第二视图对象进行布局参数设置;

调用父布局对象查找方法查找第一视图对象的父布局对象,将第二视图对象状态设置为不可见状态,将处于不可见状态的第二视图对象添加至父布局对象中,并获取切换清晰度后的码流信息;

当获取到切换清晰度后的码流信息时,将播放器对象由设置第一视图对象切换为设置第二视图对象,将第二视图对象状态设置为可见状态并播放切换清晰度后的码流信息。

可选的,所述监听到清晰度切换事件,包括:

通过预先设置的清晰度切换按钮监听器,监听到清晰度切换按钮发生点击事件。

可选的,所述根据第一视图对象的布局参数对所述第二视图对象进行布局参数设置,包括:

调用布局参数对象获取方法,获取布局参数对象;

根据所述第一视图对象的布局参数对所述布局参数对象进行赋值;

根据赋值后的布局参数对象设置所述第二视图对象的布局参数。

可选的,所述将处于不可见状态的第二视图对象添加至父布局对象中,包括:

调用父布局对象的视图添加方法将处于不可见状态的第二视图对象添加至父布局对象中。

可选的,所述获取切换清晰度后的码流信息,包括:

获取切换清晰度后的码流信息对应的统一资源定位符url;

通过调用url设置方法,将切换清晰度后的码流信息对应的url设置到播放器对象中;

播放器对象接收所述切换清晰度后的码流信息。

可选的,在所述监听到清晰度切换事件之前,包括:

在页面布局文件中进行自定义视图类的定义,并设置自定义视图类的布局参数及id信息;

根据自定义视图类的id信息调用自定义视图类查找方法查找自定义视图类,调用自定义视图类的对象构造方法构造第一视图对象;

通过播放器对象的视图设置方法,将所述第一视图对象设置到播放器对象中去;其中,第一视图对象播放所述播放器对象获取的码流信息。

可选的,在所述将第二视图对象状态设置为可见状态之后,包括:调用视图对象的置空方法,将第一视图对象设置为空。

第二方面,本发明实施例提供了一种android系统的码流清晰度切换装置,包括:

第二视图对象构造模块,用于当监听到清晰度切换事件时,调用第一视图对象对应的自定义视图类的对象构造方法构造第二视图对象,并根据第一视图对象的布局参数对所述第二视图对象进行布局参数设置;

第二视图对象添加模块,用于调用父布局对象查找方法查找第一视图对象的父布局对象,将第二视图对象状态设置为不可见状态,将处于不可见状态的第二视图对象添加至父布局对象中,并获取切换清晰度后的码流信息;

视图对象切换模块,用于当获取到切换清晰度后的码流信息时,将播放器对象由设置第一视图对象切换为设置第二视图对象,将第二视图对象状态设置为可见状态并播放切换清晰度后的码流信息。

第三方面,本发明实施例提供了一种终端,包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任一实施例所述的android系统的码流清晰度切换方法。

第四方面,本发明实施例提供了一种可读介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例所述的android系统的码流清晰度切换方法。

本发明实施例提供的一种android系统的码流清晰度切换方法、装置、终端及可读介质,当监听到清晰度切换事件时,调用自定义视图类的对象构造方法构造第二视图对象,并对第二视图对象进行布局参数设置;调用父布局对象查找方法查找第一视图对象的父布局对象,将第二视图对象状态设置为不可见状态,将处于不可见状态的第二视图对象添加至父布局对象中,并获取切换清晰度后的码流信息;当获取到切换清晰度后的码流信息时,将播放器对象由设置第一视图对象切换为设置第二视图对象,将第二视图对象状态设置为可见状态并播放切换清晰度后的码流信息。

可以理解为,当用户进行清晰度切换时,原有的第一视图对象仍然播放播放器缓冲的切换清晰度前的码流信息,与此同时新建第二视图对象,并将设置为不可见的第二视图对象添加到第一视图对象的父布局中,即不妨碍用户观看到第一视图对象的播放画面;当播放器获取清晰度切换后的码流信息时,便可以将第二视图对象设置到播放器对象中,并设置第二视图对象为可见状态,此时第二视图对象即可播放清晰度切换后的码流信息,且覆盖住了黑屏状态的第一视图对象,从而完成了清晰度的无缝切换,提高了用户体验。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一提供的一种android系统的码流清晰度切换方法流程图;

图2是本发明实施例二提供的一种android系统的码流清晰度切换装置结构示意图;

图3是本发明实施例三提供的一种终端的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,以下将参照本发明实施例中的附图,通过实施方式清楚、完整地描述本发明的技术方案,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

图1是本发明实施例一提供的一种android系统的码流清晰度切换方法流程图,本实施例可适用于android系统的码流清晰度切换的情况,该方法可以由终端实现,具体可通过终端中的软件和/或硬件来实施。参见图1,该android系统的码流清晰度切换方法包括如下步骤:

s110、当监听到清晰度切换事件时,调用第一视图对象对应的自定义视图类的对象构造方法构造第二视图对象,并根据第一视图对象的布局参数对第二视图对象进行布局参数设置。

其中,利用android终端拉取网络音视频资源(例如观看直播)时,用户可以根据需求对音视频资源的码流进行清晰度切换,具体可以通过点击播放器对象对应的清晰度按钮控件进行清晰度的切换。其中,自定义视图类属于播放器的视图承载控件中的一种,播放器对象可以在设置统一资源定位符url之后,接收所设置url对应的码流信息,并可以将接收的码流信息通过播放器对象对应的视图类的视图对象进行播放。

可选的,监听到清晰度切换事件,包括:通过预先设置的清晰度切换按钮监听器,监听到清晰度切换按钮发生点击事件。

其中,可以通过点击播放器对象对应的清晰度切换按钮控件进行音视频资源清晰度的切换;其中,可以在清晰度切换按钮控件上添加监听器,用以监听清晰度切换按钮是否发生了点击事件。

其中,在清晰度切换按钮控件上添加监听器的方法,具体可以是:

btn.setonclicklistener(mylistener);

其中,btn为清晰度切换按钮控件的名称,用以表示清晰度切换按钮,且清晰度切换按钮的名称并不限于btn;其中,通过setonclicklistener方法可以设置能够监听清晰度切换按钮控件的点击事件的监控器;其中,当监听器监听到清晰度切换按钮的点击事件时,可以主动回调mylistener方法。

其中,自定义视图类的对象构造方法,具体可以是:

liveplayerviewmliveplayerview2=newliveplayerview();

其中,mliveplayerview2为第二视图对象的名称,可以代表自定义视图liveplayerview类的第二视图对象,且第二视图对象的名称并不限于mliveplayerview2;其中,通过new的方法即可新建一个liveplayerview类型的第二视图对象。

可选的,根据第一视图对象的布局参数对第二视图对象进行布局参数设置,包括:

调用布局参数对象获取方法,获取布局参数对象;根据第一视图对象的布局参数对布局参数对象进行赋值;根据赋值后的布局参数对象设置第二视图对象的布局参数。

其中,布局参数对象获取方法,具体可以是:

viewgroup.layoutparamsparams=newviewgroup.layoutparams();

其中,params为布局参数对象的名称,可以代表viewgroup.layoutparams类型的布局参数对象,且布局参数对象的名称并不限于params;其中,通过new的方法即可新建一个viewgroup.layoutparams类型的布局参数对象。

其中,根据第一视图对象的布局参数对布局参数对象进行赋值,具体可以是:

params.width=mliveplayerview1.getwidth();

params.height=mliveplayerview1.getheight();

其中,mliveplayerview1可以表示自定义视图liveplayerview类的第一视图对象;其中,通过mliveplayerview1的get方法可以获取到mliveplayerview1的宽度width以及高度height的数值;其中,通过将mliveplayerview1的宽度width赋值给params.width,通过将mliveplayerview1的高度height赋值给params.height,即可以完成对布局参数对象的赋值。

其中,根据赋值后的布局参数对象设置第二视图对象的布局参数,具体可以是:

mliveplayerview2.setlayoutparams(params);

其中,mliveplayerview2可以表示自定义视图liveplayerview类的第二视图对象;其中,通过setlayoutparams方法可以分别根据赋值后的布局参数对象params的params.width以及params.height设置第二视图对象mliveplayerview2的宽度以及高度,即实现了第二视图对象布局参数的设置。

布局参数对象可以作为第一视图对象的布局参数与第二视图对象的布局参数的纽带,提高了第二视图对象的布局参数的设置效率。且将第二视图对象的布局参数设置为与第一视图对象的布局参数相同,使得第二视图对象添加到第一视图对象的父布局对象时可以完美覆盖第一视图对象。

s120、调用父布局对象查找方法查找第一视图对象的父布局对象,将第二视图对象状态设置为不可见状态,将处于不可见状态的第二视图对象添加至父布局对象中,并获取切换清晰度后的码流信息。

其中,具体可以通过调用findviewbyid(r.id.parent_view)的方法查找第一视图对象的父布局对象,即通过查找第一视图对象的父布局对象的id信息可以获取到第一视图对象的父布局对象parent_view。其中,具体可以通过调用mliveplayerview2.setvisiblity(gone)的方法将第二视图对象状态设置为不可见状态,即通过调用第二视图对象mliveplayerview2的setvisiblity方法设置第二视图对象不可见。

可选的,将处于不可见状态的第二视图对象添加至父布局对象中,包括:调用父布局对象的视图添加方法将处于不可见状态的第二视图对象添加至父布局对象中。

其中,具体可以通过调用parmentview.addview(mliveplayerview2)的方法将第二视图对象添加至父布局对象中,即通过调用父布局对象parmentview的addview方法可以将第二视图对象mliveplayerview2添加至父布局对象中。

可选的,获取切换清晰度后的码流信息,包括:

获取切换清晰度后的码流信息对应的统一资源定位符url;通过调用url设置方法,将切换清晰度后的码流信息对应的url设置到播放器对象中;播放器对象接收切换清晰度后的码流信息。

其中,可以在点击清晰度切换按钮控件后获取到清晰度切换后码流信息对应的url,还可以通过其他方式获取到清晰度切换后码流信息对应的url;其中,url设置方法具体可以是mmediaplayer.seturl()方法,其中mmediaplayer可以表示播放器对象,其中通过seturl方法可以将清晰度切换后码流信息对应的url设置到播放器对象中;其中,播放器对象可以通过访问url下载码流信息,并对码流信息进行存储,从而实现接收切换清晰度后的码流信息。

s130、当获取到切换清晰度后的码流信息时,将播放器对象由设置第一视图对象切换为设置第二视图对象,将第二视图对象状态设置为可见状态并播放切换清晰度后的码流信息。

其中,当获取到切换清晰度后的码流信息时,可以通过调用mmediaplayer.setsurface(mliveplayerview2)的方法将第二视图对象设置到播放器对象中去。其中,可以通过调用mliveplayerview2.setvisiblity(visible)的方法将第二视图对象状态设置为可见状态,即通过调用第二视图对象mliveplayerview2的setvisiblity方法设置第二视图对象可见。其中,可以通过调用mmediaplayer.start()的方法使第二视图对象播放切换清晰度后的码流信息。从而可以实现播放器对象接收的切换清晰度后的码流信息通过可见的第二视图对象进行播放。

可选的,在监听到清晰度切换事件之前,包括:

在页面布局文件中进行自定义视图类的定义,并设置自定义视图类的布局参数及id信息;根据自定义视图类的id信息调用自定义视图类查找方法查找自定义视图类,调用自定义视图类的对象构造方法构造第一视图对象;通过播放器对象的视图设置方法,将第一视图对象设置到播放器对象中去;其中,第一视图对象播放播放器对象获取的码流信息。

其中,可以通过调用liveplayerviewextendsglsurfaceview进行自定义视图类的定义,自定义视图liveplayerview类继承了glsurfaceview类,即具备了glsuraceview的能力,可以用于播放播放器对象的码流信息。

其中,可以通过调用<liveplayerview></liveplayerview>标签在xml布局文件中声明一个自定义视图类信息。其中,视图类的布局参数包括自定义视图类的宽度及高度信息等,具体的可以通过在自定义视图类中写入语句android:width=100dp以及android:height=80dp来分别定义自定义视图类的宽度和高度;其中,100以及80可以表示视图承载控件宽度和高度的数值,且这两个数值可以根据实际需求进行更改;其中,dp可以理解为虚拟像素px,在不同的像素密度的设备上会自动适配,比如:在320×480分辨率,像素密度为160的设备上,1dp=1px;在480×800分辨率,像素密度为240的设备上,1dp=1.5px;其中,dp与px计算公式:1dp*像素密度/160=实际像素数。其中,还可以通过语句android:layout_width="match_parent"和android:layout_height="match_parent"来分别定义自定义视图类的宽度和高度为父布局对象的宽度和高度。其中,自定义视图类可以通过android:id=”@+id/player_view”来指定id信息,且自定义视图类的id信息为代码层与视图层构建联系的一个纽带。

其中,具体可以通过调用findviewbyid(r.id.player_view)的方法查找自定义视图类,即可以通过查找自定义视图类的id信息获取到自定义视图类player_view。其中,具体可以调用liveplayerviewmliveplayerview1=newliveplayerview()方法构造第一视图对象mliveplayerview1,可以通过调用mmediaplayer.setsurface(mliveplayerview1)的方法将第一视图对象设置到播放器对象mmediaplayer中去。

可选的,在将第二视图对象状态设置为可见状态之后,包括:调用视图对象的置空方法,将第一视图对象设置为空。其中,具体可以通过调用mliveplayerview1=null的方法将第一视图对象置空,从而操作系统可以尽快回收mliveplayerview1的内存空间,提高了系统资源使用效率。

本实施例提供的android系统的码流清晰度切换方法,当用户进行清晰度切换时,原有的第一视图对象仍然播放播放器缓冲的切换清晰度前的码流信息,与此同时新建第二视图对象,并将设置为不可见的第二视图对象添加到第一视图对象的父布局中,即不妨碍用户观看到第一视图对象的播放画面;当播放器获取清晰度切换后的码流信息时,便可以将第二视图对象设置到播放器对象中,并设置第二视图对象为可见状态,此时第二视图对象即可播放清晰度切换后的码流信息,且覆盖住了黑屏状态的第一视图对象,从而完成了清晰度的无缝切换,提高了用户体验。

实施例二

图2是本发明实施例二提供的一种android系统的码流清晰度切换装置结构示意图,本实施例可适用于android系统的码流清晰度切换的情况。

参见图2,本实施例中android系统的码流清晰度切换装置,包括:

第二视图对象构造模块210,用于当监听到清晰度切换事件时,调用第一视图对象对应的自定义视图类的对象构造方法构造第二视图对象,并根据第一视图对象的布局参数对第二视图对象进行布局参数设置;

第二视图对象添加模块220,用于调用父布局对象查找方法查找第一视图对象的父布局对象,将第二视图对象状态设置为不可见状态,将处于不可见状态的第二视图对象添加至父布局对象中,并获取切换清晰度后的码流信息;

视图对象切换模块230,用于当获取到切换清晰度后的码流信息时,将播放器对象由设置第一视图对象切换为设置第二视图对象,将第二视图对象状态设置为可见状态并播放切换清晰度后的码流信息。

可选的,第二视图对象构造模块210,包括:

清晰度切换监听子模块,用于通过预先设置的清晰度切换按钮监听器,监听到清晰度切换按钮发生点击事件。

可选的,第二视图对象构造模块210,还包括:

布局参数对象获取子模块,用于调用布局参数对象获取方法,获取布局参数对象;

布局参数对象赋值子模块,用于根据第一视图对象的布局参数对布局参数对象进行赋值;

布局参数设置子模块,用于根据赋值后的布局参数对象设置第二视图对象的布局参数。

可选的,第二视图对象添加模块220,包括:

父布局视图添加子模块,用于调用父布局对象的视图添加方法将处于不可见状态的第二视图对象添加至父布局对象中。

可选的,第二视图对象添加模块220,还包括:

统一资源定位符获取子模块,用于获取切换清晰度后的码流信息对应的统一资源定位符url;

url设置子模块,用于通过调用url设置方法,将切换清晰度后的码流信息对应的url设置到播放器对象中;

码流信息获取子模块,用于播放器对象接收切换清晰度后的码流信息。

可选的,android系统的码流清晰度切换装置,还包括:

自定义视图类定义模块,用于在页面布局文件中进行自定义视图类的定义,并设置自定义视图类的布局参数及id信息;

第一视图对象构造模块,用于根据自定义视图类的id信息调用自定义视图类查找方法查找自定义视图类,调用自定义视图类的对象构造方法构造第一视图对象;

播放器对象视图设置模块,用于通过播放器对象的视图设置方法,将第一视图对象设置到播放器对象中去;其中,第一视图对象播放播放器对象获取的码流信息。

本实施例提供的android系统的码流清晰度切换装置,与实施例一提出的android系统的码流清晰度切换方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。

实施例三

本实施例提供了一种终端,可以用于android系统的码流清晰度切换的情况。图3是本发明实施例三提供的一种终端的结构示意图。参见图3,该终端包括:

一个或多个处理器310;

存储器320,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器310执行,使得所述一个或多个处理器310实现如实施例一提出的android系统的码流清晰度切换方法。

图3中以一个处理器310为例;处理器310和存储器320可以通过总线或其他方式连接,图3中以通过总线连接为例。

存储器320作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的android系统的码流清晰度切换方法对应的程序指令/模块。处理器310通过运行存储在存储器320中的软件程序、指令以及模块,从而执行终端的各种功能应用以及数据处理,即实现上述的android系统的码流清晰度切换方法。

存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器320可进一步包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本实施例提出的终端与实施例一提出的android系统的码流清晰度切换方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。

实施例四

本实施例提供一种可读介质,其上存储有计算机程序,该程序被处理器执行时实现如实施例一提出的android系统的码流清晰度切换方法。

本实施例提出的可读介质与实施例一提出的android系统的码流清晰度切换方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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