android(IS01)でJavaScriptプログラミング2
※以前別の場所で書いた文章を備忘的に書き記しておきます。
【投稿年月日】2010-11-16 【ジャンル】JavaScript
前回、サンプルとして公開したコードは以下の通り。load("/sdcard/com.googlecode.rhinoforandroid/extras/rhino/android.js");
var droid = new Android();
var result = droid.getRunningPackages();
for(var i=0; i<result.length; i++) {
print((i+1) + ". " + result[i] + " / ver." + droid.getPackageVersion(result[i]));
}
quit();
android上で動いているアプリのリストを取得する、rhinoで記述したプログラムです。var droid = new Android();
var result = droid.getRunningPackages();
for(var i=0; i<result.length; i++) {
print((i+1) + ". " + result[i] + " / ver." + droid.getPackageVersion(result[i]));
}
quit();
rhinoはサーバー型JavaScriptと言っても、もちろん異なる点はいくつかあるわけで、上記コードにもrhino独自のものが何個か用いられています。
load("/main.js"); … JavaScriptファイルを読み込む。
print("text"); … 出力。alert()に近い。
quit(); … 終了。
また、rhinoの面白さとして、Javaを呼び出すことができるところが挙げられます。importPackage()やimportClass()などを使ってJavaのクラスなどを呼び出したり、print("text"); … 出力。alert()に近い。
quit(); … 終了。
new java.lang.String("text").getBytes("UTF-8")
のように直接呼び出したりします。Javaとの連携についてはよく分かっていないので、自己学習を兼ねて後日まとめてみたいと考えています。また、androidネイティブのAPIを呼び出すこともできます。上記ソースの該当箇所は以下の通り。
load("/sdcard/com.googlecode.rhinoforandroid/extras/rhino/android.js");
var droid = new Android(); … android.jsをloadで読み込み、androidネイティブのAPIを呼び出す。
droid.getRunningPackages(); … 現在実行中のアプリを配列で返す。
droid.getPackageVersion(); … アプリのバージョンを返す。
ただし、すべてのAPIを呼び出すことはできず、現状ではかなり限定的であると言えます。今後の拡充に期待。var droid = new Android(); … android.jsをloadで読み込み、androidネイティブのAPIを呼び出す。
droid.getRunningPackages(); … 現在実行中のアプリを配列で返す。
droid.getPackageVersion(); … アプリのバージョンを返す。
利用可能なandroidのAPI一覧は下記ページを参照。
ApiReference android-scripting
code.google.com/p/android-scripting/wiki/ApiRef...
前回のソースは実用的ではないので、少し工夫をしてみます。
load("/sdcard/com.googlecode.rhinoforandroid/extras/rhino/android.js");
var droid = new Android();
var result = droid.getRunningPackages(), mail = new Array();
for(var i=0; i<result.length; i++) {
mail.push((i+1) + ". " + result[i] + " / ver." + droid.getPackageVersion(result[i]));
}
droid.sendEmail("hoge@hoge.hoge", "running app list", mail.join("\n"));
quit();
android上で動いているアプリのリストを取得し、それをメール送信するプログラムです。解説する必要がないぐらい分かりやすい変更ですね。var droid = new Android();
var result = droid.getRunningPackages(), mail = new Array();
for(var i=0; i<result.length; i++) {
mail.push((i+1) + ". " + result[i] + " / ver." + droid.getPackageVersion(result[i]));
}
droid.sendEmail("hoge@hoge.hoge", "running app list", mail.join("\n"));
quit();
今回は文章の入力はもちろん、プログラムのデバック(というほどでもないけれど)も全てIS01で行いました。パソコンに比べたら確かに不便なこともありますが、思ったよりも快適にできるものです。何より気負うことなくできるのが嬉しいです。
次回は、IS01で快適にプログラムができる環境について考察する予定です。
EDIUNET | PHP/MySQL | 独り言 | 提供サービス | JavaScript