Nasıl yapılır? rehberleri

Media3 1.11 - Yenilikler

Okuma süresi 3 dakika
Toni Heidenreich'ın profilini görüntüleme
Toni Heidenreich Android Yazılım Mühendisi

Media3 1.11 yayınlandı. En iyi Android medya uygulamalarının büyük çoğunluğuna güç veren bu sürüm; oynatma, düzenleme ve kullanıcı arayüzü bileşenlerinde yeni özellikler, hata düzeltmeleri ve iyileştirmeler sunar. Jetpack Compose kullanıcı arayüzü modüllerimizi, özelleştirilebilir Player yuvalar, kullanımı kolay varsayılanlar, etkileşimli hareketler, durum gözlemcileri ve PlayerPool kullanılarak kısa video önceden yükleme ile genişletiyoruz. Ayrıca, SystemUI Output Switcher desteğiyle Media3 Cast entegrasyonunu modernize ettik, yeni bir Ktor HTTP istemci ağ uzantısı kullanıma sunduk ve Ogg ile WAV dosyaları için yeni muxing yardımcı programları ekledik.

Önemli noktaları öğrenmek için okumaya devam edin. Değişikliklerin kapsamlı listesi için sürüm notlarının tamamına göz atın.

Oynatma kullanıcı arayüzü ve Oluşturma

Android'de Compose'u öncelikli tutmaya devam ederken media3-ui-compose ve media3-ui-compose-material3 modüllerini genişletmeye devam ediyoruz. Bu güncelleme, oynatıcı düzeniniz üzerinde daha ayrıntılı kontrol, daha zengin etkileşim kalıpları ve Material 3 ile daha derin entegrasyon sunar.

Özelleştirilebilir oynatıcı düzeni

Material 3 Player Composable artık topControls, centerControls, bottomControls ve errorOverlay için özel içerik yuvalarını destekliyor. Kendi composable'larınızı ekleyebilir veya PlayerDefaults'da yayınlanan hazır varsayılanları kullanabilirsiniz:

Player(
  player = player,
  topControls = { PlayerDefaults.TopControls(player) },
  centerControls = { PlayerDefaults.CenterControls(player) },
  bottomControls = { PlayerDefaults.BottomControls(player) },
)

Player Composable, FocusRequester desteğiyle de entegre olarak Android TV, katlanabilir cihazlar ve masaüstü ortamlarında sorunsuz D-pad ve klavye navigasyonu sağlar. 

player_video.png
Özelleştirilmiş kontrollere sahip bir Composable Player örneği

Jestler ve oynatma hızı kontrolü

PlaybackSpeedState artık hızlı ileri/ağır çekim API'si sunuyor. demo-compose app, oynatmayı hızlıca ileri sarmak için uzun basma hareketini ve iki kez dokunarak arama yapmayı gösterir. 1.10 sürümünde kullanıma sunulan ProgressSlider ile birlikte Compose oynatıcı kullanıcı arayüzü artık zengin dokunma ve hareket etkileşimleri sunuyor.

PlayerPool ile kısa video önceden yükleme

Kayar pencereli medya feed'lerine (örneğin, kısa dikey videolar) sahip uygulamalarda birden fazla ExoPlayer örneğini verimli bir şekilde yönetmek yaygın bir zorluktur. Media3 1.11, oynatıcı geri dönüşümünü ve ön yüklemeyi otomatik olarak işlemek için PlayerPool (common-ktx içinde) ve rememberPooledPlayer (ui-compose içinde) özelliklerini sunar.

demo-compose içindeki yeni ShortFormPlayerScreen, bu özelliği uygulamada gösterir. Kullanıcı kaydırdıkça oyuncuların gruplandırıldığı, önceden yüklendiği ve sorunsuz bir şekilde yeniden kullanıldığı dikey olarak sayfalandırılmış bir feed'dir.

MiniController

media3-ui-compose-material3 içindeki yeni MiniController Composable, mevcut öğenin başlığını, sanatçısını, albüm kapağını ve ilerleme durumunu oynatma/duraklatma kontrolleriyle birlikte gösteren kompakt bir oynatma çubuğu sunar. media3-ui-compose-material3 içindeki tüm varsayılan composable'larımız gibi MiniController de Material 3 dinamik renk entegrasyonunu destekler. Bu sayede, kullanıcının duvar kağıdı temasına otomatik olarak uyum sağlayabilir. Bu özellik, kullanıcının içeriklere göz atarken veya etkin yayın oturumları sırasında olduğu gibi kalıcı alt sayfa ya da mini oynatıcı işlevleri için idealdir.

mini_player.png
Albüm kapaklarını, medya meta verilerini ve temel kontrolleri gösteren Media3 MiniController

Meta veriler ve hatalar için genişletilmiş durum tutucular

media3-ui-compose'ya birkaç yeni reaktif durum tutucu ekledik:

  • rememberCurrentMediaItemState: Şu anda oynatılan öğeyle ilgili meta verileri gözlemleyin.
  • rememberPlaylistState: Oynatma listesinin tamamını ve etkin indeksleri gözlemleyin.
  • rememberErrorState – Material 3'te eşleşen ErrorText Composable ve varsayılan ErrorOverlay ile oynatma hatalarını izleyin.

Gelecek sürümlerde yeni eklemeler ve daha fazla özelleştirme seçeneği üzerinde çalışmaya devam edeceğiz. Lütfen proje sorun izleyici ile ilgili düşüncelerinizi paylaşın.

