2016-12-11 7 views
1

こんにちはAndroid.harware.CameraでsetParametersを修正できませんでしたか?

私は複数のデバイスで、このエラーを取得していますAndroidのカメラアプリを作成しながら、

setParametersをは...

を失敗しました。

この問題の原因は何ですか?

public void surfaceCreated(SurfaceHolder surfaceHolder) { 



     try { 

       camera = camera.open(); 

     } catch (Exception e) { 
      Log.e(getString(R.string.app_name), "failed to open Camera"); 
      e.printStackTrace(); 
     } 


     try { 

      camera.setPreviewDisplay(surfaceHolder); 
      camera.startPreview(); 


     }catch (Exception e){ 



     } 

    } 

    @Override 
    public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) { 
     refreshCamera(); 
     setDisplayOrientation(); 

     Camera.Parameters parameters = camera.getParameters(); 

     camera.setFaceDetectionListener(faceDetectionListener); 
     camera.startFaceDetection(); 
     parameters.setPreviewFrameRate(20); 
     List<Camera.Size> customSizes = parameters.getSupportedPreviewSizes(); 
     Camera.Size customSize = customSizes.get(0); //Added size 
     parameters.setPreviewSize(customSize.width, customSize.height); 
     parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); 
     camera.setParameters(parameters); 
     camera.setDisplayOrientation(90); 

     camera.setParameters(parameters); 
     camera.startPreview(); 





    } 

    @Override 
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) { 
     if (camera != null) { 
      camera.stopPreview(); 
     } 

    } 




    public void frontCamera(View view) { 

     camera.stopPreview(); 
     camera.release(); 
     camera=null; 

     if (cameraId == 0){ 



      try { 

       camera = camera.open(1); 

      } catch (Exception e) { 
       Log.e(getString(R.string.app_name), "failed to open Camera"); 
       e.printStackTrace(); 
      } 
      android.hardware.Camera.Parameters parameters; 
      camera.setFaceDetectionListener(faceDetectionListener); 
      camera.startFaceDetection(); 
      parameters = camera.getParameters(); 
      parameters.setPreviewFrameRate(20); 
      List<Camera.Size> customSizes = parameters.getSupportedPreviewSizes(); 


      Camera.Size customSize = customSizes.get(0); //Added size 
      parameters.setPreviewSize(customSize.width, customSize.height); 
      parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); 
      camera.setParameters(parameters); 
      camera.setDisplayOrientation(90); 

      cameraId = 1; 


      try { 

       camera.setPreviewDisplay(surfaceHolder); 
       camera.startPreview(); 


      }catch (Exception e){ 



      } 
     } 

+私はインターネット上で調査を行うことを試みたと私は、この発見:

List<Camera.Size> customSizes = parameters.getSupportedPreviewSizes(); 


      Camera.Size customSize = customSizes.get(0); //Added size 
      parameters.setPreviewSize(customSize.width, customSize.height); 
をここで

は私がParameters開度設定cameraに、これまで行われてきたものです

しかし、まだsetParametersエラーが発生しました...

答えて

1
  • ご質問サポートFOCUS_MODE_CONTINUOUS_PICTUREにカメラを知っていますか?これは保証されません。チェックgetSupportedFocusModes()を確認してください。サポートされていないモードを使用すると、カメラはsetParametersに失敗することがあります。
  • カメラがフレームレート20をサポートしていることをご存知ですか?これは保証されません。チェックgetSupportedPreviewFpsRangeを確認してください。また、サポートされていないフレームレート値の場合、カメラはsetParametersに失敗する可能性があります。
  • Janさんのように、startFaceDetection()は、プレビューが開始された後にのみ呼び出されます。順序が間違っているとsetParametersエラーが発生することは驚くべきことですが、正直なところ、
1

カメラがプレビュー枠で検出された顔のCamera.FaceDetectionListenerを通知しますので、プレビューが開始された後、あなたの方法startFaceDetection()を呼び出す必要があります。

 parameters.setPreviewFrameRate(20); 
     List<Camera.Size> customSizes = parameters.getSupportedPreviewSizes(); 
     Camera.Size customSize = customSizes.get(0); //Added size 
     parameters.setPreviewSize(customSize.width, customSize.height); 
     parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); 
     camera.setParameters(parameters); 
     camera.setDisplayOrientation(90); 

     camera.setParameters(parameters); 
     camera.startPreview(); 

camera.setFaceDetectionListener(faceDetectionListener); 
     camera.startFaceDetection(); 
+0

素晴らしい!しかし、私はstartPreview()を使うべきですか?およびcamera.setParameters(parameters); Exeption eやIOExeption eのようなものを試してキャッチしていますか? – User

+1

THX!どうぞ! – User

+0

歓迎します、私はあなたを助けてうれしいです。 –

関連する問題