2014-04-29 2 views
6

Ich habe eine Kamera-App, mit der der Benutzer Bilder machen kann. Auf meinem Hauptbildschirm habe ich eine Kamera auf einem SurfaceView gerendert. Wenn der Benutzer ein Foto macht, rufe ich camera.autoFocus auf und beim AutoFocusCallback Callback rufe ich camera.takePicture auf. Dann speichere ich das Foto und gehe zu einer anderen Aktivität, um das Foto in der Vorschau anzuzeigen. Ich rufe camera.stopPreview() beim Verlassen der Kameraseite (onPause) und camera.startPreview() beim Zurückkommen (onResume) auf.Android Camera.autoFocus und FOCUS_MODE_CONTINUOUS_PICTURE

Die Kamera wird mit FOCUS_MODE_CONTINUOUS_PICTURE initialisiert. Ich recycle die Kamera nicht, wenn ich zur Kameraseite zurückkehre (da es ein langsamer Vorgang ist, der ~ 2 Sekunden dauert), aber rufe einfach startPreview auf, wenn die Kamera zuvor initialisiert wurde.

Hier ist mein Problem. Bevor Sie das erste Foto aufnehmen, funktioniert der kontinuierliche Autofokus einwandfrei, da FOCUS_MODE_CONTINUOUS_PICTURE zunächst auf der Kamera eingerichtet wird. Nach dem Aufruf von camera.autoFocus funktioniert FOCUS_MODE_CONTINUOUS_PICTURE jedoch nicht mehr. Später, wenn ich zum selben Bildschirm zurückkehre und startPreview aufruft, funktioniert der kontinuierliche Autofokus nicht mehr.

Gibt es eine Möglichkeit, den kontinuierlichen Autofokus neu zu starten, ohne die Kamera neu starten zu müssen? Ich möchte vermeiden, die Kamera neu zu starten, da dies einige Sekunden Verzögerung für den Benutzer verursacht.

Antwort

17

Ich behob das Problem durch Aufruf von camera.cancelAutoFocus(). Dies führte dazu, dass der kontinuierliche Autofokus erneut ausgelöst wurde.

+2

Wenn Anwendungen den kontinuierlichen Fokus fortsetzen möchten, muss cancelAutoFocus aufgerufen werden. Beim Neustarten der Vorschau wird der kontinuierliche Autofokus nicht fortgesetzt. http://developer.android.com/reference/android/hardware/Camera.Parameters.html#FOCUS_MODE_CONTINUOUS_PICTURE –