Android setFocusArea und Autofokus
Ich habe gekämpft, mit dieser Funktion für ein paar Tage jetzt...
Scheint es,, die Kamera zu ignorieren(?) Schwerpunkt Bereiche, die ich definiert habe. Hier ist Schnipsel des Codes:
Fokussierung:
protected void focusOnTouch(MotionEvent event) {
if (camera != null) {
Rect rect = calculateFocusArea(event.getX(), event.getY());
Parameters parameters = camera.getParameters();
parameters.setFocusMode(Parameters.FOCUS_MODE_AUTO);
parameters.setFocusAreas(Lists.newArrayList(new Camera.Area(rect, 500)));
camera.setParameters(parameters);
camera.autoFocus(this);
}
}
Schwerpunkt Berechnung:
private Rect calculateFocusArea(float x, float y) {
int left = clamp(Float.valueOf((x / getSurfaceView().getWidth()) * 2000 - 1000).intValue(), focusAreaSize);
int top = clamp(Float.valueOf((y / getSurfaceView().getHeight()) * 2000 - 1000).intValue(), focusAreaSize);
return new Rect(left, top, left + focusAreaSize, top + focusAreaSize);
}
Paar von log-Ereignissen aus Camera.AutoFocusCallback#onAutoFocus
Log.d(TAG, String.format("Auto focus success=%s. Focus mode: '%s'. Focused on: %s",
focused,
camera.getParameters().getFocusMode(),
camera.getParameters().getFocusAreas().get(0).rect.toString()));
08-27 11:19:42.240: DEBUG/MyCameraActivity(26268): Auto focus success=true. Focus mode: 'auto'. Focused on: Rect(-109, 643 - -13, 739)
08-27 11:19:55.514: DEBUG/MyCameraActivity(26268): Auto focus success=true. Focus mode: 'auto'. Focused on: Rect(20, 457 - 116, 553)
08-27 11:19:58.037: DEBUG/MyCameraActivity(26268): Auto focus success=true. Focus mode: 'auto'. Focused on: Rect(-159, 536 - -63, 632)
08-27 11:20:00.129: DEBUG/MyCameraActivity(26268): Auto focus success=true. Focus mode: 'auto'. Focused on: Rect(-28, 577 - 68, 673)
Visuell sieht es wie Fokus erfolgreich auf Bereich angemeldet, aber plötzlich verliert er den Fokus und konzentrieren sich auf die Mitte (0, 0)
oder was größeres Teil SurfaceView
erhalten.
focusAreaSize
Berechnung ist über 210px (96dp).
Tests auf dem HTC One, wo Camera.getParameters().getMaxNumFocusAreas()
ist 1
.
Anfänglichen Fokus-Modus (vor dem ersten tap) eingestellt ist FOCUS_MODE_CONTINUOUS_PICTURE
.
Mache ich etwas falsch hier?
Basteln mit Camera.Area
Rechteck Größe oder Gewicht zeigt keinen nennenswerten Effekt.
InformationsquelleAutor der Frage Martynas Jurkus | 2013-08-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mein problem war viel einfacher 🙂
Musste ich nur noch Abbrechen, die zuvor genannt Autofokus. Grundsätzlich ist die richtige Reihenfolge der Handlungen ist diese:
Update
InformationsquelleAutor der Antwort Martynas Jurkus
Neben der Einstellung:
müssen Sie:
wenn du willst echte "live" - auto-Fokus. Auch wird es gut sein, prüfen des verfügbaren Schwerpunkte:
Auf dem Samsung S6 müssen Sie diese mit etwas Verzögerung (~ 500 ms), nachdem der Kamera-Vorschau.
InformationsquelleAutor der Antwort ivan.panasiuk
Ich hatte dieses problem heute :/
Und nach Stunden des Kampfes, habe ich die Lösung gefunden!
Es ist seltsam, aber es scheint, dass die Einstellung von Fokus-Modus auf "makro" rechts-vor-Einstellung Fokus-Bereichen das problem gelöst 😉
Ich habe Galaxy S3 mit Android 4.1.2
Ich hoffe, dass diese Arbeit für dich 🙂
InformationsquelleAutor der Antwort Grzegorz D.
verwenden FOCUS_MODE_FIXED
InformationsquelleAutor der Antwort zohre