すべて
データの持ち運びに便利な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
本アプリケーションは、Adobe AIR 2.0 のマスストレージデバイスの検出機能を利用しています。
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;
}
}
}



今回はAdobe AIR 2.0 は新機能である「ストレージデバイスの検出」機能を使用しました。他にもネイティブプロセスのサポート等、AIR 単体ではなく他のデバイスとの組み合わせを利用した、更に広い分野での活用を期待出来ます。
このアプリは、写真を友達にあげたりするときに、何かもうひとつコミュニケーションツールとしての役割を果たせるよう なアプリにできるのではないでしょうか。将来的には、印刷サービスへデータを送信して、印刷したものを受け取ったり、Adobe InDesignと連携したパブリッシングソリューションへの組み込みなどサービスへの展開を考えています。
今後のAdobe AIR 2.0 にはAndroid 等の携帯端末への対応が可能になれば、さらにいろんなサービス展開への期待が膨らみます。
Tutorials and samples |