Это код, который я реализовал, где я хочу сфокусировать определенное место, которое я определил из прямоугольника.Прямоугольник прибывает из другого класса, названного SelectedView, который рисует прямоугольник моей желаемой формы.Проблема, которую я получаю, состоит в том, что фокус, который я реализовал для проекта, полностью игнорирует точку и выполняет нормальный общий фокус вместо прямоугольной области, которую я указал в selectedView.
Camera.Parameters parameters = mOriginalCamera.getParameters();
List<String> focusModes = parameters.getSupportedFocusModes();
if(focusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO ))
{
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO );
}
if(focusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)){
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
}
else if(focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)){
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
}
if(parameters.isZoomSupported())
{
int maxZoom = parameters.getMaxZoom();
Log.e(" Max zoom ", String.valueOf(maxZoom));
if(maxZoom > 5)
{
parameters.setZoom(5);
}
}
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
{
{
parameters.set("orientation", "portrait");
parameters.set("rotation",90);
}
}
int maxFocusArea= parameters.getMaxNumFocusAreas();
if(maxFocusArea!=0)
{
Rect focusArea = new Rect();
focusArea = SelectedView.focusRect;
List<Camera.Area> focusList = new ArrayList<Camera.Area>();
Camera.Area cameraArea = new Camera.Area(focusArea, 1000);
focusList.add(cameraArea);
parameters.setFocusAreas(focusList);
parameters.setMeteringAreas(focusList);
}
mOriginalCamera.setDisplayOrientation(90);
mOriginalCamera.setParameters(parameters);
mOriginalCamera.autoFocus(new Camera.AutoFocusCallback() {
@Override
public void onAutoFocus(boolean success, Camera camera) {
}
});
Класс selectedView имеет статический прямоугольник, и я получаю это значение из метода onDraw как:
protected void onDraw(Canvas canvas) {
int height = RechargeActivity.oldSurfaceView.getHeight();
canvas.drawRect(40,height/2-40,(int)getScreenWidth()-40,height/2,paint);
focusRect = new Rect(40,40,(int)getScreenWidth()-40,100);
}