Video- und Audiowiedergabe aufnehmen

Eine App kann das Video- oder Audiomaterial aufnehmen, das in einer anderen App wiedergegeben wird. Ein solches müssen Apps mit der MediaProjection Token korrekt sind. Auf dieser Seite wird die Vorgehensweise beschrieben. Außerdem wird gezeigt, wie ein Geräteadministrator die die Möglichkeit, Bildschirm-Snapshots aufzunehmen, und wie eine Audio-App verhindern kann, andere Apps die Inhalte aufzeichnen, die wiedergegeben werden.

Umgang mit einem MediaProjection-Token

Die MediaProjection API Ermöglicht Apps, ein MediaProjection-Token zu erhalten, mit dem sie einmaligen Zugriff erhalten um Bildschirminhalte oder Audioinhalte zu erfassen. Das Android-Betriebssystem fragt den Nutzer nach seinem bevor Sie Ihrer App das Token gewähren.

Das Betriebssystem zeigt die aktiven MediaProjection-Tokens in der Benutzeroberfläche der Schnelleinstellungen an und ermöglicht es Nutzern, den Zugriff auf ein Token jederzeit zu widerrufen. In diesem Fall Virtuelle Displays oder Audiostreams, die mit der Sitzung verknüpft sind, empfangen nicht mehr Medien-Streams. Deine App muss entsprechend reagieren, andernfalls wird sie fortgesetzt zum Aufzeichnen von Audiostumm oder eines schwarzen Videostreams.

Registrieren Sie einen Callback im MediaProjection, um den Verlust eines Tokens zu verarbeiten. Instanz mithilfe der Methode registerCallback und die Aufzeichnung beenden, onStop aufgerufen wird.

Weitere Informationen finden Sie unter Medienprojektion.

Video aufnehmen

Weitere Informationen finden Sie in der Beispiel-App für die Bildschirmaufnahme erfahren Sie, wie Sie mit der Media Projection API die in Echtzeit und auf SurfaceView.

Sie können die DevicePolicyManager verwenden um die Bildschirmaufzeichnung zu verhindern. Für Unternehmenskonten (Android for Work) gilt: Administrator kann die Erhebung von Assistant-Daten für das Arbeitsprofil deaktivieren mit der Methode setScreenCaptureDisabled .

Codelab Android-Geräte ohne App verwalten zeigt, wie Screenshots verboten werden.

Audiowiedergabe aufnehmen

Mit Android 10 wurde die AudioRecordingCapture API eingeführt. Diese API ermöglicht es Apps, Audioinhalte aus anderen Apps zu kopieren. Dieses Funktion ist das Analog zur Bildschirmaufnahme, aber für Audio. Primärer Anwendungsfall für Streaming-Apps, die den Ton von Spielen aufzeichnen möchten.

Beachten Sie, dass die AudioWiedergabeCaptureCapture API keinen Einfluss auf die Latenz der App hat, deren Audioquelle geladen wird. erfasst wird.

Aufnahme-App erstellen

Aus Sicherheits- und Datenschutzgründen gelten bei der Aufzeichnung der Wiedergabe einige Einschränkungen. Damit eine App Audio aufnehmen kann, muss sie folgende Anforderungen erfüllen:

Um Audio aus einer anderen App aufzunehmen, muss deine App eine Objekt AudioRecord und fügen Sie AudioPlaybackCaptureConfiguration hinzugefügt. Gehen Sie dazu so vor:

  1. AudioPlaybackCaptureConfiguration.Builder.build() anrufen um eine AudioPlaybackCaptureConfiguration
  2. Übergeben Sie die Konfiguration an die AudioRecord, indem Sie folgenden Befehl aufrufen: setAudioPlaybackCaptureConfig

Audioaufnahme steuern

Deine App kann festlegen, welche Arten von Inhalten aufgezeichnet werden dürfen und welche anderen eigene Wiedergaben aufzeichnen.

