J2ME程序开发全方位基础讲解汇总 |
| 作者:ChinaITLab 来源:ChinaITLab 发布时间:2005-9-6 9:37:59 |
|
和真机实现不一致。例如NOKIA的混音播放问题等等。 八、在J2ME中获得手机IMEI的方法 IMEI是Internation mobile entity identification的简称,在手机中输入*#06#可以显示该数字,长度为15位,全球唯一,永远不会冲突,所以可以作为识别用户的一个标志。 下面是在J2ME中获得IMEI的方法: 1、MOTO系列的手机可以通过读取系统的IMEI属性获得,代码如下: String imei = System.getProperty("IMEI"); 2、SIEMENS系列的手机可以通过读取系统的com.siemens.IMEI属性获得,代码如下: String imei = System.getProperty("com.siemens.IMEI"); 九、J2ME网络连接中显示问题的解决办法 在网络编程中,有些时候会出现一些在没有接收到网络数据就显示界面的,造成界面显示不符合要求(例如公告显示,会先显示公告的背景图片再显示公告信息),这里提一个简单的解决办法给大家: 解决这种情况的方法分成三个步骤: 1、在需要显示的界面中,调用发送网络数据的方法。每次显示时调用该构造方法,不调用Display的setCurrent方法显示。 2、显示等待界面(例如进度条等),给用户提示,在进行网络连接。 3、在处理网络反馈的数据完以后,调用Display的setCurrent方法显示显示当前界面。 十、增强J2ME的String能力——分割字符串 从JDK1.4以后,String类中新增了split方法来实现字符串的分割,但是在J2ME中却没有该方法(MIDP2.0中也没有实现),但是在实际使用过程中,有些时候的确要用到这种操作,这里将我以前实现的一段代码和大家共享: /** * 分割字符串,原理:检测字符串中的分割字符串,然后取子串 * @param original 需要分割的字符串 * @paran regex 分割字符串 * @return 分割后生成的字符串数组 */ private static String[] split(String original,String regex) { //取子串的起始位置 int startIndex = 0; //将结果数据先放入Vector中 Vector v = new Vector(); //返回的结果字符串数组 String[] str = null; //存储取子串时起始位置 int index = 0; //获得匹配子串的位置 startIndex = original.indexOf(regex); //System.out.println("0" + startIndex); //如果起始字符串的位置小于字符串的长度,则证明没有取到字符串末尾。 //-1代表取到了末尾 while(startIndex < original.length() && startIndex != -1) { String temp = original.substring(index,startIndex); System.out.println(" " + startIndex); //取子串 v.addElement(temp); //设置取子串的起始位置 index = startIndex + regex.length(); //获得匹配子串的位置 startIndex = original.indexOf(regex,startIndex + regex.length()); } //取结束的子串 v.addElement(original.substring(index + 1 - regex.length())); //将Vector对象转换成数组 str = new String[v.size()]; for(int i=0;i { str[i] = (String)v.elementAt(i); } //返回生成的数组 return str; } 十一、J2ME在低级用户界面上分行显示文字 在J2ME的低级用户界面开发中,经常会遇到需要在Canvas上显示大量的文字,例如关于界面、游戏说明、游戏公告等信息。如果在设计时,将文字的内容和长度都固定,既不利于修改也不利于维护。下面介绍一个简单的方法,实现一个简单、可维护性强的方式。 实现方法: 1、将需要显示的所有信息做成一个字符串。 2、编写一个将该字符串按照要求转换为字符串数组的方法。 3、将转换后的数组以循环的方式显示在Canvas上。 通过这样三个步骤,则修改显示的信息时,只需要修改包含显示信息的字符串即可,自己书写的方法可以按照以前的标准重新分割新的字符串。如果需要修改每行显示的字符个数,则只需要修改自己书写的方法即可。 通过这样一种实现方式,可以很方便的实现显示一些比较长的文本信息,即使是可变长度的字符串也没有问题。 十二、J2ME中使用记录存储系统(RMS)存储信息 在MIDP中,没有文件的概念,所以永久存储一般只能依靠记录存储系统实现,关于记录存储系统的简介,可以参看教程:http://www-900.ibm.com/developerWorks/cn/java/j-wi-rms/index.shtml 下面是一些记录存储系统的常用编码介绍: 1、打开记录集: 打开记录集使用RecordStore里面的静态方法openRecordStore,示例代码如下: RecordStore rs = RecordStore.openRecordStore(“username”,true); 这样就打开了一个名称为rs的记录集,其中username为记录集的名称,该名称可以根据需要来取,第二个参数代表是否则没有时创建新的记录集,true代表在该记录集不存在时,创建新的记录集,false代表不创建。 如果在打开记录集时,该记录集不存在,则抛出RecordStoreNotFoundException异常,所以检测记录集是否已创建可以使用该异常。 注意:记录集打开以后记得关闭。 2、向记录集中写入数据 2.1增加数据 向已经打开的记录集中添加数据,需要使用addRecord方法,示例代码: byte[] bytes = {1,2,3}; int id = rs. addRecord(bytes,0,bytes.length); 该代码将字节数组bytes的全部内容写入到记录集中,该方法的返回值为该信息的id,注意:id从1开始,而不是从0开始。 你可以循环使用该方法向记录集中写入多条数据。 2.2修改数据 修改已经存在的记录集中指定id的数据,需要使用setRecord方法,示例代码: byte[] bytes = {1,2,3}; rs. setRecord(1,bytes,0,bytes.length); 以上代码的作用是将字节数组bytes的全部内容写入到id为1的记录集rs中。 该操作会覆盖已有的数据。 说明:有些时候,你需要将信息写入到记录集中的第 |
| [] [返回上一页] [打 印] |
|
文章评论 |
