private static Integer indexOfClosestZoom(Camera.Parameters parameters, double targetZoomRatio) { List<Integer> ratios = parameters.getZoomRatios(); Log.i(TAG, "Zoom ratios: " + ratios); int maxZoom = parameters.getMaxZoom(); if (ratios == null || ratios.isEmpty() || ratios.size() != maxZoom + 1) { Log.w(TAG, "Invalid zoom ratios!"); return null; } double target100 = 100.0 * targetZoomRatio; double smallestDiff = Double.POSITIVE_INFINITY; int closestIndex = 0; for (int i = 0; i < ratios.size(); i++) { double diff = Math.abs(ratios.get(i) - target100); if (diff < smallestDiff) { smallestDiff = diff; closestIndex = i; } } Log.i(TAG, "Chose zoom ratio of " + (ratios.get(closestIndex) / 100.0)); return closestIndex; }
private static Integer indexOfClosestZoom(Camera.Parameters parameters, double targetZoomRatio) { List<Integer> ratios = parameters.getZoomRatios(); Log.i(TAG, "Zoom ratios: " + ratios); int maxZoom = parameters.getMaxZoom(); if (ratios == null || ratios.isEmpty() || ratios.size() != maxZoom + 1) { Log.w(TAG, "Invalid zoom ratios!"); return null; } double target100 = 100.0 * targetZoomRatio; double smallestDiff = Double.POSITIVE_INFINITY; int closestIndex = 0; for (int i = 0; i < ratios.size(); i++) { double diff = Math.abs(ratios.get(i) - target100); if (diff < smallestDiff) { smallestDiff = diff; closestIndex = i; } } Log.i(TAG, "Chose zoom ratio of " + (ratios.get(closestIndex) / 100.0)); return closestIndex; }
private void handleZoom(boolean isZoomIn, Camera camera) { Log.e("Camera", "进入缩小放大方法"); Camera.Parameters params = camera.getParameters(); if (params.isZoomSupported()) { int maxZoom = params.getMaxZoom(); int zoom = params.getZoom(); if (isZoomIn && zoom < maxZoom) { Log.e("Camera", "进入放大方法zoom=" + zoom); zoom++; } else if (zoom > 0) { Log.e("Camera", "进入缩小方法zoom=" + zoom); zoom--; } params.setZoom(zoom); camera.setParameters(params); } else { Log.i(TAG, "zoom not supported"); } }
private static Integer indexOfClosestZoom(Camera.Parameters parameters, double targetZoomRatio) { List<Integer> ratios = parameters.getZoomRatios(); Log.i(TAG, "Zoom ratios: " + ratios); int maxZoom = parameters.getMaxZoom(); if (ratios == null || ratios.isEmpty() || ratios.size() != maxZoom + 1) { Log.w(TAG, "Invalid zoom ratios!"); return null; } double target100 = 100.0 * targetZoomRatio; double smallestDiff = Double.POSITIVE_INFINITY; int closestIndex = 0; for (int i = 0; i < ratios.size(); i++) { double diff = Math.abs(ratios.get(i) - target100); if (diff < smallestDiff) { smallestDiff = diff; closestIndex = i; } } Log.i(TAG, "Chose zoom ratio of " + (ratios.get(closestIndex) / 100.0)); return closestIndex; }
private static Integer indexOfClosestZoom(Camera.Parameters parameters, double targetZoomRatio) { List<Integer> ratios = parameters.getZoomRatios(); Log.i(TAG, "Zoom ratios: " + ratios); int maxZoom = parameters.getMaxZoom(); if (ratios == null || ratios.isEmpty() || ratios.size() != maxZoom + 1) { Log.w(TAG, "Invalid zoom ratios!"); return null; } double target100 = 100.0 * targetZoomRatio; double smallestDiff = Double.POSITIVE_INFINITY; int closestIndex = 0; for (int i = 0; i < ratios.size(); i++) { double diff = Math.abs(ratios.get(i) - target100); if (diff < smallestDiff) { smallestDiff = diff; closestIndex = i; } } Log.i(TAG, "Chose zoom ratio of " + (ratios.get(closestIndex) / 100.0)); return closestIndex; }
/** * 处理变焦缩放 * @param isZoomIn * @param camera */ private void handleZoom(boolean isZoomIn, Camera camera) { Camera.Parameters params = camera.getParameters(); if (params.isZoomSupported()) { int maxZoom = params.getMaxZoom(); int zoom = params.getZoom(); if (isZoomIn && zoom < maxZoom) { zoom++; } else if (zoom > 0) { zoom--; } params.setZoom(zoom); camera.setParameters(params); } else { Log.i(TAG, "zoom not supported"); } }
private static Integer indexOfClosestZoom(Camera.Parameters parameters, double targetZoomRatio) { List<Integer> ratios = parameters.getZoomRatios(); Log.i(TAG, "Zoom ratios: " + ratios); int maxZoom = parameters.getMaxZoom(); if (ratios == null || ratios.isEmpty() || ratios.size() != maxZoom + 1) { Log.w(TAG, "Invalid zoom ratios!"); return null; } double target100 = 100.0 * targetZoomRatio; double smallestDiff = Double.POSITIVE_INFINITY; int closestIndex = 0; for (int i = 0; i < ratios.size(); i++) { double diff = Math.abs(ratios.get(i) - target100); if (diff < smallestDiff) { smallestDiff = diff; closestIndex = i; } } Log.i(TAG, "Chose zoom ratio of " + (ratios.get(closestIndex) / 100.0)); return closestIndex; }
/** * 放大预览视图 */ private void zoomPreview() { Camera.Parameters parameters = mCamera.getParameters(); int currentZoom = parameters.getZoom(); int maxZoom = (int) (parameters.getMaxZoom() / 2f + 0.5); int destZoom = 0 == currentZoom ? maxZoom : 0; if (parameters.isSmoothZoomSupported()) { mCamera.stopSmoothZoom(); mCamera.startSmoothZoom(destZoom); } else { Handler handler = getHandler(); if (null == handler) return; handler.removeCallbacks(mZoomRunnable); handler.post(mZoomRunnable = new ZoomRunnable(destZoom, currentZoom, mCamera)); } }
private static Integer indexOfClosestZoom(Camera.Parameters parameters, double targetZoomRatio) { List<Integer> ratios = parameters.getZoomRatios(); Log.i(TAG, "Zoom ratios: " + ratios); int maxZoom = parameters.getMaxZoom(); if (ratios == null || ratios.isEmpty() || ratios.size() != maxZoom + 1) { Log.w(TAG, "Invalid zoom ratios!"); return null; } double target100 = 100.0 * targetZoomRatio; double smallestDiff = Double.POSITIVE_INFINITY; int closestIndex = 0; for (int i = 0; i < ratios.size(); i++) { double diff = Math.abs(ratios.get(i) - target100); if (diff < smallestDiff) { smallestDiff = diff; closestIndex = i; } } Log.i(TAG, "Chose zoom ratio of " + (ratios.get(closestIndex) / 100.0)); return closestIndex; }
zooming = (ZoomControls) findViewById(R.id.zooming); zooming.setOnZoomInClickListener(new OnClickListener() { public void onClick(View v) { Camera.Parameters p = mCamera.getParameters(); int maxZoom = p.getMaxZoom(); if (p.isZoomSupported()) { zoom += 10; if (zoom > maxZoom) { zoom -= 10; } p.setZoom(zoom); } mCamera.setParameters(p); try { mCamera.setPreviewDisplay(mSurfaceHolder); } catch (Exception e) { } mCamera.startPreview(); } });
private void handleZoom(boolean isZoomIn, Camera camera) { Camera.Parameters params = camera.getParameters(); if (params.isZoomSupported()) { int maxZoom = params.getMaxZoom(); int zoom = params.getZoom(); if (isZoomIn && zoom < maxZoom) { zoom++; } else if (zoom > 0) { zoom--; } params.setZoom(zoom); camera.setParameters(params); } else { Log.i(TAG, "zoom not supported"); } }
private void setZoom(int zoomValue) { if (mCamera != null) { Camera.Parameters parameters = mCamera.getParameters(); if (parameters.isZoomSupported()) { int maxZoom = parameters.getMaxZoom(); if (maxZoom == 0) { return; } if (zoomValue > maxZoom) { zoomValue = maxZoom; } parameters.setZoom(zoomValue); mCamera.setParameters(parameters); } } }
/** * 焦点放大 */ public void zoomIn() { if (camera != null && camera.getParameters().isZoomSupported()) { Camera.Parameters parameters = camera.getParameters(); if (parameters.getZoom() >= parameters.getMaxZoom()) { return; } parameters.setZoom(parameters.getZoom() + 1); camera.setParameters(parameters); } }
public void setCameraZoom(int scale) { if (camera != null && camera.getParameters().isZoomSupported() && scale <= camera.getParameters().getMaxZoom() && scale >= 0) { Camera.Parameters parameters = camera.getParameters(); parameters.setZoom(scale); camera.setParameters(parameters); } } }
Camera.Parameters parameters = camera.getParameters(); int maxZoom = parameters.getMaxZoom(); if (parameters.isZoomSupported()) { if (zoom >=0 && zoom < maxZoom) { parameters.setZoom(zoom); } else { // zoom parameter is incorrect } }
public boolean setZoomByPercent(float targetPercent) { synchronized (syncOp) { targetPercent = Math.min(Math.max(0f, targetPercent), 1f); Camera.Parameters p = camera.getParameters(); p.setZoom((int) (p.getMaxZoom() * targetPercent)); camera.setParameters(p); return true; } }
return currentZoom; maxZoom = parameters.getMaxZoom();
return currentZoom; maxZoom = parameters.getMaxZoom();
return currentZoom; maxZoom = parameters.getMaxZoom();
public float cameraZoom(boolean isBig) { if(mState != State.PREVIEW || mCameraDevice == null || mCameraData == null) { return -1; } Camera.Parameters params = mCameraDevice.getParameters(); if(isBig) { params.setZoom(Math.min(params.getZoom() + 1, params.getMaxZoom())); } else { params.setZoom(Math.max(params.getZoom() - 1, 0)); } mCameraDevice.setParameters(params); return (float) params.getZoom()/params.getMaxZoom(); }