2014-05-08 5 views
11

Ich habe eine Kamera in der App und ich möchte es Autofokus kontinuierlich in der gleichen Weise, dass die Kamera des Telefons macht es tun. Ich habe die Modi FOCUS_MODE_CONTINUOUS_VIDEO und gefunden, aber sie werden nicht von einigen der HTC Gingerbread-Telefone unterstützt, auf denen ich teste.Android Autofokus, wenn kontinuierliche Autofokus-Modi nicht unterstützt werden

Das ist, was ich tue, um zu bestimmen, ob ich diese Modi verwenden können: die kontinuierlichen Modus zurück

 Camera.Parameters parameters = mCamera.getParameters(); 
     List<String> supportedFocusModes = parameters.getSupportedFocusModes(); 

     if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH && 
      supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) { 
      parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); 
     } 
     else if (supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) { 
      parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO); 
     } 
     else if (supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) { 
      // auto focus on request only 
      parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); 
     } 

Laufen auf mehreren verschiedenen Lebkuchen HTC-Telefone, ich weiß nicht, aber ich bekommen „auto ". Was lässt mich Autofokus-on-Demand (wenn ich rufe mCamera.autoFocus(null), aber die Kamera wird nicht neu auszurichten, wenn der Benutzer die Kamera bewegt.

ich nicht den Fokusmodus auf etwas einstellen kann die Kamera nicht unterstützt, wenn ich es tun auftaucht leer.

eine Lösung, die ich versuchte, ist mCamera.autoFocus(null) auf einem Timer zu rufen. Aber dies bewirkt, dass die Kamera kontinuierlich neu auszurichten, auch wenn es bereits im Fokus ist.

gibt es eine Möglichkeit, einen kontinuierlichen Autofokus zu implementieren Erfahrung auf diesen Telefonen? Wenn ich HTCS-Kamera-App auf diesen Telefonen betrachte, hat es kontinuierlichen Autofokus - wenn Sie sich um die Kamera bewegen, refokussiert und nicht immer wieder fokussieren Das Bild ist im Fokus.

+0

Nach viel mehr Stunden hier untersucht ich die Lösung [hier] (http://stackoverflow.com/a/10555471/1481500) – kos

Antwort

3

Wir hatten eine Anforderung, eine sehr breite Palette von Telefonen zu unterstützen. Meine Lösung bestand letztendlich darin, jeden Fall anders zu behandeln.

Für das Szenario von Telefonen ohne kontinuierliche Autofokus-Unterstützung habe ich ein Dienstprogramm implementiert, um den Beschleunigungsmesser mit SensorManager zu hören und mCamera.autoFocus (...) auszulösen, wenn der Benutzer die Kamera bewegt.

Es gab auch einige ältere Tablets, die nur Fixed Focus unterstützten (wer würde so etwas benutzen!), In diesem Fall musste das Bild sofort aufgenommen werden - nicht auf den Fokus Callback.

Und für die meisten modernen Telefone war das obige Code-Snippet in Ordnung, FOCUS_MODE_CONTINUOUS_PICTURE zu verwenden.

+0

Hallo [kos] (http://stackoverflow.com/ Benutzer/1481500/kos), habe ich einen ähnlichen Anwendungsfall zu erreichen. Können Sie bitte mehr Details über dieses Dienstprogramm von Ihnen geben? –

+0

@kos, könnten Sie bitte erläutern, wie Sie festlegen, ob ein Gerät die kontinuierliche Autofokus-Funktion unterstützt? –

0

bekam ich ein ähnliches pb auf meinem Samsung S4 und ich löste es mit:

camera.setParameters(parameters); 
    camera.autoFocus(null); 

Dies ist im doc here Google vorschlagen.

Damit die Kameraparameter wirksam werden, muss Ihre Anwendung setParameters(Camera.Parameters) aufrufen.