تقليل وقت الاستجابة باستخدام ميزة "عدم تأخُّر الغالق"
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
اعتبارًا من الإصدار CameraX 1.2، يتوفّر وضع "عدم تأخُّر الغالق" كوضع لالتقاط الصور.
فعِّل ميزة "عدم تأخُّر الغالق" (Zero-Shutter Lag) لتقليل وقت الاستجابة بشكل كبير مقارنةً بوضع الالتقاط التلقائي، حتى لا تفوتك اللقطة.
تفعيل ميزة "عدم تأخُّر الغالق"
لتفعيل ميزة "عدم تأخُّر الغالق"، انتقِل من CAPTURE_MODE_ZERO_SHOT_LAG
إلى
ImageCapture.Builder.setCaptureMode()
. وفي حال عدم نجاح المحاولة، يتم الرجوع إلى CAPTURE_MODE_MINIMIZE_LATENCY
.setCaptureMode()
لمزيد من المعلومات حول أوضاع الالتقاط، يُرجى الاطّلاع على دليل التقاط الصور.
آلية العمل
تستخدم ميزة "عدم تأخُّر الغالق" مخزنًا دائريًا لتخزين آخر ثلاث لقطات. عندما يضغط المستخدم على زر الالتقاط، تستدعي CameraX takePicture()
، ويسترجع المخزن الدائري اللقطة التي تم التقاطها باستخدام الطابع الزمني الأقرب إلى وقت الضغط على الزر. بعد ذلك، تتم إعادة معالجة جلسة الالتقاط في CameraX لإنشاء صورة من هذا اللقطة، ويتم
حفظها على القرص بتنسيق JPEG.
المتطلّبات الأساسية
قبل تفعيل ميزة "عدم تأخُّر الغالق"، استخدِم isZslSupported()
لتحديد ما إذا كان
جهازك يستوفي المتطلبات التالية:
- يستهدف الإصدار 6.0 من نظام التشغيل Android والإصدارات الأحدث (المستوى 23 من واجهة برمجة التطبيقات والإصدارات الأحدث).
- تتيح إعادة معالجة
PRIVATE
.
بالنسبة إلى الأجهزة التي لا تستوفي الحد الأدنى من المتطلبات، تعود CameraX إلى استخدام
CAPTURE_MODE_MINIMIZE_LATENCY
.
لا تتوفّر ميزة "عدم تأخُّر الغالق" إلا في وضع التقاط الصور. لا يمكنك تفعيله
لتسجيل الفيديو أو باستخدام إضافات الكاميرا.
أخيرًا، بما أنّ استخدام الفلاش يؤدي إلى زيادة وقت الاستجابة، فإنّ ميزة "عدم تأخُّر الغالق"
لا تعمل عندما يكون الفلاش مفعَّلاً أو في الوضع "تلقائي". لمزيد من المعلومات عن ضبط
وضع الفلاش، يُرجى الاطّلاع على setFlashMode()
.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Reduce latency with Zero-Shutter Lag\n\n| **Note:** Zero-Shutter Lag is an experimental feature. To leave feedback on Zero-Shutter Lag, join the [Android CameraX Discussion Group](https://groups.google.com/a/android.com/g/camerax-developers).\n\nStarting in [CameraX 1.2](/jetpack/androidx/releases/camera), Zero-Shutter Lag is available as a capture mode.\nEnable Zero-Shutter Lag to significantly reduce latency compared to the\n[default capture mode](/reference/androidx/camera/core/ImageCapture#CAPTURE_MODE_MINIMIZE_LATENCY()), so you never miss the shot.\n\nEnable Zero-Shutter Lag\n-----------------------\n\nTo enable Zero-Shutter Lag, pass [`CAPTURE_MODE_ZERO_SHOT_LAG`](/reference/androidx/camera/core/ImageCapture#CAPTURE_MODE_ZERO_SHUTTER_LAG()) to\n[`ImageCapture.Builder.setCaptureMode()`](/reference/androidx/camera/core/ImageCapture.Builder#setCaptureMode(int)). If unsuccessful,\n`setCaptureMode()` falls back to `CAPTURE_MODE_MINIMIZE_LATENCY`.\n\nFor more on capture modes, see the [Image capture guide](/media/camera/camerax/take-photo#set-capture-mode).\n\nHow it works\n------------\n\nZero-Shutter Lag uses a ring buffer that stores the three most recent capture\nframes. When a user presses the capture button, CameraX invokes\n[`takePicture()`](/reference/android/hardware/Camera#takePicture(android.hardware.Camera.ShutterCallback,%20android.hardware.Camera.PictureCallback,%20android.hardware.Camera.PictureCallback,%20android.hardware.Camera.PictureCallback)), and the ring buffer retrieves the captured frame with the\ntimestamp that is closest to that of the button press. CameraX then\n[reprocesses](/reference/android/hardware/camera2/CameraDevice#reprocessing) the capture session to generate an image from that frame, which\nsaves to disk in JPEG format.\n\nPrerequisites\n-------------\n\nBefore you enable Zero-Shutter Lag, use [`isZslSupported()`](/reference/androidx/camera/core/CameraInfo#isZslSupported()) to determine if\nyour device meets the following requirements:\n\n- Targets Android 6.0+ (API level 23 and higher).\n- Supports [`PRIVATE` reprocessing](/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING).\n\nFor devices that don't meet the minimum requirements, CameraX falls back to\n`CAPTURE_MODE_MINIMIZE_LATENCY`.\n\nZero-Shutter Lag is only available for [Image capture](/training/camerax/take-photo). You cannot enable it\nfor [Video capture](/training/camerax/video-capture) or with [Camera extensions](/training/camera/camera-extensions).\n\nFinally, because using flash results in greater latency, Zero-Shutter Lag does\nnot work when flash is ON or in AUTO mode. For more information about setting\nthe flash mode, see [`setFlashMode()`](/media/camera/camerax/take-photo#set-flash-mode)."]]