کاهش تأخیر با «تأخیر شاتر صفر»

از CameraX 1.2، «تأخیر شاتر صفر» به‌عنوان حالت ضبط دردسترس است. «تأخیر صفر شاتر» را فعال کنید تا تأخیر را درمقایسه با حالت ضبط پیش‌فرض به‌طور قابل‌توجهی کاهش دهید و هرگز عکسی را ازدست ندهید.

فعال کردن «تأخیر شاتر صفر»

برای فعال کردن «تأخیر شاتر صفر»، CAPTURE_MODE_ZERO_SHOT_LAG را به ImageCapture.Builder.setCaptureMode() ارسال کنید. اگر ناموفق بود، setCaptureMode() به CAPTURE_MODE_MINIMIZE_LATENCY برمی‌گردد.

برای اطلاعات بیشتر درباره حالت‌های ضبط، راهنمای ضبط تصویر را ببینید.

روش کار

«تأخیر شاتر صفر» از میان‌گیر حلقه‌ای استفاده می‌کند که سه قاب ضبط‌شده اخیر را ذخیره می‌کند. وقتی کاربر دکمه ضبط را فشار می‌دهد، CameraX takePicture() را فراخوانی می‌کند و میان‌گیر حلقه‌ای قاب ضبط‌شده را با مُهر زمانی که نزدیک‌ترین به زمان فشار دادن دکمه است بازیابی می‌کند. سپس CameraX جلسه ضبط را دوباره پردازش می‌کند تا تصویری از آن فریم تولید کند و آن را در قالب JPEG در دیسک ذخیره می‌کند.

پیش‌نیازها

قبل‌از فعال کردن «تأخیر صفر شاتر»، از isZslSupported() استفاده کنید تا مشخص شود دستگاهتان شرایط زیر را دارد یا نه:

  • Android نسخه ۶.۰ و بالاتر (سطح میانای برنامه‌سازی کاربردی ۲۳ و بالاتر) را هدف‌یابی می‌کند.
  • از پردازش مجدد PRIVATE پشتیبانی می‌کند.

برای دستگاه‌هایی که حداقل شرایط لازم را ندارند، CameraX به CAPTURE_MODE_MINIMIZE_LATENCY برمی‌گردد.

«تأخیر شاتر صفر» فقط برای ضبط تصویر دردسترس است. نمی‌توانید آن را برای ضبط ویدیو یا با افزونه‌های دوربین فعال کنید.

درنهایت، چون استفاده از فلاش منجر به تأخیر بیشتر می‌شود، «تأخیر شاتر صفر» هنگامی که فلاش روشن یا در حالت خودکار است کار نمی‌کند. برای اطلاعات بیشتر درباره تنظیم حالت فلاش، به setFlashMode() مراجعه کنید.