CameraX 1.2 से, शटर लैग न होने की सुविधा, कैप्चर मोड के तौर पर उपलब्ध है. डिफ़ॉल्ट कैप्चर मोड की तुलना में, शटर लगने में लगने वाले समय को काफ़ी कम करने के लिए, शटर लगने में लगने वाले समय को कम करने की सुविधा चालू करें. इससे, आपको कोई भी शॉट नहीं छूटेगा.
शटर लैग की सुविधा चालू करना
शटर लैग को शून्य पर सेट करने के लिए, CAPTURE_MODE_ZERO_SHOT_LAG
को ImageCapture.Builder.setCaptureMode()
पर पास करें. अगर ऐसा नहीं होता है, तो setCaptureMode()
फिर से CAPTURE_MODE_MINIMIZE_LATENCY
हो जाता है.
कैप्चर मोड के बारे में ज़्यादा जानने के लिए, इमेज कैप्चर करने की गाइड देखें.
यह कैसे काम करता है
शटर लैग की सुविधा, रिंग बफ़र का इस्तेमाल करती है. इसमें, कैप्चर किए गए सबसे हाल के तीन फ़्रेम सेव होते हैं. जब कोई उपयोगकर्ता कैप्चर बटन दबाता है, तो CameraX takePicture()
को शुरू करता है. इसके बाद, रिंग बफ़र उस फ़्रेम को टाइमस्टैंप के साथ वापस लाता है जो बटन दबाने के सबसे करीब है. इसके बाद, CameraX उस फ़्रेम से इमेज जनरेट करने के लिए, कैप्चर सेशन को फिर से प्रोसेस करता है. यह इमेज, डिस्क पर JPEG फ़ॉर्मैट में सेव होती है.
ज़रूरी शर्तें
शटर लेग की सुविधा चालू करने से पहले, isZslSupported()
का इस्तेमाल करके यह पता लगाएं कि आपका डिवाइस इन ज़रूरी शर्तों को पूरा करता है या नहीं:
- Android 6.0+ (एपीआई लेवल 23 और उसके बाद के वर्शन) को टारगेट करता हो.
PRIVATE
को फिर से प्रोसेस करने की सुविधा उपलब्ध है.
जिन डिवाइसों में ज़रूरी शर्तें पूरी नहीं होतीं उनके लिए, CameraX, CAPTURE_MODE_MINIMIZE_LATENCY
पर स्विच हो जाता है.
शटर लैग की सुविधा सिर्फ़ इमेज कैप्चर के लिए उपलब्ध है. इसे वीडियो कैप्चर या कैमरा एक्सटेंशन के लिए चालू नहीं किया जा सकता.
आखिर में, फ़्लैश का इस्तेमाल करने पर, शटर खुलने में ज़्यादा समय लगता है. इसलिए, फ़्लैश चालू होने या ऑटो मोड में होने पर, शून्य शटर लैग की सुविधा काम नहीं करती. फ़्लैश मोड सेट करने के बारे में ज़्यादा जानने के लिए, setFlashMode()
देखें.