您的位置:首页 > 编程语言 > Java开发

拨打视频电话时选择关闭摄像头弹出Phone报错java.lang.RuntimeException: Fail to get camera info 或 startPreview failed

2012-07-10 15:22 357 查看

java.lang.RuntimeException: Fail to get camera info

在展讯平台8810遇到过:拨打视频电话时选择关闭摄像头弹出Phone报错 的问题。
对InVideoCallScreen.java 中的 createCamera() 进行修改!!!
private void createCamera() {  

  

 //Add by kylin 2012.06.27

  if(!isShowCarme){

    mCamera = Camera.open(getCamerID());

  }

        if (mCamera != null && !isShowCarme) {

            // If the activity is paused and resumed, camera device has been

            // released and we need to open the camera.

         

         try {

                      Camera.Parameters params = mCamera.getParameters();

                      params.setSensorRotation(getSensorRotation());

                      params.set("sensororientation", 1);

                     params.set("videodatatype", "1");

                      mCamera.setParameters(params);

   

                  Log.d(LOG_TAG, "createCamera(), mCamera: " + mCamera);

                  mCamera.unlock();

   } catch (Exception e) {

    // TODO: handle exception

      e.printStackTrace();

   }

   isShowCarme = true; 

        }

     //end  

 }
 
private void closeCamera() {

        Log.v(LOG_TAG, "closeCamera");

     mHandler.removeMessages(DELAYED_CREATE_CAMERA);

        if (mCamera == null) {

            Log.d(LOG_TAG, "already stopped.");

            return;

        }

        mCamera.lock();

        mCamera.release();

     mCamera = null;

        mPreviewing = false;

        isShowCarme = false;     //Add by kylin 2012.07.10

    }
 

android camera .如果遇到 java.lang.RuntimeException: startPreview failed 。

一般Camera调用open 以及startPreview需要确保不两次调用,如果Camera.open(); 或者camera.startPreview();连续调用了多次,将可能会发生 java.lang.RuntimeException: startPreview failed;一般可以使用boolean 全局变量来记录当前camera的状态。来保证这一点。如下函数所示:

 

private void initCamera() {

        if (!isView) {

            camera = Camera.open(); 

        }

        if (camera != null && !isView) {

            try {

                Camera.Parameters myParameters = camera.getParameters();

                myParameters.setPictureFormat(ImageFormat.JPEG);

                camera.setParameters(myParameters);        

                camera.setPreviewDisplay(holder);                    

                camera.startPreview();

            } catch (IOException e) {

                e.printStackTrace();

            }

            isView = true;

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