2014-04-29 14 views
6

Tôi có ứng dụng máy ảnh cho phép người dùng chụp ảnh. Trên màn hình chính của tôi, tôi có một máy ảnh được hiển thị trên SurfaceView. Khi người dùng chụp ảnh, tôi gọi camera.autoFocus và trên cuộc gọi lại AutoFocusCallback, tôi gọi camera.takePicture. Sau đó, tôi lưu ảnh và chuyển đến một hoạt động khác để xem trước ảnh. Tôi gọi camera.stopPreview() khi rời khỏi trang camera (onPause) và camera.startPreview() khi quay lại (onResume).Máy ảnh Android.autoFocus và FOCUS_MODE_CONTINUOUS_PICTURE

Máy ảnh được khởi tạo bằng FOCUS_MODE_CONTINUOUS_PICTURE. Tôi không tái chế máy ảnh khi quay lại trang máy ảnh (vì nó hoạt động chậm mất ~ 2 giây), nhưng chỉ cần gọi startPreview nếu máy ảnh đã được khởi tạo trước đó.

Đây là vấn đề của tôi. Trước khi chụp ảnh đầu tiên, tính năng lấy nét tự động liên tục hoạt động tốt vì FOCUS_MODE_CONTINUOUS_PICTURE được thiết lập ban đầu trên máy ảnh. Tuy nhiên sau khi gọi camera.autoFocus, FOCUS_MODE_CONTINUOUS_PICTURE ngừng hoạt động. Sau đó khi tôi quay trở lại cùng một màn hình và gọi startPreview, tiêu điểm tự động liên tục không hoạt động được nữa.

Có cách nào để khởi động lại tự động lấy nét liên tục mà không phải khởi động lại máy ảnh không? Tôi muốn tránh khởi động lại máy ảnh vì điều này gây ra vài giây trì hoãn cho người dùng.

Trả lời

17

Tôi đã khắc phục sự cố bằng cách gọi camera.cancelAutoFocus(). Điều này gây ra tự động lấy nét liên tục để khởi động lại.

+2

Nếu ứng dụng muốn tiếp tục tiêu điểm liên tục, hãy hủy bỏAutoFocus. Việc khởi động lại bản xem trước sẽ không tiếp tục lấy nét tự động liên tục. http://developer.android.com/reference/android/hardware/Camera.Parameters.html#FOCUS_MODE_CONTINUOUS_PICTURE –

Các vấn đề liên quan