public static Camera.Size getOptimalPreviewSize(Camera camera, int width, int height) { Camera.Size optimalSize = null; double minHeightDiff = Double.MAX_VALUE; double minWidthDiff = Double.MAX_VALUE; List<Camera.Size> sizes = camera.getParameters().getSupportedPreviewSizes(); if (sizes == null) return null; //找到宽度差距最小的 for(Camera.Size size:sizes){ if (Math.abs(size.width - width) < minWidthDiff) { minWidthDiff = Math.abs(size.width - width); } } //在宽度差距最小的里面,找到高度差距最小的 for(Camera.Size size:sizes){ if(Math.abs(size.width - width) == minWidthDiff) { if(Math.abs(size.height - height) < minHeightDiff) { optimalSize = size; minHeightDiff = Math.abs(size.height - height); } } } return optimalSize; }
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { Camera.Parameters parameters = camera.getParameters(); List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes(); // You need to choose the most appropriate previewSize for your app Camera.Size previewSize = // .... select one of previewSizes here parameters.setPreviewSize(previewSize.width, previewSize.height); camera.setParameters(parameters); camera.startPreview(); }
private Point findBestPreviewSizeValue(Camera.Parameters parameters, Point screenResolution) { List<Camera.Size> supportedPreviewSizes = new ArrayList<Camera.Size>(parameters.getSupportedPreviewSizes()); Collections.sort(supportedPreviewSizes, new Comparator<Camera.Size>() { @Override
Camera.Parameters p = mServiceCamera.getParameters(); final List<Size> listSize = p.getSupportedPreviewSizes(); Size mPreviewSize = listSize.get(2); Log.v(TAG, "use: width = " + mPreviewSize.width
public static Point findBestPreviewSizeValue(Camera.Parameters parameters, Point screenResolution) { List<Camera.Size> rawSupportedSizes = parameters.getSupportedPreviewSizes(); if (rawSupportedSizes == null) { Log.w(TAG, "Device returned no supported preview sizes; using default");
Camera.Parameters parameters = camera.getParameters(); List<android.hardware.Camera.Size> supportedPreviewSizes = parameters.getSupportedPreviewSizes(); List<android.hardware.Camera.Size> supportedPictureSizes = parameters.getSupportedPictureSizes();
Camera.Parameters parameters = camera.getParameters(); List<android.hardware.Camera.Size> supportedPreviewSizes = parameters.getSupportedPreviewSizes(); List<android.hardware.Camera.Size> supportedPictureSizes = parameters.getSupportedPictureSizes();
Camera.Parameters parameters = camera.getParameters(); List<android.hardware.Camera.Size> supportedPreviewSizes = parameters.getSupportedPreviewSizes(); List<android.hardware.Camera.Size> supportedPictureSizes = parameters.getSupportedPictureSizes();
@Override protected void prepareCameraOutputs() { try { if (configurationProvider.getMediaQuality() == Configuration.MEDIA_QUALITY_AUTO) { camcorderProfile = CameraHelper.getCamcorderProfile(currentCameraId, configurationProvider.getVideoFileSize(), configurationProvider.getMinimumVideoDuration()); } else camcorderProfile = CameraHelper.getCamcorderProfile(configurationProvider.getMediaQuality(), currentCameraId); final List<Size> previewSizes = Size.fromList(camera.getParameters().getSupportedPreviewSizes()); final List<Size> pictureSizes = Size.fromList(camera.getParameters().getSupportedPictureSizes()); List<Size> videoSizes; if (Build.VERSION.SDK_INT > 10) videoSizes = Size.fromList(camera.getParameters().getSupportedVideoSizes()); else videoSizes = previewSizes; videoSize = CameraHelper.getSizeWithClosestRatio( (videoSizes == null || videoSizes.isEmpty()) ? previewSizes : videoSizes, camcorderProfile.videoFrameWidth, camcorderProfile.videoFrameHeight); photoSize = CameraHelper.getPictureSize( (pictureSizes == null || pictureSizes.isEmpty()) ? previewSizes : pictureSizes, configurationProvider.getMediaQuality() == Configuration.MEDIA_QUALITY_AUTO ? Configuration.MEDIA_QUALITY_HIGHEST : configurationProvider.getMediaQuality()); if (configurationProvider.getMediaAction() == Configuration.MEDIA_ACTION_PHOTO || configurationProvider.getMediaAction() == Configuration.MEDIA_ACTION_UNSPECIFIED) { previewSize = CameraHelper.getSizeWithClosestRatio(previewSizes, photoSize.getWidth(), photoSize.getHeight()); } else { previewSize = CameraHelper.getSizeWithClosestRatio(previewSizes, videoSize.getWidth(), videoSize.getHeight()); } } catch (Exception e) { Log.e(TAG, "Error while setup camera sizes."); } }
for (Camera.Size size : p.getSupportedPreviewSizes()) { if (size.width<=width && size.height<=height) { if (result==null) {
List<Camera.Size> sizes = mCameraWrapper.mCamera.getParameters().getSupportedPreviewSizes(); int w = getWidth(); int h = getHeight();
private void openCamera() { if (mCamera != null) { releaseCamera(); } mCamera = Camera.open(mCameraId); mCameraParameters = mCamera.getParameters(); // Supported preview sizes mPreviewSizes.clear(); for (Camera.Size size : mCameraParameters.getSupportedPreviewSizes()) { mPreviewSizes.add(new Size(size.width, size.height)); } // Supported picture sizes; mPictureSizes.clear(); for (Camera.Size size : mCameraParameters.getSupportedPictureSizes()) { mPictureSizes.add(new Size(size.width, size.height)); } // AspectRatio if (mAspectRatio == null) { mAspectRatio = Constants.DEFAULT_ASPECT_RATIO; } adjustCameraParameters(); mCamera.setDisplayOrientation(calcDisplayOrientation(mDisplayOrientation)); mCallback.onCameraOpened(); }
private void openCamera() { if (mCamera != null) { releaseCamera(); } mCamera = Camera.open(mCameraId); mCameraParameters = mCamera.getParameters(); // Supported preview sizes mPreviewSizes.clear(); for (Camera.Size size : mCameraParameters.getSupportedPreviewSizes()) { mPreviewSizes.add(new Size(size.width, size.height)); } // Supported picture sizes; mPictureSizes.clear(); for (Camera.Size size : mCameraParameters.getSupportedPictureSizes()) { mPictureSizes.add(new Size(size.width, size.height)); } // AspectRatio if (mAspectRatio == null) { mAspectRatio = Constants.DEFAULT_ASPECT_RATIO; } adjustCameraParameters(); mCamera.setDisplayOrientation(calcDisplayOrientation(mDisplayOrientation)); mCallback.onCameraOpened(); }
private static List<Size> getPreviewSizes(Camera.Parameters parameters) { List<Camera.Size> rawSupportedSizes = parameters.getSupportedPreviewSizes(); List<Size> previewSizes = new ArrayList<>(); if (rawSupportedSizes == null) { Camera.Size defaultSize = parameters.getPreviewSize(); if (defaultSize != null) { // Work around potential platform bugs previewSizes.add(new Size(defaultSize.width, defaultSize.height)); } return previewSizes; } for (Camera.Size size : rawSupportedSizes) { previewSizes.add(new Size(size.width, size.height)); } return previewSizes; }
Camera.Parameters p = myCamera.getParameters(); List<Size> previewsizes = p.getSupportedPreviewSizes(); List<Size> videosizes = p.getSupportedVideoSizes();
Camera.Parameters parameters = camera.getParameters(); List<Camera.Size> sizes = parameters.getSupportedPreviewSizes(); Camera.Size cs = sizes.get(0); parameters.setPreviewSize(cs.width, cs.height); camera.setParameters(parameters);
Camera.Parameters parameters = camera.getParameters(); parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO); Pair<Integer, Integer> size = getMaxSize(parameters.getSupportedPreviewSizes()); parameters.setPreviewSize(size.first, size.second); orgPreviewWidth = size.first; orgPreviewHeight = size.second; camera.setParameters(parameters);
@Test public void testGetSupportedPreviewSizes() throws Exception { List<Camera.Size> supportedSizes = parameters.getSupportedPreviewSizes(); assertThat(supportedSizes).isNotNull(); assertThat(supportedSizes.size()).isEqualTo(2); assertThat(supportedSizes.get(0).width).isEqualTo(320); assertThat(supportedSizes.get(0).height).isEqualTo(240); }
@Test public void testInitSupportedPreviewSizes() throws Exception { Shadows.shadowOf(parameters).initSupportedPreviewSizes(); assertThat(parameters.getSupportedPreviewSizes()).isNotNull(); assertThat(parameters.getSupportedPreviewSizes()).isEmpty(); }
@Test public void testAddSupportedPreviewSizes() throws Exception { Shadows.shadowOf(parameters).initSupportedPreviewSizes(); Shadows.shadowOf(parameters).addSupportedPreviewSize(320, 240); List<Camera.Size> supportedSizes = parameters.getSupportedPreviewSizes(); assertThat(supportedSizes).isNotNull(); assertThat(supportedSizes).hasSize(1); assertThat(supportedSizes.get(0).width).isEqualTo(320); assertThat(supportedSizes.get(0).height).isEqualTo(240); }