2017-05-10 7 views
0

私はカメラアプリケーションを作成しています。プレビュー画像は90度回転した。だから私は自分のコードを変更し、カメラの正しい表示方向を設定するコードを追加しました。私はアプリを実行すると、それがクラッシュし、エラーメッセージがjava.lang.RuntimeException:setParametersが失敗しました。カメラのパラメータを設定しています

java.lang.RuntimeExceptionです:setParametersを使用は

マイsurfaceChanged(SurfaceHolderホルダー、int型、W INT、INT hを)失敗し、 surfaceCreated(SurfaceHolderホルダー)メソッドは、次のとおりです。

public void surfaceChanged(SurfaceHolder holder,int format,int w,int h){ 
    Camera.Parameters mparameters; 
    mholder = holder; 
    mparameters = mcamera.getParameters(); 
    mparameters.setPreviewSize(mpreviewsizewidth,mpreviewsizeheight); 
    mparameters.setPictureSize(mpreviewsizewidth,mpreviewsizeheight); 
    String mCameraFlashMode = mparameters.getFlashMode(); 
    if(mCameraFlashMode != null){ 
     mparameters.setFlashMode(mparameters.FLASH_MODE_ON); 
    } 
    if(mparameters.getFocusMode() != null) { 
     mparameters.setFocusMode(mparameters.FOCUS_MODE_AUTO); 
    } 
    Display display = ((WindowManager)mcontext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 

    if(display.getRotation() == Surface.ROTATION_0) 
    { 
     mparameters.setPreviewSize(mpreviewsizeheight, mpreviewsizewidth); 
     mcamera.setDisplayOrientation(90); 
    } 

    if(display.getRotation() == Surface.ROTATION_90) 
    { 
     mparameters.setPreviewSize(mpreviewsizewidth, mpreviewsizeheight); 
    } 

    if(display.getRotation() == Surface.ROTATION_180) 
    { 
     mparameters.setPreviewSize(mpreviewsizeheight, mpreviewsizewidth); 
    } 

    if(display.getRotation() == Surface.ROTATION_270) 
    { 
     mparameters.setPreviewSize(mpreviewsizewidth, mpreviewsizeheight); 
     mcamera.setDisplayOrientation(180); 
    } 

    mcamera.setParameters(mparameters); 
    try { 
     mcamera.setPreviewDisplay(mholder); 
    }catch(IOException e){ 
     e.printStackTrace(); 
    } 
    mcamera.startPreview(); 
} 

public void surfaceCreated(SurfaceHolder holder){ 
    mcamera = Camera.open(); 
    try{ 
     mcamera.setPreviewDisplay(holder); 
     mcamera.setPreviewCallback(this); 
    }catch(IOException e){ 
     mcamera.release(); 
     mcamera = null; 
    } 
} 

カメラパラメータを設定中にアプリがクラッシュしていない、とプレビューが正しい向きで表示できるように、私は自分のコードを修正することができますどのように私を助けてください。

答えて

0

カメラオブジェクトでサポートされていないプレビューサイズを設定しようとしているようです。 実際に設定できる値を確認するには、サポートされているpreviewSizeのリストを取得する必要があります。

List<Camera.Size> sizes = cam.getParameters().getSupportedPreviewSizes(); 
関連する問題