




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
本科畢業(yè)論文基于Android的輸入法的設(shè)計與實現(xiàn)TheDesignandRealizationoftheInputMethodBasedonAndroid學(xué)院名稱:計算機(jī)科學(xué)與信息工程學(xué)院專業(yè)班級:計算機(jī)科學(xué)與技術(shù)12-1(信息技術(shù))學(xué)生姓名:學(xué)生學(xué)號:指導(dǎo)教師姓名:指導(dǎo)教師職稱:2016年5月引言隨著科學(xué)技術(shù)的進(jìn)步與發(fā)展,移動終端設(shè)備越來越普及,而且它的硬件設(shè)備越來越好,應(yīng)用軟件也層出不窮,具有很大的發(fā)展空間。目前市場上移動終端設(shè)備使用的主流操作系統(tǒng)為Android、iOS、Windowsphone,來自Statistic的數(shù)據(jù)顯示,2010年iOS與Android共同的市場份額才僅為38%,但目前兩者在移動市場上的份額已經(jīng)超過了97%,而Windowsphone目前的移動市場份額約占2.5%,且呈現(xiàn)下滑趨勢。作為移動終端設(shè)備的引領(lǐng)者,Android系統(tǒng)以其源碼開源的優(yōu)勢正處于蓬勃發(fā)展的開拓階段,可謂是如日中天。正是因為Android源碼開源,開發(fā)語言簡單,智能手機(jī)價格親民且性能體驗優(yōu)良,用戶、程序開發(fā)者越來越傾向于Android系統(tǒng)的智能機(jī),而以Android系統(tǒng)開發(fā)的應(yīng)用軟件的市場前景也是欣欣向榮。目前軟件市場雖然發(fā)展前景光明,但有市場必定存在競爭,而只有競爭才能促進(jìn)技術(shù)的進(jìn)步,性能體驗的不斷完善。市場上軟件種類繁多,而且它們的功能也都根據(jù)用戶的體驗不斷地完善與升級,用戶在使用這些軟件的時候,不可避免的會觸發(fā)輸入功能,例如微信、陌陌、記事本、電話薄…輸入功能是由單獨的輸入法APP完成的,用戶在使用輸入法功能時最基本的用戶體驗就是輸入效率,因此如何提高輸入法的輸入效率在實現(xiàn)輸入法APP時尤為重要。本設(shè)計就是根據(jù)這一需求實現(xiàn)了一款可以中英文切換的輸入法APP。在輸入時實現(xiàn)了聯(lián)想詞的功能,從而極大提高了輸入效率。且在輸入法設(shè)置中也增加了一些按鍵效果,如振動、音效,用戶反饋功能及聯(lián)想詞對否打開的控制開關(guān)。
第1章概述社會在發(fā)展,科技在進(jìn)步。曾經(jīng)交通不暢信息閉塞,如今通過互聯(lián)網(wǎng)絡(luò)我們足不出戶便聞天下事;曾經(jīng)手機(jī)塊大如磚,如今小巧精致;曾經(jīng)手機(jī)僅能通話,如今同電腦一樣功能豐富;曾經(jīng)只有英文輸入法,如今有多種語言輸入。每一種進(jìn)步都是根據(jù)人們的需求不斷努力創(chuàng)新、探索的結(jié)果。我國作為智能手機(jī)用戶的大國,如何提高中文輸入的速率、優(yōu)化輸入法字符的輸入方式已經(jīng)成為急需解決的問題。1.1選題背景科技信息技術(shù)在不斷的進(jìn)步與發(fā)展,電子移動設(shè)備也受到極大的推崇。其中最受人們推崇的就是智能手機(jī)。人們可以通過手機(jī)中的短信消息、電話薄、記事本、聊天工具、瀏覽器等進(jìn)行通訊聊天、搜索閱覽最新資訊等。但手機(jī)這些功能的實現(xiàn)都有一個最基本的前提,即支持字符輸入。最早期的輸入法軟件僅支持英文字符輸入,但隨著電子移動設(shè)備的推廣僅英文輸入已經(jīng)不能滿足廣大用戶的需求。人們已經(jīng)開始研究如何使輸入法支持輸入多種語言,甚至各種表情符號。而我國在推動移動終端設(shè)備的發(fā)展上起到重要作用,實現(xiàn)一款操作便捷、輸入效率高、支持中文輸入的輸入法APP是市場發(fā)展的必然需求。目前,實現(xiàn)中文輸入的主要技術(shù)來源是依靠國外技術(shù),國內(nèi)一些公司在研發(fā)輸入法APP時需要交納高昂的專利費用。另外,市場上輸入法APP種類雖然玲瑯滿目,例百度輸入法、搜狗輸入法、訊飛輸入法…但用戶在操作時仍會覺得操作不便,設(shè)置繁瑣等問題,因此,根據(jù)這些現(xiàn)狀開發(fā)一款操作便捷、輸入效率高的輸入法APP尤為重要。1.2軟件設(shè)計的概述1.2.1設(shè)計內(nèi)容本設(shè)計是基于Android的輸入法的設(shè)計與實現(xiàn)。主要實現(xiàn)一個第三方的輸入法apk,將該apk裝入Android系統(tǒng)的移動設(shè)備,能夠通過系統(tǒng)設(shè)置將裝入的輸入法設(shè)置為默認(rèn)輸入法,使得用戶在進(jìn)行輸入操作時均是通過該輸入法實現(xiàn)輸入。系統(tǒng)的結(jié)構(gòu)設(shè)計主要分為設(shè)置模塊、輸入模塊、用戶反饋模塊。設(shè)置模塊的功能:用戶可以根據(jù)自己的需求通過設(shè)置頁面對輸入法進(jìn)行輸入設(shè)置,如控制輸入時是否有按鍵聲音、振動;是否開啟聯(lián)想詞功能;用戶反饋功能。輸入模塊的功能:用戶可以實現(xiàn)中文輸入、英文輸入的切換,且在輸入時會產(chǎn)生聯(lián)想詞,以提高輸入效率;可以輸入0~9阿拉伯?dāng)?shù)字及其他標(biāo)點符號;在英文輸入時可以切換大小寫等。用戶反饋模塊功能:用戶可以輸入反饋信息向開發(fā)者反饋應(yīng)用的優(yōu)缺點,以便產(chǎn)品的優(yōu)化、應(yīng)用的升級。1.2.2選題目的和意義隨著移動通信設(shè)備的日益普及,人們越來越多地依賴于這些設(shè)備進(jìn)行信息處理與交流,因此如何快速準(zhǔn)確地向移動設(shè)備輸入文字信息成為當(dāng)今信息領(lǐng)域研究的熱點之一。目前,移動設(shè)備使用的輸入法主要為:數(shù)字鍵盤輸入法、手寫輸入法以及全鍵盤輸入法。由于移動設(shè)備硬件的限制,數(shù)字鍵盤輸入法成為手機(jī)中最為常用的輸入法,而我國漢字輸入的主要技術(shù)來源于國外,90%以上的手機(jī)嵌入的漢字輸入法技術(shù)使用的是國外的專利與技術(shù),這需要交納高昂的專利費用。而且,中國漢字呈現(xiàn)多樣化,目前很多輸入法雖然能實現(xiàn)中文輸入,但是有很多漢字不完全,根本無法輸入一些生僻字。因此開發(fā)一款屬于我們自己的輸入法不僅可以省去高昂的專利費用而且可以根據(jù)我們自己的需求設(shè)計出使用便捷舒適的輸入法。另外,我們通常都是用手機(jī)自帶的輸入法,如三星輸入法、google輸入法,有時我們也會根據(jù)自己的喜好下載應(yīng)用第三方的輸入法,如:搜狗輸入法、百度輸入法、訊飛輸入法等。但是我們在使用這些輸入法時或多或少會覺得有些不如意,可能認(rèn)為輸入界面設(shè)計的不合理給人視覺效果不好,或者找不到我們所需的文字或表情等。而且,未來的發(fā)展就是輸入法的“語音時代”,輸入法更加的智能與迅速,更加符合越來越快的社會節(jié)奏。因此設(shè)計一款輸入法,使其盡可能的便捷,這樣不僅加深了對Android輸入法框架的理解,還能將各種輸入法向移動設(shè)備的移植有借鑒意義。1.3國內(nèi)外研究狀況Android曾經(jīng)是舊金山一家公司的名字,于2005年8月份被Google收購。Android系統(tǒng)由于它的開放性、應(yīng)用程序無界性、應(yīng)用程序可以輕松嵌入網(wǎng)絡(luò)、并行運行等特點,已經(jīng)成為一個平臺、一個生態(tài)體系,在移動領(lǐng)域已經(jīng)得到廣泛應(yīng)用。在國外,自Google公司宣布Android系統(tǒng)上市以來,在短短的幾年內(nèi)由于開源的優(yōu)勢迅速發(fā)展,在市場上有很大的市場占有率。在國外有很多基于Android平臺開發(fā)的技術(shù)已經(jīng)相當(dāng)成熟。在國內(nèi),Android自09年進(jìn)入中國以來,由于其設(shè)備價格的親民性、移動通信設(shè)備公司的大力宣傳,受到廣大消費者的追逐。而廣大應(yīng)用程序的開發(fā)者也因為市場的需求、Android源碼的開放性、開發(fā)工具的免費性陸續(xù)轉(zhuǎn)戰(zhàn)到基于Android平臺的開發(fā)。目前國內(nèi)Android開發(fā)主要方向是應(yīng)用層開發(fā),大致可分為三類:為企業(yè)開發(fā)應(yīng)用、開發(fā)通用應(yīng)用及游戲開發(fā)。雖然Android源碼對外開放,但國內(nèi)的學(xué)習(xí)資料并不是很多,大部分學(xué)習(xí)資料都是翻譯過來的,并不全面而且可能丟失了原文所表達(dá)的含義。而對于英文文檔,由于大部分人的英語水平限制,對原文文檔理解的不是很透徹,這些都為Android技術(shù)在國內(nèi)的發(fā)展帶來了不便。1.4本章小結(jié)本章主要介紹了選題背景、設(shè)計內(nèi)容及其意義、國內(nèi)外研究狀況,充分說明輸入法APP實現(xiàn)的重要性。
第2章系統(tǒng)分析需求分析在程序開發(fā)過程中具有舉足輕重的地位。程序在開發(fā)過程中它的功能就是根據(jù)需求而來的,如果一個系統(tǒng)在開發(fā)前沒有進(jìn)行需求分析,那么投入的人力、物力、財力都是徒勞的。因為系統(tǒng)在開發(fā)前就忽略了用戶的需求,最后的結(jié)果肯定不能滿足用戶的要求。因此,需求分析在項目開發(fā)中具有決策性、方向性和策略性。2.1開發(fā)工具與環(huán)境簡介開發(fā)工具:Eclipse、Androidstudio;軟件環(huán)境:JDK1.7版本,SDK,Sqlite數(shù)據(jù)庫。2.1.1Eclipse工具簡介Eclipse是一個開源的、免費的、基于Java的跨平臺的集成開發(fā)環(huán)境(IDE),可以通過安裝不同的插件使其支持不同的計算機(jī)語言。Eclipse的優(yōu)點如下:1.源碼開放、免費的開發(fā)工具;2.可以通過安裝插件支持多種計算機(jī)語言,形成一個強(qiáng)大的開發(fā)環(huán)境;3.具有可視化開發(fā)界面,便于開發(fā)人員操作。2.1.2Androidstudio工具簡介Androidstudio是近年Google公司專門為Android開發(fā)者提供的開發(fā)工具,它是基于IntelliJIDEA的Android開發(fā)環(huán)境,類似于eclipse的ADT插件,基于Gradle的構(gòu)建支持。它的提示工具更好地對程序性能、可用性、版本兼容和其他問題進(jìn)行控制捕捉,同時它自帶的布局編輯器可以隨意拖動UI組件,并支持在多個屏幕配置上預(yù)覽布局等。2.1.3Sqlite數(shù)據(jù)庫介紹Sqlite是一個輕量級的數(shù)據(jù)庫,它包含在一個比較小的C庫中。它是D.Richardhipp建立的公有領(lǐng)域項目。它是在Eclipse內(nèi)部的數(shù)據(jù)庫,當(dāng)開發(fā)者需要一些不太復(fù)雜的數(shù)據(jù)庫的時候,就可以使用Eclipse自帶的數(shù)據(jù)庫,不像常見的C/S范例,Sqlite引擎不是一個程序與之通信的獨立進(jìn)程,而是連接到程序中成為它的一個主要部分。所以主要的通信協(xié)議是在編程語言內(nèi)的直接API調(diào)用。這在消耗總量、延遲時間和整體簡單性上有積極的作用。整個數(shù)據(jù)庫(定義、表、索引和數(shù)據(jù)本身)都在存在于主機(jī)上存儲的一個單一的文件中。它的簡單的設(shè)計是通過在開始一個事務(wù)的時候鎖定整個數(shù)據(jù)文件而完成的。Sqlite數(shù)據(jù)庫的主要特點如下:1.不需要安裝,在使用時直接使用Android的sql語句創(chuàng)建數(shù)據(jù)庫即可;2.數(shù)據(jù)保存在單一磁盤文件中,是一個完整的數(shù)據(jù)庫文件;3.數(shù)據(jù)庫文件可以在不同字節(jié)順序的機(jī)器間自由的共享;4.支持?jǐn)?shù)據(jù)庫容量大,2TB;5.占用空間小,大致13萬行C代碼,4.43M;6.以I/O流的方式或加載到內(nèi)存的方式操作文件,數(shù)據(jù)庫操作比較快;7.可以跨平臺操作,且具有較高的移植性。8.比較好的注釋源代碼,并且有著很高的測試覆蓋率;9.獨立唯一,沒有額外依賴;10.源碼完全的開源,你可以隨意使用,包括出售它;11.支持多種開發(fā)語言:C,PHP,Java,C#等。2.1.4Android簡介及運行原理Android是開放源碼操作系統(tǒng),它是以Linux和Java為基礎(chǔ)的,主要適用于移動終端設(shè)備,該操作系統(tǒng)最初由AndyRubin開發(fā),后被Google收購。Android進(jìn)行開發(fā)主要是對四大組件的應(yīng)用,其四大組件分別為Activity、Service、BroadcastReceiver、ContentProvider。其中,Activity主要是用來展現(xiàn)界面。Service主要運行在后臺提供服務(wù)。BroadcastReceiver主要接收廣播處理信息。ContentProvider提供數(shù)據(jù),可以使不同應(yīng)用程序間數(shù)據(jù)共享。一般情況下基于Android開發(fā)的應(yīng)用程序主要是使用Activity,因為它使應(yīng)用可視化,便于用戶的操作和理解。Android系統(tǒng)架構(gòu)由5部分組成,它們是LinuxKernel、AndroidRuntime、Libraries、ApplicationFramework、Applications,系統(tǒng)結(jié)構(gòu)圖如下圖2-1所示。圖2-1Android系統(tǒng)結(jié)構(gòu)圖運行原理:當(dāng)我們創(chuàng)建一個前臺應(yīng)用程序時,實質(zhì)是實現(xiàn)一個Activity,我們可以通過這個Activity呈現(xiàn)出我們所設(shè)計的頁面,并根據(jù)Activity的生命周期實現(xiàn)相關(guān)業(yè)務(wù)邏輯。而一個后臺應(yīng)用則是沒有界面的,其相關(guān)的業(yè)務(wù)邏輯主要在Service中實現(xiàn)。在業(yè)務(wù)邏輯的實現(xiàn)過程中可能伴隨著BroadcastReceiver、ContentProvider兩大組件的應(yīng)用。以Activity為例解釋如下:super.onCreate(savedinstancestate);//是Activity生命周期的第一個方法,用作UI等初始化操作setContentview(R.layout.activity_main);//加載Activity的布局文件(activity_main.xml)2.2輸入法消息傳遞機(jī)制輸入法框架(IMF)是由客戶端、輸入法服務(wù)(InputMethodManagerService,IMMS)、輸入法應(yīng)用(InputMethodService,IMS)三部分組成。輸入法的消息傳遞機(jī)制為IMMS負(fù)責(zé)管理系統(tǒng)的所有輸入法,包括輸入法service(IMS)加載及切換。程序獲得焦點時,就會通過InputMethodManager向InputMethodManagerService通知自己獲得焦點并請求綁定自己到當(dāng)前的輸入法上。InputConnection接口實現(xiàn)了BaseInputConnection和InputConnectiionWrapper接口,主要用于客戶端和輸入法之間的通信??蛻舳送ㄟ^InputConnection將輸入碼傳給輸入法后,輸入法應(yīng)用對輸入碼進(jìn)行處理,處理完畢后需將得到的字符返回給客戶端。另外,客戶端不能直接訪問輸入法程序,只能通過EditText這類輸入控件訪問InputMethodSession接口。輸入法的消息傳遞機(jī)制如下圖2-2所示:圖2-2輸入法消息傳遞機(jī)制2.3可行性分析本應(yīng)用從經(jīng)濟(jì)可行性和技術(shù)可行性兩方面來闡述。1.經(jīng)濟(jì)可行性該應(yīng)用在開發(fā)過程中主要開發(fā)工具為PC機(jī)一臺,Android系統(tǒng)的測試機(jī)一臺,且投入人力資源少,軟件開發(fā)成本低,因此在經(jīng)濟(jì)上是可行的。2.技術(shù)可行性技術(shù)可行性指在現(xiàn)有技術(shù)下能否完成性能目標(biāo),在限制條件下能否完成功能目標(biāo)。本設(shè)計在實現(xiàn)過程中采用的技術(shù)及語言都已經(jīng)相當(dāng)成熟,且在現(xiàn)有條件下沒有什么難以克服技術(shù)問題,根據(jù)當(dāng)前條件能夠?qū)崿F(xiàn)預(yù)定的功能、性能目標(biāo),因此在技術(shù)上是可行的。2.4系統(tǒng)功能需求分析輸入法軟件主要是針對移動終端設(shè)備開發(fā)的,主要目的是提高人們的輸入速度,從而達(dá)到提高效率的目的。本應(yīng)用最終的性能目標(biāo)就是易學(xué)、高效,能被廣大人群接受,其大致的功能需求如下:1、能夠?qū)崿F(xiàn)中文輸入;2、能夠?qū)崿F(xiàn)英文字符輸入;3、英文輸入時可以轉(zhuǎn)換大小寫;4、能夠輸入各種常用的標(biāo)點符號;5、在中文輸入時可以產(chǎn)生聯(lián)想詞,以提高輸入的速度;6、可以增加按鍵效果,即在輸入時有按鍵音效,如聲音、振動;7、聯(lián)想詞的產(chǎn)生是可控的,即有開關(guān)可以控制是否產(chǎn)生聯(lián)想詞;8、有用戶反饋功能,以便應(yīng)用的功能完善升級。采用用例圖進(jìn)行功能分析時就是以角色、用例及它們之間的關(guān)系所構(gòu)成的視圖來闡述功能,從而清晰形象的表達(dá)出功能關(guān)系。本設(shè)計的功能模塊大致可以設(shè)置模塊、輸入模塊、用戶反饋模塊,用例圖如下圖2-3所示。圖2-3用例分析圖由上述需求分析總結(jié)出各功能模塊的關(guān)系為,用戶在裝入該輸入法APP后可以通過終端設(shè)備的系統(tǒng)設(shè)置找到語言和鍵盤條目,然后將裝入的輸入法APP設(shè)置為系統(tǒng)默認(rèn)的輸入法,然后在通過該輸入法設(shè)置對輸入法功能做簡要設(shè)置,例如是否開啟按鍵音效、按鍵振動、是否開啟聯(lián)想詞功能,設(shè)置完畢后可以通過任意應(yīng)用觸發(fā)輸入法功能,觸發(fā)后在輸入時就會根據(jù)設(shè)置的功能顯示按鍵效果。在輸入時中可以輸入中英文兩種語言,在進(jìn)行英文輸入時可以控制大小寫,中文輸入時可以產(chǎn)生聯(lián)想詞。另外也可以切換到標(biāo)點符號視圖,進(jìn)行符號輸入。若用戶在使用過程中有建議提出,可以通過用戶反饋頁面將建議反饋給開發(fā)者,以便產(chǎn)品的升級。2.5系統(tǒng)性能分析由于本軟件是終端設(shè)備必不可少的應(yīng)用,其用戶量廣大,但其最基本也是最重要的性能就響應(yīng)時間快,輸入效率高,因此其性能指標(biāo)如下:所有操作的的平均響應(yīng)時間<2秒。2.6本章小結(jié)本章主要對軟件進(jìn)行了需求分析,通過系統(tǒng)可行性分析、系統(tǒng)性能分析以及功能需求分析,總結(jié)出各功能模塊的關(guān)系,為之后設(shè)計在實現(xiàn)前定制計劃、分配任務(wù)提供參考與目標(biāo)。第3章系統(tǒng)設(shè)計軟件設(shè)計在整個軟件開發(fā)過程中占據(jù)十分重要的地位。好的設(shè)計可以使用戶在使用過程中有一個好的用戶體驗,便于產(chǎn)品的推廣。從程序員角度來說,一個好的設(shè)計可以減少開發(fā)的難度和開發(fā)周期,在一定程度上也節(jié)約了開發(fā)成本,為公司帶來更大的利益。3.1輸入法生命周期輸入法是用戶與應(yīng)用程序交互的中介,它是作為一個后臺服務(wù)一直運行在后臺,Android框架提供了一個輸入法框架,它是可擴(kuò)展的,允許應(yīng)用程序向用戶提供選擇輸入方式,例如鍵盤輸入、語音輸入等。用戶可以在系統(tǒng)設(shè)置中選擇想要使用的輸入法,有且只會有一個輸入法服務(wù)運行在后臺。輸入法的生命周期如下圖3-1所示:圖3-1輸入法生命周期onCreateInputiew():創(chuàng)建軟盤視圖;onCreateCandldateViews():創(chuàng)建候選區(qū);onStartInput():開始輸入字符;onCurrentInputMethodSubtypeChanged():當(dāng)切換輸入法語言時會調(diào)用該方法;onFinshInput():輸入字符完畢。3.2軟件功能結(jié)構(gòu)設(shè)計軟件的功能結(jié)構(gòu)即軟件的功能模塊。在本設(shè)計中功能模塊大致可以分為設(shè)置模塊、輸入模塊,其中設(shè)置模塊又包含輸入法功能設(shè)置和用戶反饋功能。因為輸入法必須要做到實時觸發(fā)實時響應(yīng),所以在設(shè)計時將其作為一個后臺長壽程序一直在后臺運行,讓其實時監(jiān)聽用戶行為,一旦有用戶請求輸入法功能就立即彈出輸入框,響應(yīng)用戶行為。而用戶使用輸入法時可以進(jìn)行中英文兩種語言的切換、標(biāo)點符號輸入、阿拉伯?dāng)?shù)字輸入滿足了用戶基本輸入的需求。又考慮到應(yīng)用是為廣大用戶而設(shè)計,應(yīng)盡可能的滿足廣大用戶的需求,因此增加了用戶反饋功能,以便應(yīng)用的升級。軟件總體功能結(jié)構(gòu)框架如下圖3-2所示。圖3-2軟件功能結(jié)構(gòu)圖3.3軟件設(shè)計流程軟件設(shè)計流程則是根據(jù)軟件的功能需求以及用戶的操作體驗設(shè)計出軟件實現(xiàn)后的模擬體驗流程。該過程十分重要,因為程序開發(fā)人員就是根據(jù)這一設(shè)計體驗實現(xiàn)各個功能模塊,在軟件開發(fā)完成后其操作流程應(yīng)與設(shè)計流程一致。另外一個好地設(shè)計流程會有很好的用戶體驗,而且也會給開發(fā)人員在實現(xiàn)過程中省去很多不便,可以減少人力與財力的浪費。本設(shè)計實現(xiàn)的流程圖如下圖3-3所示。圖3-3設(shè)計流程圖3.4數(shù)據(jù)存儲設(shè)計數(shù)據(jù)的存儲在軟件開發(fā)中具有很重要的作用,很多軟件頁面顯示的數(shù)據(jù)、頁面跳轉(zhuǎn)的流程均是根據(jù)保存的數(shù)據(jù)而來。數(shù)據(jù)存儲有很多種方式,在Android中數(shù)據(jù)的存儲主要有一下五種方式:數(shù)據(jù)庫存儲、文件存儲、網(wǎng)絡(luò)存儲、ContentProvider存儲、SharedPreference存儲。這五種存儲方式各具優(yōu)缺點,其中數(shù)據(jù)庫存儲主要運用于數(shù)據(jù)量大、數(shù)據(jù)間關(guān)系相對復(fù)雜且有較多數(shù)據(jù)操作(增刪改查)的應(yīng)用。SharedPreference存儲方式適用于數(shù)據(jù)格式簡單、數(shù)據(jù)間沒有關(guān)聯(lián)、數(shù)據(jù)量少的應(yīng)用,一般主要存儲應(yīng)用的標(biāo)記位、口令密碼等。而本應(yīng)用選擇的存儲方式就是SharedPreference存儲方式,因為本應(yīng)用主要存儲設(shè)置中的一些選項標(biāo)志位,這些標(biāo)記位的數(shù)據(jù)格式簡單且數(shù)據(jù)量少,便于存儲讀取,因此選擇SharedPreference存儲數(shù)據(jù)十分便捷。3.5本章小結(jié)本章主要根據(jù)上一章的系統(tǒng)需求做了詳細(xì)的設(shè)計分析。結(jié)合輸入法的生命周期大致介紹了輸入法的流程。根據(jù)設(shè)計流程圖可以很清晰的看出各功能模塊的關(guān)聯(lián)以及軟件實現(xiàn)后的效果。而且也根據(jù)軟件需存儲的數(shù)據(jù)確定了數(shù)據(jù)存儲的方式。為軟件的具體開發(fā)實現(xiàn)做了充足的準(zhǔn)備。
第4章系統(tǒng)實現(xiàn)用戶在進(jìn)行輸入請求時,終端設(shè)備會根據(jù)設(shè)置的默認(rèn)輸入法進(jìn)程彈出相應(yīng)的輸入法軟盤,用戶可以操作軟盤實現(xiàn)目標(biāo)字符的輸入。本應(yīng)用實現(xiàn)的語言輸入為中文、英文兩種語言,因此用戶可以操作軟盤實現(xiàn)語言的切換,也可以切換到符號視圖界面輸入相關(guān)標(biāo)點符號。在進(jìn)行英文輸入時可以實現(xiàn)大小寫的輸入,中文輸入時為提高輸入效率加入了聯(lián)想詞功能。用戶也可以通過設(shè)置功能對輸入操作做一些設(shè)置,例如,操作軟盤時是否開啟按鍵效果、是否開啟聯(lián)想詞功能。此外,用戶也可以像軟件發(fā)布方提供一些建設(shè)性意見,以便產(chǎn)品的優(yōu)化。4.1設(shè)置模塊的實現(xiàn)應(yīng)用在實現(xiàn)過程中一般為了使應(yīng)用更加人性化以及增加用戶的體驗特意增加了設(shè)置功能,以方便用戶根據(jù)自己的喜好設(shè)置應(yīng)用,這樣做的目的是站在用戶的角度開發(fā)應(yīng)用,使其更加人性化。本設(shè)計在實現(xiàn)的過程中也遵循這個原則,增加了設(shè)置功能,以便用戶在進(jìn)行輸入操作時可以根據(jù)自己的喜好設(shè)置不同的輸入效果。應(yīng)用設(shè)置界面如下圖4-1所示。圖4-1應(yīng)用設(shè)置界面當(dāng)用戶通過系統(tǒng)設(shè)置找到當(dāng)前輸入法時,可以點擊設(shè)置條目進(jìn)入該頁面,進(jìn)行輸入法的設(shè)置。按鍵聲音選項控制是否開啟按鍵聲音,即在操作軟盤時是否有音效。同理,按鍵振動選項是控制在操作軟盤時是否有振動效果。聯(lián)想輸入主要是用于中文輸入時是否有聯(lián)想詞的功能,若開啟則可以提高輸入效率。設(shè)置布局的實現(xiàn)主要是利用PreferenceScreen作為根元素并嵌套其他標(biāo)簽實現(xiàn)的具有偏好類別的設(shè)置界面。實現(xiàn)的核心代碼如下:<PreferenceScreenxmlns:android="/apk/res/android"android:title="@string/setting"><CheckBoxPreferenceandroid:key="@string/setting_sound_key"android:title="@string/setting_sound_key_title"android:persistent="true"android:summaryOn="@string/setting_enabled"android:summaryOff="@string/setting_disabled"/><CheckBoxPreferenceandroid:key="@string/setting_vibrate_key"android:title="@string/setting_vibrate_title"android:persistent="false"android:summaryOn="@string/setting_enabled"android:summaryOff="@string/setting_disabled"/><CheckBoxPreferenceandroid:key="@string/setting_prediction_key"android:title="@string/setting_prediction_title"android:persistent="true"android:summaryOn="@string/setting_enabled"android:summaryOff="@string/setting_disabled"/> <PreferenceScreen android:title="@string/setting_user" android:key="@string/setting_user_key"> </PreferenceScreen></PreferenceScreen>以上代碼主要是通過xml文件填充了設(shè)置頁面的布局,android:title屬性主要是設(shè)置條目名稱,設(shè)置完成后最后顯示結(jié)果“用戶反饋”,android:key屬性相當(dāng)于Android布局文件中設(shè)置控件的id,是控件的唯一標(biāo)識。CheckBoxPreference是帶有單選框的控件,相當(dāng)于CheckBox控件。設(shè)置界面的布局采用以上方式,而非Android傳統(tǒng)的布局定義,可以減少代碼量,且使用的控件清晰易懂。4.2輸入模塊在沒有智能手機(jī)前,人們進(jìn)行輸入時都是通過物理鍵盤實現(xiàn)的,由于硬件的限制鍵盤樣式基本一致,但是現(xiàn)在輸入法鍵盤都是通過代碼實現(xiàn)的,所以它的樣式可以根據(jù)自己的喜好設(shè)計,也可以加入多種皮膚讓其變得更加美觀。當(dāng)前用的比較多的樣式就是九宮格樣式或者一直熟悉的筆記本鍵盤的樣式。而本應(yīng)用軟盤的設(shè)計就是采用筆記本鍵盤的樣式。簡單、易用。4.2.1解析軟盤輸入模塊實現(xiàn)的主要功能是實現(xiàn)字符的輸入。當(dāng)用戶觸發(fā)輸入法功能時,首先會解析輸入法軟盤布局文件繪制輸入法軟盤。當(dāng)軟盤形成后,用戶可以操作軟盤實現(xiàn)字符的輸入。加載解析XML文件后最后繪制軟盤如下圖4-2所示。圖4-2輸入法軟盤繪制軟盤主要是采用解析xml文件獲取相關(guān)code,然后根據(jù)獲取的內(nèi)容繪制軟盤,解析xml文件如下:while(mXmlEventType!=XmlResourceParser.END_DOCUMENT){mNextEventFetched=false;if(mXmlEventType==XmlResourceParser.START_TAG){Stringattribute=xrp.getName();if(XMLTAG_SKB_TEMPLATE.compareTo(attribute)==0){DrawableskbBg=getDrawable(xrp,XMLATTR_SKB_BG,null);DrawableballoonBg=getDrawable(xrp,XMLATTR_BALLOON_BG,null);mSkbTemplate.setBackgrounds(skbBg,balloonBg,popupBg);floatxMargin=getFloat(xrp,XMLATTR_KEY_XMARGIN,0);floatyMargin=getFloat(xrp,XMLATTR_KEY_YMARGIN,0);mSkbTemplate.setMargins(xMargin,yMargin);globalColor=getColor(xrp,XMLATTR_COLOR,0);}elseif(XMLTAG_KEYTYPE.compareTo(attribute)==0){intid=getInteger(xrp,XMLATTR_ID,KEYTYPE_ID_LAST);Drawablebg=getDrawable(xrp,XMLATTR_KEYTYPE_BG,null);DrawablehlBg=getDrawable(xrp,XMLATTR_KEYTYPE_HLBG,null);intcolor=getColor(xrp,XMLATTR_COLOR,globalColor);intcolorHl=getColor(xrp,XMLATTR_COLOR_HIGHLIGHT,globalColorHl);if(id!=lastKeyTypeId+1)returnnull;SoftKeyTypekeyType=mSkbTemplate.createKeyType(id,bg,hlBg);keyType.setColors(color,colorHl,colorBalloon);以上代碼主要是對鍵盤布局xml文件的解析,while循環(huán)語句的判斷主要是判斷是否解析到文件的底部,若沒有則說明文件還未解析完需要繼續(xù)解析。在解析過程中通過節(jié)點解析輸入法鍵盤的背景圖片、按鍵效果、構(gòu)成鍵盤的每一個key、每一個key間的外邊距以及key與key間的相對距離。最后將解析到的結(jié)果通過set方法設(shè)置為鍵盤屬性,最后繪制為輸入法軟盤。通過getDrawable(xrp,XMLATTR_SKB_BG,null)方法,獲取軟盤的背景圖片,如果沒有則設(shè)置為null,在繪制時會采用默認(rèn)的軟盤背景。然后將取得的xMargin、yMargin設(shè)置為每一個key的外邊距,這樣就使得每一個key之間都有一定的間距,使鍵盤界面看起來美觀簡潔。因為輸入法鍵盤分為中文輸入鍵盤、英文輸入鍵盤、中文符號鍵盤、英文符號鍵盤四個種類,所以在解析鍵盤時也需要對其進(jìn)行標(biāo)記,mSkbTemplate.createKeyType(id,bg,hlBg)就是設(shè)置輸入法鍵盤的種類,為之后的鍵盤的切換做標(biāo)記。4.2.2字符輸入當(dāng)輸入法軟盤彈出后,用戶可以操作輸入法軟盤實現(xiàn)字符的輸入。用戶在進(jìn)行英文輸入時沒有聯(lián)想詞功能,但可以實現(xiàn)大小寫的切換。而在輸入中文時具有聯(lián)想詞功能。聯(lián)想詞功能的實現(xiàn)主要是為了提高輸入速率,以適應(yīng)當(dāng)前越來越快的生活節(jié)奏及最求高效率的需求。且在當(dāng)前軟盤下可以進(jìn)行中文、英文、符號軟盤的切換,操作便捷簡單。中文輸入時產(chǎn)生聯(lián)想詞,效果如下圖4-3所示。圖4-3中文輸入效果圖當(dāng)按圖4-3所示的‘中文’按鈕時,軟盤會切換到英文輸入的鍵盤。在該鍵盤下可以輸入英文字符,若想切換到大寫輸入只需點擊軟盤中的‘ALT’按鍵,便可實現(xiàn)大寫字母的輸入。當(dāng)點擊‘?123’按鍵時便切換到標(biāo)點符號的視圖,標(biāo)點符號可以分為兩大類,即中文模式下的標(biāo)點符號、英文模式下的標(biāo)點符號,在任意一種符號鍵盤下用戶都可以選擇輸入各種常用的標(biāo)點符號,同時,在該界面也可以輸入0~9阿拉伯?dāng)?shù)字。效果如下圖4-4所示。圖4-4其他字符輸入在實現(xiàn)字符輸入過程中主要是對event事件進(jìn)行處理,相關(guān)處理如下:publicvoidresponseSoftKeyEvent(SoftKeysoftkey){if(null==softkey)return;InputConnectionic=getCurrentInputConnection();if(ic==null)return;intkeyCode=softkey.getKeyCode();if(softkey.isKeyCodeKey()){if(processFunctionKeys(keyCode,true))return;}if(!kUsed){if(ImeState.STATE_INPUT==mImeState){commitResultText(mDecInfo.getCurrentFullSent(mCandidatesContainer.getActiveCandiatePos()));}elseif(ImeState.STATE_COMPOSING==mImeState){commitResultText(mDecInfo.getComposingStr());}commitResultText(keyLabel);resetToIdleState(false);}}if(!mSkbContainer.isCurrentSkbSticky()){updateIcon(mInputModeSwitcher.requestBackToPreviousSkb());resetToIdleState(false);mSkbContainer.updateInputMode();}}以上代碼對輸入事件進(jìn)行判斷,SoftKey是虛擬按鍵,代表輸入法軟盤的虛擬按鍵,當(dāng)SoftKey為null的時候直接返回不做任何處理,否則就要獲取當(dāng)前程序與其綁定的輸入法的通信連接,主要通過調(diào)用getCurrentInputConnection()方法獲取,這是Android系統(tǒng)提供的方法。若當(dāng)前應(yīng)用程序與輸入法成功建立了通信連接,就會響應(yīng)按鍵事件。雖然輸入法軟盤上都是我們能夠看得懂的字母、數(shù)字、標(biāo)點等,但我們的硬件設(shè)備并不能識別,所以硬件設(shè)備是通過Code碼來識別我們的輸入,所以當(dāng)我們在軟盤上點擊任何一個按鍵時都會調(diào)用getKeyCode()方法,獲取當(dāng)前按鍵的Code碼,其實就是一些整形數(shù)字,然后在通過一系列轉(zhuǎn)化,成為機(jī)器能識別的二進(jìn)制數(shù)據(jù),最后經(jīng)過一系列處理返回人們能識別的數(shù)據(jù)。privatevoidinitPinyinkeyboardEngine(){byteusr_dict[];usr_dict=newbyte[MAX_LENGTH];AssetFileDescriptorafd=getResources().openRawResourceFd(R.raw.dict_pinyin);if(getUsrDictFileName(usr_dict)){inited=nativeImOpenDecoderFd(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength(),usr_dict);}try{afd.close();}catch(IOExceptione){}}以上代碼主要是用在中文輸入,在中文解析的服務(wù)中由PinyinDecoderService實現(xiàn)。因為Android操作系統(tǒng)是由國外開發(fā)的,所以在實現(xiàn)輸入法模塊功能時只是實現(xiàn)了英文輸入,而中文輸入是為了適應(yīng)國內(nèi)廣大用戶開發(fā)的。目前硬件設(shè)備只會識別機(jī)器語言,所以在進(jìn)行中文輸入開發(fā)時需要將我們輸入的Code碼轉(zhuǎn)換成機(jī)器語言,然后在到詞庫中進(jìn)行查找中文詞,通過getResources().openRawResourceFd(R.raw.dict_pinyin)讀取詞庫資源文件,詞庫即詞典,在進(jìn)行輸入法開發(fā)時都會包含一個詞庫,本詞庫中包含所有常用的中文詞匯。nativeImOpenDecoderFd(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength(),usr_dict)方法通過底層交互打開中文解析文件。該方法是在java中聲明的一個上層方法,具體實現(xiàn)是用C語言實現(xiàn)的,以便于底層的交互。以下就是上層應(yīng)用與底層交互時用到的C語言編寫的代碼,JNIEXPORTjbooleanJNICALLnativeImOpenDecoderFd(JNIEnv*env,jclassjclazz,jobjectfd_sys_dict,jlongstartoffset,jlonglength,jbyteArrayfn_usr_dict){jintfd=env->GetIntField(fd_sys_dict,gFileDescriptorOffsets.mDescriptor);jbyte*fud=(*env).GetByteArrayElements(fn_usr_dict,0);jbooleanjret=JNI_FALSE;intnewfd=dup(fd);if(im_open_decoder_fd(newfd,startoffset,length,(constchar*)fud))jret=JNI_TRUE;close(newfd);(*env).ReleaseByteArrayElements(fn_usr_dict,fud,0);returnjret;}該部分代碼的實現(xiàn)主要是上層應(yīng)用需要調(diào)用底層函數(shù)庫,來打開詞庫文件。因為Android系統(tǒng)是基于linux系統(tǒng)實現(xiàn)的,所以底層都是用C語言或C++語言實現(xiàn)的,在與底層交互時需要用到j(luò)ni技術(shù)來實現(xiàn)。4.3用戶反饋模塊一款應(yīng)用如果想長期活躍在市場,被廣大用戶接受,那么它必須要有新意、適用于人們的生活。而一款應(yīng)用在開發(fā)前都是經(jīng)過市場調(diào)研的,然后才會確定功能進(jìn)行開發(fā)。雖然開發(fā)前都是基于用戶的角度設(shè)計功能和用戶體驗,但社會在進(jìn)步人們的需求也會不斷地變化,而且市場調(diào)研往往代表部分用戶群體的心聲,雖然基本符合廣大用戶的要求,但仍會有缺漏。那么就需要有一種方式能讓每個用戶都有機(jī)會反饋他們的建議。用戶反饋功能的加入就很好的解決了這一問題,這個功能是集成在APP中的,只要用戶使用該APP就都有機(jī)會進(jìn)行意見反饋。即節(jié)約了成本也可以收集廣大用戶的意見完善應(yīng)用,使其功能更加的全面。在本應(yīng)用中,當(dāng)用戶點擊“用戶反饋”模塊時就會進(jìn)入反饋界面,在反饋頁面提供了幾種選項可供用戶選擇,如UI設(shè)計不美觀、漢語詞匯量太少等。用戶反饋界面如下圖4-5所示。圖4-5用戶反饋界面用戶反饋界面主的實現(xiàn)主要是用GridView控件實現(xiàn),它是一種空格布局控件,能根據(jù)屬性設(shè)置幾行幾列實現(xiàn)格子效果。當(dāng)用戶進(jìn)入用戶反饋界面時會看到一個動畫效果,“請選擇您的反饋:”是從底部向上平移的動畫,四個反饋選項是一個順時針的3D跳動動畫。當(dāng)點擊‘回到設(shè)置’按鈕時就會關(guān)閉該頁面,跳轉(zhuǎn)到設(shè)置頁面。實現(xiàn)3D效果的動畫主要是對Android中旋轉(zhuǎn)動畫進(jìn)行處理,具體實現(xiàn)如下:privatevoidinit3DAnimation(){ finalintcardWidth=mGridview.getChildAt(0).getWidth(); finalintcardHeight=mGridview.getChildAt(0).getHeight(); mRotateAnimations_3D[0]=newmRotateAnimations_3D(-90,0,cardWidth/2, 0,0,true,0); mRotateAnimations_3D[1]=newmRotateAnimations_3D(90,0,0, cardHeight/2,0,true,1); mRotateAnimations_3D[2]=newmRotateAnimations_3D(-90,0,cardWidth, cardHeight/2,0,true,1); mRotateAnimations_3D[3]=newmRotateAnimations_3D(-90,0,cardWidth/2, 0,0,true,0); for(inti=0;i<mRotateAnimations_3D.length;i++){ mRotateAnimations_3D[i].setDuration(ANIMATION_TIME-i*DELAY_TIME); mRotateAnimations_3D[i].setFillBefore(true); mRotateAnimations_3D[i].setFillAfter(true); mRotateAnimations_3D[i].setInterpolator(newBounceInterpolator()); finalintm=i; mRotateAnimations_3D[i] .setAnimationListener(newAnimationListener(){ @Override publicvoidonAnimationStart(Animationanimation){ ViewHolderholder=getViewHolder(m); if(holder!=null){ holder.showViews(); } } }以上代碼就是通過設(shè)置四組旋轉(zhuǎn)動畫,每一組旋轉(zhuǎn)動畫的旋轉(zhuǎn)角度不同,從而產(chǎn)生不同動畫效果,其中每一組動畫對應(yīng)一個反饋選項,通過控制反饋選項的執(zhí)行動畫順序,以達(dá)到順時針旋轉(zhuǎn)動畫的效果。mRotateAnimations_3D(-90,0,cardWidth/2,0,0,true,0)方法就是在設(shè)置旋轉(zhuǎn)的效果。因為有四個選項進(jìn)行動畫效果,所以設(shè)置了四個不同的旋轉(zhuǎn)動畫。在開始旋轉(zhuǎn)動畫時,它的旋轉(zhuǎn)順序是通過for循環(huán)控制的,在循環(huán)中通過判斷每個選項的位置來判斷動畫是否播放,以達(dá)到播放的效果是一個順時針的動畫。4.4本章小結(jié)本章主要介紹了輸入法APP的具體實現(xiàn)過程。并在關(guān)鍵部分附上了關(guān)鍵代碼及實現(xiàn)的效果圖。如設(shè)置模塊、用戶反饋模塊等。
第5章系統(tǒng)測試系統(tǒng)軟件的各個功能模塊實現(xiàn)后,需要對各個功能模塊進(jìn)行測試。軟件測試對于一個系統(tǒng)軟件完成的質(zhì)量有著至關(guān)重要的作用。軟件測試的手法可以采用黑盒測試或則白盒測試,它們都是模擬用戶盡可能的操作不同場景,以發(fā)現(xiàn)軟件在實現(xiàn)過程中的漏洞,以便及時修復(fù),其目的就是提高軟件的健壯性,盡可能的減少由于代碼漏洞而帶來的損失。5.1測試內(nèi)容及軟件環(huán)境測試以下主要是對應(yīng)用的設(shè)置功能、用戶反饋功能、輸入功能進(jìn)行測試,在測試時盡可能的進(jìn)行不同場景的操作,并仔細(xì)觀察記錄程序執(zhí)行的結(jié)果,主要測試用例如表5-1所示。表5-1功能模塊測試用例表測試需求測試重點說明設(shè)置功能1.正確進(jìn)入系統(tǒng)設(shè)置,將該輸入法APP設(shè)置為系統(tǒng)默認(rèn)輸入法,能夠設(shè)置成功;2.正確設(shè)置為默認(rèn)輸入法,點擊設(shè)置條目,能夠進(jìn)入設(shè)置頁面;3.正確進(jìn)入設(shè)置界面,對輸入效果進(jìn)行逐一測試、全選測試,均能達(dá)到預(yù)期效果;4.正確進(jìn)入設(shè)置界面,對聯(lián)想詞功能進(jìn)行測試,實現(xiàn)了預(yù)期效果,即在中文輸入時能夠產(chǎn)生聯(lián)想詞;輸入功能1.正確運用該軟件,觸發(fā)輸入功能,能夠彈出輸入法軟盤;2.正確彈出輸入法軟盤,進(jìn)行中文輸入測試,能夠正確輸入中文并生成聯(lián)想詞供選擇;3.正確彈出輸入法軟盤,進(jìn)行英文輸入測試,能夠正確輸入英文字母及單詞;4.正確彈出輸入法軟盤,進(jìn)行大寫英文字母輸入測試,能夠正確輸入大寫英文字母及單詞;5.正確彈出輸入法軟盤,進(jìn)行標(biāo)點符號、阿拉伯?dāng)?shù)字輸入測試,能夠正確輸入標(biāo)點符號及阿拉伯?dāng)?shù)字;正確彈出輸入法軟盤,進(jìn)行混合輸入及軟盤切換測試,能夠輸入混合型字符且在軟盤切換過程中無錯誤出現(xiàn);用戶反饋功能1.正確進(jìn)入設(shè)置界面,點擊‘用戶反饋’條目,能夠正確進(jìn)入用戶反饋界面,且動畫實現(xiàn)效果正確;2.正確進(jìn)入用戶反饋界面,逐一測試個選項條目,均正確。環(huán)境測試內(nèi)容如表5-2所示:表5-2環(huán)境測試編號內(nèi)容說明備注1JDK版本Jdk1.7正常2SDK版本R22.3正常3運行環(huán)境Eclipse正常5.2測試結(jié)果在測試的過程中發(fā)現(xiàn)了一些小問題,例如,在選擇用戶反饋條目時,點擊條目選擇后不能取消,這不符合用戶體驗,經(jīng)修改測試已經(jīng)改正。另外,一些界面的布局不太美觀,這些經(jīng)過后續(xù)調(diào)整已經(jīng)改正。在最終的測試中,各個功能模塊均能正常運行。5.3本章小結(jié)系統(tǒng)軟件在完成后必須要經(jīng)過專業(yè)測試人員進(jìn)行測試,這是不可省略的環(huán)節(jié),因為通過該環(huán)節(jié)可以驗證功能需求是否符合用戶需求,功能模塊是否能正常運行,若在測試過程中發(fā)現(xiàn)不符合用戶需求、功能模塊出現(xiàn)錯誤都可以及時修改,以避免將項目送達(dá)用戶手中才發(fā)現(xiàn)錯誤所造成的重大損失。本章就是根據(jù)設(shè)計要求對功能需求及功能是否正常運行做了詳細(xì)的測試,以確定應(yīng)用的各項功能能夠正常運行。結(jié)論本篇論文通過對軟件實現(xiàn)的可行性分析、軟件性能分析以及詳細(xì)的功能需求分析,設(shè)計出了軟件實現(xiàn)的功能結(jié)構(gòu)圖,然后在結(jié)合軟件功能結(jié)構(gòu)圖進(jìn)行軟件設(shè)計,在軟件設(shè)計過程中實現(xiàn)了功能模塊設(shè)計、流程設(shè)計、交互設(shè)計以及數(shù)據(jù)存儲的方式,最后根據(jù)軟件流程設(shè)計實現(xiàn)各個模塊的功能,各功能模塊實現(xiàn)后最終形成完整輸入法APP,輸入法APP完成后對各功能模塊進(jìn)行了測試,對測試出的bug進(jìn)行修正后,最終完成了畢業(yè)設(shè)計。該軟件是基于Android的輸入法的設(shè)計與實現(xiàn),在開發(fā)過程中主要運用Eclipse開發(fā)工具進(jìn)行軟件開發(fā)。目前市場上輸入法軟件也有很多種,但基于中文輸入法的實現(xiàn)的核心技術(shù)主要掌握在國外,因此自主開發(fā)一款中文輸入的輸入法是很有必要的。該軟件在開發(fā)時主要采用Android技術(shù),實現(xiàn)的主要功能是支持中英文輸入,設(shè)置輸入按鍵效果、支持用戶反饋功能等。本設(shè)計雖然最終實現(xiàn)了輸入法功能,但在實現(xiàn)過程中仍有一些不足之處,例如UI的設(shè)計不太美觀、軟件交互比較少、實現(xiàn)的功能不多,因此會在以后的維護(hù)過程中不斷地完善該軟件的功能及美化界面。
致謝四年的大學(xué)學(xué)習(xí)生涯還有短暫的十多天,學(xué)生的角色即將結(jié)束,回首過往,大學(xué)四年生活雖不跌宕起伏卻豐富充實,我的內(nèi)心充滿感恩與感謝。在此我想對我的老師說感謝您的教育與關(guān)心,是你們課堂課下詳細(xì)的講解、盡心盡力的栽培才使我在學(xué)業(yè)上不斷地進(jìn)步,對未來有明確的規(guī)劃;想對我的同學(xué)說感謝你們的陪伴,謝謝你們帶給我的歡樂笑語;感謝安陽工學(xué)院給了我四年的學(xué)習(xí)機(jī)會,并竭盡可能的為我們創(chuàng)造良好的學(xué)習(xí)環(huán)境與條件。更要感謝父母對我無條件的支持與信任。在安陽工學(xué)院生活的四年,讓我的生活變得更加充實,讓我變得更加有思想更加獨立,明白自己的努力方向和最求目標(biāo)。在本次畢業(yè)設(shè)計的完成過程中我得到了很多老師和同學(xué)的幫助,尤其是我的論文指導(dǎo)老師,張陽老師對我的幫助,每次遇到困難都是老師悉心幫我提供意見、指出解決思路。在畢業(yè)設(shè)計實現(xiàn)的每一個階段,從選題到查閱資料,再到開題報告的填寫,直至畢業(yè)設(shè)計的完成,張陽老師在每個階段都給予我悉心的指導(dǎo),尤其是畢業(yè)設(shè)計項目的調(diào)試、后期論文的調(diào)整與修改。而且,張陽老師不僅僅在學(xué)業(yè)上給予我很大的幫助,在思想上也給予了我很大的鼓勵,讓我對未來的發(fā)展方向有了更加明確的認(rèn)識。同時,在本次畢業(yè)設(shè)計過程中,也有很多熱情的同學(xué)給予我很大的幫助。在此我誠摯的感謝張陽老師和各位同學(xué)的幫助,以及答辯老師的指導(dǎo)!參考文獻(xiàn)[1]關(guān)麗榮,張曉坤.Java經(jīng)典實例[M].中國電力出版社.2009[2]李佐彬.Android開發(fā)入門與實戰(zhàn)體驗[M].機(jī)械工業(yè)出版社.2011[3]伯內(nèi)特(EdBurnette),田俊靜,張波,黃湘情.Android基礎(chǔ)教程(第3版)[M].人民郵電出版社.2011[4]韓超,梁泉.Android系統(tǒng)原理及開發(fā)要點詳解[M],電子工業(yè)出版社.2010[5]鄧凡平.深入理解Android(卷1)[M].機(jī)械工業(yè)出版社.2011[6]梅爾(RetoMeier),王超.Android2高級編程(第2版)[M].清華大學(xué)出版社.2010[7]楊豐盛.Android技術(shù)內(nèi)幕:系統(tǒng)卷[M].機(jī)械工業(yè)出版社.2011[8]哈希米(SayedHashimi)等.精通Android2[M].人民郵電出版社.2010[9]鄧凡平.深入理解Android[M].機(jī)械工業(yè)出版社.2011[10]E2ecloud工作室.深入淺出GoogleAndroid[M].人民郵電出版社.2000[11]楊豐盛.Android應(yīng)用開發(fā)揭秘[M].機(jī)械工業(yè)出版社.2010[12]李剛.瘋狂Android講義[M].2012[13]韓超.Android系統(tǒng)級深入開發(fā):移植與調(diào)試[M].電子工業(yè)出版社.2011[14]余志龍,王世江改編.GoogleAndroidSDK開發(fā)范例大全(第2版)[M].人民郵電出版社.2010[15]EricJ.Bruno,GregBollella.Java實時編程[M].機(jī)械工業(yè)出版社.2010[16]公飛.Java核心技術(shù)[M].電子工業(yè)出版社.2011[17]韓雪.Java面向?qū)ο蟪绦蛟O(shè)計(第2版)[M].人民郵電出版社.2012[18]Metsker
S
J.
Java設(shè)計模式(第2版)[M].電子工業(yè)出版社.2012[23]Y.DanielLiang.Java語言程序設(shè)計基礎(chǔ)篇.2014[19]劉曉義.XML技術(shù)及應(yīng)用[M].哈爾濱工程大學(xué)出版社.
2011[20]張哲.Java程序設(shè)計教程與實訓(xùn)[M].北京科海電子出版社.2009[21]LarryNyhoff.數(shù)據(jù)結(jié)構(gòu)與算法分析.清華大學(xué)出版社.2006[22]錢能.C++程序設(shè)計教程.清華大學(xué)出版社.2009基于C8051F單片機(jī)直流電動機(jī)反饋控制系統(tǒng)的設(shè)計與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實現(xiàn)基于單片機(jī)的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運動控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測試儀的研制基于單片機(jī)的自動找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗臺控制器的研制基于單片機(jī)的軟起動器的研究和設(shè)計基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實時內(nèi)核設(shè)計及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計與研究基于單片機(jī)的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機(jī)的液體點滴速度自動檢測儀的研制基于單片機(jī)系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機(jī)的電能采集終端的設(shè)計和應(yīng)用基于單片機(jī)的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機(jī)單片機(jī)控制系統(tǒng)的研制基于單片機(jī)的數(shù)字磁通門傳感器基于單片機(jī)的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機(jī)的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機(jī)控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機(jī)的多生理信號檢測儀基于單片機(jī)的電機(jī)運動控制系統(tǒng)設(shè)計Pico專用單片機(jī)核的可測性設(shè)計研究基于MCS-51單片機(jī)的熱量計基于雙單片機(jī)的智能遙測微型氣象站MCS-51單片機(jī)構(gòu)建機(jī)器人的實踐研究基于單片機(jī)的輪軌力檢測基于單片機(jī)的GPS定位儀的研究與實現(xiàn)基于單片機(jī)的電液伺服控制系統(tǒng)用于單片機(jī)系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機(jī)的時控和計數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機(jī)和CPLD的粗光柵位移測量系統(tǒng)研究單片機(jī)控制的后備式方波UPS提升高職學(xué)生單片機(jī)應(yīng)用能力的探究基于單片機(jī)控制的自動低頻減載裝置研究基于單片機(jī)控制的水下焊接電源的研究基于單片機(jī)的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機(jī)的氚表面污染測量儀的研制基于單片機(jī)的紅外測油儀的研究96系列單片機(jī)仿真器研究與設(shè)計基于單片機(jī)的單晶金剛石刀具刃磨設(shè)備的數(shù)控改造基于單片機(jī)的溫度智能控制系統(tǒng)的設(shè)計與實現(xiàn)基于MSP430單片機(jī)的電梯門機(jī)控制器的研制基于單片機(jī)的氣體測漏儀的研究基于三菱M16C/6N系列單片機(jī)的CAN/USB協(xié)議轉(zhuǎn)換器基于單片機(jī)和DSP的變壓器油色譜在線監(jiān)測技術(shù)研究基于單片機(jī)的膛壁溫度報警系統(tǒng)設(shè)計基于AVR單片機(jī)的低壓無功補(bǔ)償控制器的設(shè)計基于單片機(jī)船舶電力推進(jìn)電機(jī)監(jiān)測系統(tǒng)基于單片機(jī)網(wǎng)絡(luò)的振動信號的采集系統(tǒng)基于單片機(jī)的大容量數(shù)據(jù)存儲技術(shù)的應(yīng)用研究基于單片機(jī)的疊圖機(jī)研究與教學(xué)方法實踐基于單片機(jī)嵌入式Web服務(wù)器技術(shù)的研究及實現(xiàn)基于AT89S52單片機(jī)的通用數(shù)據(jù)采集系統(tǒng)基于單片機(jī)的多道脈沖幅度分析儀研究\t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國半自動背式方塊機(jī)數(shù)據(jù)監(jiān)測研究報告
- 基于嵌入式AI芯片的智能相機(jī)關(guān)鍵技術(shù)研究
- 四川省名校聯(lián)盟2024-2025學(xué)年高三上學(xué)期12月聯(lián)考物理試題(解析版)
- 2025年中國沉淀池刮泥機(jī)市場調(diào)查研究報告
- 2025年中國手套機(jī)織針市場調(diào)查研究報告
- 江蘇省鹽城市五校聯(lián)考2024-2025學(xué)年高一上學(xué)期12月月考生物試題(解析版)
- 兼職租賃合同范例
- 2025年中國不規(guī)則波浪磚市場調(diào)查研究報告
- 內(nèi)墻抹灰及砌體合同范例
- 中土物業(yè)合同范例
- 2025年哈爾濱傳媒職業(yè)學(xué)院單招職業(yè)技能測試題庫完整
- 2025年河南林業(yè)職業(yè)學(xué)院單招職業(yè)技能測試題庫完整版
- 地理-浙江省強(qiáng)基聯(lián)盟2025年2月高三年級聯(lián)考試題和答案
- 糧食儲運與質(zhì)量安全基礎(chǔ)知識單選題100道及答案
- (必刷)湖南省醫(yī)學(xué)院校高職單招職業(yè)技能測試必會題庫(含往年真題)
- 第一篇 專題一 第2講 勻變速直線運動 牛頓運動定律
- 廣東廣州歷年中考語文現(xiàn)代文閱讀之非連續(xù)性文本閱讀7篇(截至2024年)
- 做自己的英雄主題班會
- 《農(nóng)藥學(xué)課程殺菌劑》課件
- 充電樁的建設(shè)合作方案
- 2024至2030年中國ICU/CCU病房數(shù)據(jù)監(jiān)測研究報告
評論
0/150
提交評論