2011-07-31 8 views
1

これはonPreviewFrameメソッドのコードです。アンドロイドカメラの解像度を変更できません

surfaceHolderに表示されるフレームは問題ありません。

私はすでに最初の

mCameraParameter = mCamera.getParameters(); 
mCameraParameter.setPreviewSize(100,150); 
mCameraParameter.setPreviewFrameRate(20); 
mCameraParameter.setPreviewFormat(PixelFormat.JPEG); 
mCamera.setParameters(mCameraParameter); 

が、画像の取得は、私はプレビューの解像度を変更することはできませんなぜ私が疑問に思う640 * 480

ある絵で、このコードの解像度を設定。

 public void onPreviewFrame(byte[] data, Camera camera) { 
     Log.e("PreviewCallBack", "Preview"); 


     Camera.Parameters parameters = camera.getParameters(); 
     Log.e("Picture Size", "width : " + parameters.getPreviewSize().width); 
     Log.e("Picture Size", "height : " + parameters.getPreviewSize().height); 
     Log.e("Array Size", "data.length : " + data.length); 
     YuvImage image = new YuvImage(data, parameters.getPreviewFormat(), 
       parameters.getPreviewSize().width,parameters.getPreviewSize().height, null); 


     File file = new File(Environment.getExternalStorageDirectory() 
       .getPath() + "/"+/*System.currentTimeMillis()*/"out.jpg"); 

     FileOutputStream filecon = null; 

     try { 
      filecon = new FileOutputStream(file); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 


     image.compressToJpeg(
       new Rect(0, 0, image.getWidth(), image.getHeight()), 90, 
       filecon); 
    } 
}; 
+0

'setPreviewFormat(PixelFormat.JPEG)'は役に立たない。私はこれをサポートしているAndroidデバイスを見たことがない。独自の例では、 'onPreviewFrame()'コールバックで受け取ったデータのYUVフォーマットを期待しています。 –

答えて

1

私はあなたが絵自体(ないプレビュー)のサイズを設定するsetPictureSize()を呼ぶべきだと思います。

2

サポートされていないプレビューサイズを設定しようとしている可能性があります。 getSupportedPreviewSizes() "を呼び出し、のsetPreviewSize()を呼び出す前に、設定するプレビューサイズがデバイスでサポートされているかどうかを確認してください。

+0

また、 'Camera.Parameters.setPreviewSize()'、より厳密には 'Camera.setParameters()'は 'Camera.startPreview()'の後には呼び出されません。 –

関連する問題