android輸入法app開發(fā)(安卓手機(jī)添加輸入法)
今天給各位分享android輸入法app開發(fā)的知識,其中也會對安卓手機(jī)添加輸入法進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!
輸入法app怎么做
開發(fā)一個輸入法,只需要用到一個核心類和幾個可有可無的輔助類。
核心類是InputMethodService,一個輸入法幾乎所有的功能都是由它來實(shí)現(xiàn)的,包括鍵盤界面的搭建、鍵盤語言的切換、拼音漢字的轉(zhuǎn)換、候選詞的展示、文字的上屏等各種邏輯都通過這個類來實(shí)現(xiàn)。InputMethodService類有如下幾個主要方法來管理輸入法服務(wù)的生命周期:
·onCreate():輸入法開始創(chuàng)建,內(nèi)部已經(jīng)實(shí)現(xiàn)
設(shè)置theme、創(chuàng)建window、填充 rootview、設(shè)置布局方式等,我們也可以在此處
做一些初始化操作,但一定不要忘了調(diào)用supper.onCreate () ;
·onCreatelnputView():返回一個 view 作為
輸入法的鍵盤布局,通常這個view是由KeyboardView 和 Keyboard兩個輔助類生成,當(dāng)然也完全可以自定義。切換一次輸入法只會調(diào)用APP內(nèi)打開
·onCreateCandidatesView():返回一個view
來展示候選詞,這個view可有可無,會覆蓋到應(yīng)用上方,一般用半透明的背景,但市面上的輸入法一般都用來顯示拼音部分,而把候選詞放入InputView.同樣切換一次輸入法只會調(diào)用一次;
·onStartlnputView(Editorlnfo):開始輸入的
時候調(diào)用,每次喚起鍵盤或切換EditText都會調(diào)用,并把EditText的Editorlnfo傳過來,輸入法要根據(jù) Editorlnfo的信息判斷中英文、數(shù)字、回車鍵類型等,來展示不同的鍵盤,也就是動態(tài)切換 InputView的布局;
·onFinishlnput():輸入結(jié)束的時候調(diào)用,此
時可以做一些reset操作,比如隱藏CandidatesView,恢復(fù)InputView為默認(rèn)布局等;APP內(nèi)打開
·onDestroy():一般在切換其他輸入法的時候
android輸入法開發(fā),最開始編寫的時候必須要寫的有什么內(nèi)容
參考開源的輸入法程序:
這個是個日語輸入法
初步學(xué)習(xí):-1個月
1.去電驢上下一份mars的視頻。先淺淺的了解下android應(yīng)用開發(fā)、整體架構(gòu)和思路。mars的視頻做的挺不錯。
2.在eclipse中導(dǎo)入api demos。在手機(jī)/模擬器上運(yùn)行apidemos,里面的實(shí)例非常棒。可以把例子中涉及到項(xiàng)目的地方標(biāo)注下,然后著重看看這部分的代碼.
逐漸深入:-3個月
1.有選擇的閱讀android api中的Dev Guide部分。
2.閱讀android中的resources部分。
上面的文章比較多,也不需要全部閱讀。只是在做過初步工作后,有選擇性的著重看一些相關(guān)內(nèi)容。相關(guān)內(nèi)容應(yīng)該不僅僅包括項(xiàng)目直接相關(guān)的,還包括一些平臺基礎(chǔ)知識。這些東西應(yīng)如何選擇是在初步學(xué)習(xí)階段中應(yīng)該明確的。
3.有空上上android相關(guān)比較好的社區(qū),看看高手總結(jié)。如eoe、bus之類的。
準(zhǔn)備階段:-3個月
閱讀開源的項(xiàng)目。
樓下有的朋友也提了一些建議。我覺得都挺好的,到了這個時候就該開始閱讀源碼進(jìn)行學(xué)習(xí)了。
這里的關(guān)鍵在于慢慢扣源碼,先找容易看到的類??粗⑨屄斫?,碰到不熟悉的類就查android的api。
閱讀是個長期的過程,然后必須要產(chǎn)生一些成果:
a.與輸入法相關(guān)的關(guān)鍵接口有哪些?關(guān)鍵類有哪些,職責(zé)是什么?
b.輸入法的架構(gòu)是怎樣的?組件之間如何交互?
c.數(shù)據(jù)從哪里來?如何進(jìn)行組織?
3.開發(fā)階段:
迭代開發(fā)。從最小的原型開始做起。
最小原型包括:最基本的輸入法功能,輸入字母,確定輸入,顯示字典,選擇完成輸入。最基礎(chǔ)的測試數(shù)據(jù)。
在完善輸入法基本功能上迭代開發(fā)。包括聯(lián)想輸入,更智能的分詞,以及符號和手寫識別等。還有ui美化等等。
既然你這邊有學(xué)c的同學(xué),那么在一些關(guān)鍵瓶頸方面。也可以使用NDK做后續(xù)優(yōu)化。
如何在應(yīng)用開發(fā)android中添加中文輸入法
首先你要在手機(jī)上裝有中文輸入法。
如果是程序調(diào)用指定的中文輸入法就用InputMethodManager.setInputMethod (IBinder token, String id),函數(shù)可以在sdk中看相關(guān)說明。
如果是手機(jī)上設(shè)置默認(rèn)的話,設(shè)置-語言和輸入法-默認(rèn)- 然后在彈出框中選擇你想要的輸入法。
android ui怎么開發(fā)出搜狗輸入法的程序
一、結(jié)構(gòu)
public final class InputMethodManager extends Object
Java.lang.Object
android.view.inputmethod.InputMethodManager
二、類概述
整個輸入法框架(IMF)結(jié)構(gòu)的核心API,應(yīng)用程序之間進(jìn)行調(diào)度和當(dāng)前輸入法交互。你可以用Context.getSystemService()取得這一接口的實(shí)例。
架構(gòu)總述(Architecture Overview)
輸入法框架(IMF)共有三個主要部分:
* 輸入法管理器,管理各部分的交互。它是一個客戶端API,存在于各個應(yīng)用程序的context中,用來溝通管理所有進(jìn)程間交互的全局系統(tǒng)服務(wù)。
* 輸入法(IME) ,實(shí)現(xiàn)一個允許用戶生成文本的獨(dú)立交互模塊。系統(tǒng)綁定一個當(dāng)前的輸入法。使其創(chuàng)建和生成,決定輸入法何時隱藏或者顯示它的UI。同一時間只能有一個IME運(yùn)行。
* 客戶應(yīng)用程序,通過輸入法管理器控制輸入焦點(diǎn)和IME的狀態(tài)。一次只能有一個客戶端使用IME。
應(yīng)用程序(Applications)
大多數(shù)情況下,使用標(biāo)準(zhǔn)TextView或其子類的應(yīng)用程序只要做少量工作就可以讓軟鍵盤(soft input methods)正常工作。你要注意的是:
* 正確設(shè)置你的可編輯文本視圖inputType,這樣輸入法有足夠的上下文幫助用戶向其輸入文本。
* 當(dāng)輸入法顯示時妥善處理隱藏屏幕空間。理想的情況下應(yīng)用程序應(yīng)處理窗口變小,如必要你可以利用系統(tǒng)執(zhí)行平移窗口。你應(yīng)在活動(activity)中設(shè)置windowSoftInputMode屬性或調(diào)整創(chuàng)建窗口的相應(yīng)值,以便系統(tǒng)決定平移或縮放(它會嘗試自動調(diào)整但可能出錯)。
* 你還可以通過相同的windowSoftInputMode控制窗口的首選軟鍵盤狀態(tài)(打開、關(guān)閉等)。
通過API可以與IMF及其IME交互實(shí)現(xiàn)更細(xì)致的控制,如顯示或輸入?yún)^(qū)域,用戶選取某輸入法等。
當(dāng)你編寫自己的文本編輯器的時候,你要實(shí)現(xiàn)onCreateInputConnection(EditorInfo)以返回你的InputConnection的接口實(shí)例,用來允許IME和你的文本編輯域來交互。
輸入法(Input Methods)
一個輸入法(IME)是Service(服務(wù))的實(shí)現(xiàn),通常繼承自 InputMethodService。IME提供核心的 InputMethod接口,盡管提供InputMethod通常是由InputMethodService來處理,而IME的實(shí)現(xiàn)只需要處理更高層的API。
更多信息參閱InputMethodService。
安全(Security)
輸入法關(guān)系到許多安全問題,因其基本不受約束地驅(qū)動UI并監(jiān)視用戶輸入。Android輸入法框架還允許調(diào)度第三方IME,所必須小心以限制他們的選擇和相互作用。
以下是IMF背后安全架構(gòu)的要點(diǎn):
* 只允許系統(tǒng)訪問經(jīng)BIND_INPUT_METHOD權(quán)限許可訪問IME的InputMethod接口。通過綁定到要求這個權(quán)限的服務(wù)來強(qiáng)制實(shí)現(xiàn)這一點(diǎn)。所以系統(tǒng)可以保證沒有不被信任的客戶端在它的控制之外訪問到當(dāng)前的輸入法。
* IMF中可能有許多客戶進(jìn)程,但在同一時間只有一個是激活的。未激活客戶端不能與IMF核心交互通過下述機(jī)制實(shí)現(xiàn)。
* 輸入法客戶端只可訪問InputMethodSession接口。每個客戶端創(chuàng)建一個接口實(shí)例,只有與激活客戶相關(guān)聯(lián)的會話的調(diào)用才會被IME處理。這點(diǎn)通過普通IME的 AbstractInputMethodService執(zhí)行,必須由IME顯式的處理,而IME正是InputMethodSession的自定義實(shí)現(xiàn)。
* 只有激活的InputConnection接受操作。IMF通知每個客戶進(jìn)程是否激活,IMF忽略非激活進(jìn)程對當(dāng)前輸入聯(lián)接的調(diào)用。這確保了當(dāng)前IME只將事件和文本編輯交付用戶可見焦點(diǎn)的UI。
* 一個IME永遠(yuǎn)不能在屏幕關(guān)閉時與 InputConnection交互。這是通過當(dāng)屏幕關(guān)閉時所有客戶端無效,并防止不良IME在用戶無法關(guān)注其行為時驅(qū)動UI。
* 客戶應(yīng)用程序可以要求系統(tǒng)選取一個新的IME,但不能編程式選擇之一。這是避免惡意程序在用戶導(dǎo)航到其它應(yīng)用程序時,選擇自己的IME并保持運(yùn)行。也就是說,IME可以編程式的要求系統(tǒng)選擇其它IME,因它完全控制了用戶輸入。
用戶在可切換至一個新的IME前必須顯式的啟用它,以確認(rèn)系統(tǒng)了解它,使其處于可用狀態(tài)。
關(guān)于android輸入法app開發(fā)和安卓手機(jī)添加輸入法的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。