KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am on a Camera App which taking basic pictures. I have an issue when I get the best optimal preview size. In fact, with this first code : public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { if (isPreviewRunning) { mCamera.stopPreview(); } Camera.Parameters parameters = mCamera.getParameters(); mCamera.setParameters(parameters); mCamera.startPreview(); isPreviewRunning = true; } The picture has a good quality : http://img689.imageshack.us/i/04042011172937.jpg/ But, with this code : private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) { final double ASPECT_TOLERANCE = 0.05; double targetRatio = (double) w / h; if (sizes == null) return null; Size optimalSize = null; double minDiff = Double.MAX_VALUE; int targetHeight = h; // Try to find an size match aspect ratio and size for (Size size : sizes) { double ratio = (double) size.width / size.height; if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue; if (Math.abs(size.height - targetHeight) < minDiff) { optimalSize = size; minDiff = Math.abs(size.height - targetHeight); } } // Cannot find the one match the aspect ratio, ignore the requirement if (optimalSize == null) { minDiff = Double.MAX_VALUE; for (Size size : sizes) { if (Math.abs(size.height - targetHeight) < minDiff) { optimalSize = size; minDiff = Math.abs(size.height - targetHeight); } } } return optimalSize; } public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { // Now that the size is known, set up the camera parameters and begin // the preview. if (isPreviewRunning) {
Tags (comma-separated)
Save Edits
Cancel