0

I wanted to let my j2me project have the ability to take picutre using MMAPI(JSR135) So I check my HTC Diamond with the following code

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.midlet.MIDlet;

public class jsrtest extends MIDlet implements Runnable,CommandListener{
    Form form;
    Thread thread;
    Command c=new Command("Exit",Command.EXIT,0);
    public jsrtest()
    {
        Display.getDisplay(this).setCurrent(form=new Form("JSR Test"));
        form.addCommand(c);
        form.setCommandListener(this);
        (thread=new Thread(this)).start();
    }
    protected void destroyApp(boolean u){
        super.notifyDestroyed();
    }
    protected void pauseApp() {
    }
    protected void startApp(){
    }
    public void run() {
        checkJSR("MIDP2.0","javax.microedition.lcdui.game.GameCanvas");
        checkJSR("CLDC1.1","java.lang.Float");
        checkJSR("MMAPI","javax.microedition.media.Player");
        checkJSR("WMAPI","javax.wireless.messaging.Message");
        checkJSR("JSR75","javax.microedition.io.file.FileConnection");
        checkJSR("JSR082","javax.bluetooth.UUID");
        checkJSR("JSR135","javax.microedition.media.Control");
        checkJSR("JSR135_videocontrol","javax.microedition.media.control.VideoControl");
        checkJSR("JSR179","javax.microedition.location.Location");
        checkJSR("JSR180","javax.microedition.sip.SipConnection");
        checkJSR("JSR184","javax.microedition.m3g.Mesh");
        checkJSR("JSR211","javax.microedition.content.Registry");
        checkJSR("JSR226","javax.microedition.m2g.SVGImage");
        checkJSR("JSR229","javax.microedition.payment.TransactionRecord");
        checkJSR("JSR234","javax.microedition.amms.Module");
        checkJSR("JSR238","javax.microedition.global.Formatter");
        checkJSR("JSR239","javax.microedition.khronos.egl.EGL");
    }
    private void checkJSR(String jsr,String className)
    {
        try {
            Class.forName(className);
            form.append(jsr+" Supproted\n");
        } catch (ClassNotFoundException e) {
            form.append(jsr+" Not Supproted\n");
        }
    }
    public void commandAction(Command cmd, Displayable disp) {
        this.destroyApp(false);
    }
}

which shows MMAPI is supported on HTC Diamond.

so I test the following code on my HTC Diamond to see if camera works but failed:

private void test(){
     Player p;
     VideoControl vc;
     try{
       p = Manager.createPlayer("capture://video");
       p.realize();
       vc = (VideoControl) p.getControl("VideoControl");
       form.append(new StringItem("mmmmmmmm",""));
       if (vc != null) {
        form.append((Item)vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null));
       }
       p.start();
     }catch(Exception e){
        e.printStackTrace();
     }

}

On above code works fine on JAVA ME Platform SDK 3. Can anybody tell me why MMAPI doesn't works my mobile phone?

fr33m4n
  • 542
  • 2
  • 13
  • 31
  • Could you post the exception message and the line where it is thrown? Also knowing in which thread you are executing that method would help. – Mister Smith Oct 13 '11 at 14:27
  • @MisterSmith: on my phone , no exception message displayed.it seems `catch` statement never run. – fr33m4n Oct 13 '11 at 16:02

1 Answers1

1

You can make an additional test to see if the video capture is supported:

if(System.getProperty("supports.video.capture") == null){
    //Video capture not supported
}

But I think the main problem is on this line:

form.append((Item)vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null));

try this:

    vc.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, <a Canvas here>);
    vc.setDisplayFullScreen(true);
    vc.setVisible(true);
Mister Smith
  • 27,417
  • 21
  • 110
  • 193
  • I test the same code on my HTC Diamond and another Nokia 8600luna. on Nokia 800luna it works fine. but HTC Diamond doesn't work.can we say that HTC Diamond didn't support MMAPI. or It's the problem of Jvm of windows mobile(I am using Jbed). – fr33m4n Oct 15 '11 at 15:18
  • What does the getProperty returns? And, in case it is supported, what is the behavior on HTC? Blank screen? Exception? – Mister Smith Oct 17 '11 at 07:16
  • blank screen, no exception. Now I tries to coding on windows mobile platform.j2me was given up.... – fr33m4n Oct 25 '11 at 14:49