androidcamera預覽
1. android如何獲取相機解析度
安卓系統在獲取相機解析度時,可以參考SDK中的API,獲取相機的參數:
Camera.Parameters parameters = camera.getParameters();
獲取預覽的各種解析度:
List<Size> supportedPreviewSizes = parameters.getSupportedPreviewSizes();
獲取攝像頭支持的各種解析度:
List<Size> supportedPictureSizes = parameters.getSupportedPictureSizes();
例如:獲取照相機顫彎參數,設置需要的參數,其餘預設
Camera camera = Camera.open();
Camera.Parameters parameters = camera.getParameters();
設置照片格式:
parameters.setPictureFormat(PixelFormat.JPEG);
設置預瀏尺嫌洞含寸,注意要在攝像頭芹笑支持的范圍內選擇:
parameters.setPreviewSize(WIDTH, HEIGHT);
設置照片解析度,注意要在攝像頭支持的范圍內選擇
parameters.setPictureSize(WIDTH, HEIGHT);
設置照相機參數:
camera.setParameters(parameters);
開始拍照:
camera.startPreview();
以上就是獲取相機解析度的步驟。
2. android camera2 用surfaceview輸出預覽圖像畫面拉長
項目當中遇到調整攝像頭位置需要全屏顯示攝像頭預覽界面,過程中發現預覽界面存在無法顯示全,畫面被拉伸的問題。surfaceview的寬高比可能與camera設置的寬高比不一致 ,經測試發現設置Camera 預覽寬高可解決此問題(注意這里設置屏幕物理寬高不起作用,必須設置屏幕解析度)
////通過Resources獲取(無效)
// DisplayMetrics dm = getResources().getDisplayMetrics();
// heigth = dm.heightPixels;
// width = dm.widthPixels;
//獲取屏幕的默認解析度 設置預覽界面長寬解決預覽界面變形顯示不全問題(有效)
Display display = getWindowManager().getDefaultDisplay();
int height = display.getWidth();
int width = display.getHeight();
Camera.Size preSize = CameraUtil.getCloselyPreSize( true , width, height, parameters.getSupportedPreviewSizes());
parameters.setPreviewSize(preSize.width, preSize.height);
Log.e(TAG + "攝像頭尺寸前置" , "width" + preSize.width + "------" + "height" + preSize.height);
camera2.setParameters(parameters);
// 啟動攝像頭預覽
camera2.startPreview();
System.out.println( "camera.startpreview" );