作者:创世魂
● 辅助说明注意:本类位于“多媒体功能支持”模块中,必须添加此模块才能使用。
● 本类说明
本类实现了对“视频和音频”播放。
● 新建
以上七个方法为关联方法,此处统一讲解。
“新建”帮助文档:
顾名思义,通过本方法可以建立一个“媒体播放基础类”对象。
通过该对象可以进行播放“音乐”和“视频”的操作。
需要注意的是,不需要执行“准备”可以直接“播放”媒体。
使用方法:直接在参数内填写“媒体路径”即可建立当前对象。
网络路径:“http://XXXX.mp4或mp3”
本地路径:取外部存储空间根目录 ().取文件名 ()+"/XX.mp4或mp3"
备注:如果要播放视频,必须要调用“展示组件”,不然无法显示播放画面。
“播放”帮助文档:
顾名思义,调用本方法后将会“播放”当前加载的媒体。
如果再次之前调用了“暂停”方法,将会从暂停的位置“继续播放”。
如果执行了“停止”方法,必须要调用“准备/异步准备”才能调用本方法进行播放媒体。
“暂停”帮助文档:
顾名思义,“暂停”当前媒体的播放。
暂停后可调用“播放”继续播放。
“停止”帮助文档:
顾名思义“停止”当前媒体播放。
停止后可调用“准备/异步准备”来重新准备媒体,最后调用“播放”可重新播放。
“准备”帮助文档:
调用“媒体(写)”或者“加载媒体”方法后,想要执行“播放”方法。
必须调用本方法或“异步准备”才能开始播放。
除此之外,调用“停止”方法后,务必调用本方法才能重新播放。
“释放”帮助文档:
调用本方法后会停止播放当前媒体,并且释放所有占用的资源。
建议“退出/切换窗口”时,务必调用本方法释放资源。
“现行位置(读)”帮助文档:
顾名思义,读取当前媒体播放进度,单位毫秒。
界面准备如下图:
在原界面的基础上,修改所有“按钮标题”。
随后拖放一个“文本框”组件,设置组件宽度类型为“匹配父组件宽度”。
最后点击“确定”保存布局。
代码编写(1):
定义两个变量,类型分别为“媒体播放基础类”和“时钟类”。
注意:媒体播放器基础类要设置参考属性。
随后右键“时钟类”选择“事件接收方法”添加时钟周期事件。
代码编写(2):
添加完毕后如下图所示。
指定来源对象,设置“文本框1.内容”为当前媒体播放进度。
这样一来,就可以通过“时钟”定时获取当前播放进度。
代码编写(3):
在“按钮_被单击”事件下,利用“如果”来判断每一个按钮被点击。
点击后执行对应的方法。
此处“新建”方法,我读取的是存储卡内的“音频文件”。
如果要读取网络文件,直接填写“http://www.***.com/***.mp3”即可。
注意2:“时钟”务必要设置“周期”时间,设置时间后务必执行“启动”方法。
运行效果如下图(GIF):
通过“文本框1”的状态,可以看出,当前媒体的所有操作均处于正常状态。
● 新建2
帮助文档如下图:
本方法和“新建”不同之处在于,本方法是通过“原始数据资源”来加载媒体。
简单来说,通过“原始数据资源”可以将媒体文件内置到安卓APP中。
播放的媒体,就是内置的文件。
具体操作方法可以看“参数说明”。
代码编写如下图:
根据参数说明,定义一个“原始数据资源”的变量,点击“按钮”导入一个媒体文件。
随后在“按钮1”被单击下,执行“新建2”方法,参数内直接填写“媒体文件”变量名即可。
演示效果参考“新建”方法。
● 媒体(写)
帮助文档如下图:
本写属性和“新建”不同之处在于,执行本属性后务必执行“准备/异步准备”方法,才能进行播放。
代码编写如下图:
调用本属性,需要提前将“媒体播放基础类”的“参考”取消。
随后直接给本属性赋值本地媒体路径即可。
如果要读取网络媒体,直接填写“http://www.***.com/***.mp3”即可。
注意:调用本属性设置“媒体”,务必调用“准备/异步准备”方法才能播放。
演示效果参考“新建”方法。
● 加载媒体
帮助文档如下图:
本方法和“媒体”写属性不同之处在于,本方法可以自定义请求头。
如果不会填写请求头,默认为空即可。
参数2:通常情况下填写“本对象”即可,“本对象”就代表“当前窗口”。
参数3:直接输入要播放的地址即可。
代码编写如下图:
直接在上一个方法的代码基础上,修改“媒体”写属性为“加载媒体”方法即可。
注意:使用本方法务必执行“准备/异步准备”才能进行播放媒体。
演示效果参考“新建”方法。
● 异步准备
帮助文档如下图:
简单来说使用根本方法,窗口不会在加载音乐时卡死。
加载“网络媒体”时,建议使用本方法准备。
调用方式,参考“准备”方法。
● 重置
帮助文档如下图:
本方法的作用就是将当前播放的媒体,进行重置操作。
即恢复到最开始加载媒体的初始化状态。
图文教程无法演示,自行测试。
● 置音量
帮助文档如下图:
顾名思义,设置当前媒体“左右声道”的音量。
调用方法:媒体播放基础类.置音量(媒体变量,20,20)。
图文教程无法演示,自行测试。
● 长度(读)
以上两个属性和“视频播放器”中的“长度(读)”和“现行位置(写)”方法作用一致。
此处不再详细介绍,可参考视频播放器中的方法。
● 屏幕常量(写)
“屏幕常亮(写)”帮助文档:
顾名思义,调用本属性后,屏幕会保持常亮状态(即屏幕不会自动熄灭)。
注意:某些手机可能会强制息屏。
“是否循环(写)”帮助文档:
顾名思义,调用本属性后,可以设置当前媒体是否循环播放。
“是否循环(读)”帮助文档:
本读属性的作用,返回当前媒体是否正在循环播放。
循环播放返回“真”,否则返回假。
“是否播放(读)”帮助文档:
返回当前媒体,是否正在播放。
播放返回真,否则返回假。
界面准备如下图:
分别修改所有按钮的标题,达到如下图效果。
代码编写如下图:
按钮1被单击:执行“加载媒体”和“准备”方法。
按钮2:执行“播放”,设置“时钟”。
按钮3:执行“屏幕常亮”写属性(图文教程无法演示屏幕常亮,自行测试)。
按钮4:执行“是否循环”写属性。
按钮5、6分别执行“是否循环”和“是否播放”读属性。
运行结果如下图(GIF):
通过“文本框1”的内容和弹出的“提示框”可以看到,所有方法都可正常执行。
●下一首
帮助文档如下图:
顾名思义,调用本方法可以播放设置的“下一首”媒体。
需要注意的是,调用本方法并不会立刻播放下一首。
而是会在当前媒体播放完毕后,才会播放下一首。
界面准备如下图:
修改“按钮6”的文本标题为“下一首”。
代码编写(1):
保存修改后,定义一个新的“媒体播放基础类”变量,变量名为“媒体播放2”。
代码编写(2):
在“时钟类_时钟事件”下,定义两个“文本型”变量。
分别给这两个变量赋值两个媒体的“播放进度”。
最后将两个媒体变量连接后赋值给“文本框1.内容”。
代码编写(3):
在“按钮6”单击下,调用“媒体播放2”的“加载媒体”方法,随后执行“准备”。
最后将“媒体播放2”的变量放入“下一首”的参数中。
运行结果如下图(GIF):
播放的“test.mp3”是一个极短的音频文件,所以“循环播放”时当前播放进度一直是“0”.
而“媒体2”的进度一直是一个负数。
当我点击“下一首”之后,“媒体2”的播放进度立刻就变成了正整数。
也就表明“倩女幽魂.mp3”开始播放,“test.mp3”停止播放。
● 展示组件(写)
“展示组件(写)”帮助文档:
本写属性的作用,加载视频媒体时提供视频显示画面。
显示画面为“高级画板”,务必保证绑定的“高级画板”存在于窗口上。
“视频宽度(读)”帮助文档:
顾名思义,返回当前视频的宽度,并非最终显示界面的宽度。
注意:务必保证当前视频正常播放。
“视频高度(读)”帮助文档:
顾名思义,返回当前视频的高度,并非最终显示界面的高度。
注意:务必保证当前视频正常播放。
界面准备如下图:
修改“按钮1、按钮2”的标题。
随后从左侧组件找到“高级画板”拖放到设计器内。
设置“高级画板”组件宽度高度类型分别为“匹配父组件宽度/高度”。
最后点击“确定”保存布局。
代码编写(1):
在“时钟类_时钟事件”下,定义三个文本变量。
分别赋值:播放进度,视频宽度和高度。
最后将这三个变量用加号连接,赋值给文本框显示。
代码编写(2):
在“按钮1”被单击下,执行“媒体”写属性设置一个网络视频。
随后务必首先调用“展示组件”写属性设置值为“高级画板1”。
最后建议调用“异步准备”方法,准备视频,因为调用此方法软件界面不会卡顿。
“按钮2”被点击后,就执行“播放”方法并启动“时钟”。
运行效果如下图(GIF):
依次点击“新建视频”和“播放视频”后,视频成功在“高级画板”上显示出来。
并且视频占满了整个高级画板,视频进度也正常显示。
“视频高度/宽度”也成功读取(并非高级画板的高度/宽度)。
如果要“暂停、停止、释放”当前视频,直接调用对应的媒体方法即可。
● 本类说明
帮助如下图:
本类继承自“媒体播放基础类”,通过本类可以调用“媒体播放基础类”的所有方法。
也就是说,通过本类也可以实现媒体播放功能。
除了继承自“媒体播放基础类”的方法之外,本类还有8个事件方法。
重点讲解这八个事件的使用方法。
● 准备完毕(事件)
“得到信息(事件)”:
“播放出错(事件)”:
“播放结束(事件)”:
以上三个事件参考“视频播放器”,此处不再详细介绍。
“准备完毕(事件)”帮助文档:
当执行“准备/异步准备”完毕后,会触发本事件。
用户可以在本事件下执行“播放”方法,或者其它操作。
“用户移动位置完毕(事件)”帮助文档:
简单来说,就是调用“现行位置”写属性后,本事件会触发。
“缓冲被更新(事件)”帮助文档:
播放“网络音乐/视频”时,缓冲进度改变后会触发本事件。
“视频尺寸被改变(事件)”帮助文档:
播放视频时,尺寸被修改后会触发本事件。
本事件会返回改变后的高度和宽度。
界面准备如下图:
首先在原界面的基础上,修改其中三个按钮的标题。
然后在左侧的组件栏找到“进度条”拖放到“文本框”下面。
然后调整“进度条”风格为“水平进度条”,宽度类型设置为“匹配父组件宽度”。
最后点击“确定”保存布局。
代码编写(1):
定义一个“媒体播放类”变量,右键选择“事件接收方法”。
代码编写(2):
依次选择“缓冲被更新”,“准备完毕”,“用户移动位置完毕”和“视频尺寸被改变”这四个事件。
选择后依次添加即可。
注:“字幕被改变”事件经测试无效,不讲解。
代码编写(3):
1、在“缓冲被更新”事件下,将返回的“百分比”赋值给“文本框1”显示。
实际操作过程中,大家可以赋值给一个进度条显示。
2、“准备完毕”下可以填写“播放”方法,或者和此处一样弹出一个“提示框”。
3、“用户移动位置完毕”事件下弹出一个“提示框”做演示。
4、“视频尺寸被改变”事件下,可以将返回的“高度和宽度”用一个“提示框”弹出做演示。
代码编写(4):
分别在这“三个按钮”被单击事件下,填写对应的方法。
注意:“进度条1.最大进度值”就是字面上的意思,设置当前进度条的最大进度。
代码编写(5):
在“时钟事件”下,定时更新“进度条1”的当前进度为“媒体播放”的当前进度。
运行结果如下图(GIF):
通过当前GIF图片可以看出,每一个事件全部触发。
并且“缓冲进度”和“播放进度”均正常加载。
虽然没有执行任何修改视频尺寸的代码,但是“视频尺寸被改变”依然被触发。
那是因为视频被压缩到了“高级画板1”内播放,尺寸自然发生了变化,然后触发了本事件。