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.
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);
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.
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
}
};
ressemble à vous devrait autofocus continu comme est discuté ici.
il y a une question ici à laquelle vous pouvez faire référence.
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
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);