با شروع در CameraX 1.2 ، Zero-Shutter Lag به عنوان حالت تصویربرداری در دسترس است. Zero-Shutter Lag را فعال کنید تا تأخیر را به میزان قابل توجهی در مقایسه با حالت عکسبرداری پیش فرض کاهش دهید، بنابراین هرگز عکس را از دست ندهید.
Zero-Shutter Lag را فعال کنید
برای فعال کردن Zero-Shutter Lag، CAPTURE_MODE_ZERO_SHOT_LAG
به ImageCapture.Builder.setCaptureMode()
منتقل کنید. در صورت عدم موفقیت، setCaptureMode()
به CAPTURE_MODE_MINIMIZE_LATENCY
برمی گردد.
برای اطلاعات بیشتر در مورد حالتهای عکسبرداری، راهنمای ضبط تصویر را ببینید.
چگونه کار می کند
Zero-Shutter Lag از بافر حلقه ای استفاده می کند که سه فریم جدیدترین عکس را ذخیره می کند. هنگامی که کاربر دکمه ضبط را فشار میدهد، CameraX takePicture()
فراخوانی میکند و بافر حلقه فریم گرفته شده را با مهر زمانی که نزدیکترین زمان به فشار دکمه است بازیابی میکند. سپس CameraX جلسه عکسبرداری را مجدداً پردازش می کند تا تصویری از آن فریم تولید کند که با فرمت JPEG در دیسک ذخیره می شود.
پیش نیازها
قبل از اینکه Zero-Shutter Lag را فعال کنید، از isZslSupported()
استفاده کنید تا مشخص کنید آیا دستگاه شما شرایط زیر را دارد یا خیر:
- Android 6.0+ (سطح API 23 و بالاتر) را هدف قرار می دهد.
- از پردازش مجدد
PRIVATE
پشتیبانی می کند.
برای دستگاههایی که حداقل شرایط لازم را ندارند، CameraX به CAPTURE_MODE_MINIMIZE_LATENCY
برمیگردد.
تاخیر صفر شاتر فقط برای ضبط تصویر در دسترس است. نمی توانید آن را برای فیلم برداری یا با پسوندهای دوربین فعال کنید.
در نهایت، از آنجایی که استفاده از فلاش باعث تاخیر بیشتر می شود، زمانی که فلاش روشن یا در حالت خودکار است، تاخیر صفر شاتر کار نمی کند. برای اطلاعات بیشتر در مورد تنظیم حالت فلاش، به setFlashMode()
مراجعه کنید.