Modernleştirilmiş Cast entegrasyonu

Media3 1.11, Cast uzantısını programatik yapılandırma seçenekleri ve işletim sistemi düzeyinde yönlendirme desteğiyle günceller.

CastParams ve SystemUI Çıkış Değiştirici

Artık Yayın uzantısını CastParams kullanarak yapılandırabilirsiniz:

val castParams = CastParams.Builder()
  .setShowSystemOutputSwitcherOnCastButtonClick(true)
  .build()


Cast.getSingletonInstance(context).initialize(castParams)

setShowSystemOutputSwitcherOnCastIconClick(true) ayarı, desteklenen platform sürümlerinde Android'in yerel SystemUI Output Switcher'ının açılmasını MediaRouteButton yapılandırarak birleşik bir çıkış seçici deneyimi sunar.

Compose'da Reactive MediaRouteButton durumu

Jetpack Compose kullanan uygulamalar artık, iletişim kutusu durumunu otomatik olarak gözlemleyen ve buna göre güncelleyen medya yönlendirme düğmesini (diğer adıyla yayın düğmesi) kolayca ekleyebilir. Media3'ün CastPlayer ile birlikte kullanıldığında başka bir mantığa gerek yoktur.

@Composable
fun TopAppBarWithCast() {
  Row {
    Text(text = "App Title")
    MediaRouteButton()
  }
}
cast_button_2.png
Varsayılan çıkış değiştirici iletişim kutusunu başlatan bir uygulamadaki Media3 medya rotası düğmesi

Temel oynatma ve oturum geliştirmeleri

Eclipsa Video - HAGC dynamic HDR metadata (API 37+)

Eclipsa Video, cihazlar arasında daha tutarlı bir HDR deneyimi sunmayı vaat ediyor. Tutarlı bir temel HDR beyazı, ekrana ve çevreye bağlı olarak uyarlanabilir boşluk payı sayesinde yaratıcı amacın tüm cihazlarda korunmasını sağlıyor.

ExoPlayer artık aşamalı medya (MP4, Matroska) için gerekli HAGC (ST 2094-50) zamanlanmış meta verilerinin oynatılmasını destekliyor. Oynatıcı, HAGC meta veri parçalarını ilişkili video parçasıyla otomatik olarak birleştirir ve meta verileri API 37 ve sonraki sürümlerdeki cihazlarda bant dışı olarak kod çözücüye iletir. ExoPlayer, eski cihazlarda ayarlamalar olmadan standart bir HDR oynatma deneyimi sunmak için sorunsuz bir şekilde geri döner.  

eclipsa.png
Eclipsa Video HDR'nin avantajlarını (ör. daha tutarlı renk kontrastı) gösteren resim

Yeni Ktor HTTP istemci uzantısı

Yeni bir media3-datasource-ktor uzantı modülü, Ktor HTTP yığını tarafından desteklenen KtorDataSource sağlar. Bu, mevcut Cronet ve OkHttp veri kaynağı modüllerine Kotlin öncelikli, coroutine dostu bir alternatif sunar.

Eşzamansız MediaSession bağlantıları

MediaSession.Callback artık onConnectAsync() içeriyor. Bu özellik, kumanda bağlantısı denemelerini eşzamansız olarak işlemenize olanak tanır. Örneğin, bağlantıyı kabul etmeden önce yetkilendirmeyi doğrulayabilirsiniz. Mevcut onConnect ile aynı davranış için Futures.immediateFuture(ConnectionResult) ile birlikte anında Future döndürebilirsiniz. 

override fun onConnectAsync(
  session: MediaSession,
  controller: MediaSession.ControllerInfo
): ListenableFuture<MediaSession.ConnectionResult> {
  return authenticateControllerAsync(controller)
}

Daha güvenli MediaSession varsayılanları

MediaSession.Callback içinde onConnect veya onConnectAsync'yi geçersiz kılmayan uygulamalarda kitaplık artık daha güvenli bir yapılandırmaya ayarlanır. Özellikle, oturum verileri artık varsayılan olarak güvenilmeyen denetleyicilerle paylaşılmıyor. Bu nedenle, bağlantıyı yetkilendirmek için bu geri çağırma yöntemlerini açıkça uygulamadığınız sürece bildirim erişimi olmayan üçüncü taraf veya sistem dışı uygulamaların oturum verilerine erişimi kısıtlanıyor.

Yeni Muxer uygulamaları ve kapsayıcı ayrıştırma

OggMuxer ve WavMuxer

İki yeni özel çoklayıcı ekledik: OggMuxer, OPUS ve VORBIS akışlarını standart .ogg dosyalarında çoklamak için, WavMuxer ise sıkıştırılmamış ve kayan noktalı PCM .wav ses dosyaları oluşturmak için.

Container ayrıştırma ve parça referansları

  • MP4 İz Referansları (tref): Mp4Muxer.addTrackReference, bağımlı meta verilerin veya yardımcı izlerin birincil video akışlarına bağlanmasına olanak tanır.
  • Bölüm Ayıklama: MP4 dosyalarındaki (.m4a.m4b) QuickTime ve Nero bölümleri ile Matroska bölümleri artık sesli kitap ve podcast'te gezinme için Chapter meta veri girişleri olarak ayıklanıyor.

Hata bildirmek, soru sormak veya özellik isteğinde bulunmak için lütfen sorun izleyiciyi kullanın. Sizden haber bekliyoruz.

Okumaya devam et