CameraUI クラスについて
■CameraUI クラスについて
CameraUI クラスは、モバイルアプリケーションで利用します。
CameraUI クラスを使用すると、カメラ用のアプリケーションを起動することができます。
ユーザーがリアルタイムで撮影した画像や動画を、Adobe AIR 上で使用することができます。
■ CameraUI 機能をサポートしているか調べる
CameraUI 機能をサポートしているか調べるには、CameraUI.isSupported プロパティを使用します。
true であれば、利用可能です。
「画像選択ダイアログを表示する機能」が利用可能か調べる
import flash.media.CameraUI;
import flash.text.TextField;
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width = stage.stageWidth - 20;
text_field.height = 20;
text_field.border = true;
stage.addChild(text_field);
text_field.text = "CameraUI 機能が利用可能:" + CameraUI.isSupported;
■CameraUI クラスをインスタンス化する
new 演算子を使って、CameraUI クラスをインスタンス化します。
CameraUI オブジェクトを作成する
import flash.media.CameraUI;
// CameraUI オブジェクトを作成
var camera_ui:CameraUI = new CameraUI();
// 出力テスト
trace(camera_ui);
カメラアプリを使って撮影する
■カメラ用アプリケーションを起動する
カメラ用アプリケーションを起動するには、launch() メソッドを使用します。
このメソッドは非同期実行です。
カメラ用アプリケーションが動作している時でもプログラムが動き続けるので、必ずイベントから実行結果を得る必要があります。
CameraUI.launch ( タイプ ) :void
第01引数(略可) | String | カメラで撮影する種類を MediaType.* 型で指定 |
戻り値 | void | なし |
■第01引数 (撮影タイプ)
撮影タイプには、以下の種類があります。
定数 | 文字列 | 説明 |
MediaType.IMAGE | "image" | 写真の撮影(画像を取得) |
MediaType.VIDEO | "video" | ビデオの撮影(動画を取得) |
■使用例
使用例です。
カメラ用アプリを起動する
import flash.media.CameraUI;
import flash.media.MediaType;
import flash.events.MouseEvent;
// CameraUI 機能に対応している
if(CameraUI.isSupported){
// CameraUI オブジェクトを作成
var camera_ui:CameraUI = new CameraUI();
// マウスの左ボタンをクリックすると実行されるイベント
stage.addEventListener(MouseEvent.MOUSE_DOWN,function (e:MouseEvent):void{
// カメラ用アプリを起動する
camera_ui.launch(MediaType.IMAGE);
});
}
■launch() メソッド関連のイベントについて
■撮影が完了したか調べる
撮影が完了したか調べるには、MediaEvent.COMPLETE イベントを使用します。
引数から得られる MediaEvent オブジェクトの data プロパティから、MediaPromise オブジェクトを取得できます。
■ユーザーが撮影をキャンセルしたか調べる
ユーザーが撮影をキャンセルしたか調べるには、Event.CANCEL イベントを使用します。
■エラーが発生したか調べる
エラーが発生したか調べるには、ErrorEvent.ERROR イベントを使用します。
引数から得られる ErrorEvent オブジェクトの errorID プロパティから、エラーの原因を意味する番号が取得できます。
ユーザーが撮影したデータは、必ずしもアクセスできるとは限りません。
ErrorEvent.ERROR イベントを使用して、エラーが発生したか確認する必要があります。
■使用例
カメラ用アプリ関連のイベント
import flash.text.TextField;
import flash.media.CameraUI;
import flash.media.MediaType;
import flash.media.MediaPromise;
import flash.filesystem.File;
import flash.events.Event;
import flash.events.MediaEvent;
import flash.events.MouseEvent;
import flash.events.ErrorEvent;
// CameraUI 機能に対応している
if(CameraUI.isSupported){
// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width = stage.stageWidth - 20;
text_field.height = stage.stageHeight - 20;
text_field.border = true;
stage.addChild(text_field);
// ------------------------------------------------------------
// CameraUI オブジェクト
// ------------------------------------------------------------
// カメラロールオブジェクトを作成
var camera_ui:CameraUI = new CameraUI();
// 撮影が完了すると実行されるイベント
camera_ui.addEventListener(MediaEvent.COMPLETE,function (e:MediaEvent):void{
text_field.text = "撮影が完了した" + "\n" + text_field.text;
// MediaPromise オブジェクトを取得
var media_promise:MediaPromise = e.data;
// ファイルオブジェクトを取得
var file:File = media_promise.file;
if(file){
var str:String = "";
str += "ファイル名 : " + file.name + "\n";
str += "拡張子 : " + file.extension + "\n";
str += "サイズ : " + file.size + "\n";
str += "ファイル形式 : " + file.type + "\n";
str += "作成日 : " + file.creationDate + "\n";
str += "最終更新日 : " + file.modificationDate + "\n";
str += "クリエータタイプ(Macintosh用) : " + file.creator + "\n";
str += "ファイルのURLパス : " + file.url + "\n";
str += "各OSでのファイルパス名称 : " + file.nativePath + "\n";
str += "アイコン : " + file.icon + "\n";
str += "ディレクトリか : " + file.isDirectory + "\n";
str += "隠し属性か : " + file.isHidden + "\n";
str += "アーカイブ属性か : " + file.isPackage + "\n";
str += "ファイルが存在するか : " + file.exists + "\n";
str += "ショートカットか : " + file.isSymbolicLink + "\n";
text_field.text = str + text_field.text;
}
});
// ユーザーが撮影をキャンセルすると実行されるイベント
camera_ui.addEventListener(Event.CANCEL,function (e:Event):void{
text_field.text = "撮影をキャンセルした" + "\n" + text_field.text;
});
// エラーが発生すると実行されるイベント
camera_ui.addEventListener(ErrorEvent.ERROR,function (e:ErrorEvent):void{
text_field.text = "エラーが発生した (id:" + e.errorID + ")\n" + text_field.text;
});
// ------------------------------------------------------------
// マウスの左ボタンをクリックすると実行されるイベント
// ------------------------------------------------------------
stage.addEventListener(MouseEvent.MOUSE_DOWN,function (e:MouseEvent):void{
// カメラ用アプリを起動する
camera_ui.launch(MediaType.IMAGE);
});
}
■ユーザーが撮影した画像を、ステージに表示する
ユーザーが撮影した画像を、ステージに表示するには、Loader クラスを使用します。
Loader オブジェクトに、MediaPromise オブジェクトを読み込むには、loadFilePromise() メソッドを使用します。
カメラ用アプリで撮影した画像をステージに表示する
import flash.text.TextField;
import flash.media.CameraUI;
import flash.media.MediaType;
import flash.media.MediaPromise;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.events.Event;
import flash.events.MediaEvent;
import flash.events.MouseEvent;
import flash.events.ErrorEvent;
import flash.events.IOErrorEvent;
// 100%表示
stage.scaleMode = StageScaleMode.NO_SCALE;
// 左上整列
stage.align = StageAlign.TOP_LEFT;
// CameraUI 機能に対応している
if(CameraUI.isSupported){
// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = stage.stageHeight - 200 - 10;
text_field.width = stage.stageWidth - 20;
text_field.height = 200;
text_field.border = true;
stage.addChild(text_field);
// ------------------------------------------------------------
// Loader オブジェクト
// ------------------------------------------------------------
// ローダーオブジェクトを作成
var loader:Loader = new Loader();
// LoaderInfo オブジェクトを取得
var info:LoaderInfo = loader.contentLoaderInfo;
// 読み込みが完了すると実行されるイベント
info.addEventListener(Event.COMPLETE,function (e:Event):void{
text_field.text = "読み込みが完了した (Loader)\n" + text_field.text;
});
// 入出力エラーが発生すると実行されるイベント
info.addEventListener(IOErrorEvent.IO_ERROR,function (e:IOErrorEvent):void{
text_field.text = "入出力エラーが発生した (Loader)\n" + text_field.text;
});
// ローダーオブジェクトをステージに配置
stage.addChildAt(loader,0);
// ------------------------------------------------------------
// CameraUI オブジェクト
// ------------------------------------------------------------
// カメラロールオブジェクトを作成
var camera_ui:CameraUI = new CameraUI();
// 撮影が完了すると実行されるイベント
camera_ui.addEventListener(MediaEvent.COMPLETE,function (e:MediaEvent):void{
// MediaPromise オブジェクトを取得
var media_promise:MediaPromise = e.data;
// MediaPromise オブジェクトの読み込みを開始する
loader.loadFilePromise(media_promise);
});
// エラーが発生すると実行されるイベント
camera_ui.addEventListener(ErrorEvent.ERROR,function (e:ErrorEvent):void{
text_field.text = "エラーが発生した (CameraUI) (id:" + e.errorID + ")\n" + text_field.text;
});
// ------------------------------------------------------------
// マウスの左ボタンをクリックすると実行されるイベント
// ------------------------------------------------------------
stage.addEventListener(MouseEvent.MOUSE_DOWN,function (e:MouseEvent):void{
// カメラ用アプリを起動する
camera_ui.launch(MediaType.IMAGE);
});
}