Bir uygulama, başka bir uygulamadan oynatılan videoyu veya sesi kaydedebilir. Böyle
uygulamaların
MediaProjection
jeton
sağlayabilir. Bu sayfada bunun nasıl yapılacağı açıklanmaktadır. Ayrıca, cihaz yöneticisinin nasıl devre dışı bırakabileceği de gösterilir.
ekran görüntülerini kaydetme imkanı ve ses uygulamasının bu durumu
diğer uygulamaların oynattığı içeriği kaydetmesine engel olur.
MediaProjection
jetonu nasıl kullanılır?
MediaProjection
API
uygulamaların, kullanıcılara tek seferlik erişim sağlayan bir MediaProjection
jetonu almasına izin verir
veya sesini yakalamanızı sağlar. Android OS, kullanıcıdan
izninizin olması gerekir.
İşletim sistemi, Hızlı Ayarlar kullanıcı arayüzünde etkin MediaProjection
jetonlarını gösterir ve
Kullanıcıların jetona erişimi istedikleri zaman geri çekmelerine olanak tanır. Böyle bir durumda
oturumla ilişkili sanal ekranlar veya ses akışlarının almayı durdurma
medya akışı gerçekleştirebilirsiniz. Uygulamanız düzgün bir şekilde yanıt vermelidir, aksi takdirde devam eder
kullanarak ses kapatma veya siyah video akışı kaydedebilirsiniz.
Jeton kaybını yönetmek için MediaProjection
öğesinde bir geri çağırma kaydedin
kullanılan örnek bir
registerCallback
yöntemini kullanın ve
onStop
yöntemi çağrılır.
Daha fazla bilgi için Medya projeksiyonu bölümüne bakın.
Video çek
Bkz. ScreenCapture örnek uygulaması Media Projection API'yi kullanarak cihazın ekran görüntüsünü almayı görüntüleyin ve bir SurfaceView'da görüntüleyin.
Şunu kullanabilirsiniz: DevicePolicyManager
engelleyebilirsiniz. Kurumsal hesaplarda (Android for Work),
yönetici, iş profili için asistan verilerinin toplanmasını devre dışı bırakabilir
öğesini kullanarak
setScreenCaptureDisabled
yöntemidir.
Codelab Uygulama Kullanmadan Android Cihazları Yönetme ekran görüntülerinin nasıl yasaklanacağını gösterir.
Ses çalma
AudioPlaybackCapture API, Android 10'da kullanıma sunulmuştur. Bu API uygulamaların, diğer uygulamalar tarafından çalınan sesi kopyalamasına olanak tanır. Bu özellik, ekran görüntüsüne benzer, ancak işitseldir. Birincil kullanım alanı 'i kullanın.
AudioPlaybackCapture API, sesi kapalı olan uygulamanın gecikmesini bu şekildedir.
Yakalama uygulaması oluşturma
Oynatma yakalama, güvenlik ve gizlilik açısından bazı sınırlamalar uygular. Uygulamaların ses kaydedebilmesi için aşağıdaki gereksinimleri karşılaması gerekir:
- Uygulama,
RECORD_AUDIO
iznidir. - Uygulama,
MediaProjectionManager.createScreenCaptureIntent()
ve kullanıcının bunu onaylaması gerekir. - Yakalama ve oynatma uygulamaları aynı kullanıcı profilinde olmalıdır.
Başka bir uygulamadan ses yakalamak için uygulamanızın
AudioRecord
nesne
ve bir
AudioPlaybackCaptureConfiguration
. Şu adımları uygulayın:
AudioPlaybackCaptureConfiguration.Builder.build()
numaralı telefonu arayın mevcut birAudioPlaybackCaptureConfiguration
.- Şu numarayı çağırarak yapılandırmayı
AudioRecord
cihazına aktarın:setAudioPlaybackCaptureConfig
Ses yakalamayı kontrol etme
Uygulamanız ne tür içerikleri kaydedebileceğini ve diğer kendi oynatmasını kaydedebilir.
Ses içeriği yakalamayı kısıtlama
Bir uygulama, şunları kullanarak yakalayabileceği sesi sınırlayabilir: yöntemleri:
- Şuna bir
AUDIO_USAGE
geçirin: AudioPlaybackCaptureConfiguration.addMatchingUsage() belirli bir kullanımı yakalamanızı sağlar. Birden fazla kullanım belirtmek için yöntemi birden çok kez çağırın. - AudioPlaybackCaptureConfiguration.excludedUsage() işlevine bir
AUDIO_USAGE
iletip kullanılmasını yasaklar. Birden fazla kullanım belirtmek için yöntemi birden çok kez çağırın. - AudioPlaybackCaptureConfiguration.addMatchingUid() öğesine bir UID iletin. kullanarak yalnızca belirli bir UID'ye sahip uygulamaları yakalayabilir. Birden fazla UID belirtmek için yöntemi birden çok kez çağırın.
- Bu UID'yi yakalamayı yasaklamak için AudioPlaybackCaptureConfiguration.excludedUid() öğesine bir UID iletin. Birden fazla UID belirtmek için yöntemi birden çok kez çağırın.
addMatchingUsage()
ve excludeUsage()
yöntemlerini kullanamayacağınızı unutmayın
birlikte. İkisinden birini seçmeniz gerekir. Benzer şekilde, addMatchingUid()
ve excludeUid()
kullanılamaz
ile aynı anda oynatabilirsiniz.
Diğer uygulamalar tarafından yakalama işlemi kısıtlanıyor
Bir uygulamayı, diğer uygulamaların o uygulamanın sesini yakalamasını önleyecek şekilde yapılandırabilirsiniz. Bir uygulamadan gelen ses, yalnızca uygulamanın aşağıdaki şartları karşılaması durumunda yakalanabilir:
Kullanım
Sesi üreten oynatıcı kullanımını ayarlamalıdır
alıcı: USAGE_MEDIA
USAGE_GAME
veya
USAGE_UNKNOWN
.
Yakalama politikası
Oynatıcının yakalama politikası
AudioAttributes.ALLOW_CAPTURE_BY_ALL
Bu, diğer uygulamaların oynatmayı yakalamasına olanak tanır. Bunu birkaç şekilde yapabilirsiniz:
- Yakalamayı tüm oynatıcılarda etkinleştirmek için şunları ekleyin:
android:allowAudioPlaybackCapture="true"
vemanifest.xml
dosya - Ayrıca,
AudioManager.setAllowedCapturePolicy(AudioAttributes.ALLOW_CAPTURE_BY_ALL)
. - Tek bir oynatıcıda bu politikayı, oynatıcıyı
AudioAttributes.Builder.setAllowedCapturePolicy(AudioAttributes.ALLOW_CAPTURE_BY_ALL)
. (AAudio
çağrısı kullanıyorsanızAAudioStreamBuilder_setAllowedCapturePolicy(AAUDIO_ALLOW_CAPTURE_BY_ALL)
.)
Bu ön koşullar karşılanırsa oynatıcı tarafından üretilen tüm sesler yakalanabilir.
Sistem yakalamayı devre dışı bırakma
Yukarıda açıklanan yakalamaya izin veren korumalar yalnızca uygulamalar için geçerlidir. Android
sistem bileşenleri varsayılan olarak oynatmayı yakalayabilir.
Bu bileşenlerin çoğu Android satıcıları ve destek özellikleri tarafından özelleştirilmiştir
erişilebilirlik ve altyazı gibi. Bu nedenle, uygulamanızın
sisteme, oynatılan içeriği kaydetmesine izin verir. Nadiren de olsa
uygulamanın oynatma kaydını yakalamasını istiyorsanız yakalama politikasını
ALLOW_CAPTURE_BY_NONE
.
Çalışma zamanında politika ayarlama
Yakalamayı değiştirmek için AudioManager.setAllowedCapturePolicy()
öğesini çağırabilirsiniz
politikası var. Bir MediaPlayer veya AudioTrack çalıyorsa
yöntemi çağırdığınızda ses etkilenmez. Kapatıp yeniden açmanız gerekiyor
geçerli olması için oynatıcıya veya parçaya geri ödeme yapar.
Politika = manifest + AudioManager + AudioAttributes
Yakalama politikası çeşitli yerlerde belirtilebilir. Bu nedenle,
etkili politikanın nasıl belirlendiğini anlamaktır.
Her zaman en kısıtlayıcı yakalama politikası uygulanır. Örneğin,
manifesto şunları içerir: setAllowedCapturePolicy="false"
hiçbir zaman sistem dışı reklamlara izin vermez
AudioManager#setAllowedCapturePolicy
ayarlanmış olsa bile sesini yakalayacak uygulamalar
alıcı: ALLOW_CAPTURE_BY_ALL
. Benzer bir şekilde,
AudioManager#setAllowedCapturePolicy
, ALLOW_CAPTURE_BY_ALL
olarak ayarlandı ve
manifesto setAllowedCapturePolicy="true"
değerini ayarlar, ancak medya oynatıcının
AudioAttributes
şununla oluşturulmuştur:
AudioAttributes.Builder#setAllowedCapturePolicy(ALLOW_CAPTURE_BY_SYSTEM)
, ardından
bu medya oynatıcı, sistem dışı uygulamalar tarafından görüntülenemez.
Aşağıdaki tabloda, manifest özelliğinin ve geçerli politika:
allowSesÇalmaYatırma | TÜMÜNE_İZİN_VEREN_YAZI | SİSTEMİN_YAZISI_İZİN_VEREN_YAPILACAKLAR | YOK_ALTYAZI_YAZI |
---|---|---|---|
doğru | herhangi bir uygulama | yalnızca sistem | yakalama yok |
yanlış | yalnızca sistem | yalnızca sistem | yakalama yok |