Область фокусировки в Android Camera игнорирует указанную область - PullRequest
0 голосов
/ 24 ноября 2018

Это код, который я реализовал, где я хочу сфокусировать определенное место, которое я определил из прямоугольника.Прямоугольник прибывает из другого класса, названного 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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...