作成日

18 November 2009

はじめに

データの持ち運びに便利なUSB メモリを使って、写真を飾ったりできるアプリのサンプルです。機能的には基本的な実装だけですが、これだけでも、Adobe AIR 2.0 アプリの可能性を感じることができると思います。

ダウンロード

重要: このサンプルアプリケーションは、AIR 2 betaの機能を体験するために作成されています。お試しになる場合は、AIR 2 beta ランタイムを先にインストールする必要があります。なお、既にAIR 1.xのランタイムがOSにインストールされている場合は、上書きされてしまいますのでご注意ください。元に戻す場合は、AIR 2 beta ランタイムをアンインストールし、AIR 1.5.2 ランタイムをインストールします。詳細はリリースノート(英語) をご覧ください。

アプリケーションのダウンロード(.air)
コードサイニング証明書提供:グローバルサイン

ソースコードのダウンロードGoogle Code

1.概要

本アプリケーションは、Adobe AIR 2.0 のマスストレージデバイスの検出機能を利用しています。

  • USB メモリ等を認識し、保存されている画像をアプリ上にリスト表示させます。
  • 小さなスタンプ画像を写真の上に載せていくことができます。
  • 2つの画像を重ね合わせて、新画像を作成し保存します。

2.解説

ストレージデバイスの検出

Adobe AIR 2.0 でストレージデバイスの変更を検出する事が出来ます。
新しく追加された、以下のクラスを使用します。
flash.filesystem.StorageVolumeInfo StorageVolumeInfo は、ストレージデバイスへの変更を追跡するシングルトンマネージャです。
ストレージデバイスの変更時にディスパッチされるStorageVolumeChangeEvent には2種類のイベントがあります。

ストレージデバイスの追加:
StorageVolumeChangeEvent.STORAGE_VOLUME_MOUNT

ストレージデバイスの削除:
StorageVolumeChangeEvent.STORAGE_VOLUME_UNMOUNT
flash.filesystem.StorageVolume StorageVolume は、ストレージデバイスのプロパティを保持します。

addEventListeners でストレージデバイスのイベント検出設定
現在接続しているストレージデバイスの一覧を取得し addItem でリストに追加します。

var storageVolumes:Vector.<StorageVolume> =StorageVolumeInfo.storageVolumeInfo.getStorageVolumes(); var length:int = storageVolumes.length; addEventListeners(); for (var i:int = 0; i < length; i++) { addItem(storageVolumes[i]); }

ストレージデバイスの検出イベントを定義します。
StorageVolumeChangeEvent.STORAGE_VOLUME_MOUNT を検出時に addItem を実行
StorageVolumeChangeEvent.STORAGE_VOLUME_UNMOUNT を検出時にremoveItemByNativePath を実行します。

private function addEventListeners():void { StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolume ChangeEvent.STORAGE_VOLUME_MOUNT, function (event:StorageVolumeChangeEvent):void { addItem(event.storageVolume); } ); StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolume ChangeEvent.STORAGE_VOLUME_UNMOUNT, function (event:StorageVolumeChangeEvent):void { var nativePath:String = event.rootDirectory.nativePath; removeItemByNativePath(nativePath); }); }

ストレージデバイスをリストへ追加します。
Windows のシステムドライブ(C:やD:等)は StorageVolume の name プロパティがnull になるため、ドライブ名を名称としています。

private function addItem( storageVolume:StorageVolume ):void { var object:Object={}; if(storageVolume.name) { object.name=storageVolume.name; } else { object.name=storageVolume.drive; } object.icon = storageVolume.rootDirectory.icon.bitmaps[2]; object.nativePath = storageVolume.rootDirectory.nativePath; object.isWritable = storageVolume.isWritable; object.isRemovable = storageVolume.isRemovable; storageCollection.addItem( object ); }

ストレージデバイスをリストから削除します。
デバイスリストから同じ nativePath のデバイスを検索し、リストから削除します。

private function removeItemByNativePath( nativePath:String ):void { var len:Number = this.storageCollection.length; var object:Object; for ( var i:int=0; i<len; i++ ) { object = this.storageCollection.getItemAt( i ); if ( object.nativePath == nativePath ) { this.storageCollection.removeItemAt( i ); break; } } }

3.使い方

3-1

  1. アプリケーションを起動した状態で、USB メモリ等をPC に接続します。
  2. 編集画像選択ツリーに、認識されたUSB メモリ等が自動で表示されます。
  3. 編集画像選択ツリーより、編集したい画像の入ったフォルダを選択します。
  4. 右側サムネイルより、編集したい画像を選択します。
  5. 「選択」ボタンを押下する事で、テンプレートとの組み合わせ画面へ移行します。

3-2

  1. 左側プレビュー画面に、選択した画像が表示されています。
  2. 右側テンプレート集をクリックする事で、選択した画像とテンプレートを組み合わせて左側プレビュー画面に表示されます。また、スタンプ機能で、スタンプを押すことができます。
  3. 写真下部のスライダで、画像の大きさを変更させられます。
  4. 「保存」ボタンを押下する事で、テンプレートと組み合わせた画像の保存が出来ます。
  5. 「画像選択へ戻る」ボタンを押下する事で、編集画像の選択へ戻る事が出来ます。また、「閉じる」ボタンを押下する事で、アプリケーションを終了させます。

おわりに

今回はAdobe AIR 2.0 は新機能である「ストレージデバイスの検出」機能を使用しました。他にもネイティブプロセスのサポート等、AIR 単体ではなく他のデバイスとの組み合わせを利用した、更に広い分野での活用を期待出来ます。

このアプリは、写真を友達にあげたりするときに、何かもうひとつコミュニケーションツールとしての役割を果たせるよう なアプリにできるのではないでしょうか。将来的には、印刷サービスへデータを送信して、印刷したものを受け取ったり、Adobe InDesignと連携したパブリッシングソリューションへの組み込みなどサービスへの展開を考えています。
今後のAdobe AIR 2.0 にはAndroid 等の携帯端末への対応が可能になれば、さらにいろんなサービス展開への期待が膨らみます。