0

我正在尝试使用手机的摄像头通过以下代码段捕获图像

        snapShotScreen = new SnapshotScreen( "Snapshot" );
        snapShotScreen.addCommand(cmdBack );
        snapShotScreen.addCommand(cmdCapture);
        snapShotScreen.setCommandListener( new ThreadedCommandListener( this ) );
        this.display.setCurrent(snapShotScreen);

我得到一个空值返回。我的目标设备是具有 mmapi 功能的 nokia/2700_classic,我仍然不明白为什么它不起作用。有人有什么建议吗?

4

1 回答 1

0

供参考,

要使 Android 摄像头正常工作,您需要编辑 MidletBridge.java 文件。你会发现这个文件:

J2ME-Polish_Root\j2mepolish-src\j2me\src\de\enough\polish\android\midlet\MidletBridge.java

您需要以两种方法(在 MidletBridge 活动中)添加通用 android 相机代码以及公共 by​​te[] 以在您拍照后检索数据,单击保存并设置 byte[] 图像:

MidletBridge.java file:

public byte[] imagebytearray = null;

public void startCameraIntent(){
        Intent i = new Intent("android.media.action.IMAGE_CAPTURE");
        startActivityForResult(intent, 10121);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case 10121: 
                imagebytearray = (byte[]) data.getExtras().get("data");
                break;
        }
}

完成此操作后,您需要通过调用在 j2me 波兰应用程序中的任何位置实例化 MidletBridge

de.enough.polish.android.midlet.MidletBridge m = new de.enough.polish.android.midlet.MidletBridge();
m.startCameraIntent();
//I couldnt remember if the code continues here after you have taken the picture
byte[] img = m.imagebytearray;
//If the code doesnt pause here, you can just use a button to retreive the image or store the 
//image within the RMSStorage -- need some more code for that -- and then retreive it that way.

我希望这对某人有所帮助,因为我花了数周时间才走到这一步。我的应用程序运行良好并被出售。我丢失了源代码,否则所有 J2ME-Polish 用户都会非常高兴。与黑莓、诺基亚、android 以及 windows ce 一起工作。

顺便说一句..我当时已经将整段代码发送给 J2ME-Polish 人,看起来他们没有发布。如果你真的想要所有的来源......去打扰他们。

于 2012-12-10T19:29:25.700 回答