在 j2me 中无法打开三星手机上的相机

Posted

技术标签:

【中文标题】在 j2me 中无法打开三星手机上的相机【英文标题】:Unable to open camera on samsung phone in j2me 【发布时间】:2012-05-11 10:35:07 【问题描述】:

我编写了以下代码。它用于创建相机播放器。我在诺基亚手机上测试过。它工作正常,我可以看到相机并使用它的功能。

但问题是,当在三星手机上测试代码时,它会引发媒体异常,最终不得不退出应用程序。由于此代码,我的内置相机功能(即在三星手机上)也停止工作。那是什么原因呢?

    public void startCamera()

    try
    
        try 
        
            // if player==null
            player = createPlayer();
         
        catch (Exception ex) 
        
            ex.printStackTrace();
            ErrorDialog.show(ex, "We are exiting the application.",
                        "Exit", new com.auric.qrev.scanqrcode.lwuit.ui.Action()
                    public void actionPerformed() 
                        m_objMIDlet.exitApp();
                    
            );
        
        try 
        
            player.realize(); 
            player.prefetch();
        
        catch (MediaException ex) 
        
            ex.printStackTrace();
            ErrorDialog.show(ex, "We are exiting the application.",
                        "Exit", new com.auric.qrev.scanqrcode.lwuit.ui.Action()
                    public void actionPerformed() 
                        m_objMIDlet.exitApp();
                    
            );
        




        //Grab the video control and set it to the current display.
        videoControl = (VideoControl)(player.getControl("VideoControl"));
        if (videoControl == null)
        
            //discardPlayer();
            stopCamera();
            ErrorDialog.show("Unsupported:\n"+
                 "Can't get video control\n"+
                 "We are exiting the application.",
                    "Exit", new com.auric.qrev.scanqrcode.lwuit.ui.Action()
                public void actionPerformed() 
                    m_objMIDlet.exitApp();
                
            );
        

        mediaComponent = new MediaComponent(player);
        mediaComponent.setFocusable(false);
        m_cameraScreen.showCamera(mediaComponent);
        start();
    
    catch(Exception ex)
    
        ex.printStackTrace();
        //discardPlayer();
        stopCamera();
        ErrorDialog.show("Sorry,Resources unavailable.\nWe are exiting the application.",
                        "Exit", new com.auric.qrev.scanqrcode.lwuit.ui.Action()
                    public void actionPerformed() 
                        m_objMIDlet.exitApp();
                    
        );
    

    private Player createPlayer()throws MediaException, Exception 

    Player mPlayer = null;
    // try capture://image first for series 40 phones
    try 
    
        mPlayer = Manager.createPlayer("capture://image");
    
    catch (Exception e) 
    
        e.printStackTrace();
    
    catch (Error e) 
    
        e.printStackTrace();
    

    // if capture://image failed, try capture://video
    if (mPlayer == null) 
    
        try 
        
            mPlayer = Manager.createPlayer("capture://video");
         
        catch (Exception e)
        
            e.printStackTrace();
            throw new MediaException("Sorry,Resources unavailable.");
        
    

    if(mPlayer == null)
        throw new Exception("Sorry,Resources unavailable.");

    return mPlayer;

【问题讨论】:

那么,你得到了什么例外?你应该研究你的异常处理方法...... 这就是我所说的异常处理……你甚至无法确定异常发生在哪里(可能是if(mPlayer==null) 我收到一个媒体异常,指出“抱歉,资源不可用。我们正在退出应用程序”。 在使用三星手机时,它会抛出IO异常“找不到数据源”,这是一种名为Manager.createPlayer的重载方法。 ***.com/questions/10552109/… ? 【参考方案1】:

首先,您必须意识到printStackTrace() 在模拟器之外几乎毫无用处,除非您使用的是 Symbian 手机。

您也可以使用java.lang.Throwable 而不是分开ExceptionError

您可以在测试时将信息收集为 String 并将其附加到简单的 lcdui Form 中,从而准确了解发生了什么:

try // do something that could potentially fail catch (Throwable th) myDebugLcduiForm.append("potential failure number xx." + th + th.getMessage()); // if necessary, throw a new RuntimeException

一旦您确切知道哪行代码引发了什么异常,您可能想要更新/重新发布您的问题。

【讨论】:

以上是关于在 j2me 中无法打开三星手机上的相机的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Android 手机中使用 cv2.VideoCapture(0) 打开相机

人脸识别相机打不开

android虚拟机的相机为啥无法使用

wsl2怎么连接本地相机

如何记录在Android中打开相机的历史记录

华为手机拍照无法聚焦