Programming Tutorials

A sample J2ME Auto-resume program.

By: Emiley J in J2ME Tutorials on 2007-09-22  

Do you need to create an application that does auto-resume (after a phone-call, or whenever a flip-phone is opened). Here is a sample J2ME Auto-resume program.

The resumeRequest must not be called from the "App manager interface". So the sample auto resume program below runs a separate thread that calls resumeRequest().

Listed below is the source code. There are 2 classes, AutoResume and AutoResumeThread.

//------------------------ AutoResume.java --------------------------------

import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class AutoResume extends MIDlet {
    private Form mainForm;
    private StringItem message;
    private int nPause;
    public boolean isPaused;

    public AutoResume() {
        super();
        mainForm = new Form("Auto-Resume");
        message = new StringItem("Message:", "Message here");
        mainForm.append(message);
        nPause = 0;
        isPaused = true;
    }

    protected void startApp() throws MIDletStateChangeException {
        isPaused = false;
        System.out.println("startApp");
        Display.getDisplay(this).setCurrent(mainForm);
        message.setText("Paused " + nPause + " times");
    }

    protected void pauseApp() {
        nPause++;
        isPaused = true;
        System.out.println("pauseApp");
        AutoResumeThread t = new AutoResumeThread(this);
        t.start();
    }

    protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
        System.out.println("destroyApp");
    }
}

//-------------------- end of AutoResume.java ---------------------------

//-------------------- AutoResumeThread.java ----------------------------

public class AutoResumeThread extends Thread {
    private AutoResume m_mainThread;

    public AutoResumeThread(AutoResume mainThread) {
        m_mainThread = mainThread;
    }

    public void run() {
        int nSleep = 0;
        while (m_mainThread.isPaused) {
            try {
                System.out.println("Sleeping");
                sleep(1000);
            } catch (InterruptedException e) {
                System.out.println(e.toString());
            }
            nSleep++;
            if (nSleep == 5) {
                System.out.println("Requesting resume");
                nSleep = 0;
                m_mainThread.resumeRequest();
            }
        }
    }
}

//------------------- end of AutoResumeThread.java ------------------------






Add Comment

* Required information
1000

Comments

No comments yet. Be the first!

Most Viewed Articles (in J2ME )

Latest Articles (in J2ME)