包 | 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