2016-07-21 23 views
18

API mới, có lẽ chỉ trên LG G3, dường như đã có thay đổi.Ứng dụng Camera2basic, có chế độ xem trước rất tối trong Android 6.0 LGG3

Tôi đang sử dụng the sample code.

Trên nexus 4 của tôi, mã chạy hoàn hảo, nhưng trên LGG3 được cập nhật lên Android 6.0 thì không. Bất kỳ ý tưởng?

tôi đã chơi với các thiết lập, nhưng không có may mắn, điều này vẫn hoạt động tốt trên 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

Nó sẽ là tốt hơn để hỏi câu hỏi này ở đây: http://android.stackexchange.com/ – kaartic

+0

Họ đã đánh dấu nó là ngoại tuyến. :) http://android.stackexchange.com/questions/151735/android-camera2basic-app-has-very-dark-preview-in-android-6-0-lgg3 –

+0

Hãy thử câu hỏi và giải pháp sau: http: // stackoverflow.com/questions/26967490/android-camera-preview-is-dark – Jehy

Trả lời

4

FPS phạm vi cho Camera2 API dường như sử dụng quy mô khác hơn một API máy ảnh cũ. Vì vậy, nếu bạn đang nhận được hỗ trợ xem trước loạt fps (0, 30000), bạn nên thiết lập các giá trị chia cho 1000:

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

Hãy thử nếu điều này giúp, vì nó giúp với API máy ảnh cũ.

+0

Thật không may là nó không hoạt động. –

+0

@SmithThreeDee - bạn có may mắn với điều này không ?? – Fattie

+0

Tôi ngừng hoạt động ngay bây giờ, tôi đang làm việc với thuật toán SLAM cốt lõi của mình ngay bây giờ. –

1

Tôi đã tìm thấy giải pháp phù hợp với mình. Giải pháp là thiết lập phạm vi FPS được hỗ trợ bởi thiết bị.

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

Chức năng để có được khoảng:

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

Cập nhật: thiết lập khác (nếu có ai quan tâm)

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); 
Các vấn đề liên quan