J2ME程序开发全方位基础讲解汇总[2]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

bsp;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中。
  该操作会覆盖已有的数据。
  说明:有些时候,你需要将信息写入到记录集中的第一条记录中,则可以结合以上两个方法,则第一次时向记录集增加数据,以后来进行修改。

   3、从记录集中读出数据

  从记录集中读取已有数据,需要使用getRecord方法,示例代码:
byte[] bytes = rs. getRecord(1);    
  该代码从记录集rs中读取第一条数据,将读取到的数据放在bytes数组中。
  在读取数据时,可以获得记录集中id的个数,可以使用getNumRecords方法获得
  综合代码为:
int number = rs. getNumRecords();int id = 1;if(id >0 && id < number){  byte[] bytes = rs. getRecord(1);}

   4、从记录集中删除记录

  从记录集中删除记录的方法有两种:逻辑删除和物理删除。
  逻辑删除是指给删除的记录打标记。
  物理删除是指从物理上删除该记录,但是该记录的id不能被重用,也就是说该id不会被继续使用。例如一个记录集中有5个记录,假设你删除了id为3的数据,则剩余记录的id依然为1、2、4、5。这给便历带来了一定的麻烦。

   5、便历记录集

  便历记录集,即访问记录集中的所有数据,有两个方法,详见:
     http://gceclub.sun.com.cn/NASApp/sme/controller/teclist?tid=0103

   6、其他操作

  删除记录集
  删除记录集不同于删除记录,需要使用deleteRecordStore方法,示例代码: 
     RecordStore. deleteRecordStore(“username”);     
  该代码删除名称为username的记录集。

十三、J2ME加密数据的一个第三方开源免费类库介绍

  在J2ME编程中,经常遇到一些数据在存储或者传输时需要加密,下面介绍一个第三方的加密类库的一些资料:

  加密类库的官方主页:http://www.bouncycastle.org/
  介绍的文章:
  中文:http://18900.motorola.com/ewa_portal/develope/jc_j2messl_5_1.jsp
  英文:http://www.javaworld.com/javaworld/jw-12-2002/jw-1220-wireless.html
  该文章的源代码包含使用的一些方法。
  备注:因为该类库提供的功能比较强大,所以类库的尺寸比较大,最后在发布时需要将类库中不需要的类删除


十四、如何播放声音

  在J2ME中,处理声音需要使用到Mobile Media API(MMAPI),该包是MIDP1.0的可选包,在MIDP2.0中已经包含了这个包。所以如果你使用MIDP1.0的话,请确认你的运行环境是否支持。

  一般手机支持的声音文件格式为wav、mid和mpg等。具体请查阅你的手机说明文档。
  在声音处理中,有很多处理的方式,这里说一下最常用的情况,播放JAR文件中的wav文件。
  播放声音文件的流程:

   1、按照一定的格式读取声音文件。

  播放JAR

本文关键:J2ME程序开发全方位基础讲解汇总
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top