2.6で導入されたデスクトップおよびモバイルプラットフォームの新機能について解説します。2.5以降で導入されたモバイルアプリケーション向けAPIの使用方法について解説します。新機能について今回は、モバイルアプリケーション向けAPIについて取り上げます。2.5から使用できます。2.6から使用可能になりました。AIRアプリケーションと同じようにコーディングできます。Androidにおけるデバイス使用許可の設定Androidでは各デバイスAPIを使用する場合、アプリケーションごとに使用する旨をアプリケーション記述子ファイルに明記する必要があります。下記のように、android要素のmanifestAddtions要素のmanifest要素内に、user-permission要素としてandroid:name属性に「android.permission_RECORDE_AUDIO」を設定します。</android>なお、iOSではこのような設定は必要ありません。Microphoneの使用可能の確認と取得アプリケーションを実行するデバイスにおいてMicrophoneが使用可能かどうかは、MicrophoneクラスのisSupportedプロパティの真偽値で判断します。使用可能であれば、getMicrophoneメソッドを使い、マイク入力をコントロールできるMicrophoneクラスのインスタンスを取得することができます。}マイク入力データの利用サンプル03_Microphoneでは、アプリケーションを起動するとMicrophoneインスタンスのSAMPLE_DATAイベント発生ごとに、サンプリングデータを延々と画面上に描画します。周囲の音によって波形が変わることがわかると思います。2.5から提供されたCameraUIを使うと、AndroidとiOSそれぞれ標準のカメラ機能をアプリケーション内で利用でき、ユーザが撮影した写真や動画のデータを取得することができます。OS標準のカメラ機能を呼び出すので、いったん画面が切り替わります。撮影が終わるとイベントが発生するので、そこでデータを取得して処理します。取得したカメラの画像をリアルタイムに処理して表示するときは、従来からのCameraクラスを利用します。サンプル03_Cameraでは、カメラや後で紹介するカメラロールを使った機能を含めたアプリケーションとなっています。CameraUIの使い方から解説します。Androidにおけるデバイス使用許可の設定マイクと同様にAndroidではカメラを使用する場合も、アプリケーションごとに使用する旨をアプリケーション記述子ファイルに明記する必要があります。下記のように、android要素のmanifestAddtions要素のmanifest要素内に、user-permission要素としてandroid:name属性に「android.permission.CAMERA」を設定します。</android>こちらも、iOSでは設定する必要はありません。CameraUIによる使用可能の確認と静止画の取得アプリケーションを実行するデバイスにおいてCameraUIが使用可能かどうかは、CameraUIクラスのisSupportedプロパティの真偽値で判断します。使用可能であれば、CameraUIクラスのインスタンスを生成し、MediaEventクラスのCOMPLETEイベントをハンドルします。launchメソッドの引数にMediaTypeクラスのIMAGE定数を指定して呼び出すと、静止画の撮影に移行します。}キャンセルされずに撮影が行われたときは、上記のCOMPLETEのイベントハンドラが呼び出されます。}MediaEventクラスのdataプロパティには、撮影したデータを提供するMediaPromiseクラスのインスタンスが格納されています。これをLoaderクラスのloadFilePromiseメソッドに渡すことで、撮影した画像がロードされて、画面に表示されます。先ほどのCameraUIインスタンスのlaunchメソッドの引数に、MediaTypeクラスのVIDEO定数を指定して呼び出すと、動画の撮影に移行します。}キャンセルされずに撮影が行われたときは、上記のCOMPLETEのイベントハンドラが呼び出されます。}event.dataのMediaPromiseクラスのインスタンスのfileプロパティには、撮影した動画ファイルのFileクラスのインスタンスが格納されています。Videoクラスなどを利用して、そのファイル参照し、画面上で再生することができます。iOSの場合は、動画ファイルはmovファイルとなるためVideoクラスで再生することはできません。そのためサンプル内では、StageWebViewを用いて表示しています(StageWebViewの詳細については、次回紹介します)。撮影データの方向についてカメラから取得した画像/動画の方向は、撮影時のデバイスの向きではなく、各々のデバイスで決められた方向で渡されてきます。touchでサンプル03_Cameraを使い、時計を正面(12時を上にして)から撮影したものです。縦向きで撮影した場合は、実際の撮影時に対して-90度回転した状態で取得されています。touchでは、ホームボタンが右にある状態(横向き)で撮影した場合は、撮影時の方向とデータ取得時の方向が一致します。Android端末によっては、このようになるとは限りません。OSごとではなくデバイスによって方向が異なるため、アプリケーション側で画像の回転機能を入れるなど考慮する必要があります。これはCameraクラスでも同様です。カメラロール機能カメラロールはAndroidやiOSに標準で搭載されている機能で、デバイス内(Androidの場合は、Webサービスも含む)に保存された画像ファイルをリスト表示させることができます。AIRではCameraRollクラスを使って、このカメラロールから画像を取得したり、カメラロールへ追加したりすることが可能です。カメラロールから取得できるのは静止画だけです。supportsBrowseForImageプロパティの真偽値で判断します。使用可能であれば、CameraRollクラスのインスタンスを生成し、MediaEventクラスのSELECTイベントをハンドルします。browserForImageメソッドを呼び出すと、画面がカメラロールに移行します。}キャンセルされずに画像が選択されたときは、上記のSELECTのイベントハンドラが呼び出されます。}画像データへのアクセスは、先ほどのCameraUIと同様に、event.dataに格納されたMediaPromiseクラスのインスタンスから行います。touchやAndroidのようにカメラロールが全画面で表示されず、現在の画面に吹き出しのように表示されます。4のiPadにおいて吹き出し元が隠れて左上に固定表示されるので注意が必要です。カメラロールに画像の追加カメラロールに画像を追加することもできます。この機能をサポートしているかどうかは、CameraRollクラスのsupportsAddBitmapDataプロパティの真偽値で判断します。CameraRollクラスのインスタンスを生成し、addBitmapDataメソッドにBitmapDataクラスのインスタンスを渡して呼び出すと、画像がカメラロールに追加されます。2.5以降に導入されたモバイル向けAPIについて解説しました。CameraUIとカメラロールは簡単に使うことができるため、様々なアプリケーションで利用する場面が多いと思います。途中で出てきたStageWebViewなど、次回も引き続きモバイル向けAPIについて解説していきます。モバイルAPI地域を選択してください地域を選択すると、アドビサイトで使用する言語と内容が変わります。