Kể từ CameraX 1.2, Zero-Shutter Lag (Giảm độ trễ màn trập) có được cung cấp dưới dạng một chế độ chụp. Bật tính năng Zero-Shutter Lag (Giảm độ trễ màn trập) để giảm đáng kể độ trễ so với chế độ chụp mặc định, nhờ đó bạn không bao giờ bỏ lỡ khoảnh khắc chụp.
Bật Zero-Shutter Lag
Để bật tính năng Zero-Shutter Lag (Giảm độ trễ màn trập), hãy chuyển CAPTURE_MODE_ZERO_SHOT_LAG
vào ImageCapture.Builder.setCaptureMode()
. Nếu không thành công, setCaptureMode()
sẽ quay lại CAPTURE_MODE_MINIMIZE_LATENCY
.
Để biết thêm về các chế độ chụp, hãy xem Hướng dẫn chụp ảnh.
Cách hoạt động
Zero-Shutter Lag (Giảm độ trễ màn trập) sử dụng bộ đệm vòng lưu trữ 3 khung hình chụp gần đây nhất. Khi người dùng nhấn nút chụp, CameraX sẽ gọi takePicture()
và bộ đệm vòng sẽ truy xuất khung hình đã chụp với dấu thời gian gần nhất với dấu thời gian khi nhấn nút. Sau đó, CameraX xử lý lại phiên chụp để tạo hình ảnh từ khung đó, hình ảnh này được lưu vào ổ đĩa ở định dạng JPEG.
Điều kiện tiên quyết
Trước khi bật tính năng Zero-Shutter Lag (Giảm độ trễ màn trập), hãy sử dụng isZslSupported()
để xác định xem thiết bị của bạn có đáp ứng các yêu cầu sau không:
- Nhắm mục tiêu Android 6.0 trở lên (API cấp 23 trở lên).
- Hỗ trợ xử lý lại
PRIVATE
.
Đối với các thiết bị không đáp ứng yêu cầu tối thiểu, CameraX sẽ quay lại CAPTURE_MODE_MINIMIZE_LATENCY
.
Zero-Shutter Lag (Giảm độ trễ màn trập) chỉ dùng được cho tính năng Chụp ảnh. Bạn không thể bật tính năng này cho tính năng Quay video hoặc với Tiện ích máy ảnh.
Cuối cùng, vì việc sử dụng đèn flash dẫn đến độ trễ lớn hơn, nên tính năng Zero-Shutter Lag (Giảm độ trễ màn trập) không hoạt động khi đèn flash đang BẬT hoặc ở chế độ TỰ ĐỘNG. Để biết thêm thông tin về cách đặt chế độ đèn flash, hãy xem setFlashMode()
.