Проблема с захватом видео - PullRequest
1 голос
/ 08 марта 2012

Я хочу создать LWUIT Image из захваченного video. Проблема в том, что MediaException поднимается при вызове getSnapshot():

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 ");
            }
        }
    }

Так в чем может быть причина проблемы?

1 Ответ

1 голос
/ 14 марта 2012

MMAPI имеет возможность создавать изображение, и вы можете легко превратить его в изображение LWUIT (у которого есть изображение создания, которое принимает объект). Однако по какой-то причине «гении», которые придумали этот API, сделали захват изображений ограниченным API для защиты вашей конфиденциальности. Таким образом, вы не можете вызвать этот API без подписи оператора / производителя.

...