撥打視頻電話時選擇關閉攝像頭彈出Phone報錯java.lang.RuntimeException: Fail to get camera info 或 startPreview failed

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;

        }

    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章