2016-07-21 23 views
18

Nowe API, być może tylko na LG G3, wydaje się, że coś się zmieniło.Aplikacja Camera2basic, ma bardzo ciemny podgląd w systemie Android 6.0 LGG3

Używam the sample code.

Na moim nexusie 4 kod działa idealnie, ale na LGG3 zaktualizowanym do Androida 6.0 nie działa. Jakieś pomysły?

grałem z ustawieniami, ale bez powodzenia, to nadal działa dobrze na Nexusa 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

Byłoby lepiej, aby zadać to pytanie tutaj: http://android.stackexchange.com/ – kaartic

+0

Oznaczono to jako offtopic. :) http://android.stackexchange.com/questions/151735/android-camera2basic-app-has-very-dark-preview-in-android-6-0-lgg3 –

+0

Wypróbuj to pytanie i rozwiązania: http: // stackoverflow.com/questions/26967490/android-camera-preview-is-dark – Jehy

Odpowiedz

4

zakres FPS dla Camera2 API wydaje się użyć innej skali niż jeden dla starszych API aparatu. Tak więc, jeśli pacjent obsługiwany zakres podglądu fps (0, 30000), należy ustawić wartości podzielona przez 1000:

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

Spróbuj jeśli to pomaga, ponieważ pomógł starszej API aparatu.

+0

Niestety to nie zadziałało. –

+0

@SmithThreeDee - czy miałeś szczęście? – Fattie

+0

Na tym skończyłem pracę, teraz pracuję nad moim głównym algorytmem SLAM. –

1

Znalazłem rozwiązanie, które działa dla mnie. Rozwiązaniem jest ustawienie zakresu FPS obsługiwanego przez urządzenie.

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

Funkcja dostać gama:

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: Inne ustawienia (jeśli ktoś zainteresowany)

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);