# 注音輸入法Survey結果(Android) survey時間:2022/02/23~2022/03/04 ## 簡述 Q:**做中文注音鍵盤可能需要面對什麼困難?** A:鍵盤本身並不困難,困難的是實現注音輸入法與自動選字 >實作注音輸入法需要考量的幾個問題:(註:手機輸入習慣與電腦打字不同) 當使用者輸入ㄅ,可以簡單列出所有ㄅ發音開頭的單個漢字,但如何考慮優先序? 當使用者輸入ㄅㄅ,自動選字如何預判應該出現什麼字詞?(爸爸、掰掰、拜拜、掰餔、八八?) 絕不可能出現(==所有ㄅ發音開頭的單個漢字==X==所有ㄅ發音開頭的單個漢字==)的組合,因為這些組合中絕對有些無法拼為日常字詞。 當使用者輸入ㄐㄊㄨㄕㄇㄒㄒㄧㄚㄩ(今天為什麼下雨),自動選字又如何預判應該出現什麼字詞? >假設: 作為一個手機軟鍵盤的使用者, 是否能夠容忍輸入一個注音符號,自動選字所花費的時間就長達1-2秒以上? 是否能夠忍受需要一直滾動才能找到常用的字詞? 由以上的假設,可以概略理解自動選字的核心關鍵在於==對詞庫搜尋的速度==與==所有可能字詞的優先序排列==。 --- ## Android中實現自動選字嘗試的方法 ### [SpellCheckerSession](https://developer.android.com/reference/android/view/textservice/SpellCheckerSession) 這是由官方提供的拼字檢查API,相關資訊並不是很多,初步嘗試Locale.ENGLISH的設定可以運作。但當嘗試將Locale切換為其他地區則失敗。 ### [2010官方提供的注音輸入法](https://code.google.com/archive/p/android-traditional-chinese-ime/source/default/source) 因為資源老舊,有做一些調整放到自己的[github](https://github.com/yemugogogo/GoogleSoftKeyboard),想快速跑code看可以直接載調整過後的。 [操作影片](https://drive.google.com/file/d/1-B5uDyaoIDmsSlREEbwT1sITt_-WO_yZ/view?usp=sharing) 如影片所示,這樣的輸入法(2011資源)已經不符合當前(2022)的使用者體驗。 ### [js注音](https://github.com/timdream/jszhuyin/) 這是由javascript為框架寫的library,是目前找到最理想的注音輸入法實作,然而Android Studio無法直接跑javascript library,想到三種方式有機會可以實現: 1. #### 找到方法讓Android Studio IDE能夠直接使用javascript library 這樣的做法沒有做太深入的嘗試,因為不太確定尋找資源的方向,也不保證即使成功串接會不會產生更多後續未知的問題。 2. #### 使用javascript寫鍵盤App 因為對javascript語法完全陌生,因此在目前為止的嘗試中暫不考慮該方法。 3. #### 根據javascript注音的邏輯復刻成Kotlin version的App js注音原理是將小麥詞庫壓縮為某種結構的binary data,以此達到節省空間與快速搜尋的目標。(空間越小,搜尋速度越快) 該做法是選擇花費較多時間嘗試的做法,也是個人認為最可行的做法。最終放棄原因: * 時間成本考量 * javascript 與 kotlin 對應語法部分轉換遇到困難 * 對binary data存取操作不熟悉 ### 未嘗試作法 * decompile 市場其他鍵盤產品APK
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up