【 摘 要 】 移動互聯網時代已經到來,各種移動終端成為了人們交流與溝通的重要工具,然而少數民族文化信息的傳遞因為輸入法的缺失而受到了一定的限制,推動和發展少數民族文化需要從最基本的文字輸入法開始。針對以上問題,本文通過對藏文的特點、藏文文字的組成、國內外對藏文文字信息編碼等方面進行了探討和研究,在此基礎上分析了Android系統輸入法框架IMF的特點、組成及工作原理。最后依據Android系統輸入法的框架通過使用各種開發工具和方法,開發出了一款藏文輸入法,并通過了在Android系統終端上的測試。文章闡述了藏文在Android系統下輸入法的設計思想以及實現過程,介紹了該技術的設計原理以及流程。
【 關鍵詞 】 軟件開發;Android系統;智能終端應用;輸入法框架IMF;藏文輸入法;系統設計與實現
【 中圖分類號 】 TP391.14 【 文獻標識碼 】 A
1 引言
隨著移動互聯網時代的到來,各種信息化應用鋪天蓋地,大量的信息在人群間傳遞,而少數民族文化也需要一展風采,藏文化作為中華文化的重要成員,在信息時代發展藏民族文化至關重要,而輸入法是發展藏文化的基礎的基礎。從移動終端來看,Android系統與IOS系統獨領風騷,可惜Android系統自Android 1.5版本到最新的4.0版本都沒有在底層實現對藏文的支持,所以很有必要攻堅克難打造一款好用的、符合藏語特點的藏文輸入法。
2 Android系統藏文輸入法設計與實現
2.1 Android系統輸入法框架IMF
IMF是input method framework的簡稱, 它是Android 1.5新添加進去的一個重要功能,用來支持軟鍵盤、各種的輸入法。按照SDK文檔的敘述,一個IMF結構中包含三個主要的部分。
input method manager:管理各部分的交互。它是一個客戶端API,是整個輸入法框架(IMF)結構的核心,存在于各個應用程序的context中,用來溝通管理所有進程間交互的全局系統服務,可以通過Context.getSystemService()來獲取一個InputMethodManager的實例。
input method:實現一個允許用戶生成文本的獨立交互模塊。系統綁定一個當前的輸入法。使其創建和生成,決定輸入法何時隱藏或者顯示它的UI。同一時間只能有一個IME運行。
client application:通過輸入法管理器控制輸入焦點和IME的狀態。一次只能有一個客戶端使用IME。
Android系統的客戶端控件主要是TextView及其子類,客戶端控件是輸入法人機交互的起點,客戶端控件與輸入法服務和輸入法應用都有交互操作。Android系統的輸入法框架為輸入法應用定義了一個基類InputMethodService。InputMethodService提供了一個輸入法的標準實現。定義了輸入法生命周期內的重要函數,提供給開發人員進行相應的處理。輸入法應用的生命周期{3}:
當用戶觸發輸入法顯示的時候(客戶端控件獲得焦點),InputMethodService啟動。
1)調用onCreate() 函數,該函數在輸入法第一次啟動的時候調用,適合用來做一些初始化的設置。
2)調用onCreateInputView() 函數,在該函數中創建KeyboardView并返回。
3)調用onCreateCandidatesView()函數,在該函數中創建候選區實現并返回。
4)調用onStartInputView()函數來開始輸入內容。
5)輸入結束后調用onFinishInput()函數來結束當前的輸入。
6)如果移動到下一個輸入框則重復調用onStartInputView和onFinishInput函數。
7)在輸入法關閉的時候調用onDestroy() 函數。
2.2 藏文輸入法實現
Android系統中藏文輸入法要依據Android輸入法框架來完成,只不過關鍵點在于如何將藏文文字實現展現和輸入。為了能在通信網絡中順利傳輸以及防范不規則編碼的出現,依據本文開發出的藏文輸入法藏文采用Unicode國際編碼。整個開發環境基于Windows XP系統,在開發過程中使用的工具有Windows XP 自帶計算器、圖片制作工具MicroMedia Fireworks、Eclipse工具(eclipse-java-indigo-win32版本)、jdk 1.6、android-sdk-windows平臺2.1版本等,而開發所參考的模型為Android系統開源輸入法實例。
2.2.1 藏文基本文字編碼轉換
藏文(Tibetan)Unicode 編碼表[范圍(0F00-0FFF)共256個],但藏文文字中30個輔音字母、4個元音符號、以及5個反寫字母(用以拼外來語)最為常用,大部分常見藏文文字可以由這些基本字組合而成;所以需要將這些基本字根的十六進制Unicode編碼進行十進制的轉換,以便能在Android系統中識別。轉換可以使用windows自帶計算器進行轉換,部分轉換編碼對應關系如表1。
2.2.2 藏文基本文字輸入法圖片制作
由于Android系統底層沒有對藏文的支持,如果在開發中直接使用編碼的話,最后完成的輸入法操作面板為亂碼“□”,界面將會無法正常使用,而Android系統中的鍵盤文件提供了圖標功能,通過圖標標簽就可以將藏文正常顯示在鍵盤面板上。所以還需要將藏文輔音字、元音字等基本字制作成小圖片,圖片大小可以為17×30像素,格式可以是png或jpg等常見圖片格式,文字制作圖片可以使用FireWorks、PhotoShop等制圖工具,字形可以從該網址查詢http://www.marathon-studios.com/unicode/U0F40/Tibetan_Vowel_Sign_O,每次只需要變化該網址中的粗體部分。endprint
2.2.3 藏文輸入法實現及測試驗證
在eclipse開發環境中將Android系統開源輸入法實例進行工程導入,并將制作的全部藏文圖標導入res\drawable目錄下,然后在res\xml目錄下新建鍵盤文件并將前面轉換和制作的圖標進行對應,比如:從字形上可以對應的十進制為3904和3984,而其對應的圖標為圖片a1,代碼如下:
其他藏文基本字以此類推,主要是做好全鍵盤的布局,以方便使用者使用。
然后在SoftKeyboard.Java中進行新建鍵盤文件的加載,定義全局私有變量private LatinKeyboard mQwertyKeyboard;在onInitializeInterface()方法中進行初始化mQwertyKeyboard = new LatinKeyboard(this, R.xml.qwerty)。最后在onKey(int primaryCode, int[] keyCodes)方法中進行鍵盤的點擊切換的代碼開發;以此,便可以完成一個集藏文、英文字母、數字、符號為一體的藏文輸入法。測試時可以在Eclipse開發環境中新建Android project工程,在工程中使用EditText組件,并將其字體顯示屬性設置setTypeface(tf),tf是Typeface實例,需要引入相應的藏文字庫,字庫可以選擇微軟的Himalaya字庫,經過測試可以完美的實現藏文文字的輸入。最終的輸入法界面及測試如圖2所示。
3 結束語
該藏文輸入法利用了Android系統輸入法框架,在其基礎之上通過一些方法巧妙的方法實現了藏文文字的展示及輸入,并且采用了Unicode編碼,符合國際國家通信網絡要求,完全可以在實際通信網絡中使用。雖然此輸入法簡單,但可以作為其他藏文輸入法的基礎,在此基礎上可以研究聯想字詞藏文輸入法和手寫輸入法,并且還可以作為開發其他少數民族文字Android系統輸入法的參考。
參考文獻
[1] 藏文 [EB/OL].百度百科.
[2] 吳兵,江荻.藏文國際編碼的發展與技術應用[EB/OL].中國知網.
[3] Android平臺輸入法開發解析 [EB/OL].百度百科.
[4] 太清-太清撰寫:藏文字母表 [EB/OL].
作者簡介:
張繼偉(1983-),男,甘肅甘谷人,本科,通信工程師;主要研究方向和關注領域:軟件設計、開發,通信技術、通信行業業務及應用系統、信息化技術及應用。endprint
2.2.3 藏文輸入法實現及測試驗證
在eclipse開發環境中將Android系統開源輸入法實例進行工程導入,并將制作的全部藏文圖標導入res\drawable目錄下,然后在res\xml目錄下新建鍵盤文件并將前面轉換和制作的圖標進行對應,比如:從字形上可以對應的十進制為3904和3984,而其對應的圖標為圖片a1,代碼如下:
其他藏文基本字以此類推,主要是做好全鍵盤的布局,以方便使用者使用。
然后在SoftKeyboard.Java中進行新建鍵盤文件的加載,定義全局私有變量private LatinKeyboard mQwertyKeyboard;在onInitializeInterface()方法中進行初始化mQwertyKeyboard = new LatinKeyboard(this, R.xml.qwerty)。最后在onKey(int primaryCode, int[] keyCodes)方法中進行鍵盤的點擊切換的代碼開發;以此,便可以完成一個集藏文、英文字母、數字、符號為一體的藏文輸入法。測試時可以在Eclipse開發環境中新建Android project工程,在工程中使用EditText組件,并將其字體顯示屬性設置setTypeface(tf),tf是Typeface實例,需要引入相應的藏文字庫,字庫可以選擇微軟的Himalaya字庫,經過測試可以完美的實現藏文文字的輸入。最終的輸入法界面及測試如圖2所示。
3 結束語
該藏文輸入法利用了Android系統輸入法框架,在其基礎之上通過一些方法巧妙的方法實現了藏文文字的展示及輸入,并且采用了Unicode編碼,符合國際國家通信網絡要求,完全可以在實際通信網絡中使用。雖然此輸入法簡單,但可以作為其他藏文輸入法的基礎,在此基礎上可以研究聯想字詞藏文輸入法和手寫輸入法,并且還可以作為開發其他少數民族文字Android系統輸入法的參考。
參考文獻
[1] 藏文 [EB/OL].百度百科.
[2] 吳兵,江荻.藏文國際編碼的發展與技術應用[EB/OL].中國知網.
[3] Android平臺輸入法開發解析 [EB/OL].百度百科.
[4] 太清-太清撰寫:藏文字母表 [EB/OL].
作者簡介:
張繼偉(1983-),男,甘肅甘谷人,本科,通信工程師;主要研究方向和關注領域:軟件設計、開發,通信技術、通信行業業務及應用系統、信息化技術及應用。endprint
2.2.3 藏文輸入法實現及測試驗證
在eclipse開發環境中將Android系統開源輸入法實例進行工程導入,并將制作的全部藏文圖標導入res\drawable目錄下,然后在res\xml目錄下新建鍵盤文件并將前面轉換和制作的圖標進行對應,比如:從字形上可以對應的十進制為3904和3984,而其對應的圖標為圖片a1,代碼如下:
其他藏文基本字以此類推,主要是做好全鍵盤的布局,以方便使用者使用。
然后在SoftKeyboard.Java中進行新建鍵盤文件的加載,定義全局私有變量private LatinKeyboard mQwertyKeyboard;在onInitializeInterface()方法中進行初始化mQwertyKeyboard = new LatinKeyboard(this, R.xml.qwerty)。最后在onKey(int primaryCode, int[] keyCodes)方法中進行鍵盤的點擊切換的代碼開發;以此,便可以完成一個集藏文、英文字母、數字、符號為一體的藏文輸入法。測試時可以在Eclipse開發環境中新建Android project工程,在工程中使用EditText組件,并將其字體顯示屬性設置setTypeface(tf),tf是Typeface實例,需要引入相應的藏文字庫,字庫可以選擇微軟的Himalaya字庫,經過測試可以完美的實現藏文文字的輸入。最終的輸入法界面及測試如圖2所示。
3 結束語
該藏文輸入法利用了Android系統輸入法框架,在其基礎之上通過一些方法巧妙的方法實現了藏文文字的展示及輸入,并且采用了Unicode編碼,符合國際國家通信網絡要求,完全可以在實際通信網絡中使用。雖然此輸入法簡單,但可以作為其他藏文輸入法的基礎,在此基礎上可以研究聯想字詞藏文輸入法和手寫輸入法,并且還可以作為開發其他少數民族文字Android系統輸入法的參考。
參考文獻
[1] 藏文 [EB/OL].百度百科.
[2] 吳兵,江荻.藏文國際編碼的發展與技術應用[EB/OL].中國知網.
[3] Android平臺輸入法開發解析 [EB/OL].百度百科.
[4] 太清-太清撰寫:藏文字母表 [EB/OL].
作者簡介:
張繼偉(1983-),男,甘肅甘谷人,本科,通信工程師;主要研究方向和關注領域:軟件設計、開發,通信技術、通信行業業務及應用系統、信息化技術及應用。endprint