2011-07-31 95 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格式。 –

回答

2

也許你正試圖設置不受支持的預覽大小。在撥打setPreviewSize()之前,請先撥打電話「getSupportedPreviewSizes()」並檢查您的設備是否支持您要設置的預覽尺寸。

+0

此外,'Camera.Parameters.setPreviewSize()',或者更準確地說'Camera.setParameters()'不應該在'Camera.startPreview()'之後被調用。 –