亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

基于MIDP1.0實現RMS容量探測器

2019-11-18 16:13:50
字體:
來源:轉載
供稿:網友

    軟件名稱: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, 0, this);
        } catch (RecordStoreException e)
        {
            this.showAlertError(e.getMessage());
        }
        Form mainForm = new Form("RMS測試器");
        Image mainImage = getMainImage("java.png");
        if (mainImage != null)
        {
            mainForm.append(mainImage);
        } else
        {
            mainForm.append("歡迎使用自由軟件");
        }
        mainForm.addCommand(startCommand);
        mainForm.addCommand(exitCommand);
        mainForm.setCommandListener(this);
        display.setCurrent(mainForm);


    }

    public Image getMainImage(String name)
    {
        Image image = null;
        try
        {
            image = Image.createImage("/" + name);
        } catch (IOException e)
        {
            return null;
        }
        return image;
    }

    public Display getDisplay()
    {
        return display;
    }

    protected void pauseApp()
    {
      

    }

    protected void destroyApp(boolean arg0) throws MIDletStateChangeException
    {
    

    }

    public void commandAction(Command cmd, Displayable disp)
    {
        if (cmd == startCommand)
        {
            display.setCurrent(counterCanvas);
            counterCanvas.start();
        } else if (cmd == exitCommand)
        {
            exitMIDlet();
        }
    }

    public void exitMIDlet()
    {
        try
        {
            destroyApp(false);
            notifyDestroyed();
        } catch (MIDletStateChangeException e)
        {
            showAlertError(e.getMessage());
        }
    }

    public void showAlertError(String message)
    {
        alert.setString(message);
        alert.setType(AlertType.ERROR);
        alert.setTimeout(2500);
        display.setCurrent(alert);


    }

}

import java.util.Timer;
import java.util.TimerTask;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.rms.*;

public class CounterCanvas extends Canvas implements CommandListener
{

    private RMSModel model;
    private RMSAnalyzer RMSanalyzer;
    private int interTime;
    private int counter;
    private boolean go = true;
    public static Command exitCommand = new Comman


  d("退出", Command.EXIT, 3);
    public static final int INC = 1;
    public TimerTask timerTask;
    public final Timer timer = new Timer();

    public CounterCanvas(int interTime, int base, RMSAnalyzer rmsa)
            throws RecordStoreException
    {
        this.interTime = interTime;
        this.counter = base;
        this.RMSanalyzer = rmsa;
        model = new RMSModel(base, RMSanalyzer);
        this.addCommand(exitCommand);
        this.setCommandListener(this);

        timerTask = new TimerTask()
        {
            public void run()
            {

                try
                {
                    model.writeRecord(INC);
                    counter++;
                } catch (RecordStoreFullException e)
                {
                    go = false;
                    model.deleteRMS();
                    timer.cancel();
                } catch (RecordStoreException e)
                {
                    model.deleteRMS();
                    RMSanalyzer.showAlertError(e.getMessage());
                    timer.cancel();
                }
                repaint();


            }
        };

    }

    public void start()
    {
        timer.schedule(timerTask, 500, interTime);
    }

    public void setCounter(int counter)
    {
        this.counter = counter;
    }

    public void setInterTime(int interTime)
    {
        this.interTime = interTime;
    }


    protected void paint(Graphics arg0)
    {
       
        int SCREEN_WIDTH = this.getWidth();
        int SCREEN_HEIGHT = this.getHeight();
        arg0.drawRect(SCREEN_WIDTH / 10, SCREEN_HEIGHT / 2,
                SCREEN_WIDTH * 4 / 5, 10);
        if (RMSanalyzer.getDisplay().isColor())
        {
            arg0.setColor(128, 128, 255);
        }
        arg0.fillRect(SCREEN_WIDTH / 10 + 1, SCREEN_HEIGHT / 2 + 1, counter, 9);
        if (!go)
            arg0.drawString("最大值:" + counter + "K字節", SCREEN_WIDTH / 10,
                    SCREEN_HEIGHT / 10, Graphics.TOP Graphics.LEFT);

    }

    public void commandAction(Command arg0, Displayable arg1)
    {
       
        if (arg0 == exitCommand)
        {
            RMSanalyzer.exitMIDlet();
        }

    }

}
RMSAnalyzer.jad
MIDlet-Jar-Size: 15785
MIDlet-1: RMSAnalyzer,,RMSAnalyzer
MIDlet-Jar-URL: RMSAnalyzer.jar
MicroEdition-Configuration: CLDC-1.0
MIDlet-Version: 1.0.0
MIDlet-Name: RMSAnalyzer
MIDlet-Data-Size: 8192
MIDlet-Vendor: www.j2medev.com
MicroEdition-Profile: MIDP-1.0
INTER: 100

