वीडियो और ऑडियो प्लेबैक कैप्चर करें

ऐप्लिकेशन, किसी दूसरे ऐप्लिकेशन से चलाए जा रहे वीडियो या ऑडियो को रिकॉर्ड कर सकता है. इस तरह ऐप्लिकेशन को 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 करना है. यह तरीक़ा अपनाएँ:

  1. AudioPlaybackCaptureConfiguration.Builder.build() पर कॉल करें बनाने के लिए AudioPlaybackCaptureConfiguration.
  2. कॉल करके AudioRecord को कॉन्फ़िगरेशन पास करें setAudioPlaybackCaptureConfig.

ऑडियो कैप्चर को कंट्रोल करना

आपका ऐप्लिकेशन यह कंट्रोल कर सकता है कि वह किस तरह का कॉन्टेंट रिकॉर्ड कर सकता है और किस तरह का कॉन्टेंट रिकॉर्ड कर सकता है ऐप्लिकेशन के अलग-अलग तरह के ऐप्लिकेशन अपना खुद का प्लेबैक रिकॉर्ड कर सकते हैं.

ऑडियो कॉन्टेंट कैप्चर करने से रोकना

इनका इस्तेमाल करके, ऐप्लिकेशन यह तय कर सकता है कि कौनसा ऑडियो कैप्चर किया जा सकता है तरीका:

ध्यान दें कि addMatchingUsage() और excludeUsage() तरीकों का इस्तेमाल नहीं किया जा सकता हैं बेमिसाल. आपको इनमें से किसी एक को चुनना होगा. इसी तरह, addMatchingUid() और excludeUid() का इस्तेमाल नहीं किया जा सकता ट्रैक करने में मदद मिलती है.

दूसरे ऐप्लिकेशन की फ़ोटो को कैप्चर करने की अनुमति देना

किसी ऐप्लिकेशन को कॉन्फ़िगर किया जा सकता है, ताकि दूसरे ऐप्लिकेशन उसका ऑडियो कैप्चर न कर सकें. किसी ऐप्लिकेशन से आने वाले ऑडियो को सिर्फ़ तब कैप्चर किया जा सकता है, जब वह ऐप्लिकेशन इन शर्तों को पूरा करता हो:

इस्तेमाल

ऑडियो बनाने वाले प्लेयर को इसका इस्तेमाल सेट करना होगा USAGE_MEDIA तक, USAGE_GAME, या USAGE_UNKNOWN.

कैप्चर नीति

खिलाड़ी की कैप्चर नीति AudioAttributes.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
सही कोई भी ऐप्लिकेशन सिर्फ़ सिस्टम के लिए कोई कैप्चर नहीं
गलत सिर्फ़ सिस्टम के लिए सिर्फ़ सिस्टम के लिए कोई कैप्चर नहीं