Android 6 और उसके बाद के वर्शन में, रनटाइम की अनुमतियों की सुविधा उपलब्ध है. इससे उपयोगकर्ताओं को यह कंट्रोल मिलता है कि वे किसी डिवाइस के माइक्रोफ़ोन से ऑडियो या डिवाइस के कैमरे से वीडियो रिकॉर्ड करने की अनुमति कब दें. किसी ऐप्लिकेशन को रिकॉर्डिंग की अनुमति देने या न देने का विकल्प, उपयोगकर्ता को सिस्टम की ओर से दिखाए जाने वाले डायलॉग बॉक्स में मिलता है.
Android 12, उपयोगकर्ताओं को पारदर्शिता देता है. इसके लिए, वह तब इंडिकेटर दिखाता है, जब कोई ऐप्लिकेशन, कैमरे और माइक्रोफ़ोन की ऐप्लिकेशन-ऑप अनुमतियों के ज़रिए, निजी डेटा सोर्स का इस्तेमाल करता है. App-ops रिकॉर्ड, रनटाइम की अनुमति से सुरक्षित किए गए एपीआई को ऐक्सेस करता है.
App-op, ऐक्टिविटी की स्थिति और अलग-अलग एपीआई कॉल की संख्या, दोनों को ट्रैक करता है. साथ ही, Android 12 में माइक्रोफ़ोन और कैमरे के इंडिकेटर के साथ इंटरैक्ट करता है, ताकि उपयोगकर्ताओं को यह दिखाया जा सके कि ऐप्लिकेशन ने उनके डिवाइसों पर ऑडियो और कैमरे के डेटा को कब ऐक्सेस किया. जब उपयोगकर्ता माइक्रोफ़ोन या कैमरे के इंडिकेटर पर क्लिक करते हैं, तो उन्हें पता चलता है कि किन ऐप्लिकेशन ने उनके डेटा को ऐक्सेस किया है. यह सुविधा सभी ओईएम के लिए ज़रूरी है.
इंडिकेटर दिखने से जुड़ी ज़रूरी शर्तें
Android 12 या इसके बाद के वर्शन पर काम करने वाले डिवाइसों पर, माइक्रोफ़ोन और कैमरे के इंडिकेटर के लिए ये ज़रूरी शर्तें हैं:
- ये इंडिकेटर, स्टेटस बार में दिखने चाहिए. साथ ही, इन्हें सबसे ज़्यादा विज़ुअल प्राथमिकता मिलनी चाहिए. उदाहरण के लिए, ये इंडिकेटर सबसे ऊपर दाईं ओर कोने में सबसे दाईं ओर होने चाहिए.
- इंडिकेटर हमेशा एक ही जगह पर होने चाहिए. साथ ही, ऐप्लिकेशन लॉन्च होने पर, इंडिकेटर दिखने चाहिए.
- दोनों इंडिकेटर का रंग हरा (या हरे रंग का कोई दूसरा शेड) होना ज़रूरी है.
- एक या दोनों इंडिकेटर पर क्लिक करने से, ऐप्लिकेशन एट्रिब्यूशन की सुविधा से जुड़ी सूचना ज़रूर दिखनी चाहिए. इस सूचना में ये बातें शामिल होनी चाहिए:
- माइक्रोफ़ोन और (या) कैमरे का इस्तेमाल करने वाले ऐप्लिकेशन का नाम दिखाता है
- यह कुकी, उस ऐप्लिकेशन का नाम दिखाती है जिसने पिछले 15 सेकंड में माइक्रोफ़ोन और (या) कैमरे का इस्तेमाल किया है
- इस कुकी की मदद से, उपयोगकर्ताओं को सेटिंग में मौजूद ऐप्लिकेशन की अनुमति वाले पेज पर ले जाया जाता है
इस्तेमाल और सुविधाएं
Android 12 में, यूज़र इंटरफ़ेस (यूआई) में, ऐप्लिकेशन के चालू इस्तेमाल और हाल ही के इस्तेमाल के बीच अंतर किया जाता है. इस्तेमाल को चालू माना जाता है, अगर सिस्टम ने उन्हें चालू के तौर पर मार्क किया है या वे पांच सेकंड से कम पुराने हैं.
- जब भी कोई ऐप्लिकेशन, उपयोगकर्ता की निजी जानकारी से जुड़े माइक्रोफ़ोन या कैमरे का ऐक्सेस लेता है, तब स्टेटस बार में आइकॉन दिखते हैं.
- उपयोगकर्ता इन आइकॉन पर क्लिक करके देख सकते हैं कि किन ऐप्लिकेशन में माइक्रोफ़ोन, कैमरे या दोनों को ऐक्सेस किया जा रहा है.
पहली इमेज. माइक्रोफ़ोन और कैमरे के इस्तेमाल से जुड़े इंडिकेटर, ऐक्टिव ऐक्सेस दिखाते हुए (ऊपर दाएं कोने में)
जब तक इंडिकेटर दिखते हैं, तब तक ऐक्सेस को चालू माना जाता है. एक आइकॉन दिखता है. इसके बाद, यह एक डॉट में बदल जाता है. यह डॉट तब तक दिखता रहता है, जब तक ऐप्लिकेशन को खारिज या बंद नहीं कर दिया जाता.
जब कोई व्यक्ति 'क्विक सेटिंग' खोलता है और फिर इंडिकेटर पर टैप करता है, तो एक डायलॉग दिखता है. इसमें यह जानकारी होती है कि ऐप्लिकेशन, कैमरे, माइक्रोफ़ोन या दोनों का इस्तेमाल कर रहा है या नहीं.
दूसरी इमेज. ऐक्टिव और हाल ही में ऐक्सेस करने के इंडिकेटर
दूसरी इमेज में, ऐक्टिव ऐक्सेस इंडिकेटर दिखाए गए हैं. ये इंडिकेटर तब दिखते हैं, जब कोई ऐप्लिकेशन पिछले पांच सेकंड में डेटा ऐक्सेस करता है.
हाल ही में ऐक्सेस किए गए डेटा के इंडिकेटर से पता चलता है कि किसी ऐप्लिकेशन ने पिछले 15 सेकंड में डेटा ऐक्सेस किया था, लेकिन वह ऐप्लिकेशन चालू नहीं है. डायलॉग बॉक्स में सभी चालू ऐप्लिकेशन दिखते हैं. हालांकि, हाल ही में ऐक्सेस किए गए डेटा के सोर्स के तौर पर सिर्फ़ एक ऐप्लिकेशन दिखता है. भले ही, पिछले 15 सेकंड में एक से ज़्यादा ऐप्लिकेशन ने डेटा ऐक्सेस किया हो. जब तक उपयोगकर्ता सूचना वाले डायलॉग को खारिज नहीं करता, तब तक ऐक्सेस व्यू फ़्रीज़ रहता है.
डिलीवर करें और चालू करें
PermissionManager
क्लास, डायलॉग को पॉप्युलेट करने का एक तरीका उपलब्ध कराती है. यह सिस्टम यूज़र इंटरफ़ेस (यूआई) में मौजूद होता है.
- सिस्टम यूज़र इंटरफ़ेस, डिवाइस कॉन्फ़िगरेशन स्विच पर प्रतिक्रिया देता है:
privacy/mic_camera_indicators_enabled
. - स्विच करना ज़रूरी है, क्योंकि डिलीवरी के लिए दो अलग-अलग वाहनों का इस्तेमाल किया जाता है. इनका क्रम यह है:
- डिलीवर करें.
- चालू करें.
- अगर
PermissionManager
में मौजूद तरीका, ज़रूरी डेटा उपलब्ध नहीं करा पाता है, तो सिस्टम यूज़र इंटरफ़ेस (यूआई) क्रैश नहीं होना चाहिए.
प्रोसेस फ़्लो
अनुमति के बारे में बताने वाली सुविधा के तीन मुख्य हिस्से होते हैं:
- ऐप्लिकेशन
- इंडिकेटर (SystemUI की मदद से मैनेज किए जाते हैं)
- यह पता लगाने का तरीका कि कौनसा ऐप्लिकेशन डेटा का इस्तेमाल कर रहा है
PermissionController
से यह पता चलता है कि कौनसे ऐप्लिकेशन डेटा का इस्तेमाल कर रहे हैं. SystemUI, निजी डेटा का इस्तेमाल करने वाले ऐप्लिकेशन के बारे में जानकारी इकट्ठा करता है. SystemUI, सबसे ऊपर मौजूद नेविगेशन बार में एक आइकॉन दिखाता है. यह आइकॉन, इस्तेमाल की गई अनुमतियों से मेल खाता है. PermissionController
में, किसी आइकॉन पर क्लिक करने वाले उपयोगकर्ता के इस्तेमाल से जुड़ा डेटा दिखता है.
तीसरी इमेज. सिस्टम कॉम्पोनेंट और (यूज़र इंटरफ़ेस) ट्रांज़िशन फ़्लो
तीसरी इमेज में नंबर वाली ट्रांज़िशन के बारे में यहां बताया गया है:
1- कोई ऐप्लिकेशन, सिस्टम से निजी डेटा का अनुरोध करता है.
2- सिस्टम, अनुमतियों की जांच करता है. अनुमतियां मिलने पर, सिस्टम डेटा उपलब्ध कराने वाली कंपनी को सूचना देता है. साथ ही, app-ops में इस्तेमाल की जानकारी सेव करता है
3- डेटा उपलब्ध कराने वाली कंपनी, ऐप्लिकेशन को डेटा देती है.
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 को अनुमति के इस्तेमाल को लागू करना होगा. ऐसा इसलिए, ताकि फ़ोन कॉल में इस्तेमाल किए गए अलग माइक्रोफ़ोन स्टैक का हिसाब रखा जा सके.