Réglez l'appareil photo en zone de mise en Android

à la suite de plusieurs tutoriels et des exemples, je suis venu avec l'algorithme suivant pour définir le focus de la caméra sur un endroit précis, le problème est que l'appareil ignore complètement la tache et effectue une normale de l'objectif global à la place de la forme rect, que j'ai spécifié. Est-il autre chose qui me manque dans l'algorithme? Cela a été testé sur plusieurs téléphones, tous avec Android 4.0 et ci-dessus, le domaine d'intervention de l'API est pris en charge sur ces appareils. Remarque, l'application que je suis en train d'écrire fonctionne en mode paysage uniquement.

@Override
public boolean onTouchEvent(final MotionEvent event)
{
    if (event.getAction() == MotionEvent.ACTION_UP)
    {
        float x = event.getX();
        float y = event.getY();
        float touchMajor = event.getTouchMajor();
        float touchMinor = event.getTouchMinor();

        Rect touchRect = new Rect((int)(x - touchMajor / 2), (int)(y - touchMinor / 2), (int)(x + touchMajor / 2), (int)(y + touchMinor / 2));

        this.submitFocusAreaRect(touchRect);
    }
}

private void submitFocusAreaRect(final Rect touchRect)
{
    Camera.Parameters cameraParameters = camera.getParameters();

    if (cameraParameters.getMaxNumFocusAreas() == 0)
    {
        return;
    }

    //Convert from View's width and height to +/- 1000

    Rect focusArea = new Rect();

    focusArea.set(touchRect.left * 2000 / cameraSurfaceView.getWidth() - 1000, 
                      touchRect.top * 2000 / cameraSurfaceView.getHeight() - 1000,
                      touchRect.right * 2000 / cameraSurfaceView.getWidth() - 1000,
                      touchRect.bottom * 2000 / cameraSurfaceView.getHeight() - 1000);

    //Submit focus area to camera

    ArrayList<Camera.Area> focusAreas = new ArrayList<Camera.Area>();
    focusAreas.add(new Camera.Area(focusArea, 1000));

    cameraParameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
    cameraParameters.setFocusAreas(focusAreas);
    camera.setParameters(cameraParameters);

    //Start the autofocus operation

    camera.autoFocus(this);
}
Quelle est la signification de : finale Rect targetFocusRect = new Rectangle( tfocusRect.gauche * 2000/drawingView.getWidth() - 1000.. je veux dire qu'est-ce que 2000 et 1000 ?

OriginalL'auteur PerracoLabs | 2013-07-31