Android 6 और उसके बाद के वर्शन में रनटाइम की अनुमतियों की मदद से, उपयोगकर्ता यह कंट्रोल कर सकते हैं कि डिवाइस के माइक्रोफ़ोन से ऑडियो या डिवाइस के कैमरे से वीडियो कब रिकॉर्ड किया जाए. कोई ऐप्लिकेशन रिकॉर्डिंग करने से पहले, उपयोगकर्ता को सिस्टम से दिखने वाले डायलॉग बॉक्स में जाकर, उसे अनुमति देनी होगी या अस्वीकार करनी होगी.
Android 12 में, जब कोई ऐप्लिकेशन कैमरे और माइक्रोफ़ोन की ऐप्लिकेशन-ऑपरेशन अनुमतियों के ज़रिए, निजी डेटा सोर्स का इस्तेमाल करता है, तो उपयोगकर्ताओं को इंडिकेटर दिखाकर साफ़ तौर पर जानकारी दी जाती है. ऐप्लिकेशन-ऑपरेशंस, रनटाइम की अनुमति से सुरक्षित एपीआई के ऐक्सेस को रिकॉर्ड करते हैं.
ऐप्लिकेशन-ऑप्ट इन, गतिविधि की स्थिति और अलग-अलग एपीआई कॉल की संख्या, दोनों को ट्रैक करता है. साथ ही, Android 12 में माइक्रोफ़ोन और कैमरे के इंडिकेटर के साथ इंटरैक्ट करता है, ताकि उपयोगकर्ताओं को यह पता चल सके कि ऐप्लिकेशन ने उनके डिवाइसों पर ऑडियो और कैमरे का डेटा कब ऐक्सेस किया है. जब उपयोगकर्ता माइक्रोफ़ोन या कैमरे के इंंडिकेटर पर क्लिक करते हैं, तो उन्हें पता चलता है कि किन ऐप्लिकेशन ने उनके डेटा को ऐक्सेस किया है. यह सुविधा सभी OEM के लिए ज़रूरी है.
इंडिकेटर दिखने से जुड़ी ज़रूरी शर्तें
Android 12 या इसके बाद के वर्शन पर काम करने वाले डिवाइसों पर, माइक्रोफ़ोन और कैमरे के इंडिकेटर के लिए ये ज़रूरी शर्तें हैं:
- इंडिकेटर, स्टेटस बार में दिखने चाहिए. साथ ही, इन्हें विज़ुअल के तौर पर सबसे ज़्यादा प्राथमिकता दी जानी चाहिए. उदाहरण के लिए, सबसे ऊपर दाएं कोने में सबसे दाईं ओर होना चाहिए.
- इंडिकेटर हमेशा एक ही जगह पर होने चाहिए. साथ ही, ऐप्लिकेशन के लॉन्च होने पर, उन्हें किसी ऐप्लिकेशन से ब्लॉक नहीं किया जाना चाहिए.
- दोनों इंडिकेटर का रंग हरा (या हरे रंग का कोई वैरिएशन) होना ज़रूरी है.
- एक या दोनों इंडिकेटर पर क्लिक करने से, ऐप्लिकेशन एट्रिब्यूशन के लिए उपलब्ध सूचना होनी चाहिए. यह सूचना इन कामों को करती है:
- माइक्रोफ़ोन और (या) कैमरे का इस्तेमाल करने वाले ऐप्लिकेशन का नाम दिखाता है
- पिछले 15 सेकंड में माइक्रोफ़ोन और (या) कैमरे का इस्तेमाल करने वाले ऐप्लिकेशन का नाम दिखाता है
- उपयोगकर्ताओं को सेटिंग में, ऐप्लिकेशन की अनुमति वाले पेज पर ले जाता है
इस्तेमाल और सुविधाएं
Android 12 में, यूज़र इंटरफ़ेस (यूआई) चालू और हाल ही में इस्तेमाल किए गए ऐप्लिकेशन के बीच अंतर करता है. इस्तेमाल को ऐक्टिव तब माना जाता है, जब सिस्टम ने उन्हें 'चालू है' के तौर पर मार्क किया हो या वे पांच सेकंड से कम पुराने हों.
- जब भी कोई ऐप्लिकेशन, उपयोगकर्ता की निजता से जुड़ी जानकारी हासिल करने के लिए माइक्रोफ़ोन या कैमरे का इस्तेमाल करता है, तब स्टेटस बार में आइकॉन दिखते हैं.
- उपयोगकर्ता इन आइकॉन पर क्लिक करके देख सकते हैं कि कौनसे ऐप्लिकेशन माइक्रोफ़ोन, कैमरे या दोनों को ऐक्सेस कर रहे हैं.
पहली इमेज. माइक्रोफ़ोन और कैमरे के इस्तेमाल के इंडिकेटर, जो ऐक्सेस चालू होने की जानकारी देते हैं (सबसे ऊपर दाएं कोने में)
इंडिकेटर दिखने तक, ऐक्सेस को चालू माना जाता है. पहले एक आइकॉन दिखता है, फिर वह एक बिंदु में बदल जाता है. यह बिंदु तब तक दिखता रहता है, जब तक ऐप्लिकेशन को खारिज या बंद नहीं कर दिया जाता.
जब कोई उपयोगकर्ता क्विक सेटिंग खोलता है और फिर इंंडिकेटर पर टैप करता है, तो एक डायलॉग दिखता है. इससे पता चलता है कि ऐप्लिकेशन, कैमरे, माइक्रोफ़ोन या दोनों का इस्तेमाल कर रहा है या नहीं.
दूसरी इमेज. ऐक्सेस करने वाले मौजूदा और हाल ही के उपयोगकर्ताओं की जानकारी
दूसरी इमेज में, ऐक्सेस के लिए सक्रिय इंडिकेटर दिखाए गए हैं. इनसे पता चलता है कि पिछले पांच सेकंड में, किसी ऐप्लिकेशन ने डेटा ऐक्सेस किया है या नहीं.
हाल ही में ऐक्सेस करने के इंडिकेटर से पता चलता है कि पिछले 15 सेकंड में किसी ऐप्लिकेशन ने डेटा ऐक्सेस किया था, लेकिन वह ऐप्लिकेशन चालू नहीं है. डायलॉग बॉक्स में सभी चालू ऐप्लिकेशन दिखते हैं. हालांकि, हाल ही में ऐक्सेस करने वाले सोर्स के तौर पर सिर्फ़ एक ऐप्लिकेशन दिखता है. भले ही, पिछले 15 सेकंड के अंदर एक से ज़्यादा ऐप्लिकेशन ने डेटा ऐक्सेस किया हो. ऐक्सेस व्यू तब तक फ़्रीज़ रहता है, जब तक उपयोगकर्ता सूचना डायलॉग को खारिज नहीं कर देता.
डिलीवर करना और चालू करना
PermissionManager
क्लास, डायलॉग को पॉप्युलेट करने का एक तरीका उपलब्ध कराती है. यह डायलॉग, सिस्टम यूज़र इंटरफ़ेस में मौजूद होता है.
- सिस्टम यूज़र इंटरफ़ेस, डिवाइस कॉन्फ़िगरेशन स्विच करने पर प्रतिक्रिया देता है:
privacy/mic_camera_indicators_enabled
. - स्विच करना ज़रूरी है, क्योंकि डिलीवरी के लिए दो अलग-अलग वाहन हैं, जो इस क्रम में हैं:
- डिलीवर करें.
- चालू करें.
- अगर
PermissionManager
में दिया गया तरीका, ज़रूरी डेटा नहीं दे पाता है, तो सिस्टम यूज़र इंटरफ़ेस (यूआई) क्रैश नहीं होना चाहिए.
प्रोसेस का फ़्लो
अनुमति के बारे में बताने वाले इंडिकेटर की सुविधा के तीन मुख्य हिस्से होते हैं:
- ऐप्लिकेशन
- इंडिकेटर (SystemUI से मैनेज किए जाते हैं)
- यह पता लगाने का तरीका कि कौनसे ऐप्लिकेशन डेटा का इस्तेमाल कर रहे हैं
PermissionController
से यह तय करने का तरीका मिलता है कि कौनसे ऐप्लिकेशन डेटा का इस्तेमाल कर रहे हैं. SystemUI, निजी डेटा का इस्तेमाल करने वाले ऐप्लिकेशन को सुनता है. SystemUI, सबसे ऊपर मौजूद नेविगेशन बार में एक आइकॉन दिखाता है. यह आइकॉन, इस्तेमाल की गई अनुमतियों से जुड़ा होता है. PermissionController
, किसी आइकॉन पर क्लिक करने पर, इस्तेमाल से जुड़ा डेटा दिखाता है.
तीसरी इमेज. सिस्टम कॉम्पोनेंट और (यूआई) ट्रांज़िशन फ़्लो
तीसरी इमेज में नंबर वाले ट्रांज़िशन के बारे में यहां बताया गया है:
1- कोई ऐप्लिकेशन, सिस्टम से निजी डेटा का अनुरोध करता है.
2- सिस्टम, अनुमतियों की जांच करता है. अनुमतियों की अनुमति मिलने पर, सिस्टम डेटा उपलब्ध कराने वाली कंपनी को सूचना देता है और ऐप्लिकेशन-ऑपरेशन में डेटा के इस्तेमाल की जानकारी देता है
तीसरा चरण- डेटा उपलब्ध करवाने वाली कंपनी, ऐप्लिकेशन को डेटा देती है.
4-5 उपयोगकर्ता, आइकॉन पर क्लिक करता है. सिस्टम यूज़र इंटरफ़ेस,
PermissionManager
से डेटा का अनुरोध करता है और उपयोगकर्ता को डायलॉग दिखाता है.
प्रोसेस की जानकारी
- ऐप्लिकेशन, माइक्रोफ़ोन और कैमरे का इस्तेमाल करते हैं,
AppOpsManager.startOp
,stopOp
, और (या)noteOp
को कॉल करते हैं. इससे सिस्टम सर्वर में ऐप्लिकेशन-ऑपरेशन रिकॉर्ड बनते हैं. - सिस्टम यूज़र इंटरफ़ेस (यूआई),
AppOpsManager.OnOpActiveChangedInternalListener
औरOnOpNotedListener
के लिसनर का इस्तेमाल करके, नए ऐप्लिकेशन-ऑपरेशन के लिए सुनता है. जबstartOp
याnoteOp
में कॉल के ज़रिए कोई नया इस्तेमाल आता है, तो सिस्टम यूज़र इंटरफ़ेस (यूआई) यह पुष्टि करता है कि इस्तेमाल, सिस्टम ऐप्लिकेशन का है. - अगर System UI, सिस्टम ऐप्लिकेशन के इस्तेमाल की पुष्टि करता है और माइक्रोफ़ोन का इस्तेमाल किया जा रहा है, तो System UI यह जांच करता है कि माइक्रोफ़ोन म्यूट है या नहीं.
- अगर System UI यह पुष्टि करता है कि किसी ऐसे ऐप्लिकेशन का इस्तेमाल किया जा रहा है जो सिस्टम ऐप्लिकेशन नहीं है, तो वह इस तरह के इस्तेमाल को दिखाने वाला आइकॉन दिखाता है. जैसे, माइक्रोफ़ोन के इस्तेमाल के लिए, माइक्रोफ़ोन को अनम्यूट करने और कैमरे के इस्तेमाल के लिए, कैमरे को टॉगल करने की जानकारी देने वाला आइकॉन.
अगर सिस्टम यूज़र इंटरफ़ेस को कोई ऐसा noteOp
मिलता है जिसकी अवधि नहीं है, तो वह आइकॉन कम से कम पांच सेकंड के लिए दिखाता है. अगर ऐसा नहीं होता है, तो आइकॉन तब तक दिखता है, जब तक उसे stopOp
नहीं मिलता या पांच सेकंड तक, जो भी अवधि ज़्यादा हो. उपयोगकर्ता किसी आइकॉन पर क्लिक करके, एक इंटेंट शुरू करता है. यह इंटेंट, डायलॉग शुरू करने के लिए PermissionController
पर जाता है.
PermissionController
, माइक्रोफ़ोन और कैमरे के हाल ही के इस्तेमाल की जानकारी लोड करता है. यह जांच करता है कि उनमें से कोई भी प्रोसेस चल रही है या नहीं या सिस्टम यूज़र इंटरफ़ेस (यूआई) से तय की गई समयसीमा के दौरान चल रही थी या नहीं. अगर कोई मैच मिलता है, तो यह उस ऐप्लिकेशन का नाम दिखाता है जिसने अनुमति का इस्तेमाल किया है. साथ ही, यह भी दिखाता है कि ऐप्लिकेशन ने किन अनुमतियों का इस्तेमाल किया है.
Android 12 और उसके बाद के वर्शन में हुए इस बदलाव की वजह से, कुछ ऐप्लिकेशन को अपना तरीका बदलना होगा या कोई खास तरीका अपनाना होगा.
Android Google Search ऐप्लिकेशन (AGSA) और Google Mobile Services (GMS) के साथ काम करते समय, Telephony को अनुमति के इस्तेमाल को लागू करना होगा. ऐसा इसलिए, ताकि फ़ोन कॉल में इस्तेमाल किए जाने वाले अलग माइक्रोफ़ोन स्टैक को ध्यान में रखा जा सके.