2010-12-02 42 views
0

我一直在編寫一個主要由硬件鍵盤輸入驅動的Android應用程序。我正在添加軟鍵盤支持,但我還沒有完成。但我離題...Android KeyEvent處理 - KeyCode或GetUnicodeChar?

最初我正在檢查傳遞給我的OnKey函數對KeyEvent類中的枚舉的整數keyCode值。夠簡單...

但我需要知道用戶是否按下了會生成>符號的鍵的組合。因此,我檢查了是否兩個ALT都被按下,並且X keyCode被傳入......但事實證明,不同電話上的不同按鍵會生成>符號。

現在,我正在檢查KeyEvent的getUnicodeChar方法的值與Unicode字符的已知值。

我的問題已解決 - 但有沒有一種可以接受的方式來進行字符檢查?大多數人不需要ALT符號,或者大多數人使用跨設備標準的軟件鍵盤?沒有內置的Unicode字符枚舉表(我知道,無論如何),所以這使得代碼也有點醜陋。只是好奇!

回答

0

我相信你是正確的,唯一的方法來檢測哪個符號/替代鍵已被按下是看unicode字符。

通常,人們只對主鍵感興趣,所以KeyCode就足夠了。

您不能依賴任何正在使用的特定IME(軟鍵盤)。還要注意,通過IME輸入的文本可以通過文本小部件通過InputConnection訪問,所以它通常不像硬件鍵盤那樣使用KeyEvents。