ऐप्लिकेशन, किसी दूसरे ऐप्लिकेशन से चलाए जा रहे वीडियो या ऑडियो को रिकॉर्ड कर सकता है. इस तरह
ऐप्लिकेशन को
MediaProjection
टोकन
सही तरीके से. इस पेज पर इसका तरीका बताया गया है. यहां यह भी दिखाया गया है कि डिवाइस का एडमिन इस सुविधा को कैसे बंद कर सकता है
किसी भी स्क्रीन स्नैपशॉट को रिकॉर्ड करने की सुविधा और कोई ऑडियो ऐप्लिकेशन
दूसरे ऐप्लिकेशन को उसमें चलने वाले कॉन्टेंट को रिकॉर्ड करने से रोक सकता है.
MediaProjection
टोकन को मैनेज करने का तरीका
MediaProjection
एपीआई
इससे ऐप्लिकेशन, MediaProjection
टोकन हासिल कर सकते हैं. इससे उन्हें एक बार ऐक्सेस मिलेगा
स्क्रीन के कॉन्टेंट और ऑडियो को कैप्चर करने के लिए. Android OS, उपयोगकर्ता से यह जानकारी मांगता है
आपके ऐप्लिकेशन को टोकन देने से पहले अनुमति दें.
ओएस, क्विक सेटिंग यूज़र इंटरफ़ेस (यूआई) में चालू MediaProjection
टोकन दिखाता है और
उपयोगकर्ताओं को किसी भी समय टोकन का ऐक्सेस वापस लेने की अनुमति देता है. जब ऐसा होता है, तो
सेशन से जुड़े वर्चुअल डिसप्ले या ऑडियो स्ट्रीम पाना बंद कर दिया जाता है
मीडिया स्ट्रीम. आपके ऐप्लिकेशन को सही तरीके से जवाब देना चाहिए. ऐसा न करने पर, आपका ऐप्लिकेशन काम करता रहेगा
बिना आवाज़ वाले वीडियो या ब्लैक वीडियो स्ट्रीम को रिकॉर्ड करना होगा.
टोकन खो जाने की समस्या को मैनेज करने के लिए, MediaProjection
पर कॉलबैक रजिस्टर करें
इंस्टेंस
registerCallback
विधि से शामिल किया जाता है और रिकॉर्डिंग शुरू करने के बाद
onStop
तरीका को कॉल किया जाता है.
ज़्यादा जानकारी के लिए, मीडिया प्रोजेक्शन देखें.
वीडियो कैप्चर करें
ज़्यादा जानकारी के लिए, Screenकैप्चर सैंपल ऐप्लिकेशन मीडिया प्रोजेक्शन एपीआई के इस्तेमाल का तरीका जानने के लिए, यह जानें कि और उसे SurfaceView पर दिखाएं.
आप DevicePolicyManager
का इस्तेमाल कर सकते हैं
स्क्रीन रिकॉर्डिंग को रोकने के लिए. काम से जुड़े खातों (Android for Work) के लिए,
एडमिन, वर्क प्रोफ़ाइल के लिए Assistant का डेटा इकट्ठा करने की सुविधा बंद कर सकता है
यह तय करें कि
setस्क्रीनकैप्चर बंद किया गया
तरीका.
कोडलैब (कोड बनाना सीखना) किसी ऐप्लिकेशन के बिना Android डिवाइसों को मैनेज करना स्क्रीनशॉट के लिए अनुमति न देने का तरीका दिखाता है.
ऑडियो प्लेबैक कैप्चर करें
ऑडियो प्लेबैक कैप्चर एपीआई को Android 10 में पेश किया गया था. यह एपीआई ऐप्लिकेशन को, दूसरे ऐप्लिकेशन में चल रहे ऑडियो को कॉपी करने की सुविधा मिलती है. यह सुविधा स्क्रीन कैप्चर का एनालॉग है, लेकिन ऑडियो के लिए. मुख्य इस्तेमाल का उदाहरण यह है ऐसे स्ट्रीमिंग ऐप्लिकेशन के लिए है जो गेम की आवाज़ को कैप्चर करना चाहते हैं.
ध्यान दें कि Audio क्लिप वैसा एपीआई इस्तेमाल करने से, उस ऐप्लिकेशन के इंतज़ार के समय पर कोई असर नहीं पड़ता जिसका ऑडियो कैप्चर किया जा रहा है.
कैप्चर ऐप्लिकेशन बनाना
सुरक्षा और निजता के लिए, प्लेबैक कैप्चर की सुविधा के इस्तेमाल की कुछ सीमाएं तय की गई हैं. ऑडियो कैप्चर करने के लिए, ऐप्लिकेशन को ये ज़रूरी शर्तें पूरी करनी होंगी:
- ऐप्लिकेशन में
RECORD_AUDIO
अनुमति. - ऐप्लिकेशन को
MediaProjectionManager.createScreenCaptureIntent()
, और उपयोगकर्ता को इसे मंज़ूरी देनी होगी. - कैप्चर करने और चलाने वाले ऐप्लिकेशन, एक ही उपयोगकर्ता प्रोफ़ाइल में होने चाहिए.
किसी दूसरे ऐप्लिकेशन का ऑडियो कैप्चर करने के लिए, आपके ऐप्लिकेशन को
AudioRecord
ऑब्जेक्ट
और जोड़ें एक
AudioPlaybackCaptureConfiguration
करना है. यह तरीक़ा अपनाएँ:
AudioPlaybackCaptureConfiguration.Builder.build()
पर कॉल करें बनाने के लिएAudioPlaybackCaptureConfiguration
.- कॉल करके
AudioRecord
को कॉन्फ़िगरेशन पास करेंsetAudioPlaybackCaptureConfig
.
ऑडियो कैप्चर को कंट्रोल करना
आपका ऐप्लिकेशन यह कंट्रोल कर सकता है कि वह किस तरह का कॉन्टेंट रिकॉर्ड कर सकता है और किस तरह का कॉन्टेंट रिकॉर्ड कर सकता है ऐप्लिकेशन के अलग-अलग तरह के ऐप्लिकेशन अपना खुद का प्लेबैक रिकॉर्ड कर सकते हैं.
ऑडियो कॉन्टेंट कैप्चर करने से रोकना
इनका इस्तेमाल करके, ऐप्लिकेशन यह तय कर सकता है कि कौनसा ऑडियो कैप्चर किया जा सकता है तरीका:
- इसके लिए
AUDIO_USAGE
पास करें ऑडियो प्लेबैक कैप्चर कॉन्फ़िगरेशन.addMatchingUsage() ताकि किसी खास तरह के इस्तेमाल को कैप्चर किया जा सके. एक से ज़्यादा उपयोग तय करने के लिए तरीके को कई बार कॉल करें. - इन कामों के लिए, ऑडियो प्लेबैक चलाया जाने वाला कॉन्फ़िगरेशन.एक्सक्लूज़() के लिए
AUDIO_USAGE
को पास करें कैप्चर करने से मना कर सके. एक से ज़्यादा उपयोग तय करने के लिए तरीके को कई बार कॉल करें. - ऑडियो प्लेबैक कैप्चर कॉन्फ़िगरेशन.addMatchingUid() के लिए यूआईडी पास करें का इस्तेमाल, सिर्फ़ खास यूआईडी वाले ऐप्लिकेशन कैप्चर करने के लिए करें. एक से ज़्यादा यूआईडी तय करने के लिए, तरीके को कई बार कॉल करें.
- इस यूआईडी को कैप्चर करने की अनुमति न देने के लिए, ऑडियो प्लेबैक जांचेंकॉन्फ़िगरेशन.एक्सक्लूड() में यूआईडी पास करें. एक से ज़्यादा यूआईडी तय करने के लिए, तरीके को कई बार कॉल करें.
ध्यान दें कि addMatchingUsage()
और excludeUsage()
तरीकों का इस्तेमाल नहीं किया जा सकता
हैं बेमिसाल. आपको इनमें से किसी एक को चुनना होगा. इसी तरह, addMatchingUid()
और excludeUid()
का इस्तेमाल नहीं किया जा सकता
ट्रैक करने में मदद मिलती है.
दूसरे ऐप्लिकेशन की फ़ोटो को कैप्चर करने की अनुमति देना
किसी ऐप्लिकेशन को कॉन्फ़िगर किया जा सकता है, ताकि दूसरे ऐप्लिकेशन उसका ऑडियो कैप्चर न कर सकें. किसी ऐप्लिकेशन से आने वाले ऑडियो को सिर्फ़ तब कैप्चर किया जा सकता है, जब वह ऐप्लिकेशन इन शर्तों को पूरा करता हो:
इस्तेमाल
ऑडियो बनाने वाले प्लेयर को इसका इस्तेमाल सेट करना होगा
USAGE_MEDIA
तक,
USAGE_GAME
, या
USAGE_UNKNOWN
.
कैप्चर नीति
खिलाड़ी की कैप्चर नीति
AudioAttributes.ALLOW_CAPTURE_BY_ALL
,
इसकी मदद से, अन्य ऐप्लिकेशन वीडियो को कैप्चर कर सकते हैं. ऐसा कई तरीकों से किया जा सकता है:
- सभी प्लेयर पर कैप्चर करने की सुविधा चालू करने के लिए, शामिल करें
ऐप्लिकेशन में मौजूद
android:allowAudioPlaybackCapture="true"
manifest.xml
फ़ाइल. - कॉल करके सभी प्लेयर पर कैप्चर करने की सुविधा भी चालू की जा सकती है
AudioManager.setAllowedCapturePolicy(AudioAttributes.ALLOW_CAPTURE_BY_ALL)
. - किसी प्लेयर का इस्तेमाल करते समय, उस प्लेयर पर नीति को सेट किया जा सकता है
AudioAttributes.Builder.setAllowedCapturePolicy(AudioAttributes.ALLOW_CAPTURE_BY_ALL)
. (अगर आपAAudio
कॉल का इस्तेमाल कर रहे हैंAAudioStreamBuilder_setAllowedCapturePolicy(AAUDIO_ALLOW_CAPTURE_BY_ALL)
.)
अगर ये ज़रूरी शर्तें पूरी हो जाती हैं, तो प्लेयर के किसी भी ऑडियो को कैप्चर किया जा सकता है.
सिस्टम कैप्चर की सुविधा बंद की जा रही है
ऊपर बताई गई सुरक्षाएं कैप्चर करने वाली जिन सुविधाओं के बारे में ऊपर बताया गया है वे सिर्फ़ ऐप्लिकेशन पर लागू होती हैं. Android पर
सिस्टम के कॉम्पोनेंट, डिफ़ॉल्ट रूप से वीडियो को कैप्चर कर सकते हैं.
इनमें से कई कॉम्पोनेंट को Android वेंडर और सहायता सुविधाएं पसंद के मुताबिक बनाती हैं
जैसे, सुलभता और कैप्शन. इस वजह से यह सुझाव दिया जाता है कि ऐप्लिकेशन
को सिस्टम उनका प्लेबैक कैप्चर करने की अनुमति देता है. बहुत कम मामलों में, जब आपके पास
अपने ऐप्लिकेशन के प्लेबैक को सिस्टम से कैप्चर करवाना चाहते हैं, तो कैप्चर नीति को
ALLOW_CAPTURE_BY_NONE
.
रनटाइम के दौरान नीति सेट करना
आप कैप्चर करने का समय बदलने के लिए, AudioManager.setAllowedCapturePolicy()
पर कॉल कर सकते हैं
ऐप्लिकेशन के इस्तेमाल के दौरान, नीति से जुड़ी नीति सेट करें. अगर कोई MediaPlayer या AudioTrack चल रहा है
तो कॉल करने पर ऑडियो पर कोई असर नहीं पड़ता. आपको इसे बंद करके फिर से खोलना होगा
नीति में बदलाव को लागू करने के लिए प्लेयर या ट्रैक.
नीति = मेनिफ़ेस्ट + AudioManager + AudioAttributes
कैप्चर नीति को कई जगहों पर बताया जा सकता है, इसलिए यह ज़रूरी है
और जानें कि असरदार नीति कैसे तय की जाती है.
सबसे ज़्यादा पाबंदी वाली कैप्चर नीति हमेशा लागू होती है. उदाहरण के लिए, ऐसा ऐप्लिकेशन जिसका
मेनिफ़ेस्ट में शामिल है setAllowedCapturePolicy="false"
कभी भी नॉन-सिस्टम की अनुमति नहीं देगा
ऑडियो कैप्चर करने वाले ऐप्लिकेशन, भले ही AudioManager#setAllowedCapturePolicy
सेट हो
ALLOW_CAPTURE_BY_ALL
के लिए. इसी तरह, अगर
AudioManager#setAllowedCapturePolicy
को ALLOW_CAPTURE_BY_ALL
पर सेट किया गया है. साथ ही,
मेनिफ़ेस्ट, setAllowedCapturePolicy="true"
सेट करता है, लेकिन मीडिया प्लेयर
AudioAttributes
को इनके साथ बनाया गया था:
AudioAttributes.Builder#setAllowedCapturePolicy(ALLOW_CAPTURE_BY_SYSTEM)
और उसके बाद
इस मीडिया प्लेयर को गैर-सिस्टम ऐप्लिकेशन से ऐक्सेस नहीं किया जा सकेगा.
नीचे दी गई टेबल में मेनिफ़ेस्ट एट्रिब्यूट के असर के बारे में खास जानकारी दी गई है. साथ ही, लागू नीति:
अनुमति देंऑडियो प्लेबैककैप्चर | ALLOW_CAPTURE_BY_ALL | ALLOW_CAPTURE_BY_system | ALLOW_CAPTURE_BY_NONE |
---|---|---|---|
सही | कोई भी ऐप्लिकेशन | सिर्फ़ सिस्टम के लिए | कोई कैप्चर नहीं |
गलत | सिर्फ़ सिस्टम के लिए | सिर्फ़ सिस्टम के लिए | कोई कैप्चर नहीं |