系统相机类实例讲解

作者:创世魂

 

● 本类说明

 

帮助说明:

通过本类可直接调用“系统相机”进行“拍照和录像”等操作。

除此之外,还可以打开系统相册,选择图片进行裁剪。

注意:本类位于“多媒体功能支持”模块中,必须添加此模块才能使用。

 

 

● 获得返回数据
● 开始拍照
● 拍照完毕(事件)

 

以上三个为关联方法,此处统一讲解。

 

“获得返回数据”帮助文档:

无论执行“拍照”“录像”,本方法必须调用。

需要将此方法写到“通知_获得返回数据”虚拟方法下,否则“拍摄事件”无法响应。

 

“开始拍照”帮助文档:

执行本方法后将会触发“拍摄完毕”事件。

参数1:提供要保存的文件路径即可。

参数2:通常情况下直接填写“本对象”即可。

 

“拍摄完毕(事件)”帮助文档:

执行“开始拍照”方法后触发本事件。

通过本事件的“照片路径”参数可获得照片保存路径。

 

界面准备如下图:

打开设计器,拖放一个“按钮”“文本框”“图片框”

设置“文本框”组件宽度类型为“匹配父组件宽度”

设置“图片框”组件高/宽度类型为“匹配父组件高/宽度”

 

代码编写(1):

保存布局后,定义“系统相机类”变量,右键选择“事件接收方法”

添加“拍摄完毕”事件。

 

代码编写(2):

添加完毕后,判断“来源对象==相机1”

然后将“照片路径”显示在文本框中。

通过“读入文件”命令,读取照片为字节数据。

最后将此方法放入,“图片框1.置图片数据”的参数中。

如此操作后,拍着的照片就会显示在图片框中。

 

代码编写(3):

“通知_获得返回数据”方法下,执行“相机1.获得返回数据”方法。

三个参数分别对号入座即可。

 

代码编写(4):

最后需要在“按钮1”被单击下,执行“相机1.开始拍照()”方法。

参数1:填写要保存的文件路径即可。

参数2:直接填写“本对象”即可。

 

运行结果如下图:

点击“按钮1”会调用系统相机开始拍照,拍照结束后图片框就会显示刚刚拍摄的照片。

如果手机内有多个相机软件,大部分手机会弹出相机选择,让你手动选择相机软件拍摄(右图)。

 

● 开始录像
● 录像完毕(事件)

 

以上两个为关联方法,统一讲解。

 

“开始录像”帮助文档:

通过本方法即可打开系统自带相机的录像界面。

本方法共有三个参数,参数1:依然是保存路径,参数2:录像品质,只能0或1。

参数3:直接填写本对象即可。

注意:本方法会触发“录像完毕”事件。

 

“录像完毕(事件)”帮助文档:

调用“开始录像”录像结束后会触发本事件。

通过“录像路径”参数可以获得录像结束后文件保存路径。

 

代码编写(1):

直接在原代码的基础上,修改“开始拍照”“开始录像”,然后填写对应参数,即可。

 

代码编写(2):

录像结束后,将“录像路径”显示在“文本框1”中。

录像无法演示,自行测试。

 

●浏览相册
● 浏览完毕(事件)

 

以上两个为关联方法,统一讲解。

 

“浏览相册”帮助文档:

顾名思义,调用本方法可以打开系统相册进行浏览相册。

选择照片后,会触发“浏览完毕”事件。

参数直接填写“本对象”即可。

注意:建议选择系统自带相册,第三方相册可能会导致程序闪退。

 

“浏览完毕(事件)”帮助文档:

调用“浏览相册”选择照片后会触发本事件。

通过“文件路径”参数可以获得被选择照片的路径。

 

代码编写(1):

直接在“按钮1”被单击下,调用本方法即可。

 

代码编写(2):

添加“浏览完毕”事件,在事件下利用“读入文件”方法读取图片到图片框。

 

运行结果如下图:

可以看到,选择图片后图片框成功显示了选择的图片。

 

●浏览相册并裁剪照片
● 裁剪完毕(事件)

 

以上方法和前两个不同之处在于,本方法支持选择照片是进行裁剪。

 

代码编写(1):

直接在“按钮1”被单击下,调用“浏览相册并裁剪照片”方法即可。

本方法同样只有一个参数,直接填写“本对象”即可。

 

代码编写(2):

添加“裁剪完毕”事件,在事件下利用“读入文件”方法读取图片到图片框。

 

运行结果如下图:

可以看到,选择图片后出现了控制柄可以调整大小。

调整完毕后就可以将方框内的区域剪裁下来。

因国内系统多为定制系统,剪裁界面和下图未必一样。

 

●是否支持闪光灯
● 开启闪光灯
● 关闭闪光灯

 

以上三个方法,就是字面上的意思,此处不再展示帮助文档。

大家可以自行打开帮助文档查看。

 

代码编写如下图:

直接调用“如果”去判断“是否支持闪光灯()”方法即可。

如果支持,就执行“开启闪光灯”,不支持就弹出对应提示。

“开启闪光灯”有一个逻辑返回值,可以继续用“如果”进行判断。

至于“关闭闪光灯”,本方法并没有任何参数,在需要关闭的地方调用本方法即可。

 

运行效果如下图:

可以看到当前闪光灯“开启失败”,因为教程使用的是“安卓模拟器”

安卓模拟器并没有闪光灯,所以自然提示开启失败。

至于为什么没有弹出“不支持闪光灯”,可能是因为安卓模拟器内部进行了“特殊处理”

 

● 取照片旋转角度

 

帮助文档如下图:

本方法顾名思义,可以取出指定路径的照片旋转角度。

务必保证“照片路径”真是存在,且照片为标准的图片格式。

返回一个整数值,如果为“0”表示没有旋转,否则代表“旋转角度”

 

代码编写如下图:

通过“相机1”调用本方法即可,参数内填写一个真实存在的“图片路径”

然后将其赋值给“返回值”变量。

最后判断返回值是否为0,根据判断结果执行对应的提示框。

 

帮助文档如下图:

可以看到,我指定的图片提示“照片没有旋转”

也就表示,当前方法执行后返回了“0”