Java tutorial
//package com.java2s; /* * Copyright (C) 2008 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ import android.graphics.Rect; import android.graphics.RectF; import android.hardware.Camera; public class Main { /** * Convert touch position x:y to {@link Camera.Area} position -1000:-1000 to 1000:1000. */ private static Rect calculateTapArea(Camera camera, float x, float y, float coefficient) { float focusAreaSize = 300; int areaSize = Float.valueOf(focusAreaSize * coefficient).intValue(); int centerX = (int) (x / getResolution(camera).width - 1000); int centerY = (int) (y / getResolution(camera).height - 1000); int left = clamp(centerX - areaSize / 2, -1000, 1000); int top = clamp(centerY - areaSize / 2, -1000, 1000); RectF rectF = new RectF(left, top, left + areaSize, top + areaSize); return new Rect(Math.round(rectF.left), Math.round(rectF.top), Math.round(rectF.right), Math.round(rectF.bottom)); } public static Camera.Size getResolution(Camera mCamera) { Camera.Parameters params = mCamera.getParameters(); Camera.Size s = params.getPreviewSize(); return s; } private static int clamp(int x, int min, int max) { if (x > max) { return max; } if (x < min) { return min; } return x; } }