(出處:http://www.49028c.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91青草视频久久| 热re99久久精品国产66热| 亚洲美女精品久久| 国产成人高潮免费观看精品| 欧美激情国产高清| 欧美亚洲视频一区二区| 欧美高清videos高潮hd| 国产精品一区二区女厕厕| 日韩电视剧免费观看网站| 欧美日韩另类视频| 日韩成人激情视频| 在线播放精品一区二区三区| 亚洲福利视频在线| 欧美黑人狂野猛交老妇| 国产午夜精品麻豆| 最近中文字幕2019免费| 国产精品久久一区| 日韩免费观看av| 欧美日韩午夜激情| 欧美激情喷水视频| 日韩欧美在线免费观看| 91精品国产高清自在线看超| 亚洲最大福利网| 亚洲一区二区三区在线视频| 亚洲精品日产aⅴ| 精品人伦一区二区三区蜜桃免费| 国产欧美日韩精品在线观看| 亚洲欧洲国产精品| 9.1国产丝袜在线观看| 97在线视频精品| 久久久欧美一区二区| 日韩国产欧美精品在线| 国产成人一区二区三区小说| 亚洲三级黄色在线观看| 欧美激情精品久久久久久| 国产精品第2页| 亚洲资源在线看| 成人欧美一区二区三区在线湿哒哒| 久久99热精品这里久久精品| 色av吧综合网| 在线亚洲欧美视频| 日韩精品久久久久久久玫瑰园| 色综合老司机第九色激情| 精品国产乱码久久久久久婷婷| 日韩成人黄色av| 欧美精品videosex极品1| 欧美日韩成人在线观看| 国产精品www色诱视频| 中文字幕日韩精品在线观看| 大桥未久av一区二区三区| 欧美壮男野外gaytube| 国产成人精品最新| 午夜精品一区二区三区在线视频| 国产日韩欧美视频| 久久黄色av网站| 亚洲xxxx妇黄裸体| 国内精品久久久久久久久| 日韩成人av在线| 午夜精品久久久久久99热| 久久噜噜噜精品国产亚洲综合| 国产精品18久久久久久首页狼| 久久6精品影院| 国产精品福利在线观看| 欧美激情一级精品国产| 欧美日韩一区二区精品| 久久亚洲欧美日韩精品专区| 在线看福利67194| 欧美黑人巨大xxx极品| 欧美一级黑人aaaaaaa做受| 日韩电影视频免费| 精品久久久久久国产91| 欧美色videos| 欧美激情精品久久久久| 性欧美亚洲xxxx乳在线观看| 成人久久18免费网站图片| 亚洲国产成人av在线| 日韩精品免费视频| 91国产视频在线| 成人免费看吃奶视频网站| 日本亚洲欧美成人| 日韩精品极品视频免费观看| 91九色视频导航| 亚洲国产成人91精品| 中文字幕精品www乱入免费视频| 国内免费久久久久久久久久久| 亚洲午夜精品视频| 亚洲午夜性刺激影院| 亚洲欧美在线播放| 国产成人精品最新| 午夜精品99久久免费| 欧美激情高清视频| 富二代精品短视频| 亚洲天堂日韩电影| 久久高清视频免费| 一二美女精品欧洲| 黄色一区二区在线| 欧美亚洲日本黄色| 亚洲va久久久噜噜噜久久天堂| 欧美精品一区二区三区国产精品| 日韩av在线免费看| 国产精品亚洲网站| 国产中文欧美精品| 欧美性猛交xxxx| 亚洲成色999久久网站| 亚洲一区中文字幕| 日韩极品精品视频免费观看| 不卡中文字幕av| 在线播放国产一区二区三区| 91久久久久久久久久久久久| 91国产美女视频| 欧美成人精品激情在线观看| 国产69精品99久久久久久宅男| 精品国产欧美成人夜夜嗨| 欧美日韩一区二区免费在线观看| 自拍偷拍亚洲一区| 国产精品www| 日本一区二区在线免费播放| 久久久视频在线| 精品伊人久久97| 欧美综合在线第二页| 久久久999精品免费| 欧美性生交大片免费| 国语自产精品视频在免费| 国产成人精彩在线视频九色| 一本色道久久综合狠狠躁篇怎么玩| 亚洲人成五月天| 91国语精品自产拍在线观看性色| 久久久久久久久久久亚洲| 精品视频—区二区三区免费| 久久免费视频网站| 亚洲精品999| 国产不卡一区二区在线播放| 69久久夜色精品国产69乱青草| 色妞在线综合亚洲欧美| 国产综合福利在线| 中国china体内裑精亚洲片| 成人福利免费观看| 亚洲天堂av在线免费观看| 亚洲三级黄色在线观看| 激情亚洲一区二区三区四区| 国产精品吹潮在线观看| 欧美最顶级丰满的aⅴ艳星| 日韩视频免费在线观看| 亚洲成年网站在线观看| 一本色道久久综合亚洲精品小说| 国产精品免费一区| 中文字幕精品久久| 亚洲一级一级97网| 欧美一级免费视频| 亚洲精品久久久久国产| 久久久久久久999精品视频| 国产精品99久久久久久久久久久久| 91精品视频在线免费观看| 日韩视频免费大全中文字幕| 成人网址在线观看| 亚洲无限av看| 亚洲国产婷婷香蕉久久久久久| 国产精品免费视频久久久| 国产精品偷伦视频免费观看国产| 日韩欧美在线免费| 中文字幕亚洲综合久久筱田步美| 欧美一级淫片丝袜脚交| 98精品国产高清在线xxxx天堂| 一区二区福利视频|