MediaProvider modülü, dizine eklenen meta verileri (ses, video ve resimler) optimize eder SD kartlardan ve USB cihazlarından) sağlar ve bu verileri MediaStore herkese açık API'ler. MediaProvider modülü, kullanıcı gizliliğini korumak için kapsamlı depolama alanını güvenlik modeli Bu değişiklik, hassas konum meta verilerini çıkartmayı da içeriyor. Bu modül güncellenebilir ve Android'in güvenlik sorunlarına daha hızlı yanıt vermesini sağlar. (hassas kullanıcı verilerini güvende tutma) ve yeni medya biçimlerini daha hızlı ekleme (hem kullanıcılara hem de geliştiricilere tutarlılık sağlar).
Android 10'daki değişiklikler
Android 10'da, kötü amaçlı yazılım algılama ve dışa aktarma işlemiyle ilgili verileri, özellikle:
Dosya içeriği türünü, dosyanın MIME türünün ilk bölümünü kullanarak belirleme. Örneğin, işletim sistemi hem
image/png
hem deimage/x-newly-invented-format
, birer resim olduğu için ilgili izinlere sahip olursunuz.MIME türünü yalnızca dosya uzantısını kullanarak (ve içerik algılama ).
upstream Debian Linux ve Android eşleme öğeleri için de kullanılabilir.
video/*
veaudio/*
dosyalarından ilgili veriler döndürülüyor (aracılığıyla)MediaMetadataRetriever
) veimage/*
dosya (ExifInterface
üzerinden).
Android 11'deki değişiklikler
Android 11'de MediaProvider modülü Android 10'da aşağıdaki iyileştirmelerle yapılan değişiklikler:
Dizine eklemeyle ilgili iyileştirmeler. MediaProvider modülü artık meta verileri Mevcut meta verilerin MediaStore herkese açık API'leriyle uzlaştırılması. Değişiklikler şunlardır:
Etkinleştirilecek yeni
is_favorite
sütunu veQUERY_ARG_MATCH_FAVORITE
bağımsız değişkeni galeri tarzı uygulamaları kullanarak medyayı bu sütuna göre hızlıca filtreleyebilirsiniz.Renk alanı meta verileri dizine ekleniyor.
Yeni "is_trashed" etkinleştirmek için sütununu ve
QUERY_ARG_MATCH_TRASHED
bağımsız değişkenini ekleyin galeri stili uygulamaları sayabiliriz.Tek bir kullanıcı ile birden fazla öğenin toplu olarak değiştirilmesini sağlayan yeni API'ler iletişim kutusu istemi,
createDeleteRequest()
,createFavoriteRequest()
,createTrashRequest()
vecreateWriteRequest()
.Hızlı bir şekilde kullanılacak yeni
GENERATION_ADDED
veGENERATION_MODIFIED
sütunları gerçekleşen değişiklikleri güvenilir bir şekilde tespit etmek için senkronizasyon noktası.Ek meta veri sütunlarıyla kullanım için yeni
GROUP BY
herkese açık API'si kullanılabilir.
PNG ve WebP'den meta veri ayıklamak için
ExifInterface
iyileştirmesi container'lar.Ekranda
DateTimeOriginal
meta verisi yazmak içinSystemUI
ürününde yapılan iyileştirmeler yakalamanız gerekir.
Ayrıca, artık yeni medya biçimleri ekleyerek MediaProvider'ı özelleştirebilirsiniz. dizine eklenmesi gereken depolama cihazlarını işaretlemek ve hatta MTP'nin yerine geçer yığını. Ayrıntılar için Özelleştirme bölümüne bakın.
Modül sınırı
Android 11,
packages/providers/MediaProvider
itibarıyla yeni bir konuma (önemli istisna dışında)
mantığıyla ilgilidir. Ayrıca,
frameworks/base/core/java/android/provider/MediaStore.java
artık şu sitenin içinde:
packages/providers/MediaProvider
üzerinde modül sınırı.
Paket biçimi
MediaProvider modülü, APEX içinde APK biçimindedir.
Bağımlılıklar
MediaProvider bağımlılıkları özelleştirmelerle (yani MediaProvider'ı özelleştirirseniz uygulamanızın .
Özel veya standart olmayan medya dosya biçimlerini (örneğin, tarafından oluşturulan her özel kamera uygulaması tarafından dizine eklemeyi etkinleştirmek için
MimeUtils
ve Medya Ayıklayıcı modülü ile biçimlendirin MediaProvider'dır.MediaProvider'ın özel bir depolama cihazı grubunu (ör. SD kart yuvası ve USB bağlantı noktası) içeriyorsa
StorageManagerService
uygulamasındaVolumeInfo.MOUNT_FLAG_INDEXABLE
işareti.Özel (AOSP olmayan) bir MTP uygulaması kullanırken, sağlamak için yalnızca herkese açık API'lere ve sistem API'lerine ihtiyaç duyar. ve MediaStore ile etkileşime geçmeleri gerekir.
Özelleştirme
Artık yeni medya biçimleri ekleyebilir, dizine eklenen depolama cihazlarını etkileyebilir, ve MTP yığınını değiştirin.
Özel medya biçimleri. Her yeni özel medya biçimi için bir eşleme yöntemini kullanabilirsiniz. Yalnızca IANA tescil belgesinin işlemi hakkında daha fazla bilgi edinin.
AOSP'de önceden tanımlanmış bir uzantıyı veya MIME türünü yeniden tanımlayamazsınız.
MediaProvider,
video/*
veaudio/*
dosyaları için danışmanlık yapmaya devam ediyorMediaMetadataRetriever
. Geri dönmek için Android 10 Medya Ayıklayıcıları kullanma meta verileri içerir.MediaProvider,
image/*
dosyaları içinExif
üzerinde standartlaştırmaya devam ediyor: meta verilerdir. Ayıklayıp geri dönmek içinandroid.media.ExifInterface
öğesini uzatabilirsiniz Tüm özel resim biçimleri içinExif
meta verileri.
Depolama cihazlarını dizine ekleme işareti. MediaProvider, döndürülen tüm birimleri dizine ekler
StorageManager.getStorageVolumes()
ölçütüne göre, buradaStorageVolume.getMediaStoreVolumeName()
, null değildir. URL'nin dizine eklenen hacimleri etkilemek amacıyla döndürülen cilt listesidir. Ancak, Geçici birimler (USB OTG sürücüleri gibi) dahil.MTP yığını değişimi. Android 11 MTP'yi yerleştirir gösterir ve bu sinyallere, arka uçta tutarlı olarak ve herkese açık API'ler.
Test
MediaProvider'ın işlevselliğini aşağıdaki testleri kullanarak doğrulayabilirsiniz:
MediaStore herkese açık API'lerinin işlevselliğini doğrulamak için şuradaki testleri kullanın:
CtsProviderTestCases
paketine (Android Compatibility Test Suite - CTS) erişebilirsiniz.MediaProvider dahililerinin işlevselliğini doğrulamak için
MediaProviderTests
Her iki test grubunu birlikte çalıştırmak için aşağıdaki atest
komutunu kullanın:
atest --test-mapping packages/providers/MediaProvider