版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——Android輸入法架構(gòu)學(xué)習(xí)報(bào)告安卓輸入法框架(InputMethodFramework)IMF
一.輸入法框架簡(jiǎn)介
自Android平臺(tái)1.5版本以后,Google開(kāi)放了Android平臺(tái)輸入法框架(InputMethodFramework,IMF),IMF是Android平臺(tái)的特色設(shè)計(jì)。它的出現(xiàn)大大推動(dòng)了不帶實(shí)體鍵盤(pán)的設(shè)備的誕生。同時(shí),Android平臺(tái)輸入法框架也給出了輸入法的開(kāi)發(fā)所需要的接口,為Android平臺(tái)的輸入法提供了可擴(kuò)展性。
二.輸入法框架組成
一個(gè)IMF結(jié)構(gòu)中包含三個(gè)主要的部分:
●(輸入法服務(wù))inputmethodmanager(IMM):管理各部分的交互,是一個(gè)客戶(hù)端API,存在于各個(gè)應(yīng)用程序的context中,用來(lái)溝通管理所有進(jìn)程間交互的全局系統(tǒng)服務(wù),可以通過(guò)Context.getSystemService()來(lái)獲取一個(gè)InputMethodManager的實(shí)例。
●(輸入法應(yīng)用)inputmethod(IME):實(shí)現(xiàn)一個(gè)允許用戶(hù)生成文本的獨(dú)立交互模塊。系統(tǒng)綁定一個(gè)當(dāng)前的輸入法。使其創(chuàng)立和生成,決定輸入法何時(shí)隱蔽或者顯示它的UI。同一時(shí)間只能有一個(gè)IME運(yùn)行。
●(客戶(hù)端)clientapplication:通過(guò)輸入法管理器控制輸入焦點(diǎn)和IME的狀態(tài)。一次只能有一個(gè)客戶(hù)端使用IME。輸入法整體框架如圖1所示:
圖1.輸入法的總體框架
2.1IMM的實(shí)現(xiàn)
InputMethodManagerService.java是整個(gè)系統(tǒng)當(dāng)中,一切與輸入法有關(guān)的地方的總控制中心。它通過(guò)管理下面三個(gè)模塊來(lái)實(shí)現(xiàn)系統(tǒng)的輸入法框架。(1)WindowManagerService
負(fù)責(zé)顯示輸入法,接收用戶(hù)事件。(2)InputMethodService
輸入法內(nèi)部規(guī)律,鍵盤(pán)布局,選詞等,最終把選出的字符通過(guò)commitText提交出來(lái)。
(3)InputManager
由UI控件(View,TextView,EditText等)調(diào)用,用來(lái)操作輸入法。譬如,開(kāi)啟,關(guān)閉,切換輸入法等。2.2輸入法應(yīng)用組成
在IMF中,最主要的是輸入法應(yīng)用,他繼承于A(yíng)bstractInputMethodService。InputMethodService主要由以下幾個(gè)組件構(gòu)成,其中包括完成輸入法的相關(guān)UI和文字的輸出。
(1)軟鍵盤(pán)視圖(SoftInputView)
這是軟鍵盤(pán)的輸入?yún)^(qū)域,主要完成在觸摸屏下和用戶(hù)的交互輸入。onCreateInputView()被調(diào)用來(lái)進(jìn)行軟鍵盤(pán)視圖的實(shí)例化;onEvaluateInputViewShown()決定是否顯7K軟鍵盤(pán)視圖;當(dāng)狀態(tài)改變的時(shí)候,調(diào)用updateInputViewShownO來(lái)重新決策是否顯示軟鍵盤(pán)視圖。
(2)候選字視圖(CandidatesView)
CandidatesView也是輸入法中一個(gè)相當(dāng)重要的組件。當(dāng)用戶(hù)輸入字符的時(shí)候,顯不相關(guān)的列表。中止輸入的時(shí)候,就會(huì)自動(dòng)消失。onCreateCandidatesView()來(lái)實(shí)例化自己的輸入法。和軟鍵盤(pán)視圖不同的是,候選字視圖對(duì)整個(gè)UI布局不會(huì)產(chǎn)生影響。setCandidatesViewShown(boolean)用來(lái)設(shè)置是否顯示候選字視圖。
(3)輸出字符
字符的輸出是InputMethodService最核心的功能,輸入法通過(guò)InputConnection從IMF來(lái)獲得字符輸出。并且通過(guò)不同的編輯器(editor)類(lèi)型來(lái)獲取相應(yīng)的支持。通過(guò)onFinishlnputO和onStartInput(EditorInfo,boolean)方法來(lái)進(jìn)行輸入目標(biāo)的切換。
另外,
onlnitializelnterfaceO用于InputMethodService在執(zhí)行的過(guò)程中配置的改變;onBindlnputO切換一個(gè)新的輸入通道;
onStartInput(EditorInfo,boolean)處理一個(gè)新的輸入。
三.輸入法消息流轉(zhuǎn)機(jī)制
輸入法框架包括客戶(hù)端、輸入法服務(wù)和輸入法應(yīng)用三部分組成,如圖2所示。輸入法框架中消息的流轉(zhuǎn)機(jī)制為:當(dāng)客戶(hù)端獲得焦點(diǎn),啟動(dòng)輸入法,創(chuàng)立一個(gè)連接類(lèi)型對(duì)象,以實(shí)現(xiàn)輸入法框架各個(gè)層次間信息的傳輸。該連接類(lèi)型實(shí)現(xiàn)了InputConnection接口。
圖2.輸入法消息流轉(zhuǎn)
四.輸入法生命周期
輸入法是用戶(hù)、應(yīng)用程序之間的交互的渠道,所有的輸入法應(yīng)用都需要繼承特定的Android平臺(tái)提供的服務(wù)。Android平臺(tái)的輸入法框架為輸入法應(yīng)用定義了一個(gè)基類(lèi)InputMethodService,InputMethodService提供了一個(gè)輸入法的標(biāo)準(zhǔn)實(shí)現(xiàn)流程,定義了輸入法生命周期內(nèi)的重要函數(shù),以便利開(kāi)發(fā)人員對(duì)Android輸入法進(jìn)行擴(kuò)展。圖3即為Android輸入法生命周期。
圖3.Android輸入法生命周期
具體的實(shí)現(xiàn)步驟為:
1.當(dāng)用戶(hù)點(diǎn)擊客戶(hù)端輸入控件(如editor),客戶(hù)端控件獲得焦點(diǎn),InputMethodService啟動(dòng),調(diào)用其onCreate()函數(shù)。該函數(shù)在輸入法第一次啟動(dòng)的時(shí)候被調(diào)用,用來(lái)做初始化的設(shè)置;2.調(diào)用onCreatelnputViewO函數(shù),在該函數(shù)中創(chuàng)立鍵盤(pán)視圖(KeyboardView)并返回;
3.調(diào)用onCreateCandidatesView()函數(shù),在該函數(shù)中創(chuàng)立候選字視圖(CandidatesView)實(shí)現(xiàn)并返回;
4.調(diào)用onStartlnput()函數(shù),始接收并處理輸入內(nèi)容;
5.輸入終止后調(diào)用onFinishlnputO函數(shù)來(lái)終止當(dāng)前的輸入;6.假使移動(dòng)到下一個(gè)輸入框,則重復(fù)調(diào)用onStartlnputView和onFinishlnput函數(shù);7.在輸入法關(guān)閉的時(shí)候調(diào)用onDestroy()函數(shù)。
五.輸入法主要的類(lèi)和函數(shù)
在A(yíng)ndroid輸入法開(kāi)發(fā)過(guò)程中,下面三個(gè)類(lèi)的實(shí)現(xiàn)比較重要:
InputMethodService類(lèi):提供了好多的輸入法的基礎(chǔ)實(shí)現(xiàn),管理狀態(tài)的條款、輸入法的可見(jiàn)度、與當(dāng)前可見(jiàn)的Activity溝通;
CandidateView類(lèi):提供候選字選擇視圖,直接繼承于View。負(fù)責(zé)顯示軟鍵盤(pán)上面的那個(gè)候選區(qū)域。
LatinKeyboard類(lèi):軟鍵盤(pán)類(lèi),直接繼承與Keyboard類(lèi)。負(fù)責(zé)解析并保存鍵盤(pán)布局,并提供選詞算法,供程序運(yùn)行當(dāng)中使用。其中鍵盤(pán)布局是以XML文件存放在資源當(dāng)中的。
Android的輸入法服務(wù),通過(guò)一些接口函數(shù)與系統(tǒng)進(jìn)行交互,在這些接口中,主要接口是InputMethodService。它提供了一個(gè)輸入法的標(biāo)準(zhǔn)實(shí)現(xiàn),開(kāi)發(fā)輸入法時(shí)可以參照和自定義該實(shí)現(xiàn),表1顯示了InputMethodService接口提供的函數(shù)。
主要接口函數(shù)說(shuō)明onlnitializelnterface進(jìn)行UI的初始化,創(chuàng)立和修改時(shí)調(diào)用此接口onBindlnput在另外的客戶(hù)端和該輸入法連接時(shí)調(diào)用onStartlnput初始化整個(gè)輸入法,十分重要的一個(gè)回調(diào),它在編輯框中用戶(hù)已經(jīng)開(kāi)始輸入的時(shí)候調(diào)用onCreatelnputView創(chuàng)立輸入視圖,返回一個(gè)層次性的輸入視圖,而且只是在這個(gè)視圖第一次顯示的時(shí)候被調(diào)用onCreateCandidatesView創(chuàng)立候選框視圖,當(dāng)需要候選框顯示時(shí)調(diào)用onCreateExtractTextView全屏模式下的視圖onStartlnputView在輸入視圖被顯示并且在一個(gè)新的輸入框中輸入已經(jīng)開(kāi)始的時(shí)候調(diào)用getCurrentlnputConnection此函數(shù)呼叫應(yīng)用程序,接收原始的按鍵事件onFinishlnput終止輸入法表1.InputMethodService接口提供的函數(shù)
六.輸入法服務(wù)流程
6.1客戶(hù)端應(yīng)用注冊(cè)到輸入法系統(tǒng)服務(wù)
6.1.1創(chuàng)立LocationManger
1)客戶(hù)端應(yīng)用創(chuàng)立時(shí),調(diào)用ViewRoot(…);2)調(diào)用ViewRoot.getWindowSession(…);
3)通過(guò)調(diào)用InputMethodManager.getInstance()創(chuàng)立LocationManager對(duì)象,一個(gè)客戶(hù)端應(yīng)用只會(huì)創(chuàng)立一個(gè)LocationManager對(duì)象;
4)LocationManager對(duì)象創(chuàng)立時(shí),會(huì)創(chuàng)立一個(gè)IInputMethodClient對(duì)象,同時(shí)創(chuàng)立一個(gè)IInputContext對(duì)象;
6.1.2注冊(cè)到輸入法系統(tǒng)服務(wù)
1)調(diào)用WindowMangerService.openSession(…);2)調(diào)用WindowMangerService.Session(…);
3)調(diào)用InputMethodMangerService.addClient(IInputMethodClientclient,IInputContextinputContext,intuid,intpid),將InputMethodManager中創(chuàng)立的IInputMethodClient對(duì)象以及InputMethodManager中創(chuàng)立的IInputContext對(duì)象傳入進(jìn)去,其中uid為客戶(hù)端應(yīng)用用戶(hù)ID,pid為客戶(hù)端應(yīng)用進(jìn)程ID;
4)參與到InputMethodManagerService維護(hù)的一個(gè)列表HashMap中,其中IBinder對(duì)應(yīng)IInputMethodClient,一個(gè)InputMethodManager只有一個(gè)IInputMethodCliend。6.2客戶(hù)端應(yīng)用調(diào)用輸入法1)TextView.setText();
2)調(diào)用InputMethodManager.restartInput();3)調(diào)用InputMethodManager.startInputInner();
4)調(diào)用InputMethodManagerService.startInput(IInputMethodClient,IInputContext…);
6.3輸入法系統(tǒng)服務(wù)調(diào)用輸入法
輸入法系統(tǒng)服務(wù)調(diào)用輸入法包括輸入法系統(tǒng)服務(wù)啟動(dòng)輸入法,輸入法創(chuàng)立,輸入法系統(tǒng)服務(wù)建立與輸入法的會(huì)話(huà),輸入法系統(tǒng)服務(wù)啟動(dòng)輸入法以及輸入法服務(wù)顯示輸入法。
七.Android手機(jī)輸入法設(shè)計(jì)的主要內(nèi)容
一款手機(jī)輸入法能否得到用戶(hù)的認(rèn)可,主要取決于輸入法的易用性和高效性以及界面的美觀(guān)度。因此,IME程序的設(shè)計(jì)主要是用戶(hù)交互接口的設(shè)計(jì)和編碼轉(zhuǎn)換引擎的設(shè)計(jì)。
首先,對(duì)于軟鍵盤(pán)輸入法來(lái)說(shuō),軟鍵盤(pán)的布局設(shè)計(jì)在很大程度上影響著用戶(hù)的使用,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘭州外語(yǔ)職業(yè)學(xué)院《五官醫(yī)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西科技職業(yè)學(xué)院《中國(guó)民間美術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 濟(jì)南大學(xué)《現(xiàn)代控制理論及其仿真》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南信息職業(yè)技術(shù)學(xué)院《人體形態(tài)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南工程職業(yè)技術(shù)學(xué)院《體育舞蹈摩登》2023-2024學(xué)年第一學(xué)期期末試卷
- 衡水健康科技職業(yè)學(xué)院《生物工程實(shí)訓(xùn)理論與實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶智能工程職業(yè)學(xué)院《手繪空間快速表現(xiàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶健康職業(yè)學(xué)院《信號(hào)與系統(tǒng)理論教學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 中原科技學(xué)院《熱儲(chǔ)工程課程設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江汽車(chē)職業(yè)技術(shù)學(xué)院《土建工程基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024-2025學(xué)年八年級(jí)上學(xué)期1月期末物理試題(含答案)
- 2025年國(guó)新國(guó)際投資有限公司招聘筆試參考題庫(kù)含答案解析
- 制造車(chē)間用洗地機(jī)安全操作規(guī)程
- 2025河南省建筑安全員-A證考試題庫(kù)及答案
- 油氣田智能優(yōu)化設(shè)計(jì)-洞察分析
- 陜西2020-2024年中考英語(yǔ)五年真題匯編學(xué)生版-專(zhuān)題09 閱讀七選五
- 磚混結(jié)構(gòu)基礎(chǔ)加固技術(shù)方案
- 助產(chǎn)專(zhuān)業(yè)的職業(yè)生涯規(guī)劃
- 新《國(guó)有企業(yè)管理人員處分條例》知識(shí)競(jìng)賽考試題庫(kù)500題(含答案)
- MOOC 有機(jī)化學(xué)(上)-北京師范大學(xué) 中國(guó)大學(xué)慕課答案
- 五年級(jí)上冊(cè)脫式計(jì)算100題及答案
評(píng)論
0/150
提交評(píng)論