2012-11-21 87 views
0

我正在拍一個應用程序拍照,但我不想用startActivityForResult以更好的分辨率拍照

我使用SurfaceViewPictureCallback()

但問題是,照片​​上總是與320x240px

下面是代碼:

PictureCallback myPictureCallback_JPG = new PictureCallback(){ 

    public void onPictureTaken(byte[] arg0, Camera arg1) {  

     Uri uriTarget = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, new ContentValues()); 

     OutputStream imageFileOS; 

     try { 

     imageFileOS = getContentResolver().openOutputStream(uriTarget); 
     imageFileOS.write(arg0); 
     imageFileOS.flush(); 
     imageFileOS.close(); 

     Toast.makeText(MainActivity.this,"Image saved: " + uriTarget.toString(),Toast.LENGTH_LONG).show(); 

     } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 

     camera.startPreview(); 
    } 
}; 

我怎麼能 「說相機」採取可用的最佳分辨率?

反正thakyou(:

回答

3

JpeqQuality大約是壓縮的,但攝像頭的參數似乎是正確的指針

您可以從相機獲取當前PARAMS

Camera.Parameters parameters = camera.getParameters(); 

然後執行預覽尺寸/圖片

parameters.setPreviewSize(previewWidth, previewHeight); 
parameters.setPictureSize(newWidth, newHeight); 
// push it back to camera 
camera.setParameters(parameters); 

請注意,不要忘記檢查手機上的相機是否支持該尺寸,因爲它是非常特定的設備

http://developer.android.com/reference/android/hardware/Camera.Parameters.html#getSupportedPictureSizes()

+0

謝謝!這對我來說很好((: –

1

在onPictureTaken回調方法,該圖片已被使用,所以沒有什麼在那裏做

您設置的參數在實例化Camera對象後,線槽。setParameters方法看一看到Camera.Parameters類我覺得方法setJpegQuality您可能會感興趣

基本上,我想應該是這樣的:

Camera camera= Camera.open(); 
camera.getParameters().setJpegQuality(100); // being 100 the max quality and 0 the min 
+0

這也是有用的,我使用它!謝謝! –

相關問題