當前位置:編程學習大全網 - 源碼下載 - 怎麽在手機上編程

怎麽在手機上編程

1 引 言隨著通訊技術的發展及手機的普及,人們正在不斷地給手機增加新的功能,其中,使手機實現壹般只有PC機才具有的功能--下載各種程序並運行,是目前手機發展的壹個重要方向。為此,人們提出了各種各樣的解決方案,其中基於JAVA的J2ME方案無疑是最引人註目的。JAVA語言由於其平臺無關、開放、網絡功能強、面向對象、安全等特點,壹經SUN公司提出,就隨著Internet的發展而風靡全世界,在國外已成為軟件開發人員的必修語言。特別是他的"壹次編寫、到處運行"的跨平臺優點,對於手機領域來說更具有重要的意義。因為目前手機的種類繁多,各種廠商都有自己的標準,如何使他們能運行同壹種標準的程序成為必須要解決的問題。采用JAVA語言後,各種手機只要實現JAVA虛擬機(JVM)就可以運行JAVA程序,這種方法可以說是目前情況下最為理想的壹種解決方案。J2ME(JAVA 2 Micro Edition)是用於嵌入式系統的JAVA,他是SUN公司對標準的JAVA版本J2SE做了最大程度的精簡後得到的壹種JAVA應用程序運行環境,在最簡單的情況下他只有幾十kB,特別適合在手機、PDA等設備中使用。手機廠商如果在自己的手機中實現了J2ME規範,就可以從網絡下載並運行JAVA程序,從而大大擴展了手機的功能。鑒於JAVA在Internet上取得的巨大成功,我們有理由相信,J2ME能夠把這種成功延伸到手持設備領域,為將來的手機和互聯網融為壹體提供有利的條件。JAVA手機的出現也給軟件行業提供了新的機遇,能否給JAVA手機提供足夠多的軟件資源是關系到其能否推廣的重要因素之壹。本文對J2ME構架做壹個簡單的介紹,並通過壹個具體的程序例子來說明JAVA手機程序的特點及開發過程。2 J2ME概述J2ME是壹種新的、非常小的JAVA應用程序運行環境,他所定義的構架主要用於在手持式設備上推廣使用JAVA技術。SUN公司將為各種硬件規模的設備提供合適的配置,這些配置包括虛擬機、核心類庫及API。目前,J2ME定制了2種配置:CLDC(Connected Limited Devices Configuration)和CDC(Connected Device Configuration)。其中,CLDC是為手機等CPU和內存資源遠低於標準JAVA要求的設備所提供的壹種配置,他是對JAVA標準版本做了最大程度的縮減後得到的,其虛擬機和核心類庫多於100kB。CDC配置主要用於擁有更多資源的下壹代設備。CLDC配置給各種手持設備提供了能運行JAVA程序的壹種環境,但開發者還很難在這種環境下開發程序,首先因為CLDC核心庫提供的是低級API,不適合直接用於構建應用程序;其次,手持設備的系統結構千差萬別,很難保證應用程序的圖形界面、網絡等功能的移植性。因此,為了進壹步增強J2ME的功能,SUN公司允許設備供應商在實現CLDC的基礎上再為自己的設備提供專門的高級API及程序管理方法,即PROFILE,以簡化應用程序的開發,使程序有更好的移植性。同時,SUN公司還與50多家知名的移動設備制造商及軟件開發商壹起,制訂了專門用於手機等移動信息設備的PROFILE--MIDP (MobileInformation Device PrOfile),由於MIDP提供了編寫圖形界面、網絡程序的統壹規範,並實現動態、安全的程序管理方法,因此得到了諾基亞、摩托羅拉、西門子等主要手機廠商的支持,紛紛推出了基於MIDP的JAVA手機。與APPLET相似,MIDP程序也稱為MIDlet,他必須要繼承壹個特定的類--MIDlet,這樣MIDlet管理者才能控制他的運行。這個類包含了startApp,pauseApp,destoryApp三個用戶可以重載的方法,分別在MIDlet進入運行狀態、停止運行、退出時調用。MIDP程序的圖形接口相對於標準JAVA的AWT接口要簡單得多,他分為低級API和高級API。低級圖形API使開發者能更直接地控制屏幕顯示和鍵盤輸入,他基於抽象類Canvas,壹般用於編寫遊戲程序,他的可移植性要由開發者自己保證。高級圖形API能在不同設備之間有很好的可移植性,但開發者能調整的余地也相應地很小,他基於抽象類Screen,並有

