CN110620952B - 运行于安卓平台自定义的安卓播放控件 - Google Patents
运行于安卓平台自定义的安卓播放控件 Download PDFInfo
- Publication number
- CN110620952B CN110620952B CN201910913054.XA CN201910913054A CN110620952B CN 110620952 B CN110620952 B CN 110620952B CN 201910913054 A CN201910913054 A CN 201910913054A CN 110620952 B CN110620952 B CN 110620952B
- Authority
- CN
- China
- Prior art keywords
- playing
- video
- list
- android
- control
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4335—Housekeeping operations, e.g. prioritizing content for deletion because of storage space restrictions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
- H04N21/47217—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for controlling playback functions for recorded or on-demand content, e.g. using progress bars, mode or play-point indicators or bookmarks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/482—End-user interface for program selection
- H04N21/4825—End-user interface for program selection using a list of items to be played back in a given order, e.g. playlists
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/8166—Monomedia components thereof involving executable data, e.g. software
- H04N21/8173—End-user applications, e.g. Web browser, game
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
Abstract
本发明涉及播放控件的设计,其公开了一种运行于安卓平台自定义的安卓播放控件,解决传统技术中安卓播放控件长时间播放容易造成卡顿,播放完成不能及时释放内存占用的问题。该控件包括:播放模块,用于根据自动播放列表在本地查找对应视频进行播放;资源回收模块,用于在播放模块播放视频的同时开启一个倒计时线程,所述倒计时线程与该视频的播放同步结束,此时清空本次视频播放的所有持有以及状态监听,并将控件本身也置为null;自动播放列表模块,用于读取本地目录下的所有视频文件,并建立列表,将所有视频文件的名称加入列表中;尺寸动态调整模块,用于在控件的设置尺寸调整时,重新计算获取的长和宽并进行视图尺寸刷新,从而改变尺寸大小。
Description
技术领域
本发明涉及播放控件的设计,具体涉及一种运行于安卓平台自定义的安卓播放控件。
背景技术
随着娱乐性应用(如抖音、斗鱼等)的推广,视频播放作为一个重要的功能集成到越来越多的应用上。除娱乐性应用外,智能售卖设备上也越来越多的集成视频播放功能,用于进行广告播放。与手机应用不同的是,智能售卖设备应用由于要连续长时间的运营(可能连续运行几个月不退出应用),因此对应用的性能优化要求特别高,需要功能模块涉及到内存和资源占用的能及时自动释放,否则长时间久了会造成应用占用内存和资源过多而卡顿。传统手机应用可以通过用户随时重启应用,系统会强制回收占用,但是智能售卖设备终端则不行,长时间运营不能退出应用的使用情况导致其无法通过系统强制回收机制来结束占用,所以针对于这样的问题,如果智能设备终端应用上加入广告播放功能需要解决以下两点问题:
(1)能长时间播放,且播放器不会在长时间播放后,播放视频卡死;
(2)能及时释放内存,不会对整个应用造成资源或内存堆积,从而导致内存泄漏。
内存泄漏:程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
发明内容
本发明所要解决的技术问题是:提出一种运行于安卓平台自定义的安卓播放控件,解决传统技术中安卓播放控件长时间播放容易造成卡顿,播放完成不能及时释放内存占用的问题。
本发明解决上述技术问题采用的技术方案是:
运行于安卓平台自定义的安卓播放控件,包括:
播放模块,用于根据自动播放列表在本地查找对应视频进行播放;
资源回收模块,用于在播放模块播放视频的同时开启一个倒计时线程,所述倒计时线程与该视频的播放同步结束,此时清空本次视频播放的所有持有以及状态监听,并将控件本身也置为null;
自动播放列表模块,用于读取本地目录下的所有视频文件,并建立列表,将所有视频文件的名称加入列表中;
尺寸动态调整模块,用于在控件的设置尺寸调整时,重新计算获取的长和宽并进行视图尺寸刷新,从而改变尺寸大小。
作为进一步优化,所述安卓播放控件的相关的代码类可全部导出打包成jar文件,供调用者直接导入至项目工程中。
通过打包代码的方式,可以简化引用操作,无需配置任何的参数或引用属性。
作为进一步优化,所述列表通过数组存放视频文件的名称以及对应的文件路径。
由于存放文件路径比直接存放文件消耗的内存更小,所以可以减小内存的占用。
作为进一步优化,所述自动播放列表模块还用于,标记列表中的当前播放视频,在播放模块播放完列表中的一个视频后,标记前进到列表中的下一个视频,当列表中的最后一个文件播放完成后,将标记位置重置为初始位置。
通过对播放视频在列表中标记,便于播放模块根据标记快速读取列表中的待播放的视频,并形成循环播放。
作为进一步优化,所述倒计时线程的倒计时长根据对视频的视频流的解码计算获得的视频文件的时长得到。
通过精确解码计算待播放的视频的时长,将倒计时线程的倒计时长设置于该视频的时长一致,从而能够保证在该视频播放结束时,倒计时线程也同步结束。
作为进一步优化,所述尺寸动态调整模块通过覆写VedioView的onMeasure()方法对控件的宽高进行动态测量。
通过覆写VedioView的onMeasure()方法对组件的宽高进行动态测量,以此来解决原生组件VedioView无法动态改变其空间大小的缺陷。
本发明的有益效果是:
(1)集成自动播放视频文件列表功能,不需要开发者自己实现,从而减少开发周期;
(2)在每个视频文件播放结束,自动清空本次引用,在播放下一个视频文件时重新创建控件对象,避免同一个对象长时间播放会出现播放卡顿的问题;
(3)在视频文件播放结束后释放内存资源,避免因回收不及时或者回收不完善造成内存溢出的问题;
(4)通过覆写VedioView的onMeasure()方法对控件的宽高进行动态测量,以此来解决原生组件VedioView无法动态改变其控件大小的缺陷,实现尺寸改变不受播放状态限制。
具体实施方式
本发明旨在提出一种运行于安卓平台自定义的安卓播放控件,解决传统技术中安卓播放控件长时间播放容易造成卡顿,播放完成不能及时释放内存占用的问题。其核心思想是:通过设计一种继承于安卓原生态SDK播放组件VedioView,并通过覆写添加部分逻辑,来实现一种可以直接引用的播放组件,满足开发者项目中的视频播放功能需求,相对于安卓原生态的组件具有以下特点:
1.集成自动播放视频文件列表;
2.每次播放完成后释放资源回收内存;
3.可动态更改尺寸大小而不受播放状态的影响;
4.每次播放结束开始播放下一个视频文件时采用重新创建控件对象,避免同一个对象长时间播放会出现播放卡顿的缺陷。
本发明中的运行于安卓平台自定义的安卓播放控件,包括:
播放模块,用于根据自动播放列表在本地查找对应视频进行播放;
资源回收模块,用于在播放模块播放视频的同时开启一个倒计时线程,所述倒计时线程与该视频的播放同步结束,此时清空本次视频播放的所有持有以及状态监听,并将控件本身也置为null;
自动播放列表模块,用于读取本地目录下的所有视频文件,并建立列表,将所有视频文件的名称加入列表中;
尺寸动态调整模块,用于在控件的设置尺寸调整时,重新计算获取的长和宽并进行视图尺寸刷新,从而改变尺寸大小。
在具体实现上,本发明中的自动回收资源、自动列表播放、动态改变尺寸大小的功能实现如下:
(1)自动回收资源功能:
在每次读取视频时,通过媒体资源接收类MediaMetadataRetriever(安卓系统自带工具类),传入一个视频文件资源的Url对象,再将流对象进行解码计算,得出视频文件的精确时长,然后在开始播放视频的同时开启一个倒计时线程,总时长即为视频文件的播放时长,待视频播放结束后,此时倒计时线程也同步结束,此时做以下处理:清空本次视频文件播放的所有持有(持有:每次播放视频时,实例化的播放控件的临时变量),并清空视频播放的所有状态监听(以便于下次播放重新设置监听器时,会是一个全新的监听器,不会有任何的上一次的监听器残留)。
此处需要注意的是,安卓原生态空间也可以通过监听播器放完成的状态来得到视频播放完成的回调函数,但是在播放完成的回调函数中去清空控件设置的监听会导致应用崩溃,原因是在播放完成的回调函数里监听器仍然和视频资源文件处于绑定状态,故而此时清空会抛出异常(此时由于监听仍然处于使用中的状态,清空会导致内部函数在调用此对象时因为调用对象已被清空,从而抛出一个函数异常),也不能在回调函数里直接释放资源,原因同上。
因此,本发明通过倒计时线程与视频播放同步结束去清空资源,则不会造成以上问题。
在资源释放文件后,将控件对象本身也置为null(即将申明控件对象时用于存储对象的临时对象释放清空),然后自动开始寻找本地存储中的下一个视频,读取到视频文件后,再进行上述的逻辑处理,从而做到及时完成及时回收,避免应回收不及时或者回收不完善造成内存溢出。
(2)自动列表播放功能:
考虑到目前很多开源的第三方播放插件没有实现列表播放,而列表播放功能还需要开发者自己实现,而本控件无需开发者再次自己实现相应功能,控件会自己读取设备本地目录的所有的视频文件,并进行序列化处理,自动列表播放。
具体实现上,在控件构造函数中直接调用读取本地文件列表的函数方法,读取本地目录下面的所有视频文件,并将文件路径和文件名称对应存储于一个数组中;在播放时,标记列表中的当前播放视频,在播放模块播放完列表中的一个视频后,标记前进到列表中的下一个视频,当列表中的最后一个文件播放完成后,将标记位置重置为初始位置。
(3)动态改变尺寸大小:
安卓原生态控件videoView在视频播放时是没法改变其控件大小的,而本发明中的控件是继承于videoView,故也存在videoView自带的onMeasure函数,通过对onMeasure()方法进行覆写,使其在控件尺寸设置时可以触发,从而重新计算获取到的长和宽并进行刷新视图尺寸,从而达到动态改变尺寸大小,不受播放状态限制的目的。
此外,本发明中的控件引用十分简单,可以将相关的代码类全部导出打包成jar文件,调用者可直接导入到自己的项目工程中,无需配置任何的参数或引用属性。
Claims (4)
1.运行于安卓平台自定义的安卓播放控件,其特征在于,包括:
播放模块,用于根据自动播放列表在本地查找对应视频进行播放;
资源回收模块,用于在播放模块播放视频的同时开启一个倒计时线程,所述倒计时线程与该视频的播放同步结束,此时清空本次视频播放的所有持有以及状态监听,并将控件本身也置为null;所述倒计时线程的倒计时长根据对视频的视频流的解码计算获得视频文件的时长得到;
自动播放列表模块,用于读取本地目录下的所有视频文件,并建立列表,将所有视频文件的名称加入列表中;
尺寸动态调整模块,用于在控件的设置尺寸调整时,重新计算获取的长和宽并进行视图尺寸刷新,从而改变尺寸大小;所述尺寸动态调整模块通过覆写VedioView的onMeasure()方法对播放控件的宽高进行动态测量。
2.如权利要求1所述的运行于安卓平台自定义的安卓播放控件,其特征在于,
所述安卓播放控件的相关的代码类可全部导出打包成jar文件,供调用者直接导入至项目工程中。
3.如权利要求1所述的运行于安卓平台自定义的安卓播放控件,其特征在于,
所述列表通过数组存放视频文件的名称以及对应的文件路径。
4.如权利要求1所述的运行于安卓平台自定义的安卓播放控件,其特征在于,
所述自动播放列表模块还用于,标记列表中的当前播放视频,在播放模块播放完列表中的一个视频后,标记前进到列表中的下一个视频,当列表中的最后一个文件播放完成后,将标记位置重置为初始位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910913054.XA CN110620952B (zh) | 2019-09-25 | 2019-09-25 | 运行于安卓平台自定义的安卓播放控件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910913054.XA CN110620952B (zh) | 2019-09-25 | 2019-09-25 | 运行于安卓平台自定义的安卓播放控件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110620952A CN110620952A (zh) | 2019-12-27 |
CN110620952B true CN110620952B (zh) | 2022-02-01 |
Family
ID=68924702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910913054.XA Active CN110620952B (zh) | 2019-09-25 | 2019-09-25 | 运行于安卓平台自定义的安卓播放控件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110620952B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103747339A (zh) * | 2013-12-23 | 2014-04-23 | 乐视致新电子科技(天津)有限公司 | 一种解决安卓设备播放在线视频出现无响应的方法和设备 |
CN103873921A (zh) * | 2014-03-26 | 2014-06-18 | 北京奇艺世纪科技有限公司 | 一种视频的无缝播放方法及播放器 |
CN105335206A (zh) * | 2015-10-16 | 2016-02-17 | Tcl集团股份有限公司 | 一种自定义系统控件的扩展方法及系统 |
CN106155828A (zh) * | 2016-07-13 | 2016-11-23 | 微鲸科技有限公司 | 用于播放应用程序资源控制方法和设备 |
CN107231578A (zh) * | 2017-08-04 | 2017-10-03 | 四川长虹电器股份有限公司 | 视频文件快速播放的系统及方法 |
CN110177304A (zh) * | 2019-05-27 | 2019-08-27 | 四川长虹电器股份有限公司 | 一种本地无缝衔接播放hls片源列表的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180324480A1 (en) * | 2015-10-08 | 2018-11-08 | Tradecast B.V. | Client and Method for Playing a Sequence of Video Streams, and Corresponding Server and Computer Program Product |
TWI615023B (zh) * | 2016-07-15 | 2018-02-11 | 長茂科技股份有限公司 | 基於統一資源定位器之網路多媒體系統及其建置方法 |
CN108111520B (zh) * | 2017-12-28 | 2021-02-26 | 海信视像科技股份有限公司 | 媒体播放资源处理方法、装置及终端 |
-
2019
- 2019-09-25 CN CN201910913054.XA patent/CN110620952B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103747339A (zh) * | 2013-12-23 | 2014-04-23 | 乐视致新电子科技(天津)有限公司 | 一种解决安卓设备播放在线视频出现无响应的方法和设备 |
CN103873921A (zh) * | 2014-03-26 | 2014-06-18 | 北京奇艺世纪科技有限公司 | 一种视频的无缝播放方法及播放器 |
CN105335206A (zh) * | 2015-10-16 | 2016-02-17 | Tcl集团股份有限公司 | 一种自定义系统控件的扩展方法及系统 |
CN106155828A (zh) * | 2016-07-13 | 2016-11-23 | 微鲸科技有限公司 | 用于播放应用程序资源控制方法和设备 |
CN107231578A (zh) * | 2017-08-04 | 2017-10-03 | 四川长虹电器股份有限公司 | 视频文件快速播放的系统及方法 |
CN110177304A (zh) * | 2019-05-27 | 2019-08-27 | 四川长虹电器股份有限公司 | 一种本地无缝衔接播放hls片源列表的方法 |
Non-Patent Citations (1)
Title |
---|
Android View框架的measure机制;黄金夫;《博客园,https://www.cnblogs.com/xyhuangjinfu/p/5435201.html》;20160426;第1、7-15页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110620952A (zh) | 2019-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8639852B2 (en) | Burst access protocol | |
CN105828117A (zh) | 一种基于用户行为分析的视频自动推送方法和装置 | |
CN102541599B (zh) | 一种电子设备在线升级的方法、系统及电视机 | |
CN101916188B (zh) | 用于产生多语言菜单的方法 | |
Nguyen et al. | Reducing smartphone application delay through read/write isolation | |
CN110007957A (zh) | 调用链路构建方法、装置及设备 | |
CN110401700A (zh) | 模型加载方法及系统、控制节点及执行节点 | |
CN103136024B (zh) | 一种应用程序的可靠卸载方法、装置及移动装置 | |
CN103873921A (zh) | 一种视频的无缝播放方法及播放器 | |
CN110620952B (zh) | 运行于安卓平台自定义的安卓播放控件 | |
CN105677334A (zh) | 一种通用的游戏状态控制系统和方法 | |
CN105828195A (zh) | 一种播放器的挂起恢复方法和装置 | |
CN105867965A (zh) | 一种基于Android系统的播放开机视频的方法及系统 | |
CN104811789A (zh) | 多媒体文件的管理方法和装置 | |
CN100499412C (zh) | 应用程序执行设备 | |
US20170280204A1 (en) | Method for switching an audio/video application, apparatus and smart tv | |
Melamed et al. | A comparative evaluation of HTML5 as a pervasive media platform | |
CN108566417A (zh) | 一种基于安卓系统的多线程断点续传下载系统及方法 | |
CN105760377A (zh) | 一种信息处理方法和装置 | |
CN101707664B (zh) | 一种机顶盒安全运行方法 | |
CN112988669B (zh) | 多传感器数据文件的回放方法、电子设备及存储介质 | |
CN110278480A (zh) | 电视机频道预置方法、装置、计算机设备及可读存储介质 | |
WO2017004195A1 (en) | Transmitting application data for on-device demos | |
CN102316288A (zh) | 一种电视机节目播放方法及电视机 | |
CN101588381A (zh) | 串流数据播放方法与执行其的电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |