ลดเวลาในการตอบสนองด้วย Zero-Shutter Lag

ตั้งแต่ CameraX 1.2 เป็นต้นไป โหมดจับภาพแบบไม่มีเวลาหน่วงของชัตเตอร์จะพร้อมใช้งาน เปิดใช้การลดเวลาในการตอบสนองของชัตเตอร์เป็น 0 เพื่อลดเวลาในการตอบสนองได้อย่างมากเมื่อเทียบกับโหมดการจับภาพเริ่มต้น คุณจึงไม่ต้องพลาดช็อตเด็ด

เปิดใช้การเลื่อนชัตเตอร์แบบไม่มีเวลาหน่วง

หากต้องการเปิดใช้การเลื่อนชัตเตอร์แบบไม่มีเวลาหน่วง ให้ส่ง CAPTURE_MODE_ZERO_SHOT_LAG ไปยัง ImageCapture.Builder.setCaptureMode() หากไม่สำเร็จ setCaptureMode() จะกลับไปเป็น CAPTURE_MODE_MINIMIZE_LATENCY

ดูข้อมูลเพิ่มเติมเกี่ยวกับโหมดการจับภาพได้ที่คู่มือการจับภาพ

วิธีการทำงาน

การลดเวลาในการตอบสนองของชัตเตอร์เป็น 0 ใช้บัฟเฟอร์แบบวงแหวนที่จัดเก็บเฟรมที่จับภาพล่าสุด 3 เฟรม เมื่อผู้ใช้กดปุ่มจับภาพ CameraX จะเรียกใช้ takePicture() และบัฟเฟอร์แบบวงแหวนจะดึงข้อมูลเฟรมที่จับภาพไว้พร้อมการประทับเวลาที่ใกล้เคียงที่สุดกับการกดปุ่ม จากนั้น CameraX จะประมวลผลซ้ำเซสชันการจับภาพเพื่อสร้างรูปภาพจากเฟรมนั้น ซึ่งจะบันทึกลงในดิสก์ในรูปแบบ JPEG

สิ่งที่ต้องมีก่อน

ก่อนเปิดใช้การเลื่อนชัตเตอร์แบบไม่มีเวลาหน่วง ให้ใช้ isZslSupported() เพื่อดูว่าอุปกรณ์มีคุณสมบัติตรงตามข้อกำหนดต่อไปนี้หรือไม่

สำหรับอุปกรณ์ที่ไม่เป็นไปตามข้อกำหนดขั้นต่ำ CameraX จะเปลี่ยนไปใช้ CAPTURE_MODE_MINIMIZE_LATENCY

การลดเวลาในการตอบสนองของชัตเตอร์จะใช้ได้กับการจับภาพเท่านั้น คุณจะเปิดใช้ฟีเจอร์นี้สำหรับการจับภาพวิดีโอหรือส่วนขยายกล้องไม่ได้

สุดท้าย เนื่องจากการใช้แฟลชจะทำให้เกิดเวลาในการตอบสนองที่นานขึ้น ฟีเจอร์การลดเวลาในการตอบสนองของชัตเตอร์เป็น 0 จึงจะไม่ทำงานเมื่อแฟลชเปิดอยู่หรืออยู่ในโหมดอัตโนมัติ ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าโหมดแฟลชได้ที่ setFlashMode()