智能手機(jī)開發(fā)簡介
單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,智能手機(jī)軟件開發(fā)小議,使用,J2ME進(jìn)行手機(jī)編程,主講人:吳佳磊,蘭州理工大學(xué)蘋果俱樂部內(nèi)部講座課件,Agenda,智能手機(jī)開發(fā)概述,認(rèn)識J2ME及WTK套件,Eclipse_For_J2ME,J2ME中常用類的介紹,程序Demo演示,智能手機(jī)開發(fā)概述,智能手機(jī),公式表示:“智能手機(jī)=掌上電腦+手機(jī)”,廣義上講,智能手機(jī)就是將PDA的大部分功能,特別是個人信息管理和基于無線數(shù)據(jù)通信的網(wǎng)頁瀏覽和郵件收發(fā)功能,集成到手機(jī)終端中得到的新型概念手機(jī),智能手機(jī)的特點(diǎn):便攜性、可擴(kuò)展性、可定制性、功能多樣性、可實(shí)現(xiàn)增值業(yè)務(wù),Smart,Phones,一則來自BBC的市場調(diào)查信息:,十年之前的SmartPhone市場,我們可以看到的智能手機(jī)界面都類似于黑莓手機(jī),如今的智能手機(jī)市場中,充斥著更多廠家的手機(jī),但是它們看上去都像是iPhone,這說明什么呢?,顯而易見,蘋果公司在智能手機(jī)的市場上擁有絕對的優(yōu)勢,引領(lǐng)了整個行業(yè)的潮流,作為蘋果的開發(fā)者,我們可以引以為榮!,為何要進(jìn)行智能手機(jī)的開發(fā)?,廣泛的用戶群體(中國有過5億手機(jī)用戶),眾多設(shè)備制造商(如Nokia,MOTO,Apple等)及國內(nèi)主要的網(wǎng)絡(luò)運(yùn)營商(中國移動、中國聯(lián)通、中國電信等)都在積極開拓者一塊處女地,并提供良好的SDK支持,已經(jīng)比較成熟的運(yùn)作模式,即從創(chuàng)意、研發(fā)、發(fā)布、經(jīng)營到后期維護(hù)的運(yùn)營平臺和一條龍服務(wù)模式,包括各種手機(jī)的App商城,補(bǔ)充內(nèi)容,對于在特定幾個智能手機(jī)品牌下進(jìn)行開發(fā),可以在相應(yīng)的官方網(wǎng)站上了解相關(guān)信息和下載開發(fā)資源包(包括開發(fā)使用的API和測試模擬器等,通常免費(fèi)),Apple,Nokia,Moto,http:/,智能手機(jī)開發(fā)必備條件,開發(fā)環(huán)境:這里選擇使用Java的ME版本進(jìn)行手機(jī)的開發(fā),需要配置JDK和JRE,手機(jī)功能API的支持:我們這里使用SUN公司自帶的WTK,其中包含了CLDC信息、MIDP包和一款SUN公司研發(fā)的通用手機(jī)模擬器,IDE編譯窗口,可使用Eclipse或NetBeans,并在其中綁定J2ME和WTK,此外,還需要準(zhǔn)備后期測試的真實(shí)手機(jī)平臺,認(rèn)識J2ME和WTK套件,什么是Java?,Java是一種面向?qū)ο蟆⒖梢浦膊⒈灰暈閮?yōu)于C語言(仍然有爭議)的編程語言,什么是J2ME?,全稱為Java Micro Edition,是Java的微型版本,主要用于進(jìn)行智能終端和嵌入式環(huán)境的開發(fā)。例如,高級汽車的智能控制軟件,智能家電的控制軟件等,Java是一個非常廣泛的概念。主要包括三種版本,分別稱為J2ME、J2SE、J2EE。其中J2SE是其它兩種Java版本運(yùn)行的基礎(chǔ),有關(guān)J2EE的相關(guān)知識后續(xù)講座會涉及,基本組件,主要功能,JRE,(Java Runtime Environment),為基于Java的軟件提供運(yùn)行環(huán)境,包括JVM,JDK,(Java Develop Kit),為Java軟件的開發(fā)提供基本的編譯器、類庫等,IDE,(Integrated Develop Environment),提供一個集成化的窗口界面利于進(jìn)行項(xiàng)目文件的組織和管理,Table1.基本Java開發(fā)環(huán)境的組成,JAVA,J2ME,J2SE,J2EE,(Java家族中的標(biāo)準(zhǔn)版本,僅需要最基本的環(huán)境配置,開發(fā)桌面環(huán)境下的軟件使用,提供Java的開發(fā)及調(diào)試環(huán)境、Java虛擬機(jī)等組件),(Java家族中的服務(wù)器版本,主要是用于在服務(wù)器端提供由Java開發(fā)出的動態(tài)網(wǎng)頁及后臺小程序的,運(yùn)行環(huán)境。除了JRE環(huán)境之外,還需要服務(wù)器端的支持,如NetBean或者Apache等,),(Java家族中的微型版本,主要用于智能終端的開發(fā),例如手機(jī)、智能家電控制、機(jī)頂盒等。除了JRE之外,還需要支持移動終端各種功能額外API的支持),WTK(Wireless Tool Kit),確切的講,這是一個API的集合,由SUN公司提供的,包含CLDC和MIDP配置信息,還包括手機(jī)模擬器在其中,主要內(nèi)容:11個Java相關(guān)包,每個包內(nèi)還有相關(guān)的類(具體后面介紹),幾個需要了解的相關(guān)概念:CLDC、CDC、MIDP等,名詞術(shù)語解釋,CLDC(Connection Limited Device Configuration),即有限連接設(shè)備配置信息,如手機(jī)、汽車主板就屬于這一類,CDC(Connection Device Configuration),即連接設(shè)備配置信息,如機(jī)頂盒、智能冰箱等就屬于這一類,Tip:兩者的區(qū)別其實(shí)就是電源供電模式不同,MIDP(Mobile Information Device Profile),即移動信息設(shè)備配置文件,它專指移動CLDC設(shè)備的配置文件,例如手機(jī)的啟動、初始化信息等,補(bǔ)充信息,手機(jī)的內(nèi)嵌Java運(yùn)行環(huán)境體系,Optional Packets,Profile,Configurations,Java Virtual Machine,Embeded Host OS,手機(jī)廠商為自己的產(chǎn)品研發(fā)的功能API,MIDP,即通用的一般性手機(jī)功能API,CDC/CLDC配置文件,類似于固件信息,寫入固件中的Java虛擬機(jī),手機(jī)廠商為自己的產(chǎn)品研發(fā)的操作系統(tǒng),Eclipse_For_J2ME,開始之前,所謂IDE,就是指Integrated Development Environment,即集成開發(fā)環(huán)境。,它本身并不代表任何的編程語言,只是一個窗口化界面,為整個編譯、測試和管理程序文件提供了一個集中環(huán)境,類似于VC、Xcode等,要在某一種系統(tǒng)平臺下使用某一種編程語言制作軟件,可以選擇的平臺其實(shí)有很多種。例如在win下開發(fā)J2ME可以使用Eclipse、NetBeans,甚至文本編輯器加命令行操作來完成,唯一的區(qū)別就是過程中的操作方式和工作量會有所不同,Eclipse最早是在Linux下進(jìn)行Java開發(fā)的IDE客戶端,該軟件本身也是用純Java編寫的,正由于它是用Java開發(fā)的,所以Eclipse能夠跨平臺工作,在Win、Linux和Mac下也有相應(yīng)的版本,Elipse軟件的官方主頁:,在這里可以下載到各種平臺下的Eclipse版本,IDE客戶端:Eclipse,以Windows下的情況為例進(jìn)行講解,聲明:在Linux和MacOS下均有相應(yīng)的JDK和Eclipse版本,可以自行下載安裝,但是遺憾的是WTK只有Windows和Linux下的版本,MacOS下暫時沒有,但是,在MacOS下可以使用Xcode(另一種IDE,內(nèi)置了蘋果開發(fā)的SDK,只能在蘋果操作系統(tǒng)下運(yùn)行)進(jìn)行iPhone的開發(fā),后面會單獨(dú)安排這方面的講座,IDE客戶端:Eclipse(續(xù)),Eclipse通常情況下是以文件包的格式存在的,所以不需要安裝,下載解壓后即可使用,Eclipse中常用的J2ME組件是EclipseMe,可以在Eclipse中通過安裝更新包的方式將EclipseMe加入,加入后即可在Eclipse中調(diào)用J2ME的API,Eclipse運(yùn)行加載界面,首次運(yùn)行時,需要設(shè)定默,認(rèn)的工作路,徑,也叫做,工作區(qū)。今,后的工程文,件就會放在,該路徑下,Eclipse的軟件主窗口,IDE客戶端:Eclipse(續(xù)),注意:Eclipse在第一次啟動的時候,會自動檢測系統(tǒng)中的Java運(yùn)行環(huán)境,如果沒有正確安裝Java環(huán)境,Eclipse也無法正常加載!,需要在軟件的預(yù)設(shè)頁面中,將WTK安裝目錄與Eclipse進(jìn)行綁定,這一步完成后可以在Eclipse中調(diào)用API和模擬器,搜索完畢,發(fā)現(xiàn)由Sun公司提供的WTK中會包含四款通用的手機(jī)模擬器,選擇一款作為默認(rèn)運(yùn)行的模擬器(通常選擇DefaultColourPhone),默認(rèn)手機(jī)模擬器綁定完畢之后,保存設(shè)置,現(xiàn)在就可以正式開始了,恭喜!,右側(cè)顯示的就是默認(rèn)彩屏手機(jī)模擬器的界面,J2ME中常用類的介紹,首先,這里所說的J2ME中的類是特指WTK中的類,不包括JDK中的基本類,可以在WTK的安裝目錄下,找到docsapimidp子目錄,打開其中的index.html文件,界面如下頁圖,該界面中包含由MIDP提供的常用API包,共11個,負(fù)責(zé)常見軟件的界面功能實(shí)現(xiàn),每個包中包含許多具體的類,術(shù)語簡介,Java面向?qū)ο缶幊讨?,常用的幾個術(shù)語羅列如下(具體內(nèi)容后面的講座中會涉及到),類(class):一般性的邏輯的抽象概念,包(packet):Java中對于相同功能的一組類的集合,接口(Interface):類似于框架的一種公共類的功能模塊,可以供其他類的實(shí)例來實(shí)現(xiàn),一旦實(shí)現(xiàn)后可以在目的類中使用源類的成員函數(shù),一個類中的函數(shù)主要可以分為構(gòu)造函數(shù)(不一定都有)和成員函數(shù),幾個重要的包:,和java.io負(fù)責(zé)各種輸出輸入,負(fù)責(zé)界面元素的生成,繼承于object的最基本的包,負(fù)責(zé)程序初始化對象實(shí)例的創(chuàng)建,幾個重要的類,所有顯示類的基類,負(fù)責(zé)程序界面的顯示,所有選項(xiàng)類的基類,負(fù)責(zé)線程的管理,負(fù)責(zé)顯示字體的設(shè)置,負(fù)責(zé)顏色的顯示,負(fù)責(zé)按鍵的設(shè)置,幾個重要的接口,實(shí)現(xiàn)按鍵事件的監(jiān)聽操作,實(shí)現(xiàn)連接請求,實(shí)現(xiàn)多線程,實(shí)現(xiàn)對象按鍵時間的監(jiān)聽操作,接口的作用,接口主要是為了方便某一個子類的功能實(shí)現(xiàn),通俗地講也就是實(shí)現(xiàn)類的多重繼承操作,幾個重要的類,這個類適用于需要進(jìn)行界面顯示的部分,它是所有界面顯示類的根類,所有與顯示相關(guān)的類都是displayable類的子類,常見的界面元素有Form、Canvas、List、TextBox、Alert等,它們都是可以在界面上顯示的,有相應(yīng)的類管理它們,在它們之上添加功能,程序最開始首先創(chuàng)建并初始化一個顯示類的對象,使用哪一種需要根據(jù)具體的界面用途來定,幾個重要的類,這個類主要用于負(fù)責(zé)界面上的顯示,它也是系統(tǒng)預(yù)置的需要實(shí)例化和使用的類之一,程序中的對象間關(guān)系:,Display對象,Displayable對象,功能對象,按鍵對象,事件、線程對象,應(yīng)用程序本身,幾個重要的類,類下面的幾個子類,分別為:和,其中,canvas是畫布,負(fù)責(zé)精確的繪制手機(jī)界面上的元素顯示,在做游戲界面時可以用到,Screen下面的子類包括Alert,F(xiàn)orm,List和Textbox等,根據(jù)需要進(jìn)行選擇,幾個重要的類,Command類用于生成八種類型的按鍵,這八種類型分別為:BACK、CANCEL、EXIT、SCREEN、HELP、OK、ITEM、STOP,每種不同類型按鍵的優(yōu)先級不同,具體可以參考用戶API手冊,按鍵生成之后,需要使用displayable子類的成員函數(shù)addCommand來添加按鍵,若要使command生效,程序還需要實(shí)現(xiàn)commandListener接口,幾個重要的類,凡是這個類和這個類的子類實(shí)現(xiàn)的元素均是為了表明一個事件或是元素,主要的類型有:選擇框、文本框、日期框、圖像等等這些元素如果想要正常的顯示在屏幕上,只能夠顯示在form類中,item類下的子類功能的實(shí)現(xiàn)還需要程序?qū)崿F(xiàn)itemCommamdListener接口,幾個重要的類,首先,需要解釋什么叫做MIDlet,其實(shí)是MIDApplet的簡稱,手機(jī)中的大型程序其實(shí)就是由一個個小的MIDlet共同組合,稱為一個project,再又編譯器完成編譯并打包為Jar文件,這個類是編譯系統(tǒng)默認(rèn)為J2ME程序添加的一個,是整個程序存在的前提和基礎(chǔ),幾個重要的類,這個類的作用,簡單的來講就是一個連接器的作用,用于創(chuàng)建各種外部連接使用,例如,在進(jìn)行網(wǎng)絡(luò)連接的時候,首先就需要創(chuàng)建一個connector類的實(shí)例,通過它所包含的各種輸出輸入流方法來實(shí)現(xiàn)程序和外界之間的聯(lián)系,幾個重要的類,這個類是專門用在程序中的線程創(chuàng)建的,也就是說程序在多線程執(zhí)行中會用到,這個類有四種構(gòu)造函數(shù)(其實(shí)其他的幾個類有的也有多種構(gòu)造函數(shù)),選擇一個適合自己需要的創(chuàng)建類的實(shí)例對象,補(bǔ)充內(nèi)容:線程thread vs.進(jìn)程process,幾個重要的類,這個類是所有java程序(不僅限于J2ME)中最常用到的一個類,包含多種子類,用于特定的某一種程序編譯過程中出現(xiàn)的意外