Alert,Form,List,TextBox四個具體的子類,這4個子類分別表示警示框、表單、列表框、文本輸入框。另外,高級API還提供了許多圖形組件,包括Command,ChoiceGroup, DateFie1d, Gauge, ImageItem,StingItem,TextField等,他們都可以添加到A1ert和

Form中。有些圖形組件還提供了與AWT相似的事件及事件響應處理方式。MIDP程序壹般要和各種資源文件壹起壓縮成壹個jar文件。發布時,還需要有壹個擴展名為jad的描述文件,他包含了MIDP程序的名稱、版本、jar文件的位置及大小等信息。JAVA手機首先要訪問的是描述文件,再根據描述文件的信息把MIDP程序安裝到本手機,然後才能運行。3 開發實例MIDP程序真實的運行環境是JAVA手機,但他的開發卻是在PC機上進行的,因此開發環境壹般都提供仿真器對程序進行測試。各種手機廠商都有自己的開發、測試環境,下面介紹的例子程序,是在SUN公司的MIDP實現中調試通過的。3.1 程序功能本例子包含2個MIDP程序,第1個程序運行時要求用戶輸入姓名,並選擇性別,然後程序根據性別和當前時間向用戶輸出壹句問候語。第2個程序運行時讓用戶選擇圖片名稱,然後把這幅圖片在屏幕上顯示出來。這2個MIDP程序由同壹個描述文件描述。3.2 程序源代碼及註釋3.2.1 第1個MIDP程序(samplel.java)import javax.microedition.midlet.MIDlet;import javax.microedition.1cdui.*;import java.util.*; //任何MIDP程序都要繼承MIDlet類,為了處理按鈕命令,還要實現了CommandListener接口public class samplel extends MIDlet implements CommandListener{private TextBox input; //聲明文本輸入框private Form select; //聲明表單,用於放置各種圖形組件private Alert output //聲明警示框Command cfl,cf2,ct,ca; //聲明各種命令按鈕ChoiceGroup sex; //聲明選擇框Display display=null; //聲明屏幕顯示對象public samplel(){input =new TextBox("請輸入您的姓名:",null,8,TextField.ANY); //創建文本輸入框ct=new Command("OK",Command.SCREEN,1); //創建按鈕ctinput.addCommand(ct); //把按鈕加到文本輸入框input.setCommandListener(this);//設置按鈕事件處理類select=new Form("請選擇性別:"); //創建表單String[]str={"男","女"};sex=new ChoiceGroup(null,ChoiceGroup.EXCLUSIVE,str,null); //創建單選框,select.append(sex) //把單選擇框加入表單cfl=new Command("OK",Command.SCREEN,1);//創建2個按鈕cf1和cf2cf2=new Command("回退",Command.BACK,2);select.addCommand(cf1); //把2個按鈕加到表單select.addCommand(cf2);select.setCommandListener(this) //設置按鈕事件處理類output=new Alert("問候;","您好1",null,null);//創建警示框output.setTimeout(Alert.FOREVER);//設置超時為永遠ca=new Command("退出",Command.EXIT,1);//創建按鈕ca output.addCommand(ca); //把按鈕ca加到警示框output.setCommandListener(this); //設置按鈕事件處理類} public void startApp() //該方法在該MIDlet得到執行權時調用{if(display==null) display=Display·getDisplay(this);//從系統得到這個MIDlet的屏幕顯示對象display·setCurrent(input);//把文本輸入框input顯示在屏幕

}public void pauseApp() {}//該方法在該MIDlet失去執行權時調用public void destroyApp(boolean unconditional)

//該方法在該MIDlet退出時調用

{

input=null; output=null;select=null;

}//commandAction方法是CommandListener接口中定義的按鈕事件處理方法public void commandAction(Command c,Displayable d){if(c==ct) //如果按了ct按鈕display.setCurrent(select); //則把表單select顯示在屏幕if(c==cfl) { //如果按了cfl按鈕 Calendar rightNow = Calendar.getInstance();//得到當前時間int ti=rightNow.get(Calendar.HOUR_OF_DAY);

//得到當前時間的小時數(24小時制)int indx=sex.getSelectedIndex();

