??xml version="1.0" encoding="utf-8" standalone="yes"?>
[转脓自yesky]
一、J2ME中需要的Java基础知识
现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,L从Java基础开始学习,而且现在讲Java基础的书c中都是以J2SE来讲基础Q这q学习造成了一些不必要的麻烦,下面J2ME中用到的和不需要的Java基础知识做一个简单的说明?br /> J2ME中用到的Java基础知识Q?br /> 1、Java语法基础Q包括基本数据类型、关键字、运符{等
2、面向对象的思想Q类和对象的概念Q承和多态等{?br /> 3、异常处?br /> 4、多U程
J2ME中没有用到的Java基础知识Q?br /> 1、JDK中javac和java命o的?
JAVA手机|[www.cnjm.net]
2、Java基础中的很多cdJ2ME中没有,或者类中的Ҏ做了大量的精。所以徏议在J2ME中熟悉类库?
JAVA手机|[www.cnjm.net]
3、Applet、AWT、Swingq些知识在J2ME中根本用不到?
JAVA手机|[www.cnjm.net]
单说q么多,希望学J2ME的朋友们能少C些弯路,不之处希望大家U极指正和补充?
二、J2ME中暂时无法完成的功能
列一些J2ME中暂时无法完成的功能Q希望大家能U极补充Q?
JAVA手机|[www.cnjm.net]
1、在手机中不更改代码实现ULQ主要指游戏?br /> 2、动态修Ҏ钮文字?
JAVA手机|[www.cnjm.net]
3、在Canvas上接受中文输入?
JAVA手机|[www.cnjm.net]
4、操作本地资源、例如地址本、已收短信息{?
JAVA手机|[www.cnjm.net]
5、制作破坏性的手机病毒?br /> 6、其他等待大家来补充?br /> 三、J2ME的跨q_?br /> J2ME技术源于JavaQ所以也hJVM的优势,可以在支持Java的^Cq行ULQ但是现在的J2ME技术在跨^C却做的很p糕Q我们来单看一下原因:
1、手机的屏幕寸不一Q?br /> q个主要在界面制作上。如果你使用的是高用户界面Q比如你做的是应用开发或者用L陆、用h册这L通用功能Ӟ一般没有什么问题?br /> 如果你用的是低U用L面,比如你做的是游戏Q那么你需要考虑q个问题了?
JAVA手机|[www.cnjm.net]
JAVA手机|[www.cnjm.net]
2、厂商的扩展API不统一Q?
JAVA手机|[www.cnjm.net]
例如Nokia的扩展APIcdUIpdQ在别的手机上或者没有实玎ͼ或者包名不同等{?br /> 3、手机^C实现的bugQ?br /> 例如Nokia?650在实现双~冲上有bugQ那么在q种机型上运行的软g׃能用双~冲。其他NOKIA上的一些bugQ可以参看:http://www.cnjm.net/resfetch/EKayXl5MlY2NaSIHXDqIdRYYOhhiXo2ZYQgiaQcmaY1ha4iyCKZijcsVFcqNFWSNy6SNZMvczstkOmF1THk_
4、手机性能问题?br /> 不同手机的可用内存、最大jar文g都有要求Q例如Nokia S40的大部分手机支持的最大jar文g?4KQ最大可用内容ؓ210K?br /> 所以现在的手机软gQ特别是游戏都提供支持的机型列表Q也才有了手机游戏移植h员的存在?br /> 四、学习J2ME可以从事的工作种c?br /> 现在J2ME技术可以说相当的火_q里介绍一些学好了J2ME之后可以从事的工作的U类Q?br /> 1、J2ME游戏开发h?br /> Ҏ游戏{划或者文档要求,在某U特定的机型(以Nokia S40或S60居多)开发游戏程序。这是现在大部分J2MEE序员从事的工作?br /> 需要熟l掌握:高用户界面、低U用L面、线E,如果是网l游戏,q需要熟l网l编E?br /> 2、J2ME应用开发h?
JAVA手机|[www.cnjm.net]
现在的移动应用还不是很多Q但是还是出C一些,特别是移动定位以及移动商务相关的内容。需要熟l掌握:高用户界面、线E和|络~程?br /> 3、J2ME游戏UL人员
参照源代码,可以在一个^C可以q行的游戏移植到其他q_上去。例如将Nokia S40的游戏移植到S60上,或者烦qT618{等。主要是控制屏幕坐标Q有些可能需要替换一些API?br /> 需要熟悉各q_之间的差异以及相关的技术参敎ͼ比如屏幕大小、最大jar文g寸{等?br /> 五、J2MEE序设计的几个原?br /> 1、用面向对象编E?br /> 虽然使用面向q程~程可以减小文g的尺寸,但是Z以后l护的方便和利于扩展Q还是要使用面向对象~程?br /> 2、用MVC模式
模型、界面和控制分离。现在很多的E序三者合一Q但是如果你做的E序比较大的话,q是你进行分R?
JAVA手机|[www.cnjm.net]
3、自动存储用戯?br /> 使用RMS来存储用L信息Q例如存储用户上ơ输入的用户名、密码、用户对于系l的讑֮{,q样不仅可以减少用户的输入,而且对用户友好。很多程序甚臛_了自动登陆等?br /> 4、一些系l设|允许用户关闭。如背景音乐、背景灯昄{?
JAVA手机|[www.cnjm.net]
5、将低用户界面的绘制动作放在一个独立的U程里面厅R?br /> 6、在需要大量时间才能完成的工作Ӟl用户一个等待界面?
JAVA手机|[www.cnjm.net]
六、从模拟器到真机试
对于J2ME开发者来_模拟器给我们带来了很多方便,比如可以在模拟器中调试程序以及很方便的察看程序的效果Q但是模拟器也给我们带来了一些问题,比如模拟器实现的bug{等Q所以进行真机测试是必须的?br /> 1、ؓ什么要q行真机试Q?
JAVA手机|[www.cnjm.net]
因ؓ模拟器程序可能存在bugQ以及真机的性能有限Q所以必进行真机测试?br /> 2、如何将E序传输到机器中Q?br /> 程序传输到机器中有如下方式Q?br /> a) OTA下蝲
b) 使用数据U传?
JAVA手机|[www.cnjm.net]
c) U外传输
JAVA手机|[www.cnjm.net]
d) 蓝牙
你可以根据条Ӟ选择合适的方式?br /> 3?真机试主要什么?
JAVA手机|[www.cnjm.net]
真机试的内容很多,主要试以下几个斚wQ?br /> a) E序的功?br /> b) E序的操作性,是否易操?
JAVA手机|[www.cnjm.net]
JAVA手机|[www.cnjm.net]
c) E序的大?比如Nokia S40pd的手机大部分接受的最大文件尺ؓ64K
d) E序q行速度Q速度是否可以忍受?
JAVA手机|[www.cnjm.net]
七、从WTK到厂商SDK
对于J2ME爱好者来_基本上大安是从SUN的WTK(J2ME Wireless Toolkit)开始的Q但是对于实际应用来_仅仅使用WTK是远q不够的Q所以在学习q程中,必须完成从WTK到SDK的跨?br /> 1、厂商SDK的下载地址Q?br /> ·Nokia
Nokia不愧为手业的老大Q对于j2me的支持也是一的Q有专门的网站提供SDK和各U文档说明?br /> |址是:http://www.cnjm.net/resfetch/Dbvxamo8cwoKpIh4z44.G4iEykM.MYiOPzEbCpMx8QrKGwv7TD.xao4N
·Siemens
JAVA手机|[www.cnjm.net]
Siemens对于J2ME的支持也不错Q它提供了SDKQ模拟器需要独立安装。下载地址如下Q?br />http://www.cnjm.net/resfetch/BVBDcHC9yrySkj0S7e24pIs9PnCLEqR77T4GZi5wS8qLLu0upMpLjS6SvRIGcD7qku0-i6RLPsq9OjfEPqTCQkUOt6kgPoukIC6kuEJFDnqpxC59cEJFDnqpvYuNDhSpPYuNDrepcIuNDuu3t7epOouNDrc_
·SonyEricsson
JAVA手机|[www.cnjm.net]
SonyEricsson SDK以及自己的模拟器Q下载地址为:
[url]http://developer.sonyericsson.com/site/global/docstools/java/p_java.jsp/url]
http://www.cnjm.net/resfetch/BEe.ZGSB34qK5B9NqS2pZHWSH9stlFti26l4xsYfsFt4H-RbeLCKlGLEYi0fgeRisGSKlB-SsC0fQ5RFv6lkW0PGgQ__
·Motorola
Motorola提供了专门的SDKQ内部包含模拟器Q下载地址为:
http://www.cnjm.net/resfetch/EKayXl5MlY2NPj4-OiYHXgeIBxZiazqIByaNJgdeB2sHImGNTIh1gAcmYjrBdUw_
JAVA手机|[www.cnjm.net]
·SamSung
JAVA手机|[www.cnjm.net]
SamSung也提供了专门的SDK和模拟器Q下载地址为:
http://www.cnjm.net/resfetch/CnUnZGQjjsPDP7oJunRUI7phlNiAL9hs4OwvVP9FdLqUb1Qvw7rg7MOjYVTgZPn9VOC6w...2MP..9j5L4BF4JRL2CPfI.kvuuBs-UU.BC4p.v4_
·NECQ?br /> NEC也提供了集成模拟器的SDKQ下载地址为:
JAVA手机|[www.cnjm.net]
http://www.cnjm.net/resfetch/Ig9UMDBaS5eXGxsbLMm43HD4NMZquMmDLNzh-JfcyQ__
2、厂商SDK和WTK有什么不同?
JAVA手机|[www.cnjm.net]
厂商SDK最单的理解是在WTK的基上增加了自己的模拟器和自q扩展API。也是_你在使用厂商的SDKӞ可以使用厂商的扩展类库,例如Nokia的UIcdQ和厂商自己的模拟器而已。每个厂商的扩展API都不多,而且不尽相同?br /> 3、如何用?
有些厂商SDK的用都和WTK相同Q例如SamSung。Nokia提供了独立的界面来开发,但是q个界面在实际开发中使用不多?
JAVA手机|[www.cnjm.net]
4、厂商SDK的问?
JAVA手机|[www.cnjm.net]
厂商SDK实现q程中,有一些bugQ而且和真机实C一致。例如NOKIA的xN题等{?br /> 八、在J2ME中获得手机IMEI的方?br /> IMEI是Internation mobile entity identification的简Uͼ在手Z输入*#06#可以昄该数字,长度?5位,全球唯一Q永q不会冲H,所以可以作别用L一个标志?
JAVA手机|[www.cnjm.net]
下面是在J2ME中获得IMEI的方法:
1、MOTOpd的手机可以通过dpȝ的IMEI属性获得,代码如下Q?
JAVA手机|[www.cnjm.net]
String imei = System.getProperty("IMEI");
2、SIEMENSpd的手机可以通过dpȝ的com.siemens.IMEI属性获得,代码如下Q?br /> String imei = System.getProperty("com.siemens.IMEI");
九、J2ME|络q接中显C问题的解决办法
JAVA手机|[www.cnjm.net]
JAVA手机|[www.cnjm.net]
在网l编E中Q有些时候会出现一些在没有接收到网l数据就昄界面的,造成界面昄不符合要求(例如公告昄Q会先显C公告的背景囄再显C公告信息)Q这里提一个简单的解决办法l大Ӟ
JAVA手机|[www.cnjm.net]
解决q种情况的方法分成三个步骤:
1、在需要显C的界面中,调用发送网l数据的Ҏ。每ơ显C时调用该构造方法,不调用Display的setCurrentҎ昄?
JAVA手机|[www.cnjm.net]
2、显C等待界?例如q度条等)Q给用户提示Q在q行|络q接?br /> 3、在处理|络反馈的数据完以后Q调用Display的setCurrentҎ昄昄当前界面?/p>
本手册包含如下内?/b> | |
J2ME Web Services RPC (JSR 172) | |
J2ME Web Services XML (JSR 172) | |
Java APIs for Bluetooth (JSR 82) | |
Location API (JSR 179) | |
MID Profile 2.0 (JSR-118) | |
Mobile Media API 1.1 (JSR-135) | |
Mobile 3D Graphics API (JSR184) | |
PDA Pim 1.0 (JSR 75) | |
PDA FileConnection (JSR 75) | |
J2ME Web Services RPC (JSR 172) | |
Scalable 2D Vector Graphics API (JSR-226) | |
SIP API (JSR 180) | |
Wireless Messaging API 1.0 (JSR 120) | |
WTK2.2 相关文档 | |
Nokia UI API 1.1 |
作者:陈跃?
Q?a >http://blog.csdn.net/mailbomb
1?Nokia3300不支MMA(声音处理)cd?
2?Image.getGraphics()Ҏ在不同的软g版本中工作不同,该方法无法在新版本的7650?650和N-Gage中正常工作。即q些机器中无法实现双~冲技术?
3?Nokia7650?650和N-GageQ无法控制背景灯和震动?
4?同时播放声音在S60模拟器上可以q行Q但是真Z支持?
5?7650不支持WMA(短信息API)?
6??210SDK1.0中softkey1和softkey2也生left和right按键代码?
7?在S60中堆内存不同。一般S60讑֤?MQ?600只有1.6M?
8?记录集枚N题。在S40SDK和真ZQ用RecordStore.deleteRecord(id)以后Q枚丑ַ作不正常?
9?Nokia6230 MIDP Concept SDK beta0.2不支持CLDC1.1?
10?NUL字符(0x00)在TextBox中有问题。S401.0 SDK和真Z都存在该问题?
11?如果MIDlet在后台运行时QMIDI声音不停止。S601.0中存在该问题?
12?当正在运行的MIDlet被系lScreen隐含调用的类选择昄屏幕时有问题。在S60 1.0中存在该问题?
13?S40界面风格中的字体大小不一致。在S40 1.0SDK和真机,以及7250i?100?108?200中?
14?Item.getLable()Ҏ在ChoiceGroup中无法返回正的label?
15?在Nokia MIDP 1.0中,DeviceControl.setLights(0,0)没有关闭键区灯。屏q等关闭Q而键区等依然亮着。涉及具有翻键盘的S40 1.0讑֤?
16?在S60 1.0讑֤中,Date对象无法q回当前旉?
详细文档参看Q?
http://www.forum.nokia.com/ndsCookieBuilder?fileParamID=3895
作?cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig)
原文:http://www.matrix.org.cn/resource/article/44/44154_j2me.html
关键?j2meQ页面,~码Qؕ?br />一、摘?br />Ҏxinshouj2me在j2me版提出的“httpconnection|络q接的问题?/a>Q本人分析了一下:׃www.163.com上的面~码为gb2312Q所以用utf8d׃~码方式不同会得Cؕ码。于是本人根据page的编码灵z进行编码{化,在此与大家共享、讨论?br />二、代码分?br />1.HttpConnectionHandler接口c?br />最好根据page的编码灵z进行编码{化,于是本h定义了一个HttpConnectionHandler接口c:
HttpConnectionHandler.java
package com.bjinfotech.practice.j2me.httpConnection;
import java.util.Hashtable;
import javax.microedition.io.HttpConnection;
/**
* Httpq接处理器接?br /> * @author cleverpig
*
*/
public interface HttpConnectionHandler {
//httph帔R
public static final String RQH_HOST="X-Online-Host";
public static final String RQH_ACCEPT="Accept";
public static final String RQH_CONTENT_LANGUAGE="Content-Language";
public static final String RQH_CONTENT_TYPE="Content-Type";
public static final String RQH_CONNECTION_OPTION="Connection";
//http回应帔R
public static final String RSH_DATE="Date";
public static final String RSH_SERVER="Server";
public static final String RSH_MODIFIEDDATE="Last-Modified";
public static final String RSH_CONTENT_ENCODING="Content-Encoding";
public static final String RSH_CONTENT_LENGTH="Content-Length";
public static final String RSH_CONTENT_TYPE="Content-Type";
public boolean putRequestHeaderProperty(
HttpConnection conn,
String key,
String keyValue);
public String getResponseHeaderProperty(
HttpConnection conn,
String key);
public boolean setRequestMethod(
HttpConnection conn,
String methodName);
public boolean putRequestHeader(
HttpConnection conn,
Hashtable propertiesPair);
public Hashtable getResponseHeader(
HttpConnection conn,
String[] propertyNames);
public boolean sendRequestData(
HttpConnection conn,
Object sendData);
public Object getResponseData(HttpConnection conn);
}
package com.bjinfotech.practice.j2me.httpConnection;
import java.io.DataOutputStream;
import java.io.DataInputStream;
import java.util.Hashtable;
import java.util.Vector;
import java.util.Enumeration;
import javax.microedition.io.HttpConnection;
/**
* httpq接处理器实?br /> * @author cleverpig
*
*/
public class HTML_HttpConnectionHandlerImpl implements HttpConnectionHandler{
private String message="";
public HTML_HttpConnectionHandlerImpl(){
}
public boolean putRequestHeaderProperty(
HttpConnection conn,
String key,
String keyValue){
message="";
try{
conn.setRequestProperty(key,keyValue);
return true;
}
catch(Exception ex){
message=ex.getMessage();
}
return false;
}
public String getResponseHeaderProperty(
HttpConnection conn,
String key){
return conn.getRequestProperty(key);
}
public boolean putRequestHeader(
HttpConnection conn,
Hashtable propertiesPair){
Enumeration keyEnumer=propertiesPair.keys();
boolean result=true;
while(keyEnumer.hasMoreElements()){
String keyName=(String)keyEnumer.nextElement();
String keyValue=(String)propertiesPair.get(keyName);
if (putRequestHeaderProperty(conn,keyName,keyValue)==false){
result=false;
}
}
return result;
}
public boolean setRequestMethod(
HttpConnection conn,
String methodName){
message="";
try{
conn.setRequestMethod(methodName);
return true;
}
catch(Exception ex){
message=ex.getMessage();
return false;
}
}
public Hashtable getResponseHeader(
HttpConnection conn,
String[] propertyNames){
Hashtable result=new Hashtable();
for(int i=0;i<propertyNames.length;i++){
String keyValue=conn.getRequestProperty(propertyNames[i]);
result.put(propertyNames[i],keyValue);
}
return result;
}
public boolean sendRequestData(
HttpConnection conn,
Object sendData){
message="";
try{
DataOutputStream os=conn.openDataOutputStream();
os.writeUTF((String)(sendData));
os.flush();
return true;
}
catch(Exception ex){
message=ex.getMessage();
return false;
}
}
public Object getResponseData(HttpConnection conn){
DataInputStream is=null;
message="";
try{
is=conn.openDataInputStream();
}
catch(Exception ex){
message=ex.getMessage();
return null;
}
byte[] data=null;
String type=getResponseHeaderProperty(conn,RSH_CONTENT_TYPE);
int len = 0;
try{
len=Integer.parseInt(getResponseHeaderProperty(conn,RSH_CONTENT_LENGTH));
}
catch(Exception ex){
len=0;
}
if (len > 0) {
int actual = 0;
int bytesread = 0 ;
data = new byte[len];
while ((bytesread != len) && (actual != -1)) {
try{
actual = is.read(data, bytesread, len - bytesread);
bytesread += actual;
}
catch(Exception ex){
message=ex.getMessage();
return null;
}
}
} else {
int ch;
Vector vbuffer=new Vector();
try{
while ((ch = is.read()) != -1) {
vbuffer.addElement(new Integer(ch));
}
}
catch(Exception ex){
message=ex.getMessage();
return null;
}
len=vbuffer.size();
data = new byte[len];
for(int i=0;i<len;i++){
data[i]=((Integer)vbuffer.elementAt(i)).byteValue();
}
}
String result=new String(data);
int flagBeginPosition=result.indexOf("charset=");
int flagEndPosition=result.indexOf("\">",flagBeginPosition);
if (flagEndPosition>flagBeginPosition){
type=result.substring(flagBeginPosition+"charset=".length(),flagEndPosition);
}
System.out.println("获得html字符?"+type);
if (type!=null){
try{
result=new String(data,type);
}
catch(Exception ex){
message=ex.getMessage();
}
}
return result;
}
public String getMessage(){
return message;
}
}
package com.bjinfotech.practice.j2me.httpConnection;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.io.HttpConnection;
import javax.microedition.io.Connector;
import java.util.Hashtable;
public class HttpConnectionMIDlet extends MIDlet {
public HttpConnectionMIDlet() {
super();
}
protected void startApp() throws MIDletStateChangeException {
HTML_HttpConnectionHandlerImpl handler=new HTML_HttpConnectionHandlerImpl();
try{
String host="10.11.3.99";
String url="http://10.11.3.99:8080/test_gbk.html";
// String url="http://10.11.3.99:8080/test_gb2312.html";
// String url="http://10.11.3.99:8080/test_utf8.html";
HttpConnection conn=(HttpConnection)Connector.open(url);
if (conn.getResponseCode()==HttpConnection.HTTP_OK){
System.out.println("建立q接成功");
Hashtable requestHeaderPair=new Hashtable();
requestHeaderPair.put(
HTML_HttpConnectionHandlerImpl.RQH_HOST,
host);
requestHeaderPair.put(
HTML_HttpConnectionHandlerImpl.RQH_CONTENT_TYPE,
"application/octet-stream");
requestHeaderPair.put(
HTML_HttpConnectionHandlerImpl.RQH_CONTENT_LANGUAGE,
"en-US");
requestHeaderPair.put(
HTML_HttpConnectionHandlerImpl.RQH_ACCEPT,
"application/octet-stream");
requestHeaderPair.put(
HTML_HttpConnectionHandlerImpl.RQH_CONNECTION_OPTION,
"Keep-Alive");
handler.putRequestHeader(conn,requestHeaderPair);
handler.setRequestMethod(conn,HttpConnection.GET);
handler.sendRequestData(conn,"GET / HTTP/1.1");
if (conn.getResponseCode()==HttpConnection.HTTP_OK){
System.out.println("发送请求成?);
System.out.println("获得回应数据");
String reponseData=(String)handler.getResponseData(conn);
System.out.println(reponseData);
}
else{
System.out.println("发送请求失?);
System.out.println("错误信息:"+handler.getMessage());
}
}
else{
System.out.println("建立q接p|");
}
}
catch(Exception ex){
System.out.println("错误信息:"+handler.getMessage());
ex.printStackTrace();
}
}
protected void pauseApp() {
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
}
一、“NetConnection”简介:
转述Matrix上zhengyun_ustc所qͼ“你的HttpConnection是否装的够健壮呢Q遇到各U情况,你是否有信心应对呢?譬如_你要h的Response包实在太大,以至于运营商l你掐了告诉你说时Q譬如说你是不是总要自己写一个线E来专门作httpq接Q譬如说有一些移动运营商讄了caching proxy serversQ妨了你的试。?br />Z解决q个问题Q一位日本程序员“JAY-F”针对MIDP1.0提供了一Urobust的“NetConnection”封装。这个HttpConnnectionc负责管理连接ƈ易于使用?br />二、“NetConnection”特性:
1. 跨过Proxy-serverȝQ?br />一些移动网l放|了代理服务器用来提高访问速度Q但是它的cache也成Z开发h员测?调试E序的一大障。“NetConnection”类使用一个简单的http request属性将server上的代理功能关闭掉?br />2. 使用U程分离的连接模式:
本类可以使用单线E、多U程两种模式q行Q只要设|一个简单的标志卛_?br />3. 支持Http request rangeQ?br />׃服务商在其网l上可能存在一些针对回应数据最大长度的限制Q所以“NetConnection”类提供了构造request URL的功能回应数据分ؓ多个数据包。从而去除了前面的限制?br />三、netConnection是如何实现的Q?br />1。netConnectioncȝ构分析:
此类实现了Runnable接口Q其q行模式支持多线E模式:当前只能׃个线E用资源,其它U程wait?br />此类使用了一些静态成员变量:
//当前只能׃个线E用singleton?br /> private static NetConnection singleton = new NetConnection();
private static HttpConnection httpConn;
private static String url;
private static String method;
private static byte[] data;
private static String contentType;
private static long lowRange;
private static long highRange;
private static boolean disableProxy;
private static boolean detached;
private static byte[] response;
//U程runҎ
public void run()
//当前q行的线E执行完毕后Q通报l其它的׃{待资源而wait状态的U程
private synchronized void forceNotify()
//当资源正在被其它U程使用Ӟ当前U程q入wait状?br />private synchronized void forceWait()
//关闭httpq接
private static void severConnection()
Mime-Typ Dateiendung(en) Bedeutung
application/acad *.dwg AutoCAD-Dateien (nach NCSA)
application/applefile AppleFile-Dateien
application/astound *.asd *.asn Astound-Dateien
application/dsptype *.tsp TSP-Dateien
application/dxf *.dxf AutoCAD-Dateien (nach CERN)
application/futuresplash *.spl Flash Futuresplash-Dateien
application/gzip *.gz GNU Zip-Dateien
application/listenup *.ptlk Listenup-Dateien
application/mac-binhex40 *.hqx Macintosh Binär-Dateien
application/mbedlet *.mbd Mbedlet-Dateien
application/mif *.mif FrameMaker Interchange Format Dateien
application/msexcel *.xls *.xla Microsoft Excel Dateien
application/mshelp *.hlp *.chm Microsoft Windows Hilfe Dateien
application/mspowerpoint *.ppt *.ppz *.pps *.pot Microsoft Powerpoint Dateien
application/msword *.doc *.dot Microsoft Word Dateien
application/octet-stream *.bin *.exe *.com *.dll *.class Ausführbare Dateien
application/oda *.oda Oda-Dateien
application/pdf *.pdf Adobe PDF-Dateien
application/postscript *.ai *.eps *.ps Adobe Postscript-Dateien
application/rtc *.rtc RTC-Dateien
application/rtf *.rtf Microsoft RTF-Dateien
application/studiom *.smp Studiom-Dateien
application/toolbook *.tbk Toolbook-Dateien
application/vocaltec-media-desc *.vmd Vocaltec Mediadesc-Dateien
application/vocaltec-media-file *.vmf Vocaltec Media-Dateien
application/x-bcpio *.bcpio BCPIO-Dateien
application/x-compress *.z -Dateien
application/x-cpio *.cpio CPIO-Dateien
application/x-csh *.csh C-Shellscript-Dateien
application/x-director *.dcr *.dir *.dxr -Dateien
application/x-dvi *.dvi DVI-Dateien
application/x-envoy *.evy Envoy-Dateien
application/x-gtar *.gtar GNU tar-Archiv-Dateien
application/x-hdf *.hdf HDF-Dateien
application/x-httpd-php *.php *.phtml PHP-Dateien
application/x-javascript *.js serverseitige JavaScript-Dateien
application/x-latex *.latex Latex-Quelldateien
application/x-macbinary *.bin Macintosh Binärdateien
application/x-mif *.mif FrameMaker Interchange Format Dateien
application/x-netcdf *.nc *.cdf Unidata CDF-Dateien
application/x-nschat *.nsc NS Chat-Dateien
application/x-sh *.sh Bourne Shellscript-Dateien
application/x-shar *.shar Shell-Archiv-Dateien
application/x-shockwave-flash *.swf *.cab Flash Shockwave-Dateien
application/x-sprite *.spr *.sprite Sprite-Dateien
application/x-stuffit *.sit Stuffit-Dateien
application/x-supercard *.sca Supercard-Dateien
application/x-sv4cpio *.sv4cpio CPIO-Dateien
application/x-sv4crc *.sv4crc CPIO-Dateien mit CRC
application/x-tar *.tar tar-Archivdateien
application/x-tcl *.tcl TCL Scriptdateien
application/x-tex *.tex TEX-Dateien
application/x-texinfo *.texinfo *.texi TEXinfo-Dateien
application/x-troff *.t *.tr *.roff TROFF-Dateien (Unix)
application/x-troff-man *.man *.troff TROFF-Dateien mit MAN-Makros (Unix)
application/x-troff-me *.me *.troff TROFF-Dateien mit ME-Makros (Unix)
application/x-troff-ms *.me *.troff TROFF-Dateien mit MS-Makros (Unix)
application/x-ustar *.ustar tar-Archivdateien (Posix)
application/x-wais-source *.src WAIS Quelldateien
application/x-www-form-urlencoded HTML-Formulardaten an CGI
application/zip *.zip ZIP-Archivdateien
audio/basic *.au *.snd Sound-Dateien
audio/echospeech *.es Echospeed-Dateien
audio/tsplayer *.tsi TS-Player-Dateien
audio/voxware *.vox Vox-Dateien
audio/x-aiff *.aif *.aiff *.aifc AIFF-Sound-Dateien
audio/x-dspeeh *.dus *.cht Sprachdateien
audio/x-midi *.mid *.midi MIDI-Dateien
audio/x-mpeg *.mp2 MPEG-Dateien
audio/x-pn-realaudio *.ram *.ra RealAudio-Dateien
audio/x-pn-realaudio-plugin *.rpm RealAudio-Plugin-Dateien
audio/x-qt-stream *.stream -Dateien
audio/x-wav *.wav Wav-Dateien
drawing/x-dwf *.dwf Drawing-Dateien
image/cis-cod *.cod CIS-Cod-Dateien
image/cmu-raster *.ras CMU-Raster-Dateien
image/fif *.fif FIF-Dateien
image/gif *.gif GIF-Dateien
image/ief *.ief IEF-Dateien
image/jpeg *.jpeg *.jpg *.jpe JPEG-Dateien
image/tiff *.tiff *.tif TIFF-Dateien
image/vasa *.mcf Vasa-Dateien
image/vnd.wap.wbmp *.wbmp Bitmap-Dateien (WAP)
image/x-freehand *.fh4 *.fh5 *.fhc Freehand-Dateien
image/x-portable-anymap *.pnm PBM Anymap Dateien
image/x-portable-bitmap *.pbm PBM Bitmap Dateien
image/x-portable-graymap *.pgm PBM Graymap Dateien
image/x-portable-pixmap *.ppm PBM Pixmap Dateien
image/x-rgb *.rgb RGB-Dateien
image/x-windowdump *.xwd X-Windows Dump
image/x-xbitmap *.xbm XBM-Dateien
image/x-xpixmap *.xpm XPM-Dateien
message/external-body Nachricht mit externem Inhalt
message/http HTTP-Headernachricht
message/news Newsgroup-Nachricht
message/partial Nachricht mit Teilinhalt
message/rfc822 Nachricht nach RFC 1822
model/vrml *.wrl Visualisierung virtueller Welten
multipart/alternative mehrteilige Daten gemischt
multipart/byteranges mehrteilige Daten mit Byte-Angaben
multipart/digest mehrteilige Daten / Auswahl
multipart/encrypted mehrteilige Daten verschlüsselt
multipart/form-data mehrteilige Daten aus HTML-Formular (z.B. File-Upload)
multipart/mixed mehrteilige Daten gemischt
multipart/parallel mehrteilige Daten parallel
multipart/related mehrteilige Daten / verbunden
multipart/report mehrteilige Daten / Bericht
multipart/signed mehrteilige Daten / bezeichnet
multipart/voice-message mehrteilige Daten / Sprachnachricht
text/comma-separated-values *.csv komma-separierte Datendateien
text/css *.css CSS Stylesheet-Dateien
text/html *.htm *.html *.shtml -Dateien
text/javascript *.js JavaScript-Dateien
text/plain *.txt reine Textdateien
text/richtext *.rtx Richtext-Dateien
text/rtf *.rtf Microsoft RTF-Dateien
text/tab-separated-values *.tsv tabulator-separierte Datendateien
text/vnd.wap.wml *.wml WML-Dateien (WAP)
application/vnd.wap.wmlc *.wmlc WMLC-Dateien (WAP)
text/vnd.wap.wmlscript *.wmls WML-Scriptdateien (WAP)
application/vnd.wap.wmlscriptc *.wmlsc WML-Script-C-dateien (WAP)
text/xml-external-parsed-entity extern geparste XML-Dateien
text/x-setext *.etx SeText-Dateien
text/x-sgml *.sgm *.sgml SGML-Dateien
text/x-speech *.talk *.spc Speech-Dateien
video/mpeg *.mpeg *.mpg *.mpe MPEG-Dateien
video/quicktime *.qt *.mov Quicktime-Dateien
video/vnd.vivo *viv *.vivo Vivo-Dateien
video/x-msvideo *.avi Microsoft AVI-Dateien
video/x-sgi-movie *.movie Movie-Dateien
workbook/formulaone *.vts *.vtts FormulaOne-Dateien
x-world/x-3dmf *.3dmf *.3dm *.qd3d *.qd3 3DMF-Dateien
x-world/x-vrml *.wrl VRML-Dateien
[转蝲于cnjm]
http://www.cnjm.net/tech/article960.html
在实际开发MOTO的品的时候,会遇C些细节问题。很烦hQ但是往往隑ֈ不少人。下面就是我从自己实际开发经历中获得的一些问题的解决?br />1. Motorola Vpd的J2ME的图标显C?br />Motorola的Vpd手机j2meE序图标大小必须?5*15的大?而且必须在MIDlet-Icon中填出图标名?不能只在MIDlet-1中填?Nokia的手机的只填写q里可以了.
2. 存储I间的限刉?br />Motorola的手机的RMS存储I间如果不在MIDlet-Data-Size中具体给?那么默认的就只有8Kq是12K,我记不清楚了。所以,必须再MIDlet-Data-Size中给出具体的RMS需要大。一般MOTO的手机,最大支?4K的RMSI间?br />3.Motorola的网l下载问?br />在中国卖的MOTO的手机,|络q接炚w是默认固定到CMWAP上的。所以,一般的J2ME|络q接的方法,是无法通过CMWAP的网关的。解决的办法有两个?br />1Q更ҎZ的连接点。其实你只要自己随便建立一个新的连接点Q什么信息都不用填写Q然后将默认的连接点讄在上面,它就可以自动成ؓCMNETq接炏V那么一般的J2ME|络讉K方式可以了?br />2Q采用CMWAP的连接方式。这个就要求E序上有所改动了?br />比如我要下蝲q样一个数据文? http://211.136.87.234/1.png
那么其代码方式就?
c= (HttpConnection)Connector.open("http://10.0.0.172:80/1.png,Connector.READ,true);
c.setRequestProperty("X-Online-Host", "211.136.87.234");
c.setRequestProperty("Accept", "*/*");
is = c.openInputStream();
10.0.0.172是移动的CMWAP|关?
4.使用WTK104打包的时候没有MIDP2.0的支?
Ud的百宝箱的测试的时候,最好用WTK打包Q这PCLASS文g调用的API最U净。但是MOTO的手机大部分都是MIDP2.0的,而WTK104只支持MIDP1.0。打包的时候会出现错误?br />解决的办法和NOKIA的一栗手动把几个MIDP2.0的API加到WTK里面的lib\midpapi.zip和wtklib\emptyapi.zip里面。用WinRar软gQ直接从MOTO的SDK中,拖进d可以了?/p>
原作Q?a >http://www.javaeye.com/topic/44418 作者:wuhua
在j2medev上见C关?a >CMNET和CMWAP|络q接。 ?现在我根据我的实际经验ȝ下它们?br />1。CMNETQ这个就不用怎么样介l了Q跟电脑上Internet没什么区别?br />直接用这个这L代码Ok?
java 代码
2。CNWAPQ这个我的实늻果根|上的很多介l不同。看下面q段文字。下面摘自?a >在J2ME中用CNWAP接入点联|?/a>
都是中国Ud搞出来的事情?
所以对于特定的一些机型,普通的直接联网方式会出现连不上|络Q这是因Z的手备不支持CMNET的联|方式。也怽会发Cl过修改Q直接连接的方式也可以在一些cnwap的设备上Q只支持cnwap的多Z端机Q运行,q个是因备上应中国一定的要求Q在pȝ底层q行了{换,如果没有转换的话Q就必须你自己手动在代码里面昑ּ的来转换了?
q里我只打算l出一些示意代码,用来辅助说明解决问题的方?
假设你原来要h的页面是Qhtpp://www.testwap.com/test/try.jsp
那么你会用这句话q接
HttpConnection httpConnection = (HttpConnection)Connector.open(“http://www.testwap.com/test/try.jsp?;
但是Z转成CNWAP的联|Ş?你必这么写
HttpConnection httpConnection = (HttpConnection)Connector.open(“http://10.0.0.172:80/test/try.jsp?;
接着再写
httpConnection.setRequestProperty("X-Online-Hostwww.testwap.com");
httpConnection.setRequestProperty("Accept","*/*");
q样ok?
不过q个Ҏ在模拟器上没办法试Q因为模拟器Ud|关不让你进啊,所以写代码的时候用cmnet的正式发布的时候改成cnwap的。很ȝ
代码?
java 代码
上面的代码CMNET我试q,因ؓ我那个球项目需要采用ScoketQ确实是只有CMNET能打开Socket?br />W二U,我却意外发现Q我开发WapExporerq行试的时候,我没有采用代理,也可以获取连接?br />分析有以下几U可能?br />1.Ud那边可能对于CMNET来说Q几乎是Ҏ有的协议q行开放。比如(SocketQHttpQ跟所有端口?br />2.对于CNWAPQ我估计只开放http协议以及80端口Q其他的都封闭,也就是CNWAP只能讉Khttp协议?br /> ׃我测试的IP地址q行试Q所以它可以直接扑ֈ。对于非IP地址我没试果。也许CNWAP不能解释域名也说不定Q这Ҏ׃清楚了?/p>