2016-07-21 15 views
18

Die neue API, vielleicht nur auf LG G3, scheint etwas geändert haben.Camera2basic App, hat sehr dunkle Vorschau in Android 6.0 LGG3

Ich verwende the sample code.

Auf meinem Nexus 4 läuft der Code einwandfrei, aber auf LGG3 aktualisiert auf Android 6.0 tut es nicht. Irgendwelche Ideen?

ich mit den Einstellungen gespielt, aber kein Glück, das funktioniert immer noch gut auf dem Nexus 4:

mPreviewRequestBuilder.set(CaptureRequest.BLACK_LEVEL_LOCK, false); 


mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AWB_LOCK, false); 
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_AUTO); 


mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_LOCK, false); 

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON); 
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_ANTIBANDING_MODE, CaptureRequest.CONTROL_AE_ANTIBANDING_MODE_AUTO); 
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, 0); 
//mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, Range.create(1000,1000)); 
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, 0); 


mPreviewRequestBuilder.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO); 
mPreviewRequestBuilder.set(CaptureRequest.COLOR_CORRECTION_MODE, CaptureRequest.CONTROL_MODE_AUTO); 


mPreviewRequestBuilder.set(CaptureRequest.CONTROL_CAPTURE_INTENT, 
     CaptureRequest.CONTROL_CAPTURE_INTENT_PREVIEW); 

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, 
     CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE); 
+0

Es würde diese Frage besser sein, hier zu fragen: http://android.stackexchange.com/ – kaartic

+0

Sie markierten es als Offtopic. :) http://android.stackexchange.com/questions/151735/android-camera2basic-app-has-very-dark-preview-in-android-6-0-lgg3 –

+0

Versuchen Sie diese Frage und Lösungen: http: // stackoverflow.com/questions/26967490/android-camera-preview-is-dark – Jehy

Antwort

4

FPS Bereich für Camera2 API einen anderen Maßstab als eine für ältere Kamera-API zu verwenden scheint. Also, wenn Sie unterstützt Vorschau fps Bereich erhalten (0, 30000), sollten Sie die Werte von 1000 geteilt:

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, Range.create(0, 30)); 

Versuchen Sie, ob das hilft, wie es bei älteren Kamera-API unterstützt.

+0

Leider hat es nicht funktioniert. –

+0

@SmithThreeDee - hatten Sie etwas Glück dabei? – Fattie

+0

Ich habe für den Moment aufgehört, daran zu arbeiten, ich arbeite gerade an meinem Kern-SLAM-Algorithmus. –

1

Ich habe die Lösung gefunden, die für mich funktioniert. Die Lösung besteht darin, den FPS-Bereich einzurichten, der vom Gerät unterstützt wird.

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, getRange()); 

Funktionsumfang zu erhalten:

private Range<Integer> getRange() { 
    CameraCharacteristics chars = mCameraManager.getCameraCharacteristics(mCameraId); 
    Range<Integer>[] ranges = chars.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES); 

    Range<Integer> result = null; 

    for (Range<Integer> range : ranges) { 
     int upper = range.getUpper(); 

     // 10 - min range upper for my needs 
     if (upper >= 10) { 
      if (result == null || upper < result.getUpper().intValue()) { 
       result = range; 
      } 
     } 
    } 

    if (result == null) { 
     result = ranges[0]; 
    } 

    return result; 
} 

Update: andere Einstellungen (falls jemand Interesse an)

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_LOCK, false); 
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON); 
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CameraMetadata.CONTROL_AWB_MODE_AUTO); 
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE); 
mPreviewRequestBuilder.set(CaptureRequest.STATISTICS_FACE_DETECT_MODE, CameraMetadata.STATISTICS_FACE_DETECT_MODE_SIMPLE);