//得到用戶在單選框中所選的項目號String helo= null;String name=input·getString();//得到用戶在文本框中輸入的字符串//以下4句根據ti和indx的值構建不同的字符串heloif(ti>=12&&indx==1)helo="上午好!"+name+"小姐";if(ti>=12&&indx==0 helo="上午好!"+name+"先生";if(ti<12&&indx==1) helo="下午好!"+name+"小姐";if(ti<12&&indx==0 helo="下午好!"+name+"先生";output.setString(helo);//在警示框中加入字符串helodisplay·setCurrent(output);//把警示框output顯示在屏幕}if(c==cf2 //如果按了cf2按鈕display.setCurrent(input);//則把把文本輸入框input顯示在屏幕if(c==ca) { //A0果按了ca按鈕,則調用destroyApp方法退出destroyApp(true);notifyDestroyed();

}}

}3.2.2 第2個MIDP程序(sample2.java)import javax.microedition.midlet.MIDlet;import javax.microedition.1cdui.*;public class sample2 extends MIDlet implementsCommandListener

{private Form form;private List list' //聲明列表框Command cl=null;Display display=null;String[]dd={"圖像1","圖像2","圖象3"};public sample2(){list=new List("Test List,Choice.EXCLUSIVE,dd,null);cl=new Command("OK",Command.SCREEN,1);list.addCommand(cl);list.estCommandListener(this);}

public void startApp(){display=Display·getDisplay(this);display·setCurrent(1ist);}

public void pauseApp() {}public void destroyApp(boolean unconditional){ list=null; }public void commandAction(Command c,Displayable d)

{ Image aa=null; //聲明圖像對象aaif(c==cl) { //用戶按了cl按鈕int i=list·getSelectedIndex();//得到用戶在列表框中所選的項目號 try{//創建圖象對象,圖象文件為tl.png,t2.png或t3.png,要和類壹起壓縮在jar包中aa=Image.createImage("/t"+(new Integer(i+l)).toString()+".png");

}catch(Exception e){}Form f=new Form("Test"); //創建表單ff.append(aa); //在表單中加入圖像display·setCurrent(f);//把表單顯示在屏幕上} }}

3.2.3 描述文件內容(sample.jad)MIDlet-1;Hello,,samplel//聲明第1個MIDlet程序,顯示名為Hello,類名為samplelMIDlet-2:Image,,sample2//聲明第2個MIDlet程序,顯示名為Image,類名為sample2MIDlet-Description:Sample application //對MIDlet的描繪MIDlet-Jar-Size:11640//Jar包的字節數,要根據實際情況修改MIDlet-Jar-URL:sample.jar//Jar包的位置及名字,位置省略時表示與jad文件在同壹位置MIDlet-Name:MySamples //MIDlet的名字MIDlet-Vendor:Sun Microsystems //供應商名字MIDlet-Version:1.0 //MIDlet版本3.3 開發過程(WindOWS 2000平臺下)(1)從SUN公司的網站下載MIDP2.0版(/prOducts/midp),並解壓到c:\midp2.0fcs(2)從SUN公司的網站下載JAVA標準版開發工具JDKl.3.1,安裝在c:\jdkl.3(3)建壹工作目錄,並把上述3個文件存人該目錄(4)另外再找3個圖像文件,轉化為png格式後以tl.png,t2.png,t3.png的名字存入工作目錄(5)進入MS-DOS方式,轉入工作目錄,設置以下環境變量:set MIDP_HOME=c:\xmidp2.Ofcsset PATH=c:\jdkl.3\bin;c:\midp2.Ofcs\binset classpath=c:\midp2.Ofcs\classes

(6)編譯2個JAVA文件:javac *.java(7)用以下命令預先檢查2個類:preverify-d.sample1preverify-d.sample2(8)把有關文件打成1個包:jar-CVf sample.jar *.pag(9)在仿真器中運行:midp-C1asspath.sample.jar-descriptor sam

ple.jad在完成仿真後,可以把sample.jadd和sample.jad放在某壹網站,並用以下命令測試: midp-install http://<網絡地址及路徑>/sample.jad//下載並安裝midp-run 1 //運行,1表示所安裝的第1個MIDlet註:①網站的Web服務器要把jadd文件的MIME類型設為text/Vnd.sun.j2me.app-descriptor,jar文件的MIME類型設為applicatiOn/java-archive;②若sample.jad和sample.jar放在不同位置,則sample.jad中的MIDlet-Jar-URL屬性要相應修改;③可以輸入midp命令,然後用圖形界面進行操作。4 結 語MIDP API還提供了HttpConnection類,利用他可以很方便地與互聯網的網站進行交互,從而編寫出功能很強的網絡程序。隨著JAVA手機的普及,迫切需要大量的應用程序資源,各大手機廠商也給開發者提供了非常方便的開發工具,相信MIDP程序的開發在不久的將來能很快地流行起來。

  • 上一篇:Scapy 中文文檔:三、使用方法
  • 下一篇:什麽收銀軟件比較好用
  • copyright 2024編程學習大全網