2015-01-25 12 views
5

Ich entwickle eine Android-Anwendung mit einer Kamera-Funktionalitätsfunktion.Android-Kamera: Fixed Objektiv Fokus

Zuallererst lese ich eine Menge Zeug über SO, XDA und so weiter, dann leite mich bitte nicht zu anderen nutzlosen Beiträgen um.

Ich versuche, so etwas wie ein „Fixfokus-Modus“ zu implementieren, so dass:

  1. ich meine Bewerbung mit FOCUS_MODE_AUTO (oder etwas anderes) beginnen;
  2. ein Objekt in beliebiger Entfernung in den Fokus bringen;
  3. den aktuellen Fokus beheben;
  4. verschieben Sie die Kamera auf ein anderes Objekt in einer anderen Entfernung, die nicht fokussiert ist.

I versucht, verschiedene Lösungen, d.h .:

  • mCamera.cancelAutoFocus() im AutoFocusCallback die Einstellung des Fokus zu verhindern;
  • Setzen Sie eine FocusArea: new Camera.Area(new Rect(-50, -50, 50, 50), 1000), um den Fokus auf den aktuellen Bereich zu fixieren.

Ich bin auf API 20 und ich arbeite an einem Samsung Galaxy S5. Auf diesem Gerät sind die unterstützten Fokusmodi: - auto - unendlich - Makro - Dauer Video - Dauer Bild

Der Vorschlag, dass ich häufiger gefunden ist Android neu kompilieren ...

+0

Sie möchten tippen, um zu fokussieren? und können Sie einen Code der Surfaceview-Klasse veröffentlichen? – sandeepmaaram

+0

Hallo. Ich habe über der Vorschau eine Schaltfläche hinzugefügt, die im Idealfall vom Autofokusmodus in den Modus "Fixed Focus" und umgekehrt wechselt. Es gibt nichts Interessantes in meinem Code, einfach weiß ich nicht, wie es geht oder ob es überhaupt möglich ist. – Zeb

+3

Wie führst du den Fokus aus? Der "AUTO" -Modus bedeutet nicht, dass die Kamera kontinuierlich fokussiert - nur wenn Sie den Befehl autoFocus aufrufen, wird der Fokus automatisch eingestellt, ohne dass angezeigt wird, welches Ergebnis nicht wie "Makro" oder "Unendlich" erwartet wird. http://developer.android.com/reference/android/hardware/Camera.html#autoFocus(android.hardware.Camera.AutoFocusCallback) Also, wenn Sie keine Schleife haben, die den AutoFocus aufruft (wie viele Beispiele tun oder rufen Sie es erneut im Callback auf) Ihr Fokus sollte bleiben, nachdem er einmal ausgeführt wurde. – Raanan

Antwort

-1

Wenn ich verstehe, möchten Sie den Fokus des ersten Objekts konzentrieren. Haben Sie nach dem Fokussieren des ersten Objekts versucht, den Kameramodus auf FOCUS_MODE_FIXED zu ändern? wie folgt aus:

Camera.Parameters mParam = mCamera.getParameters(); 
mParam.setFocusMode(Camera.Parameters.FOCUS_MODE_FIXED); 
mCamera.setParameters(mParam); 
+0

Hallo Alonso, leider unterstützen die Zielgeräte für meine Anwendung (S4 und S5) nicht FOCUS_MODE_FIXED. In diesem Modus wird jedoch nicht der aktuelle Fokus, sondern eine hyperfokale Entfernung festgelegt. – Zeb

2

„AUTO“ -Modus nicht bedeutet, dass die Kamera fokussiert kontinuierlich - nur, dass, wenn Sie den Autofokus, den Fokus Befehl rufen automatisch ohne Angabe gemacht wird, was zur Folge haben Sie nicht „Macro erwarten mögen "oder" Unendlichkeit ".

http://developer.android.com/reference/android/hardware/Camera.html#autoFocus(android.hardware.Camera.AutoFocusCallback)

Also, wenn Sie nicht über eine Schleife haben, die die Autofokus-Anrufe (wie viele Beispiele tun oder es wieder in den Rückruf nennen) sollten Sie Ihren Fokus bleiben, nachdem es einmal ausgeführt wird.