2013-02-20 30 views
5

Tôi đang gặp sự cố với khóa phơi sáng trong lớp Android Camera.Parameters. Tôi có thể khóa phơi sáng trước khi chụp ảnh, nhưng khi gọi số camera.takePicture(shutterCallback, rawCallback, jpegCallback), phơi sáng bắt đầu tự động điều chỉnh lại.AutoExposureLock đặt lại sau khi gọi takePicture()

Ngoài ra, getAutoExposureLock() vẫn trả về true mặc dù hình ảnh xem trước và hình ảnh đã lưu cuối cùng hiển thị điều chỉnh độ phơi sáng.

Tài liệu Android nói khóa phơi sáng sẽ không được thay đổi bằng cách chụp ảnh: http://developer.android.com/reference/android/hardware/Camera.Parameters.html#setAutoExposureLock(boolean)

tôi đang thiếu gì?

+0

này đang xảy ra trên các thiết bị Samsung –

+0

Thấy giống nhau trên Nexus 5 và Google Glass. – baske

+0

Vấn đề tương tự trên Nexus 6 và Samsung Galaxy S3.Cho đến nay đã không tìm thấy bất kỳ workaround. Xin vui lòng chia sẻ nếu bạn tìm thấy bất kỳ. Cảm ơn – PerracoLabs

Trả lời

0

Tôi có cùng một vấn đề. Đó là vì camera.takePicture(shutterCallback, rawCallback, jpegCallback) dừng bản xem trước; bạn phải gọi camera.startPreview(); để tiếp tục xem trước.

0

Tôi đã tự mình vượt qua vấn đề này, tôi giả định lỗi API của nó vì nó hoạt động giống với tôi đối với bạn. Trừ khi bạn đã quản lý để sửa chữa nó trong khi chờ đợi? Cho tôi biết!

2

tôi quản lý để khóa bù phơi sáng trên Galaxy S4 của tôi

Camera.Parameters parameters = mCamera.getParameters(); 
parameters.setAutoExposureLock(true); 
mCamera.setParameters(parameters); 
mCamera.startPreview(); 

Sau đó, trong mỗi takePicture callback tôi về cơ bản thiết lập lại các khóa true

Camera.Parameters parameters = mCamera.getParameters(); 
parameters.setAutoExposureLock(true); 
mCamera.setParameters(parameters); 

này quản lý để làm một cái gì đó . Tất cả các hình ảnh được chụp gần như bằng nhau sáng. Thay đổi exposureCompensation không có hiệu lực, nhưng khi thay đổi ISO, thời gian phơi sáng được điều chỉnh tự động.

Tôi sẽ tìm hiểu thêm về điều này và cập nhật bài đăng này cho phù hợp.

+0

mCamera.setParameters (tham số) đã làm các trick cho tôi cảm ơn! – dangalg

0

Đặt lại khóa thành true trong takePicture gọi lại không hoạt động tốt trên Samsung Galaxy Note 3. Điều này làm cho tình hình tốt hơn một chút, nhưng vẫn tạo ra hình ảnh với độ sáng khá khác nhau. Exif bên trong những jepgs xác nhận rằng exposure time thay đổi từ 1/120 giây đến 1/400 giây.

Tôi cũng nhận thấy rằng một số jpeg có tương tự exposure time (1/120 giây) nhưng khác nhau brightness giá trị được lưu trong exif. Vì vậy, tôi đoán rằng bộ xử lý hình ảnh là bộ ngắt trò chơi.

Tôi đã bỏ tất cả thông số máy ảnh qua native_getParameters, tìm thấy thông số chỉnh sửa hình ảnh và đặt tất cả thành 5. Các thông số đó là:

set("min-brightness", 5); 
set("max-brightness", 5); 

set("contrast", 5); 
set("min-contrast", 5); 
set("max-contrast", 5); 

set("max-saturation", 5); 
set("min-saturation", 5); 
set("saturation", 5); 

Sản lượng hiện tại tốt hơn nhiều. Hình ảnh gần như bằng nhau sáng. Tất cả 500 hình ảnh thử nghiệm có exposure time = 1/120 ± 1 (hiếm khi 1/125) và brightness = 5 ± 0,1.

+0

Làm thế nào bạn xác định được giá trị tham số phải là 5? – Airman00

0

Tôi gặp sự cố tương tự trên S3. Tôi đã kết thúc việc đưa những dòng vào đầu gọi lại:

public void onPictureTaken(byte[] data, Camera camera) { 
    //Relock the camera for S3 device 
    camera.startPreview(); 
    UnLockCamera(camera); 
    LockCamera(camera); 
    // your code 

Với hai chức năng dưới đây

public void LockCamera(Camera camera){ 
    //stop auto white balance and auto exposure lock 
    Camera.Parameters params = camera.getParameters(); 
    if (params.isAutoExposureLockSupported()) { 
     params.setAutoExposureLock (true); 
    } 
    if (params.isAutoWhiteBalanceLockSupported()) { 
     params.setAutoWhiteBalanceLock(true); 
    } 
    camera.setParameters(params); 
} 
public void UnLockCamera(Camera camera){ 
    //stop auto white balance and auto exposure lock 
    Camera.Parameters params = camera.getParameters(); 
    if (params.isAutoExposureLockSupported()) { 
     params.setAutoExposureLock (false); 
    } 
    if (params.isAutoWhiteBalanceLockSupported()) { 
     params.setAutoWhiteBalanceLock(false); 
    } 
    camera.setParameters(params); 
} 
Các vấn đề liên quan