【问题标题】:Video capturing issue视频拍摄问题
【发布时间】:2012-03-14 11:43:12
【问题描述】:

我想从捕获的video 创建一个LWUIT Image。问题是在调用getSnapshot() 时会引发MediaException

private void showCamera() // called when clicking the "open camera" command
    {
        try
        {
            Player mPlayer;
            VideoControl mVideoControl;
            mPlayer = Manager.createPlayer("capture://video");
            mPlayer.realize();
            mVideoControl = (VideoControl) mPlayer.getControl("VideoControl");
            Canvas canvas = new CameraCanvas(this, mVideoControl, mPlayer, getFirstAvailableRoot(), "ADC"+adcId); // adcId is "1"
            isFromPositionnement = true; // static variable
            javax.microedition.lcdui.Display.getDisplay(controler).setCurrent(canvas);
            mPlayer.start();
        } catch (IOException ex) {
            handleException();
        } catch (MediaException ex) {
            handleException();
        }
    }

private String getFirstAvailableRoot()
    {
        short iter;
        String root = "Phone:/";
        iter = 0;
        Enumeration drives = FileSystemRegistry.listRoots();
        while(drives.hasMoreElements() && iter < 1) {
            root = String.valueOf(drives.nextElement());
            iter++;
        }
        return root;
    }

“CameraCanvas”中的代码:

    public class CameraCanvas extends Canvas implements CommandListener 
    {
        ...
        public CameraCanvas(Ecran form, VideoControl videoControl, Player pPlayer, String pRoot, String dossierPhoto)
        {
            ...
            mCaptureCommand = new Command("Capturer", Command.SCREEN, 1);
            addCommand(mCaptureCommand);
            setCommandListener(this);
            ...
            videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
            try
            {
                videoControl.setDisplayLocation(2, 2);
                videoControl.setDisplaySize(width - 4, height - 4);
            } 
            catch (MediaException me)
            {
                try
                {
                    videoControl.setDisplayFullScreen(true);
                } 
                catch (MediaException me2)
                {}
            }
            videoControl.setVisible(true);
        }
        private void capture() // called when clicking the mCaptureCommand command
        {
            try
            {
                isPhotoCaptured = true;
                rawImg = vidCtrl.getSnapshot(null); // this throws the exception
                vidCtrl.setVisible(false);
                vidCtrl = null;
                mPlayer.close();
                mPlayer = null;
                repaint();
            }
            catch (MediaException me)
            {
                isPhotoCaptured = false;
                rawImg = null;
                vidCtrl.setVisible(false);
                vidCtrl = null;
                mPlayer.close();
                mPlayer = null;
                handleException("capture ");
            }
        }
    }

那么问题的原因可能是什么?

【问题讨论】:

  • 我对 Canvas/LCDUI 了解不多。 ¿ 你可以使用 LWUIT UI 元素吗?
  • 转换成LWUIT会很辛苦的!
  • 我遇到了像你这样的问题,看看这个如何在LWUIT中捕获图像的例子,希望对你有帮助stackoverflow.com/questions/7742397/…
  • 我注意到即使使用 fileConnection.create() 创建文件也不起作用!我的手机有点奇怪!
  • 我终于找到了原因:我的应用程序中有很多唱片店,所以没有足够的空间放图片。

标签: java-me lwuit


【解决方案1】:

MMAPI 具有创建图像的能力,您可以轻松地将其转换为 LWUIT 图像(它具有接受对象的创建图像)。但是,出于某种原因,提出此 API 的“天才”将图像捕获设置为受限制的 API 以保护您的隐私。如此有效,您无法在没有操作员/制造商签名的情况下调用此 API。

【讨论】:

    猜你喜欢
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    相关资源
    最近更新 更多