這個功能其實是根據使用者手指按到 Virtual Keyboard 上哪一點(螢幕上的 x,y 座標),實時計算出來的。例如我按到 S 鍵的右上角,那麼 Virtual Keyboard 記錄的實際上可能是 S,D,W,E 四個鍵,按可能性排列。用上面的例子來說明,輸入 "ancroud",實際上 Keyboard 記錄的鍵可能分別是:
(aqw)(njmb)(cdxf)(rtf)(okl)(uij)(dsef)
Virtual Keyboard 根據字典,把上面的一串字母所有可能組成的字給找出來,就得到 "android" 這個字了。
好了,那麼為什麼實體鍵盤做不到這個效果呢,原因是實體鍵盤每個按鍵只是對應一個 key code 而不是一個座標,例如你按 S 鍵,系統就只會得到 S 一個 key code,系統本身並不可能知道附近還有Q,W,A,E,D,Z,X等等的按鍵。而不同的 Android 手機的實體鍵盤的位置各有不同,因此也不可能預設 Q 鍵就一定是在 S 附近。例如下面兩種實體鍵盤:
對 G1 來說 D 鍵附近是 E,R,S,F,X,C
如果要為實體鍵盤加上 auto correction 不是不可能,只是
1. 每種不同的手機可能要分別自行設定各個按鍵附近的鍵
2. auto correction 的效果可能沒有 Virtual Keyboard 那麼好
因此 Android 內建的 Keyboard 選擇了放棄實體鍵盤的 auto correction。
No comments:
Post a Comment