Android 10 veya sonraki sürümler, çerçeve bileşenlerinin Google Play Store altyapısı veya iş ortağı tarafından sağlanan kablosuz (OTA) mekanizması üzerinden güncellenmesini sağlayan çeşitli güncellenebilir medya bileşenleri içerir. Medya bileşenleri, tam sistem resmi güncellemesi gerektirmeden güvenlik güncellemeleri ve özellik güncellemeleri sunmayı sağlayan modüllere birlikte paketlenir.
Güncellenebilir medya bileşenleri aşağıdaki modüllerde bulunur.
Media. Bu modül medya ayıklayıcıları,
MediaSession2
API'leri veMediaParser
API'leri içerir.Medya codec'leri Bu modülde, güncellenebilir Codec2 yazılım bileşenleri bulunur.
MediaProvider. Bu modül, dizine eklenen meta verileri (SD kartlardan ve USB cihazlardan alınan ses, video ve resimler) optimize eder ve bu verileri MediaStore herkese açık API'leri aracılığıyla uygulamalara sunar.
Özel ayıklayıcılar ve kod çözücüler ekleme hakkında ayrıntılı bilgi için Medya Bileşenlerini Özelleştirme başlıklı makaleyi inceleyin.
Medya ayıklama araçları
Android 9 ve önceki sürümlerde ayıklayıcılar tek bir libstagefright.so
dosyasında derlenir. Android 10 veya sonraki sürümlerde medya
ayıklayıcıları ayrı bileşenlerdir. Her ayıklayıcının, ayıklayıcının belirli bir medya dosyasını işleyip işleyemeyeceğini belirlemek için bir sniffer işlevi sağlayan bir giriş noktası ve belirli bir medya dosyası için ayıklayıcı örneği oluşturan bir factory işlevi içeren kendi .so
dosyası vardır. Her ayıklayıcı, adlandırılır (hata ayıklama işlemine yardımcı olmak için) ve hangi ayıklayıcının en yeni olduğunu belirtmek için sürüm numarasıyla etiketlenir.
Medya çerçevesi, mevcut tüm ayıklayıcı .so
dosyalarını otomatik olarak yükler. Böylece, libstagefright
veya diğer medya çerçevesi kitaplıklarını değiştirmenize gerek kalmadan yeni bir .so
dosyası ekleyerek kendi ayıklayıcılarınızı oluşturabilirsiniz. Google tarafından sağlanan ayıklayıcı yerine özel bir ayıklayıcının tercih edilmesini de sağlayabilirsiniz.
MediaSession2 API
MediaSession2 API, medya uygulamalarının aktarım denetimlerini ve oynatma bilgilerini Android çerçevesi ve diğer uygulamalar gibi başka işlemlere göstermesine olanak tanır. Bu bileşen özelleştirilemez.
MediaParser API'sı
MediaParser API, ExoPlayer'ın medya kapsayıcılarından medya örnekleri ayıklamak için çerçeve medya kapsayıcı ayrıştırıcılarını verimli bir şekilde kullanmasına olanak tanır. MediaParser, kaynak kodunda aşağıdaki değişiklikleri içerir:
frameworks/base/apex/media/framework/java/android/media/MediaParser.java
. API ve ince katman uygulaması.external/exoplayer/
. MediaParser'ın oluşturulduğu Exo oynatıcı tam kaynakları.
MediaParser API özelleştirilemez. MediaParser'ı test etmek için cts/tests/tests/mediaparser/
bölümündeki testleri kullanın.
Medya codec'leri
Medya Codecs modülü, güncellenebilir Codec2 yazılımı bileşenleri içerir. Özelleştirme desteği sürümler arasında farklılık gösterir:
Android 11 veya sonraki sürümlerde (özellikle Google Play Sistem Güncellemesi 292100200 sürümü) ION bellek ayırmayla ilgili parametreleri özelleştirebilirsiniz (ayrıntılar için aşağıya bakın).
Android 9 veya önceki sürümlerde OMX codec API güncellenemez ancak tedarikçi bölümünde kullanmaya devam edebilirsiniz.
ION bellek ayırma
Android 11 veya sonraki sürümlerde ve Google Play Sistem Güncellemesi 292100200 sürümü veya sonraki sürümlerde ION bellek ayırma için aşağıdaki parametreleri özelleştirebilirsiniz.
Parametre | Varsayılan değer | Açıklama |
---|---|---|
heapMask |
0xFFFFFFFF |
Tüm yığın türlerine izin verilir. |
allocFlags |
0 |
Hiçbir işaret ayarlanmadı. |
minAlignment |
0 |
Hizalama yok. |
Parametreleri geçersiz kılmak için:
Varsayılan bir
android.hardware.media.c2
hizmeti kaydedin ve özel ION kullanım parametreleri sağlayın.Yeni bir hizmet oluşturmak için frameworks/av/media/codec2/hidl/services/vendor.cpp dosyasını deponuza kopyalayın ve ardından
StoreImpl::Interface::SetIonUsage()
dosyasını gerektiği gibi değiştirin.(OMX)
media.codec
işlemini yeniden kullanmak için frameworks/av/media/codec2/hidl/services/vendor.cpp adresindekiStoreImpl
sınıfını kopyalayıp mevcutmediacodec
dosyasına (frameworks/av/services/mediacodec/main_codecservice.cpp) kaydedin.
Aşağıdaki kodu
manifest.xml
cihazına ekleyin.<hal format="hidl"> <name>android.hardware.media.c2</name> <transport>hwbinder</transport> <version>1.0</version> <interface> <name>IComponentStore</name> <instance>default</instance> </interface> </hal>
Biçim ve bağımlılıklar
Medya modülü (com.android.media
) ve Medya Codec'i modülü (com.android.media.swcodec
) APEX biçimindedir. Dahil edilen medya bileşenleri yalnızca NDK API'lerini kullanır.
Güncellemeler
Güncelleme sırasında cihazdaki çerçeve bileşenleri, Java ve yerel kod içeren bir APEX paketi yükler.
Şekil 1. Medya bileşeni güncelleme akışı
Çerçeve APEX paketini yükledikten sonra cihaz yeniden başlatılır ve disk görüntüsünü monte eder. Medya sistemi işlemleri (media.extractor
ve media.codec
) ise güncellenmiş modülleri montaj noktasından yükler.