多媒体组件
目录:
摄像机
使用设备的摄像机录制视频的组件。录制视频后,手机上包含剪辑的文件的名称可作为参数提供给 录制完成 事件。
例如,可以使用文件名来设置源 视频播放器 组件的属性。
属性
无
事件
- 录制完成(clip)
- 表示视频是用相机录制的,提供已存储视频的路径。
方法
- 开始录制()
- 录制视频,然后触发
录制完成事件。
照相机
使用相机组件在手机上拍照。
照相机是一个不可见的组件,它使用设备的相机拍照。照片拍摄完成后,手机上包含照片的文件路径可用作 拍摄完成 事件的参数。
例如,该路径可以用作 图像 的 图片 属性。
属性
无
事件
- 拍摄完成(图像位址)
- 拍照完成后调用,文本参数
图像位址是手机上找到图像位置的路径。
方法
- 拍照()
- 拍照,然后触发
拍摄完成事件。
文件选择器
文件选择器组件是一个类似按钮的组件。当用户单击该组件时,将提示他们从系统中选择一个文件。
还可以通过调用其 打开 方法以编程方式打开选择器。
使用文件选择器组件需要 Android 4.4 或更高版本、iOS 11 或更高版本。要求AI伴侣v2.68及以上。
属性
- 操作
- 设置
文件选择器所需的操作。有如下选项:- 选择现有文件:打开现有文件
- 选择目录:打开现有目录
- 选择新文件:创建一个新文件进行保存
- 背景颜色
- 设置
文件选择器的背景颜色,使用ARGB数值表示,如果设置了图像属性,则不能显示背景颜色直到删除图像属性为止。 - 启用
- 设置
文件选择器是否可以被点击。 - 粗体
- 设置
文件选择器的显示字体是否是粗体。(注:有些字体不支持粗体)。 - 斜体
- 设置
文件选择器的显示字体是否是斜体。(注:有些字体不支持斜体)。 - 字体大小
- 设置
文件选择器的字体大小,以像素px为单位。 - 字体
- 设置
文件选择器的字体,目前支持的字体有:default, serif, sans serif, 和 monospace。要使用自定义字体,请将 .ttf 字体文件上传并选中它。选「Material 图标字体」后,文字里的图标英文名(如 home)显示成图标、其余文字照常,见图标字体。
- 高度
- 设置
文件选择器的垂直高度,以像素px为单位。 - 高度百分比
- 设置
文件选择器的垂直高度相对于整个屏幕高度的百分比。 - 图像
- 设置
文件选择器图像的路径,如果同时设置了图像和背景颜色,则仅图像可见。 - MimeType
- 设置选择文件所需的 MIME 类型。
- 选中项
- 返回选定文件的 URI 路径。
- 形状
- 设置
文件选择器的形状,此属性的有效值为:0(默认)1(圆形)2(矩形)3(椭圆形)。如果设置了
图像,则形状将不可见。 - 显示反馈
- 设置
文件选择器指定图像后被按压是否显示视觉反馈。 - 文本
- 设置
文件选择器的显示文本。 - 文本对齐
- 设置
文件选择器文本的对齐方式,有效值有:0(正常;例如,如果文本从左到右书写,则左对齐)1(居中)2(相反;例如,如果文本从左到右书写,则右对齐)。 - 文本颜色
- 设置
文件选择器的文本颜色,使用ARGB数值表示。 - 可见性
- 设置
文件选择器是否显示在屏幕上,值是真则文件选择器显示,假则隐藏。 - 宽度
- 设置
文件选择器的水平宽度,以像素px为单位。 - 宽度百分比
- 设置
文件选择器的水平宽度相对于屏幕宽度的百分比。
事件
- 选择完成()
- 在
文件选择器选框返回其选择结果且属性已设置后,触发该事件。 - 准备选择()
- 单击
文件选择器或使用 打开选框 方法显示选择器时引发的事件。此事件发生在选择器显示之前,可用于在显示选择器之前准备好选择器。
- 获得焦点()
- 表示光标移到
文件选择器按钮上了,因此现在可以单击它。 - 失去焦点()
- 表示光标从
文件选择器按钮上移开,因此现在无法再单击它。 - 被按压()
- 表示
文件选择器按钮被按下。 - 被松开()
- 表示按下的
文件选择器按钮已被放开。
方法
- 打开选框()
- 打开
文件选择器,就像用户单击它一样。
图像选择器
当用户点击 图像选择器 时,打开设备的图片库,用户可以选择图像。选取图像后,选中项 属性返回选中图像的文件名称。
一次只能选择一张图片。若要选择多张图片,可使用 MultiImagePicker 拓展。
属性
- 背景颜色
- 设置
图像选择器的背景颜色,使用ARGB数值表示,如果设置了图像属性,则不能显示背景颜色直到删除图像属性为止。 - 启用
- 设置
图像选择器是否可以被激活和点击。 - 粗体
- 设置
图像选择器的显示字体是否是粗体。(注:有些字体不支持粗体)。 - 斜体
- 设置
图像选择器的显示字体是否是斜体。(注:有些字体不支持斜体)。 - 字体大小
- 设置
图像选择器的字体大小,以像素px为单位。 - 字体
- 设置
图像选择器的字体,目前支持的字体有:default, serif, sans serif, 和 monospace。要使用自定义字体,请将 .ttf 字体文件上传并选中它。选「Material 图标字体」后,文字里的图标英文名(如 home)显示成图标、其余文字照常,见图标字体。
- 高度
- 设置
图像选择器的垂直高度,以像素px为单位。 - 高度百分比
- 设置
图像选择器的垂直高度相对于整个屏幕高度的百分比。 - 图像
- 设置
图像选择器图像的路径,如果同时设置了图像和背景颜色,则仅图像可见。 - 选中项
- 包含所选图像文件的路径。
- 形状
- 设置
图像选择器的形状,此属性的有效值为:0(默认)1(圆形)2(矩形)3(椭圆形)。如果设置了
图像,则形状将不可见。 - 显示交互效果
- 设置
图像选择器指定图像后被按压是否显示视觉反馈。 - 文本
- 设置
图像选择器的显示文本。 - 文本对齐方式
- 设置
图像选择器文本的对齐方式,有效值有:0(正常;例如,如果文本从左到右书写,则左对齐)、1(居中)或2(相反;例如,如果文本从左到右书写,则右对齐)。 - 文本颜色
- 设置
图像选择器的文本颜色,使用ARGB数值表示。 - 可见性
- 设置
图像选择器是否显示在屏幕上,值是真则图像选择器显示,假则隐藏。 - 宽度
- 设置
图像选择器的水平宽度,以像素px为单位。 - 宽度百分比
- 设置
图像选择器的水平宽度相对于屏幕宽度的百分比。
事件
- 选择完成()
- 在
图像选择器活动返回其结果和属性时触发该事件。 - 准备选择()
- 单击
图像选择器或使用打开选框方法显示选择器时触发该事件,此事件发生在选择器显示之前。 - 获得焦点()
- 表示光标移动到
图像选择器上,现在可以点击它。 - 失去焦点()
- 表示光标从
图像选择器移开,现在它不可再被点击。 - 被按压()
- 表示
图像选择器被按下。 - 被松开()
- 表示
图像选择器被松开。
方法
- 打开选框()
- 打开
图像选择器,就像用户点击它一样。
图片处理
不可见组件:压缩、缩放、裁剪(含裁成正方形/圆形)、旋转、翻转、转灰度、加文字水印,还能查图片宽高和文件大小, 以及图片与 Base64 文本互转。上传照片前压缩、做头像、给图片加水印、把照片交给大模型识图都用它。
每个方法都直接返回处理后的新图片路径(原图不动),可以马上设给图像组件显示、交给 Web 组件上传, 也可以接着再处理;处理失败返回空文本,并触发本组件的处理失败时事件(不会弹系统错误框)。 手机照片会先按拍摄方向摆正再处理;超大原图读入时自动降采样,不会撑爆内存。 新图片保存在应用专属目录的 ImageTools 文件夹里,不需要存储权限。
使用指导上传前压缩、圆形头像、加水印、转 Base64 识图、多步串联的完整案例查看 →
快速上手
拍照后压缩到最长边 1080 像素、质量 80,显示出来再上传:
when Camera1.AfterPicture(图像位址) {
var photo = ImageTools1.Compress(图像位址, 1080, 80)
Image1.Picture = photo
Web1.Url = "https://example.com/upload"
Web1.PostFile(photo)
}
从相册选图做圆形头像,右下角加水印:
when ImagePicker1.AfterPicking() {
var avatar = ImageTools1.CropCircle(ImagePicker1.Selection)
Image1.Picture = ImageTools1.AddTextWatermark(avatar, "fun123.cn", &HFFFFFFFF, 0, "右下")
}
拍照后压缩,再转成 Base64 交给大模型识图(Base64 是图片的文本形式,接口要求「图片放进 JSON」时就用它):
global photoBase64 = ""
when Camera1.AfterPicture(图像位址) {
photoBase64 = ImageTools1.ToBase64(ImageTools1.Compress(图像位址, 1024, 80))
Label1.Text = join("Base64 长度:", textLength(photoBase64))
}
反过来,接口返回的 Base64 图片用 Base64转图片 还原成文件,直接显示:
when Web1.GotText(URL网址, 响应代码, 响应类型, 响应内容) {
Image1.Picture = ImageTools1.FromBase64(响应内容)
}
属性
- 输出格式
- 处理结果的文件格式:
JPEG(体积小,默认)或PNG(保留透明)。「压缩」总是存 JPEG,「裁成圆形」总是存 PNG。 - 图片质量
- 保存 JPEG 的质量,1~100,默认 90;数值越小文件越小、画质越差。「压缩」方法用它自己的质量参数。
事件
- 处理失败时(函数名称,消息)
- 处理失败时触发,此时方法返回空文本。
函数名称是失败的方法名(如Compress),消息是原因,如图片读不出来、内存不足。 只想知道成没成功,判断返回值是否为空文本即可,不必处理这个事件;想把原因告诉用户再接这个事件。
when ImagePicker1.AfterPicking() {
var small = ImageTools1.Compress(ImagePicker1.Selection, 1280, 80)
if small != "" {
Image1.Picture = small
}
}
when ImageTools1.Failed(函数名称, 消息) {
Label1.Text = join("图片处理失败:", 消息)
}
方法
- 加文字水印(图像位址,文本,颜色,字号,位置)
- 在图片上加一行文字水印(带淡阴影,浅色背景上也看得清)。
字号是图片上的像素大小,填 0 按图片宽度自动(约宽度的 1/20);位置填左上、右上、左下、右下、居中(也认top-left这类英文写法),其它值按右下。返回新图片路径。 - Base64转图片(Base64文本)
- 把 Base64 文本还原成图片文件,返回图片路径,可直接给图像组件显示。文本可以带
data:image/png;base64,前缀, 中间有换行也没关系;支持 JPEG、PNG、GIF、WebP、BMP。不是有效的图片数据时返回空文本,并触发处理失败时。 - 压缩(图像位址,最长边,质量)
- 压缩图片,常用于上传前:把最长边缩到不超过
最长边像素(填 0 保持原尺寸),再按质量(1~100)存成 JPEG。 手机照片一般 1080、质量 80 就足够清楚,体积能降到原来的十分之一左右。返回新图片路径。 - 裁剪(图像位址,x坐标,y坐标,宽度,高度)
- 从图片中裁出一块:左上角坐标 (x, y)、宽、高,单位像素,按摆正方向后的图片计算;超出图片的部分自动去掉, 完全不在图片范围内时报错。返回新图片路径。
- 裁成圆形(图像位址)
- 从图片中间裁出圆形,圆外透明,总是保存为 PNG,常用于圆形头像。返回新图片路径。
- 裁成正方形(图像位址)
- 从图片中间裁出最大的正方形(如做头像)。返回新图片路径。
- 文件大小(图像位址)
- 返回图片文件的大小,单位字节(除以 1024 为 KB)。读取失败返回 0。 鸿蒙上刚处理完的图片还在后台写入时返回 0,稍后再查即可。
- 翻转(图像位址,水平翻转)
水平翻转为真时左右镜像(如前置摄像头自拍),为假时上下翻转。返回新图片路径。- 转灰度(图像位址)
- 把图片转成黑白(灰度)。返回新图片路径。
- 图片高度(图像位址)
- 返回图片的高度(像素,按手机照片的实际显示方向)。读取失败返回 0。
- 图片宽度(图像位址)
- 返回图片的宽度(像素,按手机照片的实际显示方向)。读取失败返回 0。
- 缩放(图像位址,宽度,高度)
- 把图片缩放到指定宽高(像素)。宽或高填 0 时按原比例自动计算。返回新图片路径。
- 转Base64(图像位址)
- 把图片文件转成 Base64 文本:原样编码文件内容,不重新压缩,不带换行,也不带
data:前缀 (需要时自己拼上data:image/jpeg;base64,)。常用于交给大模型识图、放进 JSON 上传。 照片较大时先压缩再转,文本会小很多。 鸿蒙上刚处理完的图片还在后台保存时会报错,稍等片刻(如延时 300 毫秒)再转即可。 - 旋转(图像位址,角度)
- 把图片顺时针旋转指定角度(如 90、180、270;负数为逆时针),其它角度留出的空白 JPEG 填白色、PNG 透明。返回新图片路径。
媒体信息
不可见组件:读取音乐、视频文件里写着的信息——歌名、歌手、专辑、年份、流派、时长、视频尺寸,以及专辑封面 (自动存成图片文件,可以直接显示在图像组件上,或交给本地通知的媒体通知当封面)。 来源可以是素材文件名、手机里的文件路径或网址;读取在后台进行,完成后触发信息已读取。
使用指导媒体信息:读取音频、视频文件的歌名、歌手、专辑、时长、视频尺寸和专辑封面(存成图片文件)查看 →
快速上手:显示歌曲信息和封面
when Screen1.Initialize() {
媒体信息1.Load("qingtian.mp3")
}
when 媒体信息1.Loaded(是否成功) {
if 是否成功 {
标签_歌名.Text = 媒体信息1.Title
标签_歌手.Text = join(媒体信息1.Artist, " · ", 媒体信息1.LengthText)
图像1.Picture = 媒体信息1.CoverImage
本地通知1.ShowMedia(媒体信息1.Title, 媒体信息1.Artist, 媒体信息1.CoverImage)
} else {
标签_歌名.Text = "读不出歌曲信息"
}
}
有的文件没写歌名,标题会是空文本,这时可以直接显示文件名。
属性
- 专辑
- 专辑名。
- 艺术家
- 艺术家(歌手)。
- 封面图片
- 专辑封面图片文件的路径(读取时自动存到应用缓存目录),可直接赋给图像的「图片」;没有封面时为空文本。视频取开头附近的一帧画面。
- 流派
- 流派。
- 时长
- 时长(毫秒)。
- 时长文字
- 时长文字,如
4:29,超过一小时为1:02:03。 - MIME类型
- 文件类型,如
audio/mpeg、video/mp4。 - 标题
- 标题(歌名),文件里没写时为空文本。
- 视频高度
- 视频高度(像素),音频为 0。
- 视频宽度
- 视频宽度(像素),音频为 0。
- 年度
- 年份。
事件
- 信息已读取(是否成功)
- 读取完成。是否成功为假表示读不出来(文件不存在、格式不支持或网络错误),此时各属性清空。
方法
- 读取(源文件)
- 读取媒体文件信息:素材文件名、手机里的文件路径或网址。连续调用以最后一次为准。
平台说明
- 安卓:素材、手机文件、网址都能读(网址要下载文件头,可能要几秒)。
- 鸿蒙:只支持素材和手机里的文件,网址读取会失败。
多图选择器
不可见组件:打开系统相册,单选或多选图片,选中的图片复制到本地后返回文件路径,可直接给图像组件显示。
使用系统自带的选择器,不需要存储权限;多选可限制最多选几张。
使用指导九宫格发帖、逐张上传、选图做头像与图片保留规则的完整案例查看 →
快速上手
- 拖一个 多图选择器 到屏幕,再放一个按钮、一个图像组件和一个标签;
- 点按钮打开多选(最多 9 张),选完把第一张显示出来:
when 按钮1.Click() {
多图选择器1.MultiplePick(9)
}
when 多图选择器1.AfterMultiplePick(路径列表) {
标签1.Text = join("选中 ", length(路径列表), " 张图片")
图像1.Picture = select(路径列表, 1)
}
when 多图选择器1.AfterSinglePick(路径) {
图像1.Picture = 路径
}
属性
- MIME过滤
- 图片过滤类型,默认是 image/*。单选和多选都会使用这个过滤条件。
事件
- 多选完成时(路径列表)
- 多选完成后触发,返回复制到本地后的图片路径列表。
- 单选完成时(路径)
- 单选完成后触发,返回复制到本地后的图片路径。
- 出现错误时(操作,消息)
- 当选择器打开失败或图片保存失败时触发。
- 取消选择时(操作)
- 当用户取消图片选择器时触发。
方法
音频播放器
播放音频和控制手机振动的多媒体组件。多媒体文件名称在源文件 属性中指定,在界面设计和程序设计视图中都可以进行设置。
振动的时长只能在程序设计视图中指定,单位是ms毫秒(千分之一秒)。
有关支持的音频格式,请参阅Android支持的媒体格式。
音频播放器组件尤其适合时间较长的声音文件(例如歌曲);而音效 组件播放时间较短的声音文件则更高效(例如音效)。
属性
- 播放状态
- 报告
音频播放器是否正在播放。正在播放返回真,没有在播放则返回假。 - 循环播放
- 如果为
真,则音频播放器播放时将循环播放。正在播放时设置“循环播放”直接对当前播放生效。 - 只能在前台运行
- 如果为
真(默认选项),则音频播放器在离开当前屏幕时将暂停播放; 如果为假,则无论当前屏幕是否显示,音频播放器都会继续播放。 - 源文件
- 设置音频源文件。
- 音量
- 将音量属性设置为 0 到 100 之间的数字。小于 0 的值将被视为 0,大于 100 的值将被视为 100。
事件
- 已播放完成时()
- 表示媒体播放已结束。
- 其他播放器启动时()
- 当另一个播放器开始播放时(并且当前播放器正在播放或暂停,但未停止),会触发此事件。
方法
- 暂停()
- 如果媒体正在播放,则暂停播放。
- 开始()
- 播放媒体。如果之前暂停,则恢复播放。
如果之前已停止,则从头开始播放。
- 停止()
- 停止播放媒体,播放进度清零(即下次从头开始播放)。
- 振动(毫秒数)
- 手机振动指定的毫秒数。
音效
一种多媒体组件,可播放声音文件并根据播放次数选择振动几ms毫秒(千分之一秒),在程序设计视图中指定。声音文件的名称可以在界面设计或程序设计视图中指定。
有关支持的声音文件格式,请参阅Android支持的媒体格式。
音效组件适合播放短声音文件(例如音效);而音频播放器组件播放较长的声音文件更高效(例如歌曲)。
属性
- 最小间隔(毫秒)
- 指定调用
播放之间所需的最小间隔(以毫秒为单位)。一旦声音开始播放,所有后续的
播放调用都将被忽略,直到间隔结束。 - 源文件
- 声音文件的名称。
仅支持某些格式,请参阅http://developer.android.com/guide/appendix/media-formats.html。
事件
无
方法
- 暂停()
- 如果正在播放声音,则暂停播放。
- 播放()
- 播放声音。
- 恢复()
- 暂停后继续播放声音。
- 停止()
- 如果正在播放声音,则停止播放。
- 振动(毫秒数)
- 手机振动指定的毫秒数。
录音机
录制音频的多媒体组件。
属性
- 录音文件路径
- 指定应存储录音文件的路径。
如果此属性为空字符串,则开始录制将在适当的位置创建一个文件;如果该属性不是空字符串,则应指定现有目录中文件的完整路径,包括扩展名如 .3gp 的文件名。
事件
- 录制完成时(声音)
- 表示新创建的录音已完成,
录音文件路径提供录音文件的存储路径。 - 开始录制时()
- 表示录音机已启动,可以停止。
- 停止录制时()
- 表示录音机已停止,可以重新启动。
方法
- 开始()
- 开始录音。
- 停止()
- 停止录音。
语音识别器
使用 语音识别器 组件来收听用户说话并转换语音,使用设备的语音识别功能转换为文本。
中文网注:
-
中文的话,推荐使用“讯飞语音+”识别引擎,识别率较高,点此下载apk安装。
-
安装完成后无需设置,当触发需要识别语音时,系统会弹出对话框让你选择使用哪个识别引擎,这时选择“讯飞语音+”,点“始终”就OK了。
-
当设置语音改成英语后,读中文的话,不是将你读的中文翻译成英文,而是将你读中文的音调相近的英语内容识别出来,也就是它认为你说的是英文,按英文规则识别。
属性
- 语言
- 指定用于识别语音的语言,空字符串(默认值)将使用系统的默认语言。
使用 语言标签 指定语言带有可选的区域后缀,例如 en 或 zh-CN,支持的语言集因设备而异。
- 结果
- 返回识别器生成的最后一个文本。
- 使用兼容模式
- 如果为真,则使用单独的对话框来识别语音(默认);如果为假,则语音在后台识别,并在识别新的内容时更新。
部分结果设置为真时,识别完成可能会触发多次。一旦自上次说话以来经过了足够的时间,或者调用了
停止识别,最后一个文本结果将返回,并将部分结果设置为假以表示它是最终识别的字符串,之后不再会有更多结果返回,除非再次开始识别。更多详细信息请参考识别完成。
事件
- 识别完成(返回结果,部分结果)
- 在
语音识别器识别语音后触发该事件。如果
使用兼容模式是真,那么这个事件在识别的最后只会触发一次;如果
使用兼容模式是假,那么这个事件将触发多次,因为语音识别器会逐渐识别语音,在这种情况下,部分结果将是真。直至语音识别已完成(例如,用户已停止说话),在这种情况下,
部分结果将是假。 - 准备识别()
- 在调用
语音识别器之前触发该事件。
方法
- 识别语音()
- 要求用户说话,并将语音转换为文本。当结果可用时,将触发
识别完成事件。 - 停止()
- 用于在
语音识别器无法自动停止的情况下强制停止收听语音的功能。仅当
使用兼容模式属性设置为假时,此函数才有效。
文本朗读器
文本朗读器 组件会大声朗读给定的文本,你可以设置音高和语速。
你还可以通过提供语言代码来设置语言,这将改变单词的读法,而不是实际使用的语言。
例如,将 语言 设置为法语,并且说英语文本,听起来就像有人说带有法国口音的英语 (en)。
你还可以通过提供 国家 代码来指定国家/地区,这会影响发音。例如,英国英语 (GBR) 听起来与美国英语 (USA) 不同,并非每个国家/地区代码都会影响每种语言。
可用的语言和国家/地区取决于特定设备,并且可以使用 可用语言 和 可用国家 属性列出。
中文网注:
-
经过测试,在“系统设置” — “语言和输入”—“文本转语音” 中将首选引擎设置为讯飞后,朗读出来的内容完全就是杂乱的,不知是不是因为版本过旧,还是其他设置问题,经过一系列尝试(包括设置文本朗读器的国家及语言属性)仍然是不行的。最终只得选择“Google文字转语言引擎”(语音设置为”中文“),中文朗读的效果也非常不错。
-
无需额外申请权限:设置中配置好语音引擎就可以正常使用了,不需要再申请其他权限了。MIUI不能发声的问题已解决,详见社区。
属性
- 支持的国家
- 此设备上可用于
语音识别器的国家/地区代码列表。参考 Android 开发文档以查找这些支持国家缩写的含义。 - 支持的语言
- 此设备上可用于
语音识别器的语言列表。参考 Android 开发文档以查找这些支持语言缩写的含义。 - 国家
- 用于语音生成的国家/地区代码,这会影响发音。例如,英国英语 (GBR) 听起来与美国英语 (USA) 不同。并非每个国家/地区代码都会影响每种语言。
- 语言
- 设置
语音识别器的语言。这改变了单词的发音方式,而不是实际所说的语言。例如,将语言设置为法语并说英语文本听起来就像有人说带有法国口音的英语。 - 音高
- 设置
语音识别器的语音音高。这些值应介于 0 和 2 之间,其中较小的值会降低合成语音的音高,较大的值会提高合成语音的音高。
正常音高的默认值为 1.0。
- 结果
- 如果文本成功转换为语音,则返回
真,否则返回假。 - 语速
- 设置
语音识别器的语音语速。这些值应介于 0 和 2 之间,较低的值会减慢音调,较大的值会加快音调。
正常语速的默认值为 1.0。
事件
- 念读结束时(返回结果)
- 念读消息后触发该事件。如果消息被成功读出,则
返回结果将为true,否则将为假。 - 开始念读时()
- 在调用
文本朗读器念读消息之前触发该事件。
方法
- 念读(消息)
- 念读给定的消息。
翻译器
使用此组件在不同的语言之间翻译单词和句子。该组件需要 Internet 访问,因为它将从麻省理工学院(MIT)的服务器请求翻译(也可切换成请求商业翻译服务)。
中文网注:最终实际使用的是国外的Yandex翻译引擎。国内的话可以使用百度翻译拓展,配置自己申请的ApiKey即可进行翻译啦~
以 源语言-目标语言 的形式指定源语言和目标语言使用两个字母的语言代码。因此 en-zh 将翻译自英语翻译成中文,而 zh-en 将从中文翻译成英语。
如果省略源语言,该服务将尝试检测源语言。因此只提供 zh 将尝试检测源语言并将其翻译成中文。
注意: 翻译在后台异步进行,翻译完成后,获取翻译内容 事件将被触发。
属性
- ApiKey
- 要使用的API密钥,默认会自动填写此内容值,不需要更改它。
默认情况下无法访问MIT代理服务器,如需有效API密钥请参照《App Inventor 2 使用MIT代理的组件访问令牌的获取方法》。
事件
- 获得译文(响应代码,译文)
- 请求已完成并已返回数据(翻译)时触发该事件。
方法
- 请求翻译(待翻译至语言,待翻译文本)
- 通过提供要翻译的目标语言(例如,西班牙语的“es”、英语的“en”或俄语的“ru”)以及要翻译的单词或句子,此方法将请求翻译。一旦外部服务翻译了文本,事件
获得译文将被触发。注意: 翻译器将尝试检测源语言。你还可以指定将其添加到语言翻译之前,例如 es-ru 将指定西班牙语到俄语的翻译。
视频播放器
能够播放视频的多媒体组件。当应用程序运行时,视频播放器将在屏幕上显示为一个矩形。
如果用户触摸矩形,将在视频中出现播放、暂停、向前跳转和向后跳转控件。
App可以通过调用 播放、暂停 和 跳转 方法来控制视频播放器的行为。
视频文件应为 3GPP (.3gp) 或 MPEG-4 (.mp4) 格式。更多详细信息格式,见 Android 支持的媒体格式。
App Inventor 只允许 1 MB 以下的视频文件,并将应用程序的总大小限制为 5 MB,并非所有文件都可用于媒体(视频、音频和声音)文件。如果媒体文件太大,打包或安装应用程序时可能会出错,在这种情况下,你应该减少媒体文件的数量或它们的大小。大多数视频编辑软件,例如 Windows Movie Maker 和 Apple iMovie,可以帮助你减小视频的大小,或将视频重新编码为更紧凑的格式。
你还可以将媒体源设置为指向流式视频的 URL,但该 URL 必须指向视频文件本身,而不是播放视频的程序。
属性
- 全屏模式
- 设置视频是否应全屏显示。
- 高度
- 设置
视频播放器的垂直高度,以像素px为单位。 - 高度百分比
- 设置
视频播放器的垂直高度相对于整个屏幕高度的百分比。 - 源文件
- 设置视频文件的路径。通常,在程序包资源中这将是视频文件的名称。
- 可见性
- 设置
视频播放器是否显示在屏幕上,值是真则视频播放器显示,假则隐藏。 - 音量
- 将音量属性设置为 0 到 100 之间的数字。小于 0 的值将被视为 0,大于 100 的值将被视为 100。
- 宽度
- 设置
视频播放器的水平宽度,以像素px为单位。 - 宽度百分比
- 设置
视频播放器的水平宽度相对于屏幕宽度的百分比。
事件
- 已播放完成时()
- 表示视频播放已结束。
方法
- 取时长()
- 返回视频的持续时间(以毫秒为单位)。
- 暂停()
- 暂停视频播放。可以通过调用
开始方法在同一位置恢复播放。 - 跳转到(毫秒数)
- 跳转到视频中的指定时间(以毫秒为单位)。
如果视频暂停,则显示的帧将不会通过搜索进行更新。播放器只能跳转到视频中的关键帧,因此跳转间隔较短的时间可能实际上不会移动到不同的帧。
- 开始()
- 播放
源文件指定的媒体。 - 停止()
- 重置为视频开始位置,如果视频正在播放则暂停。
实时预览录制
不可见组件:在 App 内用摄像头录制视频(不跳转到系统相机),有两种模式,由后台录制属性决定:
| 预览模式(默认,不勾选后台录制) | 后台录制模式(勾选后台录制) | |
|---|---|---|
| 画面 | 在指定布局里显示摄像头实时画面 | 不显示画面 |
| 开始录制前 | 先调用初始化预览,等预览已启动 | 什么都不用做,直接开始录制 |
| App 最小化 / 锁屏 | 录制中断 | 继续录 |
| 切换摄像头 | 录制前可调用切换摄像头 | 开始前设置使用前置摄像头 |
| 闪光灯 | 预览后可调用设置闪光灯 | 开始前设置开启闪光灯 |
| 声音 | 录制中可静音 / 取消静音 | 开始前设置录制声音,中途不能改 |
| 拍照 | 画面显示中、未录制时可拍(完整分辨率) | 录制中拍照,不打断录制 |
| 停止录制后 | 画面继续显示,可以接着录 | 关闭摄像头 |
| 典型用途 | 自拍录像、拍视频发帖、自定义拍照界面 | 行车记录、定时监控 |
两种模式都支持画质/码率/帧率设置、暂停录制 / 恢复录制、取消录制, 结束后都触发录制完成返回视频路径。下面每个属性、事件、方法都注明了适用的模式,没注明的两种模式都可用。
使用前先用屏幕的「请求权限」申请相机权限;录制声音为真时还需要录音权限。 录好的视频保存在应用专属目录(不需要存储权限),录制期间屏幕保持常亮。原 VideoRecorder 拓展的前台、后台两个组件已合并内置为本组件。
鸿蒙上只能用预览模式:系统不允许应用在后台使用摄像头,勾选后台录制会报错;录制中也不能静音,要不录声音请在开始前把录制声音设为假。画面一律等比居中显示。
快速上手:预览模式
- 拖一个实时预览录制、一个垂直布局(改名
垂直布局_预览,宽「充满」、高 400 像素)当预览区, 再放按钮_录制、按钮_停止、一个视频播放器; - 搭下面的代码块:
when Screen1.Initialize() {
Screen1.AskForPermission("android.permission.CAMERA")
Screen1.AskForPermission("android.permission.RECORD_AUDIO")
}
when Screen1.PermissionGranted(权限名称) {
if 权限名称 == "android.permission.CAMERA" {
实时预览录制1.InitializeCamera(垂直布局_预览)
}
}
when 按钮_录制.Click() {
实时预览录制1.StartRecording()
}
when 按钮_停止.Click() {
实时预览录制1.StopRecording()
}
when 实时预览录制1.VideoRecorded(视频路径) {
视频播放器1.Source = 视频路径
视频播放器1.Start()
}
when 实时预览录制1.ErrorOccurred(错误信息) {
对话框1.ShowAlert(错误信息)
}
运行后同意权限,预览区出现摄像头画面;点「录制」开始,点「停止」保存并在视频播放器里播放。
自定义拍照界面:不录像也能用。在上面的基础上加一个 按钮_拍照 和一个图像,点按钮拍下完整分辨率的照片:
when 按钮_拍照.Click() {
实时预览录制1.CapturePhoto()
}
when 实时预览录制1.PhotoCaptured(文件路径) {
图像1.Picture = 文件路径
}
when 实时预览录制1.PhotoCaptureError(消息) {
对话框1.ShowAlert(消息)
}
快速上手:后台录制模式
- 拖一个实时预览录制,在属性面板勾选后台录制;不需要预览布局。
再放
按钮_开始、按钮_停止、按钮_拍照、一个图像、一个标签; - 搭下面的代码块:
when Screen1.Initialize() {
Screen1.AskForPermission("android.permission.CAMERA")
}
when 按钮_开始.Click() {
实时预览录制1.RecordAudio = false
实时预览录制1.StartRecording()
}
when 按钮_停止.Click() {
实时预览录制1.StopRecording()
}
when 按钮_拍照.Click() {
实时预览录制1.CapturePhoto()
}
when 实时预览录制1.PhotoCaptured(文件路径) {
图像1.Picture = 文件路径
}
when 实时预览录制1.VideoRecorded(视频路径) {
标签1.Text = join("已保存:", 视频路径)
}
when 实时预览录制1.ErrorOccurred(错误信息) {
标签1.Text = 错误信息
}
点「开始」后按 Home 键把 App 切到后台,录制继续;回来点「停止」保存。 这里关掉了录制声音,所以只需要相机权限。录制中点「拍照」不会打断录制。
属性
- 宽高比
- (仅预览模式)预览画面的宽高比:
默认、4:3、16:9。初始化预览前设置有效。 - 音频码率
- 音频编码码率(bps),默认 128000,建议 64000~320000。录制前设置有效。
- 后台录制
- 选择录制模式,默认不勾选。
在开始录制前设置;录制中修改只影响下一次录制。预览正在显示时不能用后台录制模式开始录制,要先关闭预览。
- 视频码率
- 视频编码码率(bps)。0 = 按分辨率自动(1080P 约 8 Mbps、720P 约 4 Mbps、480P 约 2 Mbps),码率越低文件越小、画面越糊。录制前设置有效。
- 摄像头方向
- 录制视频的方向:
自动(默认,按摄像头与屏幕方向)、0、90、180、270。录出的视频方向不对时手动指定。录制前设置有效。 - 自动对焦特性
- 固定值
autofocus,传给支持特性使用。 - 后置摄像头特性
- 固定值
back_camera,传给支持特性使用。 - 闪光灯特性
- 固定值
flash,传给支持特性使用。 - 前置摄像头特性
- 固定值
front_camera,传给支持特性使用。 - 开启闪光灯
- 录制时打开闪光灯常亮补光。在开始录制前设置;预览模式下也可以随时用设置闪光灯切换。
- 帧率
- 视频帧率:
30(默认)或60。录制前设置有效。 - 质量
- 视频画质:
HIGHEST设备支持的最高分辨率(默认)、LOWEST最低、1080P/720P/480P按高度匹配; 代码块里也可以写具体分辨率如1280x720。录制前设置有效。 - 录制声音
- 是否同时录音,默认为真;为真时需要录音权限。设为假时静音录制,不需要录音权限。
- 录制时长
- 当前已录制的时长(毫秒),不含暂停的时间;没在录制时为 0。
- 缩放方式
- (仅预览模式)预览画面如何放进预览区:
FitCenter完整显示(默认,可能留边)、FillCenter铺满预览区(可能裁掉边缘)。 - 使用前置摄像头
- 使用前置摄像头(自拍方向),默认后置。预览模式在初始化预览前设置(之后用切换摄像头);后台录制模式在开始录制前设置。
事件
- 预览已启动()
- (仅预览模式)摄像头画面出现在预览区后触发,此后才能开始录制。
- 预览已停止()
- (仅预览模式)调用关闭预览或预览区被销毁后触发。
- 摄像头已切换(是前置摄像头)
- (仅预览模式)切换摄像头成功后触发,参数表示当前是否为前置摄像头。
- 出现错误时(错误信息)
- 出错时触发,参数是中文原因,例如没有摄像头或录音权限、摄像头打开失败、模式用错 (如后台录制模式下调用了初始化预览,或预览模式下没初始化预览就开始录制)。 调用取消录制后也会触发,参数为“录制已取消”。
- 拍照失败(消息)
- 拍照失败时触发,例如还没初始化预览、预览模式正在录制、上一张还没拍完。
- 拍照完成(文件路径)
- 拍照成功后触发,参数是 jpg 照片的完整路径(在应用专属目录)。
- 已静音()
- (仅预览模式)静音生效后触发。
- 录制已暂停()
- 调用暂停录制成功后触发。
- 录制已恢复()
- 调用恢复录制成功后触发。
- 录制已开始()
- 录制真正开始时触发。
- 已取消静音()
- (仅预览模式)取消静音生效后触发。
- 录制完成(视频路径)
- 录制停止并保存后触发,参数是 mp4 文件的完整路径(在应用专属目录,不需要存储权限)。 可交给视频播放器播放、Web 上传,或用信息分享器分享到相册。
方法
- 取消录制()
- 停止录制并删除这段视频,不触发录制完成,而是触发出现错误时(录制已取消)。两种模式都可用。
- 拍照()
- 拍一张照片,成功触发拍照完成,失败触发拍照失败。
- 预览模式:预览画面显示中、没在录制时可拍,拍的是完整分辨率照片(最高约 1200 万像素,宽高比与预览一致),方向跟随屏幕; 设置了摄像头方向时按该方向。录制中不能拍,先停止录制。
- 后台录制模式:正在录制时拍一张,不打断录制。
- 设置闪光灯(开启)
- (仅预览模式)预览启动后打开或关闭闪光灯(常亮补光)。摄像头没有闪光灯时触发出现错误时。 后台录制模式请在开始前设置开启闪光灯属性。
- 获取支持的画质()
- 返回可用的画质列表:
HIGHEST、LOWEST,以及当前摄像头支持的具体分辨率(如1920x1080)。 - 有录音权限()
- 是否已有录音权限。
- 初始化预览(容器)
- (仅预览模式)在指定布局里显示摄像头画面(会清空这个布局里原有的组件),完成后触发预览已启动。 需要已获得相机权限;再次初始化前先关闭预览。勾选了后台录制时调用会报错。
- 支持特性(特征)
- 设备是否支持指定特性:
back_camera、front_camera、flash、autofocus(可用对应的特性属性取值)。 - 闪光灯已开启()
- 闪光灯当前是否开着。
- 静音()
- (仅预览模式)录制中暂停采集声音,画面继续录;停止后自动合成为一个视频。后台录制模式请在开始前设置录制声音。
- 暂停录制()
- 暂停录制(安卓 7.0 及以上),暂停的时间不计入视频。
- 请求录音权限()
- 打开本应用的系统权限设置页,引导用户开启录音权限。
- 恢复录制()
- 恢复暂停中的录制。
- 开始录制()
- 开始录制,成功后触发录制已开始。预览模式需先初始化预览并等到预览已启动; 后台录制模式直接调用,会自己打开摄像头。录制声音为真时需要录音权限。
- 关闭预览()
- (仅预览模式)关闭摄像头并移除预览画面;正在录制时先停止并保存。
- 停止录制()
- 停止并保存视频,触发录制完成。预览模式下画面继续显示,可以接着录;后台录制模式下同时关闭摄像头。
- 切换摄像头()
- (仅预览模式)在前置、后置摄像头之间切换,录制中不能切换。后台录制模式请在开始前设置使用前置摄像头。
- 取消静音()
- (仅预览模式)恢复声音采集(需要录音权限)。
扫码添加客服咨询