作者:创世魂
● 辅助说明注意:本类位于“多媒体功能支持”模块中,必须添加此模块才能使用。
● 准备工作
界面如下图:
打开窗口设计器,拖放一个“线性布局器”
随后设置其“布局方向”为“横向布局”。
随后在“线性布局器”内,放入四个“按钮”。
并且分别设置“文本”属性起名。
继续放一个“线性布局”和两个“按钮”,并给“按钮”起名。
最终达到如下图所示的效果。
最后在“基本组件”内找到“视频播放器”,拖放到设计器内。
并分别设置“组件宽度/高度类型”。
点击“确定”保存布局后,会看到如下代码。
同时右键“按钮”添加“按钮被单击”事件接收方法。
● 本类说明
本类为窗口组件,如同“按钮”一样,可以在窗口设计器内看到。
本组件可以用来播放“本地(存储卡)、网络”或“安卓资源”中的视频文件。
本播放器支持“3GP、MP4、avi”等主流视频格式。
注意:并非所有的视频格式都支持播放。
图片中提到的“媒体控制器”会在稍后的“媒体控制器类”中进行详细介绍。
● 视频(写)
以上七个为关联方法,此处统一讲解。
“视频(写)”帮助文档:
本“写属性”的作用就是为当前“视频播放器”设置要播放的视频。
视频地址可以为“存储卡视频”和“网络视频”。
当需要播放本地视频时,直接使用“黄色方框”内的方法即可。
无论是播放“网络视频”还是“本地视频”,务必保证地址正确。
并且视频格式能够被播放器支持,否则必然播放失败。
“加载完毕(事件)”帮助文档:
当调用“视频”写属性后,一段时间后(两三秒钟)就会触发“加载完毕”事件。
触发本事件后,才可以调用“播放”方法播放视频。
“播放”帮助文档:
顾名思义,就是用来播放已经加载好的视频。
“加载完毕”事件触发后,本方法才能正常使用。
同时本方法也可用来播放被“暂停”的视频。
“暂停”帮助文档:
顾名思义,就是“暂停”当前正在播放的视频。
暂停后,可以调用“播放”方法继续播放视频。
“停止”帮助文档:
顾名思义,“停止”播放当前视频。
停止后可以调用“重新播放”方法来重新开始播放。
“释放”帮助文档:
如果播放的是网络视频,调用本方法后会“释放”掉缓冲内容,并且会停止当前视频的播放。
调用“重新播放”可以重新开始播放当前视频。
“重新播放”帮助文档:
顾名思义,就是将当前视频重新开始播放。
代码编写(1):
在“按钮_被单击”事件下,通过“如果”来判断来源对象是哪个按钮。
然后执行对应的属性方法。
代码编写(2):
随后右键“视频播放器”选择“事件接收方法”。
代码编写(3):
在弹出的窗口中,选择“视频播放器_加载完毕”,最后点击“添加”。
代码编写(4):
添加后,利用“如果”判断来源对象,弹出一个加载完毕的提示框。
运行效果如下图(GIF):
大家可以看到,点击“加载视频”后就弹出了对应的“加载完毕”提示。
此时就可以点击“播放”按钮播放视频。
接下来点击“暂停”后,重新点击“播放”会继续从原来的位置播放视频。
如果点击“停止”后去点击“播放”此时是无效的。
必须点击“重新播放”,视频才能开始播放,并且视频加载后会自动开始播放。
同样“释放”被点击后,必须去点击“重新播放”才能开始播放当前视频。
● 可否快进(读)
以上四个读属性,全部返回的是逻辑型。
作用就是判断当前播放器对象,“是否可以快进”,“是否可以快退”,“是否可以暂停”和“是否正在播放视频”。
调用方式:通过“如果”来判断“视频播放器1.XXX”的返回值即可。
界面准备:
打开“界面设计器”,修改其中四个按钮的标题。
分别为:“是否正在播放”,“可否暂停”,“可否快进”和“可否快退”。
最后点击“确定”保存修改。
代码编写如下图:
直接通过“如果”来判断这四个“读属性”的返回值即可。
然后弹出对应的提示。
运行效果如下图(GIF):
可以看到,只有点击了“播放”按钮,正式播放视频后才会提示“正在播放”。
视频播放后,“快进、快退”和“暂停”自然都处于可以操作状态。
● 现行位置(读)
“现行位置(读)”帮助文档:
顾名思义,本属性的作用是读取“当前视频”播放位置。
返回值的单位为“毫秒”。
“长度(读)”帮助文档:
顾名思义,本属性的作用可以读取当前视频的总时长。
返回值依然是毫秒。
“缓冲百分比(读)”帮助文档:
本属性和前两个属性不同之处在于,本属性只能用于“网络视频”。
因为只有加载“网络视频”才会有缓冲,返回值为百分比。
例如:总时长100分钟,视频缓冲了1分钟,最终返回“1”。
返回值占总时长的百分之一。
界面设计如下图:
打开界面设计器,修改其中“三个按钮”的文本属性。
分别为“现行位置”,“长度”和“缓冲百分比”。
代码编写如下图:
在原来的代码中,分别修改“按钮3、4、5”下方的代码。
修改为“视频播放器1.XXX”读属性,“除1000”得到“秒”,最后利用“到文本”方法对其进行转换。
注意:缓冲百分比不用除1000.
最后将结果显示在“按钮6”的内容属性上。
运行效果如下图(gif):
最终可以看到,视频播放后成功的读取“现行位置”、“长度”和“缓冲百分比”。
因本视频很短,所以“缓冲百分比”此时显示“100?。
也就意味着视频已经缓冲完毕。
大家在测试过程中可以找一个长视频做测试。
● 现行位置(写)
“现行位置(写)”帮助文档:
顾名思义,本写属性的作用就是用来,设置当前播放进度。
它的单位依然是毫秒,数值应小于等于“长度”属性的返回值。
“播放结束(事件)”帮助文档:
顾名思义,当前视频播放结束后会触发本事件。
“得到信息(事件)”帮助文档:
开始播放视频后会触发本事件,并且会返回相应的“消息类型”。
需要注意的是“消息代码”参数并不是特定的代码。
代码编写(1):
直接在源代码的基础上,修改“按钮3”被单击的代码。
修改为“现行位置”写属性,属性值填写“长度”读属性。
可以将其它用不到的代码删除掉。
这样编写代码,当前视频会直接播放到“视频结尾”的位置。
代码编写(2):
右键“视频播放器”继续添加“事件接收方法”。
这里依次添加“播放结束”和“得到信息”。
代码编写(3):
在“播放结束”事件下,判断来源对象后,调用“提示框”方法做演示。
代码编写(4):
在“得到信息”事件下,判断来源对象后。
继续使用“如果”来判断“消息类型”参数是否等于“播放消息类型.XXX”。
然后弹出对应提示。
注意:并非每一条“消息类型”都会返回。
例如:消息类型中的“未知”只有在播放视频出现未知错误的时候,才会返回此消息类型。
运行效果如下图(GIF):
可以看到点击“加载视频”后,提示“加载完毕”。
点击“播放”后“得到信息”事件开始被触发。
依次弹出提示“开始缓冲”,“缓冲完毕”和“开始渲染”。
当点击“现行位置”设置播放进度后,“播放结束”随之弹出。
● 播放出错(事件)
帮助文档如下图:
本事件顾名思义,播放出现错误时会触发本事件。
错误分两种:“错误类型”和“错误代码”。
错误类型可以通过“播放错误类型.XXX”判断。
错误代码可以通过“播放错误代码.XXX”判断。
代码编写(1):
首先在源代码的基础上,修改“视频”中的地址,随便输入一个错误的地址。
看看“播放出错”事件是否能被触发。
代码编写(2):
添加“播放出错”接收事件后,判断来源对象。
然后分别判断“错误类型”参数和“错误代码”参数,弹出对应提示。
运行结果如下图(GIF):
可以看到弹出一个“信息框”,此信息框是核心库内置的错误信息框。
除此之外还弹出了“错误类型”对应的“未知错误”提示,但是“错误代码”并未提示。
也就证明,一个错误的播放地址,并不会触发“错误代码”参数。
● 媒体控制器(读)
帮助文档如下图:
通过本读属性,可以用来显示当前“视频播放器”的“媒体控制器”。
控制内有“播放”,“前进”,“后退”等控制按钮,可以点击操作。
本属性会在“媒体控制器类”中详细介绍,此处不再讲解。
● 本类说明
通过本类中的方法,可以操作视频播放器的媒体控制器。
媒体控制器内包含“播放/暂停”,“快进、快退”和“上一首、下一首”等控制按钮。
● 显示
“显示”帮助文档:
顾名思义,调用本方法可以显示当前视频播放器的“媒体控制器”。
注意:如果“未加载”视频的情况下,本方法无效。
“隐藏”帮助文档:
顾名思义,隐藏当前视频播放器的媒体控制器。
注意:如果“未加载”视频的情况下,本方法无效。
“是否显示(读)”帮助文档:
顾名思义,判断当前媒体控制是否显示。
注意:如果“未加载”视频的情况下,本属性返回“假”。
界面准备如下图:
打开界面设计器,修改其中三个按钮的“文本”标题。
修改后保存布局。
代码编写如下图:
媒体控制器有两种操作模式,分别如下。
第一:“显示”按钮被点击后。
定义“媒体控制器类”变量,设置参考。
然后通过“视频播放器1.媒体控制器”属性,读取控制器对象,赋值给定义的“媒体控制器”变量。
最后通过“变量”名调用“显示”方法,即可实现显示当前控制器。
第二:“隐藏”按钮被单击后。
直接输入“视频播放器1.媒体控制器.隐藏()”即可调用当前方法。
运行效果如下图(GIF):
可以看到,在没有播放视频的情况下,点击“显示”按钮并没有任何效果。
加载视频播放后,就可以对“媒体控制器”进行隐藏和显示操作。
同时控制器内的“播放/暂停”按钮,也可以操作。
● 显示时长(写)
帮助文档如下图:
本写属性的作用,用来设置当前播放器临时显示时长,单位毫秒。
真实时长显示后,本时长会隐藏。
通常情况下,本时长肉眼不可见,因此不再演示。
调用方法:“视频播放器1.媒体控制器.显示时长=10000”
● 锚点视图(写)
“锚点视图(写)”帮助文档:
简单来说,本写属性的作用,就是设置“媒体控制器”的显示位置。
而要显示的位置,可以设置为一个“窗口组件”。
例如:“按钮”,“文本框”或者当前的“视频播放器”都可以。
只要是窗口组件,都可以设置为显示视图。
界面设计如下图:
修改“按钮4”的标题为“锚点试图”,修改后保存布局。
代码编写如下图:
在“锚点视图”被单击下,直接书写“视频播放器1.媒体控制器.锚点视图=XXX”即可。
例如:此处填写“按钮6”。
运行效果如下图(GIF):
可以看到点击“锚点视图”后,“媒体控制器”从最下面来到了“按钮6”所在的位置。
并且“媒体控制器”大小也和“按钮6”一致。
因此大家在设置“锚点视图”时,一定要保证组件足够宽。
● 上一首被单击(事件)
帮助说明:
以上两个事件均是由“媒体控制器”触发。
注意:在此之前,一定要进行“挂接事件”操作。
代码编写(1):
首先在当前窗口的“通知_被启动”方法下,进行挂接事件操作。
直接输入“挂接事件(视频播放器1.媒体控制器)”即可。
关于“通知_被启动”可看“窗口操作教程”。
代码编写(2):
定义一个“媒体控制器类”变量,右键选择“事件接收方法”。
在弹出的窗口中依次选择“上一首被点击”和“下一首被点击”后,点击“添加”。
代码编写(3):
添加后,通过“如果”命令分别指定来源对象,然后弹出对应提示。
运行结果如下图(GIF):
可以看到“媒体控制器”中的“上一首、下一首”按钮被点击后,成功弹出了对应提示。
如果不进行挂接事件操作,必然无法弹出提示。