J2ME做專案的一些經驗 (轉)

gugu99發表於2007-08-15
J2ME做專案的一些經驗 (轉)[@more@]

最近做了一個的專案,有一些和大家一起分享。如有不足或者需要和我聯絡,to:請發到cqucyf@263">請發email到cqucyf@263.net.

該專案中使用的工具為J2ME1.0.4_01+CodeWarrior。因為該專案不是一個遊戲,所以沒有設計到底層介面,總結起來有以下幾點:

1、  使專案名稱為中文。這個就是讓專案名稱在中顯示為中文,設定方法如下:在J2MEWTK中開啟相應的專案,“設定”-》“MIDlets”,選中你的MIDlet,選擇“編輯”即可修改。

2、  程式設計。因為專案中涉及到網路互動,所以用到了網路程式設計,網路程式設計的經驗主要有3個方面:

2.1  資料的傳送。MIDP1.0中資料傳送的方法很多,這次主要用到了。程式碼如下:

import x.microedition.io.*;

……

String url = “”;

HttpConnection hc = (HttpConnection)Connector.open(url));

 :namespace prefix = o ns = "urn:schemas--com::office" />

2.2 資料的接收。MIDP1.0中提供了很多的資料接收方法,但是都需要轉換成陣列等。而這次該專案中是將反饋的資訊寫如頭資訊中。將傳遞的資訊以一定的格式寫成字串,然後接收後進行解析。如:

  String s = hc.getHeaderField("login");

 

如果查詢時返回的資訊個數不固定,則可以用一個頭資訊專門返回資料的格式,然後接收資料時依次讀取相應的頭。如:

String temp = hc.getHeaderField("number");  //獲得返回資訊的個數

如果資訊中頭資料是這樣的格式:“data” + 數字,即data1,data2……等。則可以這樣讀取:

int number = Integer.parseInt(temp);

String[] data = new String[number];

for(int i = 0;i < number;i++)

{

    data[i] = hc.getHeaderField("data"+i);

}

  //解析data

 

  2.3 網路傳輸中的中文問題。這個分為傳送的中文問題和接收的中文問題的處理。

    傳送的中文問題:向提交中文資訊,包括URL中包含中文資料,都可以這樣解決:給自己的J2MEWTK1.0.4打中文補充包,然後在傳送時,使用toString方法轉換。如:

    String s = “中文”;

  String url = “”  + s.toString();

HttpConnection hc = (HttpConnection)Connector.open(url));


接收的中文問題:接收伺服器傳送過來的中文資料需要進行解碼,和一般的解碼方法一樣:

String str ;

//str儲存接收到的伺服器資料

byte[] bytes = str.getBytes("ISO8859_1");

String s = new String(bytes,"gb2312");

3、  MIDP1.0中對於集合的支援有限,只支援Vector。

4、  最後還有一個迷惑的問題:是把所有的介面寫在一個類裡面呢,還是每個介面寫一個類呢?J2MEWTK中的例子很多都是將所有介面寫在一個類中的,但是這樣造成程式碼不便於管理,如果寫入多個類中,則耗費。選擇真的很難!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-959547/,如需轉載,請註明出處,否則將追究法律責任。

相關文章