在开发中可能你会迷惑到底我的手机支持我开发的程序吗? 支持CLDC2.0/MIDP2.0,? 支持混音吗?支持RMS吗?等等疑惑就在这片文章中得到了解决!
①:获得系统属性(关键地方)
在J2ME开发中,我们经常需要和手机系统进行交互,获得一些和系统相关的信息,在J2ME API设计中,提供了一系列的系统属性
表1 CLDC、MIDP和JTWI属性
属性名称
|
属性作用
|
microedition.profiles
|
代表手机支持的MIDP版本,返回格式值为“MIDP-1.0”或“MIDP-2.0”
|
microedition.configuration
|
代表手机支持的CLDC版本,返回格式值为“CLDC-1.0”或“CLDC-2.0”
|
microedition.locale
|
代表手机所在的国家或地区,返回值格式为“en-US”
|
microedition.platform
|
代表手机的品牌和型号,Nokia手机的返回值格式为“Nokia6310i/4.42”
|
microedition.encoding
|
代表手机默认的字符集名称,返回值格式为“ISO-8859-1”
|
microedition.commports
|
代表手机可以使用的串口列表,返回值中各个串口之间使用逗号分隔
|
microedition.hostname
|
MIDP2.0定义,代表本地主机名称,需要手机支持。
|
microedition.jtwi.version
|
代表手机支持的JTWI版本,值必须是“1.0”
|
表2可选包属性
属性名称
|
属性作用
|
microedition.media.version
|
代表手机支持的MMAPI版本,如果不支持则返回null
|
microedition.pim.version
|
代表手机支持的PIM API版本,如果不支持则返回null
|
microedition.m3g.version
|
代表手机支持的M3G API版本,如果不支持则返回null
|
microedition.location.version
|
代表手机支持的Location API版本,如果不支持则返回null
|
Bluetooth.api.version
|
代表手机支持的BT API版本,如果不支持则返回null
|
microedition.io.file.
FileConnection.version
|
代表手机支持的FC API版本,如果不支持则返回null
|
microedition.global.version
|
代表手机支持的Mobile Internationalization API(JSR-238)版本,如果不支持则返回null
|
microedition.chapi.version
|
代表手机支持的CH(Content Handler) API(JSR211)版本,如果不支持则返回null
|
microedition.sip.version
|
代表手机支持的SIP API版本,如果不支持则返回null
|
表3MMAPI属性
属性名称
|
属性作用
|
supports.mixing
|
代表手机是否支持混音(同时播放多个Player),返回值为“true”或“false”
|
supports.audio.capture
|
代表手机是否支持声音捕获(录音),返回值为“true”或“false”
|
supports.video.capture
|
代表手机是否支持视频捕获(录像),返回值为“true”或“false”
|
supports.recording
|
代表手机是否支持记录(record),返回值为“true”或“false”
|
audio.encodings
|
代表手机支持的声音格式,返回值格式为“encoding=audio/wav”,多个格式之间使用至少一个空格进行间隔
|
video.encodings
|
代表手机支持的视频格式,返回值格式为“encoding=video/3gpp”,多个格式之间使用至少一个空格进行间隔
|
video.snapshot.encodings
|
代表手机使用getSnapshot方法获得的视频快照格式,返回值格式为“encoding=png”,多个格式之间使用至少一个空格进行间隔
|
streamable.contents
|
代表手机支持的流媒体格式,返回null代表不支持
|
表4 Wireless Messaging API属性
表5 FileConnection API
属性名称
|
属性作用
|
fileconn.dir.photos
|
代表手机中存储照片和其它图片的目录,例如“file:///c:/My files/ Images /”
|
fileconn.dir.videos
|
代表手机中存储视频的目录,例如“file:///c:/My files/Video clips/”
|
fileconn.dir.tones
|
代表手机中存储声音的目录,例如“file:///c:/My files/Tones/”
|
fileconn.dir.memorycard
|
代表手机中存储卡的根目录。例如“file:///d:/”
|
fileconn.dir.private
(Nokia S40不支持) |
代表手机中MIDlet的私有工作目录,例如“file:///c:/System/MIDlets/[1015f294]/scratch”
|
fileconn.dir.photos.name
|
代表手机中图片目录的名称,例如“Images”
|
fileconn.dir.videos.name
|
代表手机中视频目录的名称,例如“Video clips”
|
fileconn.dir.tones.name
|
代表手机中声音目录的名称,例如“Sound clips”
|
file.separator
|
代表手机中的文件分隔符,例如“/”
|
fileconn.dir.memorycard.name
|
代表手机中存储卡的名称,例如“Memory card”
|
使用这些属性,可以获得在程序运行过程中需要的很多和系统相关的信息,也可以使用表2中的属性来获得手机是否支持对应的可选包等信息。
实际使用示例:String name = System.getProperty(“microedition.platform”);
注意:如果需要获得JVM或jad文件中的信息,需要使用MIDlet类中的getAppProperty方法,其属性名则需要查阅jad文件的设定,和本文所述的属性名无关。
实际使用示例:String name = System.getProperty(“microedition.platform”);
注意:如果需要获得JVM或jad文件中的信息,需要使用MIDlet类中的getAppProperty方法,其属性名则需要查阅jad文件的设定,和本文所述的属性名无关。
----------------------------------------------------------------
② :程序代码
package GetOSInfo; import javax.microedition.lcdui.Choice; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.List; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class OSInfo extends MIDlet { public List osInfo = new List("获得手机操作系统的信息" , Choice.IMPLICIT); protected void startApp() throws MIDletStateChangeException { String MIDP_V = System.getProperty("microedition.profiles"); String CLDC_V = System.getProperty("microedition.configuration"); String PLATFORM = System.getProperty("microedition.platform"); String ENCODING = System.getProperty("microedition.encoding"); String SUPPORT_MIX = System.getProperty("supports.mixing"); String m3g = System.getProperty("microedition.m3g.version"); String bluetooth = System.getProperty("Bluetooth.api.version"); String FC = System.getProperty("microedition.io.file.FileConnection.version"); String AUDIO = System.getProperty("supports.audio.capture"); String VIDEO = System.getProperty("supports.video.capture"); String RECORDING = System.getProperty("supports.recording"); String VIDEO_ENCODING = System.getProperty("video.encodings"); String SMSTEL = System.getProperty("wireless.messaging.sms.smsc"); Runtime rt=Runtime.getRuntime() ; String totalMem =rt.totalMemory()+""; String freeMem =rt.freeMemory()+""; String useMem =(rt.totalMemory() - rt.freeMemory())+""; osInfo.append("MIDP版本 -->"+MIDP_V , null ); osInfo.append("CLDC版本-->"+CLDC_V , null); osInfo.append("平台 -->"+PLATFORM , null); osInfo.append("编码-->"+ENCODING , null); osInfo.append("是否支持混音 -->"+SUPPORT_MIX , null); osInfo.append("是否支持3g -->"+m3g, null); osInfo.append("是否支持蓝牙 -->"+bluetooth, null); osInfo.append("是否支持文件 -->"+FC, null); osInfo.append("是否支持视频 -->"+AUDIO, null); osInfo.append("是否支持音频 -->"+VIDEO, null); osInfo.append("是否支持RMS -->"+RECORDING, null); osInfo.append("支持的音频个格式 -->"+VIDEO_ENCODING, null); osInfo.append("短息中心号码-->"+SMSTEL, null); osInfo.append("总共内存-->"+totalMem, null); osInfo.append("剩余内存-->"+freeMem, null); osInfo.append("使用中内存-->"+useMem, null); Display.getDisplay(this).setCurrent(osInfo); } protected void pauseApp() { } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } }
③:下周安装包
如果你非专业人士但是也需要这些功能那么很简单你可以到http://download.youkuaiyun.com/source/3334021这里下周我打好了的安装包!
此文介绍到处此如果有什么疑惑的地方可以给我留言。或者有什么需要改进的地方欢迎大家批评指正!