تسجيل تشغيل الفيديو والصوت

يمكن للتطبيق تسجيل الفيديو أو الصوت الذي يتم تشغيله من تطبيق آخر. مثل التطبيقات يجب أن تتعامل مع الرمز المميّز لـ MediaProjection بشكل صحيح. تشرح هذه الصفحة كيفية إجراء ذلك. وتشرح أيضًا كيف يمكن لمشرف الجهاز إيقاف والقدرة على تسجيل أي لقطات شاشة، والطريقة التي يمكن بها لتطبيق صوتي منع التطبيقات الأخرى من تسجيل المحتوى الذي يتم تشغيله.

كيفية التعامل مع رمز MediaProjection المميّز

واجهة برمجة تطبيقات MediaProjection يسمح هذا الإذن للتطبيقات بالحصول على رمز مميّز من "MediaProjection" يتيح لها الوصول إليها لمرة واحدة. لتسجيل محتوى الشاشة أو الصوت. يطلب نظام التشغيل Android من المستخدم إذنًا قبل منح الرمز المميز لتطبيقك.

يعرض نظام التشغيل رموز MediaProjection المميزة النشطة في واجهة مستخدم "الإعدادات السريعة" يتيح للمستخدمين سحب إذن الوصول إلى رمز مميّز في أي وقت. وعند حدوث ذلك، توقُّف استلام الشاشات أو البث الصوتي المرتبط بالجلسة بث الوسائط. يجب أن يستجيب تطبيقك بشكل مناسب، وإلا سيستمر. لتسجيل كتم الصوت أو بث فيديو أسود اللون.

للتعامل مع فقدان الرمز المميّز، يجب تسجيل معاودة الاتصال على MediaProjection. باستخدام دالة registerCallback وإيقاف التسجيل عند onStop المريض.

للحصول على مزيد من المعلومات، يمكنك الاطلاع على عرض الوسائط.

التقاط فيديو

يمكنك الاطّلاع على نموذج تطبيق ScreenCapture لمعرفة طريقة استخدام واجهة برمجة التطبيقات Media Projection API لالتقاط صورة الشاشة في الوقت الفعلي وعرضها على SurfaceView.

يمكنك استخدام DevicePolicyManager. لمنع تسجيل الشاشة. بالنسبة إلى حسابات المؤسسات (Android for Work)، يمكن للمشرف إيقاف جمع بيانات "مساعد Google" لملف العمل. باستخدام setscreenCaptureDisabled .

الدرس التطبيقي حول الترميز إدارة أجهزة Android بدون تطبيق يعرض كيفية حظر لقطات الشاشة.

التقاط تشغيل الصوت

تم تقديم واجهة AudioPlaybackCapture API في نظام التشغيل Android 10. واجهة برمجة التطبيقات هذه لمنح التطبيقات إمكانية نسخ الصوت الذي يتم تشغيله بواسطة تطبيقات أخرى. هذا النمط هو التناظرية لتصوير الشاشة، ولكن للصوت. إن حالة الاستخدام الأساسية هي لتطبيقات البث التي تريد تسجيل الصوت الذي تشغِّله الألعاب

يُرجى العلم أنّ واجهة برمجة التطبيقات AudioPlaybackCapture لا تؤثر في وقت استجابة التطبيق الذي يكون الصوت فيه. يتم التقاطها.

إنشاء تطبيق التقاط

لأسباب تتعلق بالأمان والخصوصية، يفرض الالتقاط أثناء التشغيل بعض القيود. ليتمكّن التطبيق من تسجيل الصوت، يجب أن يستوفي المتطلبات التالية:

  • يجب أن يتضمّن التطبيق RECORD_AUDIO إذن.
  • يجب أن يعرض التطبيق الطلب الذي يعرضه MediaProjectionManager.createScreenCaptureIntent(), ويجب أن يوافق المستخدم عليه.
  • يجب أن تكون تطبيقات الالتقاط وتشغيلها في الملف الشخصي نفسه للمستخدم.

لالتقاط صوت من تطبيق آخر، يجب أن يُنشئ التطبيق كائن AudioRecord وإضافة AudioPlaybackCaptureConfiguration إليه. اتبع هذه الخطوات:

  1. الاتصال بالرقم AudioPlaybackCaptureConfiguration.Builder.build() لإنشاء AudioPlaybackCaptureConfiguration
  2. تمرير الإعدادات إلى AudioRecord من خلال طلب setAudioPlaybackCaptureConfig

التحكم في التقاط الصوت

يمكن للتطبيق التحكم في أنواع المحتوى الذي يمكنه تسجيله وأنواع المحتوى من التطبيقات تسجيل التشغيل الخاص بها.

تقييد الالتقاط باستخدام المحتوى الصوتي

بإمكان التطبيق تحديد الصوت الذي يمكنه تسجيله باستخدام هذه الطرق:

  • تمرير AUDIO_USAGE إلى AudioPlaybackCaptureConfiguration.addMatchingUsage() للسماح بتسجيل استخدام معين. وعليك استدعاء الطريقة عدة مرات لتحديد أكثر من استخدام واحد.
  • مرِّر AUDIO_USAGE إلى AudioPlaybackCaptureConfiguration.exclusionUsage() إلى. أن نحظر التقاط هذا الاستخدام. وعليك استدعاء الطريقة عدة مرات لتحديد أكثر من استخدام واحد.
  • تمرير معرّف فريد إلى AudioPlaybackCaptureConfiguration.addMatchingUid() لالتقاط التطبيقات التي لها مُعرّف فريد محدّد فقط. عليك استدعاء الطريقة عدة مرات لتحديد أكثر من معرِّف فريد واحد.
  • أدخِل معرِّف UID إلى AudioPlaybackCaptureConfiguration.exclusionUid() لحظر التقاط هذا المعرّف الفريد. عليك استدعاء الطريقة عدة مرات لتحديد أكثر من معرِّف فريد واحد.

يُرجى العِلم أنّه لا يمكنك استخدام الطريقتَين 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 عند استدعاء الطريقة، لا يتأثر الصوت. يجب الإغلاق وإعادة الفتح المشغّل أو المقطع الصوتي كي يتم تطبيق تغيير السياسة.

السياسة = البيان + مدير الصوت + سمات الصوت

ونظرًا لأنه يمكن تحديد سياسة الالتقاط في عدة أماكن، فمن المهم لفهم كيفية تحديد السياسة الفعالة. يتم دائمًا تطبيق سياسة الالتقاط الأكثر تقييدًا. على سبيل المثال، التطبيق الذي يتضمن البيان 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
صحيح أي تطبيق النظام فقط عدم التقاط الصور
خطأ النظام فقط النظام فقط عدم التقاط الصور