Aufnahme durch Audioinhalte einschränken

Eine App kann einschränken, welche Audiodaten sie aufnehmen kann, indem sie diese verwenden Methoden:

Die Methoden addMatchingUsage() und excludeUsage() können nicht verwendet werden. miteinander verbinden. Sie müssen sich für eine der beiden Optionen entscheiden. Ebenso können Sie addMatchingUid() und excludeUid() nicht verwenden. aus.

Aufnahme durch andere Apps einschränken

Sie können eine App so konfigurieren, dass andere Apps keine Audioinhalte aufzeichnen. Der Ton einer App kann nur aufgenommen werden, wenn die App die folgenden Anforderungen erfüllt:

Nutzung

Der Player, der den Audio erzeugt, muss seine Nutzung festlegen. an USAGE_MEDIA, USAGE_GAME oder USAGE_UNKNOWN

Erfassungsrichtlinie

Die Erfassungsrichtlinie des Spielers muss AudioAttributes.ALLOW_CAPTURE_BY_ALL, sodass andere Apps die Wiedergabe aufzeichnen können. Dazu gibt es mehrere Möglichkeiten:

Wenn diese Voraussetzungen erfüllt sind, kann jeder Ton vom Player aufgenommen werden.

Systemerfassung wird deaktiviert

Die oben beschriebenen Schutzmaßnahmen, die eine Erfassung ermöglichen, gelten nur für Apps. Android-Geräte Systemkomponenten können die Wiedergabe standardmäßig aufzeichnen. Viele dieser Komponenten werden von Android-Anbietern angepasst und unterstützen Funktionen. wie Barrierefreiheit und Untertitelung. Aus diesem Grund wird empfohlen, damit das System die Wiedergaben aufzeichnen kann. In dem seltenen Fall, dass Sie das System die Wiedergabe Ihrer App aufzeichnen soll, setzen Sie die Erfassungsrichtlinie auf ALLOW_CAPTURE_BY_NONE

Richtlinie zur Laufzeit festlegen

Du kannst AudioManager.setAllowedCapturePolicy() anrufen, um die Aufnahme zu ändern während eine App ausgeführt wird. Wenn ein MediaPlayer oder AudioTrack abgespielt wird wenn Sie die Methode aufrufen, ist das Audio nicht betroffen. Schließen und wieder öffnen im Player oder Track, damit die Richtlinienänderung in Kraft tritt.

Richtlinie = Manifest + AudioManager + AudioAttributes

Da die Erfassungsrichtlinie an verschiedenen Stellen festgelegt werden kann, ist es wichtig, um zu verstehen, wie die geltende Richtlinie bestimmt wird. Es wird immer die strengste Erfassungsrichtlinie angewendet. Beispiel: Eine App, Wenn das Manifest enthält, setAllowedCapturePolicy="false" lässt dies nie außerhalb des Systems zu Apps den Ton erfassen, auch wenn AudioManager#setAllowedCapturePolicy eingestellt ist an ALLOW_CAPTURE_BY_ALL. Wenn der Parameter AudioManager#setAllowedCapturePolicy ist auf ALLOW_CAPTURE_BY_ALL gesetzt und der Das Manifest legt setAllowedCapturePolicy="true" fest, aber die AudioAttributes wurden mit AudioAttributes.Builder#setAllowedCapturePolicy(ALLOW_CAPTURE_BY_SYSTEM), danach kann dieser Mediaplayer nicht von systemeigenen Apps erfasst werden.

In der folgenden Tabelle sind die Auswirkungen des Manifest-Attributs und des geltende Richtlinie:

allowAudioWiedergabeCapture GROẞBUCHSTABEN_ÜBER_ALL_ZULASSEN GROẞBUCHSTABEN_BY_SYSTEM_ZULASSEN GROẞBUCHSTABEN_durch_Keine_zulassen
wahr alle Apps Nur System Keine Aufnahme
false Nur System Nur System Keine Aufnahme