Android 甫推出,就受到極大的矚目,尤其是 Google 還辦了一個 Android Developer Challenge 的計畫,拿出一千萬美元的獎金,獎勵在 Android 平台上的好 idea。

我簡單地瀏覽了一下 Android 的 API,發現在上面寫 AP 實在是簡單到不行。可能學過 java 幾個月的大學生,都有辦法寫出不錯的 application。好用的 API 實在是平台興盛的要素之一啊。

然後我就不小心寫出了個(還不是真的) Android 中文注音輸入法來。這實在是因為 Android 已經準備好了一個 TextInputMethod 的 class,只要繼承之,實作出自己的 keys to input 的轉換規則,然後要用的地方再 setInputMethod() 或於其 layout xml 裡設定一下 android:inputMethod,一切就搞定了。

不過,由於我還找不到,怎樣讓這個輸入法,能夠在任何不是自己寫的程式裡開啟。在不能夠 globally activable 的情況下,還只能算是個「還不是真的」輸入法。這個問題,是目前最需要被解決的問題。

除了不能 globally activable 之外,我本來想要把輸入法表格先匯入 SQLite 資料庫裡,然後於輸入時查詢對應。一來能夠享用 SQLite 的快速查詢能力,二來 SQLite 也是 Android 官方的資料儲存方式。不過,資料庫都建好了,也用 adb push 放在文件說的標準位置,也直接用 adb shell 進去開 sqlite3 讀取都沒問題了,但不知道是我的程式寫法有問題,還是 Android 剛出來 bug 一堆,我 getContext() 之後,用 Context.openDatabase() 總是會失敗。最後只好把整個表格,hard-coded 進程式碼裡,這當然造成了啟動速度緩慢的副作用。

這個(還不是真的)Android 中文注音輸入法的執行情形如下面的影片:

由於使用了來自 OpenVanilla 的 bpmf.cin 表格,OpenVanilla 採 New BSD 授權,故本輸入法亦採同樣的 New BSD 授權[1]程式碼下載:AndroidCIN-v0.1.zip申請了一個 Google Code hosting,您可以從 androidcin 這個專案下載到 AndroidCIN-v0.1.zip


  1. bpmf.cin 表格本身有沒有 GPL 的問題,我就不清楚了。