close

SL4A 主要有3個部分:Script Interpreters、Android RPC client 跟 Facades。Script Interpreters 就是語言的翻譯器,用來翻譯電腦語言。然後每個執行的 script 就是一個 RPC client ,會與 SL4A 的主體,也就是 RPC server 做連結、溝通。Facades 則是提供出來的 API,在 script 裡面只能呼叫這些 API 來控制手機。

SL4A 的安裝相當簡單,就是到 http://code.google.com/p/android-scripting/ 下載 apk,然後以 adb install 或是檔案總管點選該 apk 來安裝。安裝以後,你得再另外下載 interpreter 的 apk 才行,在 SL4A 的介面裡可以選。

要編寫 script,可以用互動主控台(Interactive console)或是編輯器(Script Editor),就我個人使用過的經驗,如果手機不夠快,在手機上面寫程式還蠻痛苦的,要查一些 API 也很麻煩。也可以在 PC 上編寫,然後以 adb push 把檔案放到 /sdcard/sl4a/scripts 下,再用 adb shell am start -a com.googlecode.android_scripting.action.LAUNCH_BACKGROUND_SCRIPT -n com.googlecode.android_scripting/.activity.ScriptingLayerServiceLauncher -e com.googlecode.android_scripting.extra.SCRIPT_PATH /sdcard/sl4a/scripts/your_script.py 來在背景執行該 script;前景執行的話,則改用 adb shell am start -a com.googlecode.android_scripting.action.LAUNCH_FOREGROUND_SCRIPT -n com.googlecode.android_scripting/.activity.ScriptingLayerServiceLauncher -e com.googlecode.android_scripting.extra.SCRIPT_PATH /sdcard/sl4a/scripts/your_script.py 。

另外一個方法是用 RPC,SL4A 預設不接受外來的連線,所以得要點選 "Start server",選 Public 或 Private 以後就啟動了,啟動以後,會有 icon 出現在 status bar (notification)上。接著,要做 port forwarding,因為 server 只 listen loopback device,所以要下 adb forward tcp:9999 tcp:51323 (51323 在下拉 status bar 以後可以看到)。以 python 為例,程式裡就得用 droid=android.Android(('localhost', 9999))。

使用者的介面可以用內建的 dialog API 去問,或者是 Android Layout XML,或者是 Web-Based UI,Web-Based UI 就是用 HTML+CSS+JavaScript,但這邊的處理還蠻麻煩的,HTML裡要寫 javascript,然後你的 script 要使用 while loop 去等使用者回應。

那,可以把這些包成 apk 嗎?這樣就不用讓使用者裝好幾個 apk。答案是可以,要先下載 http://android-scripting.googlecode.com/hg/android/script_for_android_template.zip ,匯入到 eclipse 以後,修改 package name,把 script 檔案放到 res/raw 路徑下,然後把 Script class 裡的 ID 改為 R.raw.your_script 就可以了。

更多有關 Android Apps with Eclipse 的事情

arrow
arrow

    elleryq 發表在 痞客邦 留言(0) 人氣()