AIR2.0 Bata 2 でNativeProcessを試してみます。Mac環境でやってるので、Windowsの人は適当に読み替えてください。
とりあえずFlash CS4でAIR2.0 Bata 2が利用できるに設定
以下を参考にしました。
Adobe AIR 2 ベータ版公開 - akihiro kamijo
http://blogs.adobe.com/akamijo/archives/2009/11/adobe_air_2_3.html
Bata2は以下よりダウンロード
Adobe Labs - Downloads: Adobe AIR 2 Beta 2
http://labs.adobe.com/downloads/air2.html
環境ができたら、CS4でAIRのプロジェクトを作ります。
今回はpingの結果をtraceで表示させてみます。
pingコマンドはターミナルで実行するとこんな感じになります。
$ ping google.com
PING google.com (66.249.89.147): 56 data bytes
64 bytes from 66.249.89.147: icmp_seq=0 ttl=51 time=10.121 ms
64 bytes from 66.249.89.147: icmp_seq=1 ttl=51 time=11.729 ms
64 bytes from 66.249.89.147: icmp_seq=2 ttl=51 time=11.633 ms
64 bytes from 66.249.89.147: icmp_seq=3 ttl=51 time=9.520 ms
まずはドキュメントクラスをこんな感じで作ります。
package
{
import flash.desktop.*;
import flash.filesystem.*;
import flash.events.*;
import flash.display.Sprite;
// pingをairから実行して、結果をtraceに表示してみる
public class NPSample extends Sprite
{
private var _process:NativeProcess;
public function NPSample()
{
addEventListener(Event.ADDED_TO_STAGE, _init);
}
private function _init(e:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE, _init);
stage.align = "LT";
stage.scaleMode = "noScale";
var info = new NativeProcessStartupInfo();
// 実行するプログラムを指定 相対パスの場合、flaのあるフォルダからのパス
var file:File = File.applicationDirectory.resolvePath("bin/ping.sh");
info.executable = file;
// 実行するプログラムに渡す引数
var args:Vector.<String> = new Vector.<String>();
args.push("google.com");
info.arguments = args;
_process = new NativeProcess();
_process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, outputHandler);
_process.addEventListener(ProgressEvent.STANDARD_INPUT_PROGRESS, progressHandler);
_process.start(info);
}
private function outputHandler(e:ProgressEvent):void
{
// pingの結果を受け取る
trace(_process.standardOutput.readUTFBytes(_process.standardOutput.bytesAvailable));
}
private function progressHandler(e:ProgressEvent):void
{
trace(e);
}
}
}
flaのあるフォルダにbinというフォルダを作ってping.shというファイルを以下の内容で作成します。
Windowsだと.batファイルとかでいけるんかな。.batはダメみたいです。
#!/bin/sh
ping "$@"
これでコンパイルするとpingの実行結果がtraceに出力されます。
こんな感じ
PING google.com (66.249.89.147): 56 data bytes
64 bytes from 66.249.89.147: icmp_seq=0 ttl=51 time=10.121 ms
64 bytes from 66.249.89.147: icmp_seq=1 ttl=51 time=11.729 ms
64 bytes from 66.249.89.147: icmp_seq=2 ttl=51 time=11.633 ms
NativeProcessを使うとOSの機能を使ったAIRアプリが作れるので、いままでAIRでは実現が難しかったアプリもつくれそうですね。
--
追記 2010.02.16
application.xml を書き換えないと動かないってのを書き忘れてました。
詳しくはこちら。
電卓を起動する AIR アプリを作ってみた | tanablog
http://blog.kaihatsubu.com/archives/001676.html
---