Comment autofocus caméra Android automatiquement?

je veux autofocus caméra Android dès que la caméra tient immobile. Je cherche des tutoriels ou des échantillons comment le faire ou au moins un petit échantillon qui montre quelles classes je peux utiliser pour accrocher sur de tels événements.

44
demandé sur Alexey Zakharov 2013-03-26 00:17:19

6 réponses

pour moi cela a fonctionné un plaisir:

//set camera to continually auto-focus
Camera.Parameters params = c.getParameters();
//*EDIT*//params.setFocusMode("continuous-picture");
//It is better to use defined constraints as opposed to String, thanks to AbdelHady
params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
c.setParameters(params);
108
répondu htvisttj 2014-10-27 14:23:24

Essayez d'utiliser Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO ou Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE . Voir ci-dessous:

Camera.Parameters params = camera.getParameters();
if (params.getSupportedFocusModes().contains(
    Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) {
  params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
}
camera.setParameters(params);

il est important de vérifier si le téléphone supporte le mode que vous avez choisi avant de tenter de l'utiliser, sinon setParameters() lancera une exception d'exécution.

49
répondu dcoz 2015-07-31 07:07:19

le code suivant marche pour moi.

Réglage de la mise au point (extrait):

Parameters params = camera.getParameters();
params.setFocusMode(Parameters.FOCUS_MODE_AUTO);
//some more settings
camera.setParameters(params);

appeler la caméra pour prendre une photo au cas où l'autofocus est prêt (classe d'activité):

public void butClick(View v){
    preview.camera.autoFocus(new AutoFocusCallback() {
        public void onAutoFocus(boolean success, Camera camera) {
            if(success){
                camera.takePicture(shutterCallback, rawCallback, jpegCallback);
            }
        }
    });
}

Obtenir de l'image (l'activité de la classe):

PictureCallback jpegCallback = new PictureCallback() {
    public void onPictureTaken(byte[] data, Camera camera) {
        //do something
    }
};
16
répondu Jens van de Mötter 2014-11-30 18:45:14

ressemble à vous devrait autofocus continu comme est discuté ici.

il y a une question ici à laquelle vous pouvez faire référence.

7
répondu Kgrover 2017-05-23 12:03:08

vous pouvez essayer le code:

ShutterCallback _pfnShutterCallback = new ShutterCallback() {

        @Override
        public void onShutter() {
            // TODO Auto-generated method stub

        }

    };

    PictureCallback _pfnRawPictureCallback = new PictureCallback() {

        @Override
        public void onPictureTaken(byte[] data, Camera camera) {
            // TODO Auto-generated method stub

        }
    };

    private AutoFocusCallback _pfnAutoFocusCallback = new AutoFocusCallback() {

        @Override
        public void onAutoFocus(boolean success, Camera camera) {
            // TODO Auto-generated method stub
            camera.autoFocus(null);
            camera.takePicture(_pfnShutterCallback, _pfnRawPictureCallback,
                    mPicture);

        }
    };
    private PictureCallback mPicture = new PictureCallback() {

        public void onPictureTaken(byte[] data, Camera camera) {
            new SavePhotoTask().execute(data);
            camera.startPreview();

        }
    };
class SavePhotoTask extends AsyncTask<byte[], String, String> {
// Process save file image
}

appel de capture : mCamera.autoFocus(autoFocusCallback);

vous pouvez Vous référer à: http://android-er.blogspot.com/2011/01/start-camera-auto-focusing-autofocus.html

0
répondu D T 2014-06-02 11:03:57

cela fonctionne parfaitement pour l'aperçu de rappel:

Camera.Parameters parameters = camera.getParameters();
if (parameters.getSupportedFocusModes().contains(
        Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) {
    parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
}
camera.setParameters(parameters);
0
répondu Nagendra Singh 2017-07-06 16:55:52