西安歐亞學(xué)院信息工程學(xué)院 宋園方
根據(jù)Gartner市場(chǎng)研究部的調(diào)查結(jié)果,谷歌的Android操作系統(tǒng)目前已成為世界上第三大手機(jī)系統(tǒng)。據(jù)Gartner估計(jì),在2010年第二季度,Android手機(jī)在全球賣出了1060萬(wàn)部,相比之下iPhone手機(jī)只賣出了870萬(wàn)部。這樣算起來(lái),Android已占據(jù)了智能手機(jī)17%的市場(chǎng)份額,而蘋果只有14%。
Android是開放手機(jī)聯(lián)盟基于Linux開發(fā)的開源手機(jī)操作系統(tǒng)。它包括操作系統(tǒng)、中間件和電話工作所需的應(yīng)用程序,而且不存在版權(quán)問題。開放手機(jī)聯(lián)盟由Google主導(dǎo),包括中國(guó)移動(dòng)、摩托羅拉、高通、HTC和T-Mobile在內(nèi)的30多家技術(shù)和無(wú)線應(yīng)用的領(lǐng)軍企業(yè)組成。google通過與開發(fā)商、設(shè)備制造商、運(yùn)營(yíng)商和其他有關(guān)各方結(jié)成深層次的合作關(guān)系,希望借此建立標(biāo)準(zhǔn)式、開放式的移動(dòng)系統(tǒng),在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開放式的生態(tài)系統(tǒng)。
Android平臺(tái)的研發(fā)隊(duì)伍陣容強(qiáng)大,包括Google、HTC(宏達(dá)電)、T-Mobile、高通、摩托羅拉、三星、LG以及中國(guó)移動(dòng)在內(nèi)的34家企業(yè)都將基于該平臺(tái)開發(fā)手機(jī)的新型業(yè)務(wù),應(yīng)用之間的通用性和互聯(lián)性將在最大程度上得到保持?!伴_放手機(jī)聯(lián)盟”表示,Android平臺(tái)可以促使移動(dòng)設(shè)備的創(chuàng)新,讓用戶體驗(yàn)到最優(yōu)越的移動(dòng)服務(wù),同時(shí),開發(fā)商也將得到一個(gè)新的開放級(jí)別,更方便的進(jìn)行協(xié)同合作,從而保障新型移動(dòng)設(shè)備的研發(fā)速度。
Android輸入法是android平臺(tái)中的重要的應(yīng)用,谷歌在發(fā)布android平臺(tái)時(shí),中文輸入法只發(fā)布了谷歌拼音,其他中文輸入法需要手機(jī)廠商自己開發(fā)。國(guó)內(nèi)的輸入法公司也推出了Android平臺(tái)的相應(yīng)的輸入法,如搜狗輸入法、漢王的馬蹄蓮手寫輸入法。因?yàn)橹形妮斎敕ǖ奶厥庑?,故有多種輸入形式,如拼音、手寫、全鍵盤輸入法、9鍵輸入法、筆畫輸入法、五筆輸入法等。將這些不同輸入方式的輸入法整合到一起,是各個(gè)商家的重點(diǎn)研究對(duì)象。
在android平臺(tái)中,輸入法不再像Windows下簡(jiǎn)單的輸入工具,他與應(yīng)用的編輯框有效結(jié)合起來(lái),輸入法的軟鍵盤提示按鈕隨編輯框?qū)傩圆煌l(fā)生提示變化,更方便的提升了用戶的操作體驗(yàn)。所以,輸入法如何更好的提升用戶體驗(yàn),也是我們此次研究的內(nèi)容之一。
今年應(yīng)用android平臺(tái)研發(fā)的的智能手機(jī)越來(lái)越熱門,谷歌的Android手機(jī)平臺(tái)也引起了越來(lái)越多開發(fā)者的興趣,一方面相比iPhone來(lái)說(shuō),Android采取了完全開放的政策。另一方面中國(guó)移動(dòng)將在Android平臺(tái)基礎(chǔ)上推出自主的手機(jī)開放平臺(tái)OMS,這無(wú)疑又增加了Android的吸引力。在巨大的市場(chǎng)潛力面前,一場(chǎng)關(guān)于智能手機(jī)的暗戰(zhàn)正在展開。所以本項(xiàng)目的研究切合當(dāng)前實(shí)際,具有很好研究的前景。
在Android的輸入法框架基礎(chǔ)上進(jìn)行深度開發(fā),搭建手寫輸入法子框架,完善Android平臺(tái)輸入法框架。
應(yīng)用程序:以Java為編程語(yǔ)言,使Android從接口到功能,都有層出不窮的變化,其中Activity等同于J2ME的MIDlet,View等同于Displayable,還有Image等同于BitMap。
中間件:操作系統(tǒng)與應(yīng)用程序的溝通橋梁,并用分為兩層:函數(shù)層(Library)和虛擬機(jī)(Virtual Machine)。
操作系統(tǒng):控制包括安全(Security),存儲(chǔ)器管理(Memory Managemeat),程序管理(Process Management),網(wǎng)絡(luò)堆棧(Network Stack),驅(qū)動(dòng)程序模型(Driver Model)等。
1.軟件下載
a.JDK 1.6(目前最新:Java SE 6 Update 27)
b.Android SDK下載器(用來(lái)下載Android SDK,目前最新:android-sdk_r12-windows.zip)
c.Eclipse IDE(目前最新:Eclipse Classic 3.7)
2.安裝及配置Java環(huán)境
a.安裝JDK
b.設(shè)置環(huán)境變量
3.安裝Android SDK
Android SDK可以通過SDK下載器自動(dòng)下載和配置,適合網(wǎng)絡(luò)好的朋友;也可以借助工具下載SDK文件,手工配置,適合下載速度慢的朋友。
4.Eclipse集成開發(fā)環(huán)境(IDE)的搭建
同Android SDK一樣,分為在線安裝和手動(dòng)安裝兩種方式。
5.Eclipse ADT配置
6.配置Android SDK
這里介紹下新建AVD。所謂AVD,即Android Virtual Devices,Android虛擬設(shè)備,亦即嵌入式開發(fā)中常用的模擬器。
關(guān)鍵代碼:
Paint mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG)
mTextPaint.setColor(Color.WHITE);
//Define the string.
String displayText = "手寫輸入法";
//Measure the width of the text string.
float textWidth = mTextPaint.measureText(displayText);
手機(jī)的硬件世界,是一個(gè)十分嚴(yán)格的多任務(wù)作業(yè)(multithread)世界。意思是,在任何時(shí)候,你的程序都會(huì)受到不能抵抗的中斷(interrupt),例如,當(dāng)你的程序正在制造動(dòng)畫效果的時(shí)候,或正在運(yùn)算一個(gè)game子彈的射擊,突然手機(jī)收到來(lái)電了,你的程序被退后,切換到接來(lái)電的接口。使用者必須得到非常穩(wěn)定的來(lái)電中斷并順利在短時(shí)間內(nèi)完成,讓使用者可以接聽來(lái)電。你的程序,不管正在進(jìn)行甚么,都要停下來(lái)。并且,安全地停下來(lái)。
因此,android的app,使用了Activity的設(shè)計(jì),來(lái)代表每一個(gè)生命的周期。簡(jiǎn)單說(shuō),你的app是一個(gè)Activity。(extends了它的class)
Activity將會(huì)遇到各種狀況,包括了:protected void onCreate();
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();從名字便可以知道它的意思,例如當(dāng)你的app第一次開動(dòng)的時(shí)候,便會(huì)運(yùn)行onCreate了。
在開發(fā)中會(huì)涉及到對(duì)于組件的字體或文本的字體的修改,可以通過Spannable來(lái)進(jìn)行修改字體:
TextView tv = new TextView(this);
tv.setText("手機(jī)字體大小設(shè)置”);
//創(chuàng)建Spannable對(duì)象
Spannable span = new Spannable-String(tv.getText());
/*通過setSpan(Object,int start,int end,int flag)對(duì)特定的內(nèi)容進(jìn)行設(shè)置
其中AbsoluteSizeSpan是決定字體大小
*/
span.setSpan(new AbsoluteSizeSpan(11),0,2,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
span.setSpan(new AbsoluteSizeSpan(21),3,6,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
tv.setText(span);
[1]Android手機(jī)安裝、解除安裝APK教[OL].http://www.and-machine.com/viewthread.php?tid=74.
[2]昭佑.天翔:Android Emulator變更顯示語(yǔ)系[OL].http://tomkuo139.blogspot.com/2009/07/androidemulator_5723.html.
[3]http://www.android-study.com.