Jetpack Compose ExoPlayer kullanımı

Tunahan Özataç
Berkut Teknoloji
Published in
3 min readOct 20, 2022

Selamlar, bu yazımda Jetpack Compose ile ses ve görüntü oynatmamızı sağlayan ExoPlayer kütüphanesini inceliyor olacağız. Hadi başlayalım o zaman. 🥳

ExoPlayer Nedir?

  • ExoPlayer, android uygulamamızda ses ve görüntü oynatmamıza olanak sağlayan medya oynatıcıdır.
  • ExoPlayer ile uzak sunucudaki veya local de bulunan ses veya görüntüyü oynatmamızı sağlar.
  • Android’in MediaPlayer’e alternatif olarak geliştirilmiştir fakat DASH ve SmoothStreaming desteklemesi gibi birçok MediaPlayer’e göre avantaja sahiptir.

ExoPlayer Desteklediği Formatlar?

ExoPlayer’i kullanırken dikkat etmemiz gereken önemli noktalardan biriside desteklediği formatlar çalıştığımız projede bazen farklı formatlarda gelebiliyor.

  • HLS -> HlsMediaSource
  • DASH -> DashMediaSource
  • SS -> SsMediaSource
  • MP4 and others -> ExtractorMediaSource

Formatlar hakkında detaylı bilgiyi dokümantasyondan ulaşabilirsiniz.

ExoPlayer Desteklenen Cihazlar?

  • Temel ExoPlayer kullanım durumları için gereken minimum Android sürümleri şunlardır:
Supported devices

ExoPlayer Kullanımı?

  • ExoPlayer’i kullanabilmek için API seviyesi 23 veya üstü olan bir Emulator kullanmamız gerekmektedir.
  • İlk olarak uygulamamızda internet üzerinden video gösterimi yapacagımız için AndroidManifest.xml dosyasına internet izinlerini alıyoruz. Ardından Manifest içerisine Http ile çalışacağımız için application tagı içerisine usesCleartextTraffic ekliyoruz.
  • Daha sonra ExoPlayer’i kullanabilmek için Build.gradle (app module) içerisine kütüphane bağımlılığını ekliyoruz.
  • Composable function kodlarımıza geçtiğimizde ilk olarak Scaffold içerisine en basit şekilde bir TopAppBar ekliyoruz. Content içerisinde VideoPlay adında function oluşturuyoruz ve bu method ExoPlayer’i kullanacağımız method.
  • Sırada VideoPlay Composable fonksiyonunu oluşturacağız.
  • ExoPlayer’i incelerken jetpack compose hazır composable fonksiyonlarıda kullanacağız. Örnek; Column, Modifier, LocalContext gibi konuları değinmeyeceğim dilerseniz temel konuları jetpack compose dokümantasyondan inceleyebilirsiniz.

https://developer.android.com/jetpack/compose/documentation

  • Composable fonksiyonumuzun içerisine Column ile maximum size veriyoruz ve ekranı ortalıyoruz.
  • ExoPlayer’i kullanabilmemiz için context’i tanımlıyoruz. Daha sonra ExoPlayer nesnesini oluşturuyoruz. Daha sonra MediaItem’ı içerisine videoUrl vererek tanımlıyoruz. Buradaki url uzak sunucuda ki url de olabilir local deki bir ses veya görüntüde olabilir.
  • Oluşturduğumuz mediaItem’ı setMediaItem içerisine veriyoruz. playWhenReady = true diyerek video oynatılmaya hazır olduğunda oynatılmasını sağlıyoruz. Prepare() ile de player’ı hazır hale getiriyoruz.
  • AndroidView() ile geleneksel Görünümleri, ViewGroup’ları vb. rahatlıkla kullanmamızı sağlayan sınıftır, içerisinde StyledPlayerView kullanarak mExoPlayer’i player e verdik bu sayede oynatma işlemini başarı ile tamamladık.

Bu yazımda ExoPlayer’in temel şekilde Android’in Jetpack compose da nasıl kullanıldığını inceledik. Umarım faydalı olmuştur. GitHub repo’suna buradan ulaşabilirsiniz. Bir sonraki yazıda görüşmek dileğiyle. 😊

--

--