软件名称:RMS容量探测器 作者简介:詹建飞(mingjava),北京邮电大学信息工程学院信号与信息处理专业研究生。 电子信箱:eric.zhan@263.net
之所以写这个RMS容量探测器是因为我在nokia 6108手机上编写个人通信录的时候想知道它的RecordStore最大有多少空间可以使用。我调用getSizeAviable()的时候发现它返回的值几乎等于手机上剩余的内存空间的值,因此我想这个API的实现是错误的。于是编写了这个简单的RMS容量探测器,它能探测手机上一个RecordStore能存储数据的最大值,单位是K字节,请不要在模拟器上运行这个软件,这没有任何意义。下面简单介绍一下实现。
由于软件比较小,因此我没有应用MVC的设计模式,如果编写较大的应用程序一定要使用MVC。软件一共有三个类:CounterCanvas,RMSAnalyzer和RMSModel。软件的原理是:新建一个RecordStore然后每隔100ms往里面写入1K的数据,在退出的时候删除这个RecordStore。思路非常简单!代码也不复杂,因此我直接给出源代码。你可以从这里下载源文件(其中包括jar文件和jad文件)。如果提供下载请注明出处和作者
import javax.microedition.rms.*; public class RMSModel { public static final int K = 1024; private RecordStore rs; private int baseCount; private RMSAnalyzer RMSanalyzer; public static final String name = "test";
public RMSModel(int baseCount, RMSAnalyzer rmsa) throws RecordStoreException { this.baseCount = baseCount; this.RMSanalyzer = rmsa; if (rs == null) { rs = RecordStore.openRecordStore(name, true); writeRecord(baseCount); } }
public void writeRecord(int count) throws RecordStoreException { byte[] data = new byte[count * K]; for (int i = 0; i < count; i++) { data[i] = 1; } rs.addRecord(data, 0, count * K); }
public void deleteRMS() { try { rs.closeRecordStore(); RecordStore.deleteRecordStore(name); } catch (RecordStoreException e) { RMSanalyzer.showAlertError(e.getMessage()); } } }
import java.io.IOException;
import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Image; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; import javax.microedition.rms.RecordStoreException;
public class RMSAnalyzer extends MIDlet implements CommandListener {
private Display display; private CounterCanvas counterCanvas; private Alert alert; public static final Command startCommand = new Command("开始", Command.ITEM, 1); public static final Command exitCommand = new Command("退出", Command.EXIT, 2);
protected void startApp() throws MIDletStateChangeException {
display = Display.getDisplay(this); alert = new Alert("错误提示"); try { String interval = this.getAppProperty("INTER"); int t = Integer.parseInt(interval); counterCanvas = new CounterCanvas(t [1] [2] [3] [4] 下一页 |