| 包 | flash.media |
| 类 | public class CameraUI |
| 继承 | CameraUI EventDispatcher Object |
| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 2.5 |
launch() 方法请求设备打开默认摄像头应用程序。捕获的图像或视频在为 complete 事件调度的 MediaEvent 对象中是可用的。由于默认摄像头应用程序可以各种格式保存图像或视频,无法保证返回的媒体对象能够由 AIR 运行时加载并显示。
在某些平台上,摄像头返回的 media 对象作为基于文件的媒体承诺是可访问的。在其他平台上,媒体承诺不是基于文件的,MediaPromise 对象的 file 和 relativePath 属性为 null。不要在多个平台上使用的代码中使用这些属性。
在 Android 上,如果外部存储卡不可用(例如,用户将卡作为 USB 大容量存储器设备载入),则默认摄像头应用程序不打开。此外,启动摄像头的 AIR 应用程序会丢失焦点。如果设备在运行时资源不足,可以在媒体捕获完成之前由操作系统终止 AIR 应用程序。
在某些平台上,media 对象自动存储在设备媒体库中。在图像和视频不通过默认摄像头应用程序自动存储的平台上,您可以使用 CameraRoll addBitmapData() 函数存储 media 对象。
AIR 配置文件支持:移动设备支持此功能,但桌面操作系统或 AIR for TV 设备不支持此功能。您可以使用 CameraUI.isSupported 属性在运行时测试是否受支持。有关在多个配置文件之间支持 API 的详细信息,请参阅 AIR 配置文件支持。
了解详细信息
| 属性 | 由以下参数定义 | ||
|---|---|---|---|
![]() | constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | |
| isSupported : Boolean [静态] [只读]
报告当前设备是否支持 CameraUI 类。 | CameraUI | ||
| permissionStatus : String [静态] [只读]
确定应用程序是否已被授予摄像头使用权限。 | CameraUI | ||
| 方法 | 由以下参数定义 | ||
|---|---|---|---|
CameraUI()
创建 CameraUI 对象。 | CameraUI | ||
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | |
![]() |
将事件调度到事件流中。 | EventDispatcher | |
![]() |
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | |
![]() |
表示对象是否已经定义了指定的属性。 | Object | |
![]() |
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | |
启动设备上的默认摄像头应用程序。 | CameraUI | ||
![]() |
表示指定的属性是否存在、是否可枚举。 | Object | |
![]() |
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | |
申请摄像头 UI 访问权限。 | CameraUI | ||
![]() |
设置循环操作动态属性的可用性。 | Object | |
![]() |
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | |
![]() |
返回指定对象的字符串表示形式。 | Object | |
![]() |
返回指定对象的原始值。 | Object | |
![]() |
检查是否用此 EventDispatcher 对象或其任何祖代为指定事件类型注册了事件侦听器。 | EventDispatcher | |
| 事件 | 摘要 | 由以下参数定义 | ||
|---|---|---|---|---|
![]() | [广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。 | EventDispatcher | ||
| 当用户关闭 Camera UI 而不保存图片或视频时,会调度 cancel 事件。 | CameraUI | |||
| 当用户在摄像头 UI 中捕获静态图片或视频时,将调度 complete 事件。 | CameraUI | |||
![]() | [广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。 | EventDispatcher | ||
| 当默认摄像头无法打开时,将调度 error 事件。 | CameraUI | |||
| 当应用程序申请摄像头 UI 访问权限时调度。 | CameraUI | |||
isSupported | 属性 |
permissionStatus | 属性 |
CameraUI | () | 构造函数 |
public function CameraUI()| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 2.5 |
创建 CameraUI 对象。
launch | () | 方法 |
public function launch(requestedMediaType:String):void| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 2.5 |
启动设备上的默认摄像头应用程序。
您可以使用此类捕获静态图像或视频。视频捕获使用设备上的“低品质”可携式摄像头配置文件。
调用 launch() 方法时,会调用设备上的默认摄像头应用程序。AIR 应用程序丢失焦点并等待用户捕获静态图像或完成捕获视频。一旦用户捕获了所需的媒体,AIR 应用程序会重新获得焦点,此 CameraUI 对象调度 complete 事件。如果用户取消操作,则此 CameraUI 对象调度 cancel 事件。
注意:AIR 应用程序在后台等待用户捕获图像或视频时,可能会被 Android 操作系统关闭。如果发生这种情况,用户必须重新启动应用程序。AIR 应用程序不对上一个图像捕获调度 media 事件。
您可以使用为 complete 事件调度的 MediaEvent 对象的 data 属性访问捕获的媒体文件。此属性是 MediaPromise 类的实例,您可以使用 Loader 类的 loadFilePromise() 方法将其加载到您的应用程序。请注意,设备摄像头可以用各种格式保存捕获的媒体。因此,视频很容易出问题。在 AIR 中可能无法显示捕获的媒体。
参数
requestedMediaType:String — 要捕获的媒体对象的类型。在 MediaType 类中定义此参数的有效值:
|
事件
complete: — 当捕获媒体对象时进行调度。
| |
cancel: — 当用户从本机摄像头退出而不捕获媒体对象时进行调度。
| |
error: — 当默认摄像头应用程序已在使用中时进行调度。
| |
error: — 当 AIR 应用程序在后台运行且它调用此函数时进行调度。
|
引发
PermissionError — 应用程序不具备摄像头使用权限。
|
相关 API 元素
requestPermission | () | 方法 |
public function requestPermission():void| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 24.0 |
申请摄像头 UI 访问权限。
事件
PermissionStatus: — 当用户授予/拒绝所申请权限时调度。
|
cancel | 事件 |
flash.events.Event属性 Event.type =
flash.events.Event.CANCEL| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 2.5 |
当用户关闭摄像头 UI 而不保存照片或视频时,会调度 cancel 事件。
Event.CANCEL 常量定义 cancel 事件对象的 type 属性的值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 对已取消其操作的对象的引用。 |
complete | 事件 |
flash.events.MediaEvent属性 MediaEvent.type =
flash.events.MediaEvent.COMPLETE| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 2.5 |
当用户在摄像头 UI 中捕获静态图片或视频时,将调度 complete 事件。
complete MediaEvent 的常量。
定义 MediaEvent 事件对象的 type 属性的值。此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
data | 可用媒体实例的 MediaPromise 对象。 |
error | 事件 |
flash.events.ErrorEvent属性 ErrorEvent.type =
flash.events.ErrorEvent.ERROR| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 2.5 |
当默认摄像头无法打开时,将调度 error 事件。
error 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 发生网络操作失败的对象。 |
text | 要显示为错误消息的文本。 |
permissionStatus | 事件 |
flash.events.PermissionEvent属性 PermissionEvent.type =
flash.events.PermissionEvent.PERMISSION_STATUS| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 24.0 |
当应用程序申请摄像头 UI 访问权限时调度。检查 status 属性的值,以确定是授予此权限还是拒绝此权限。
相关 API 元素
package {
import flash.desktop.NativeApplication;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.ErrorEvent;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.MediaEvent;
import flash.media.CameraUI;
import flash.media.MediaPromise;
import flash.media.MediaType;
public class CameraUIStillImage extends MovieClip{
private var deviceCameraApp:CameraUI = new CameraUI();
private var imageLoader:Loader;
public function CameraUIStillImage() {
this.stage.align = StageAlign.TOP_LEFT;
this.stage.scaleMode = StageScaleMode.NO_SCALE;
if( CameraUI.isSupported )
{
trace( "Initializing camera..." );
deviceCameraApp.addEventListener( MediaEvent.COMPLETE, imageCaptured );
deviceCameraApp.addEventListener( Event.CANCEL, captureCanceled );
deviceCameraApp.addEventListener( ErrorEvent.ERROR, cameraError );
deviceCameraApp.launch( MediaType.IMAGE );
}
else
{
trace( "Camera interface is not supported.");
}
}
private function imageCaptured( event:MediaEvent ):void
{
trace( "Media captured..." );
var imagePromise:MediaPromise = event.data;
if( imagePromise.isAsync )
{
trace( "Asynchronous media promise." );
imageLoader = new Loader();
imageLoader.contentLoaderInfo.addEventListener( Event.COMPLETE, asyncImageLoaded );
imageLoader.addEventListener( IOErrorEvent.IO_ERROR, cameraError );
imageLoader.loadFilePromise( imagePromise );
}
else
{
trace( "Synchronous media promise." );
imageLoader.loadFilePromise( imagePromise );
showMedia( imageLoader );
}
}
private function captureCanceled( event:Event ):void
{
trace( "Media capture canceled." );
NativeApplication.nativeApplication.exit();
}
private function asyncImageLoaded( event:Event ):void
{
trace( "Media loaded in memory." );
showMedia( imageLoader );
}
private function showMedia( loader:Loader ):void
{
this.addChild( loader );
}
private function cameraError( error:ErrorEvent ):void
{
trace( "Error:" + error.text );
NativeApplication.nativeApplication.exit();
}
}
}
Tue Jun 12 2018, 11:04 AM Z
隐藏继承的公共属性
显示继承的公共属性