동영상 및 오디오 재생 캡처

앱은 다른 앱에서 재생 중인 동영상이나 오디오를 녹화할 수 있습니다. 이러한 앱에서 MediaProjection 토큰 있습니다. 이 페이지에서는 방법을 설명합니다. 또한 기기 관리자가 사용 중지할 수 있는 방법을 보여줍니다. 화면 스냅샷을 녹화하는 기능 및 오디오 앱이 다른 앱에서 재생되는 콘텐츠를 녹화하지 못하도록 할 수 있습니다.

MediaProjection 토큰 처리 방법

MediaProjection API 앱이 일회성 액세스 권한을 부여하는 MediaProjection 토큰을 획득하도록 허용 화면 콘텐츠나 오디오를 캡처합니다. Android OS에서 사용자에게 권한을 부여해야 합니다.

OS가 빠른 설정 UI에 활성 MediaProjection 토큰을 표시하고 사용자가 언제든지 토큰에 대한 액세스 권한을 철회할 수 있음 이 경우 세션과 연결된 가상 디스플레이 또는 오디오 스트림의 수신을 중지합니다. 미디어 스트림 앱이 적절히 응답해야 하며, 그러지 않으면 계속 진행됩니다. 무음 또는 검은색 동영상 스트림을 녹화할 수 있습니다.

토큰의 손실을 처리하려면 MediaProjection에 콜백을 등록합니다. kubectl run 명령어를 사용하여 registerCallback 메서드를 호출할 수 있고, onStop 메서드가 호출됩니다.

자세한 내용은 미디어 프로젝션을 참고하세요.

동영상 촬영

자세한 내용은 ScreenCapture 샘플 앱 Media Projection API를 사용하여 기기의 SurfaceView에 표시할 수 있습니다.

DevicePolicyManager 화면 녹화를 방지하세요. 회사 계정 (Android for Work)의 경우 관리자가 직장 프로필의 어시스턴트 데이터 수집을 사용 중지할 수 있습니다. 를 사용하여 setScreenCaptureDisabled 메서드를 사용하여 축소하도록 요청합니다.

Codelab 앱 없이 Android 기기 관리 스크린샷을 금지하는 방법을 보여줍니다.

오디오 재생 캡처

AudioPlaybackCapture API는 Android 10에서 도입되었습니다. 이 API 앱이 다른 앱에서 재생 중인 오디오를 복사할 수 있도록 합니다. 이 화면 캡처와 유사하지만 오디오를 위한 기능입니다. 기본 사용 사례는 특히 게임에서 재생 중인 오디오를 캡처하려는 스트리밍 앱에 적합합니다.

AudioPlaybackCapture API는 오디오가 재생되지 않는 앱의 지연 시간에 영향을 미치지 않습니다. 있습니다.

캡처 앱 빌드

보안과 개인정보 보호를 위해 재생 캡처는 몇 가지 제한을 적용합니다. 오디오를 캡처하려면 앱이 다음과 같은 요구 사항을 충족해야 합니다.

다른 앱에서 오디오를 캡처하려면 앱에서 AudioRecord 객체 로 이동하여 AudioPlaybackCaptureConfiguration 하겠습니다. 다음 단계를 따르세요.

  1. AudioPlaybackCaptureConfiguration.Builder.build()를 호출합니다. kubectl 명령어 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#setAllowedCapturePolicyALLOW_CAPTURE_BY_ALL로 설정되고 매니페스트가 setAllowedCapturePolicy="true"를 설정하지만 미디어 플레이어의 AudioAttributes 빌드 도구 AudioAttributes.Builder#setAllowedCapturePolicy(ALLOW_CAPTURE_BY_SYSTEM) 이후 이 미디어 플레이어는 시스템 이외의 앱에서 캡처할 수 없습니다.

아래 표에는 매니페스트 속성 및 적용 정책:

allowAudioPlaybackCapture ALLOW_CAPTURE_BY_ALL ALLOW_CAPTURE_BY_SYSTEM ALLOW_CAPTURE_BY_NONE
true 모든 앱 시스템만 캡처 안 함
false 시스템만 시스템만 캡처 안 함