我再写项目的时候,后置摄像头预览不被拉伸,前置摄像头拉伸
我在切换前后摄像头的方法中,当后置摄像头变为前置摄像头
//现在是后置,变更为前置 if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {//代表摄像头的方位,CAMERA_FACING_FRONT前置 CAMERA_FACING_BACK后置 mCamera.stopPreview();//停掉原来摄像头的预览 mCamera.release();//释放资源 mCamera = null;//取消原来摄像头 mCamera = Camera.open(i);//打开当前选中的摄像头 ViewGroup.LayoutParams layoutParams = preview.getLayoutParams(); try { mCamera.setPreviewDisplay(mPreview.getHoder());//通过surfaceview显示取景画面 // mCamera.setDisplayOrientation(90); // Camera.Parameters parameters=mCamera.getParameters(); // mCamera.setDisplayOrientation(getPreviewDegree(ChatRoomActivity.instance));// 设置相机的方向 // parameters.set("orientation", "portrait"); // mCamera.setParameters(parameters); try { //摄像头画面显示在Surface上 if (mCamera != null) { Camera.Parameters parameters = mCamera.getParameters(); List<Camera.Size> sizes = parameters.getSupportedPreviewSizes(); int[] a = new int[sizes.size()]; int[] b = new int[sizes.size()]; for (int y = 0; y < sizes.size(); y++) { int supportH = sizes.get(y).height; int supportW = sizes.get(y).width; a[y] = Math.abs(supportW - screenHeight); b[y] = Math.abs(supportH - screenWidth); Log.d(TAG,"supportW:"+supportW+"supportH:"+supportH); } int minW=0,minA=a[0]; for( int y=0; y<a.length; y++){ if(a[y]<=minA){ minW=y; minA=a[y]; } } int minH=0,minB=b[0]; for( int y=0; y<b.length; y++){ if(b[y]<minB){ minH=y; minB=b[y]; } } Log.d(TAG,"result="+sizes.get(minW).width+"x"+sizes.get(minH).height); List<Integer> list = parameters.getSupportedPreviewFrameRates(); parameters.setPreviewSize(sizes.get(minW).width,sizes.get(minH).height); // 设置预览图像大小 parameters.setPreviewFrameRate(list.get(list.size() - 1)); mCamera.setParameters(parameters); mCamera.setDisplayOrientation(90); mCamera.startPreview(); } } catch (Exception e) { if (mCamera != null) mCamera.release(); mCamera = null; } } catch (IOException e) { e.printStackTrace(); } mCamera.startPreview();//开始预览 cameraPosition = 0; break; }