Başlangıç

Basit kullanım alanlarında ExoPlayer ile çalışmaya başlamak için aşağıdaki adımları uygulamanız gerekir:

  1. ExoPlayer'ı projenize bağımlılık olarak ekleyin.
  2. ExoPlayer örneği oluşturun.
  3. Oynatıcıyı bir görünüme ekleyin (video çıkışı ve kullanıcı girişi için).
  4. Oynatıcıyı MediaItem ile oynatmaya hazırlayın.
  5. İşiniz bittiğinde oynatıcıyı bırakın.

Bu adımlar aşağıda daha ayrıntılı olarak açıklanmıştır. Tam bir örnek için ana demo uygulamasındaki PlayerActivity bölümüne bakın.

ExoPlayer'ı bağımlılık olarak ekleme

ExoPlayer modülleri ekleme

AndroidX Media3'ü kullanmaya başlamanın en kolay yolu, uygulamanızın build.gradle dosyasında ihtiyacınız olan kitaplıklara gradle bağımlılıkları eklemektir.

Örneğin, DASH oynatma desteği ve kullanıcı arayüzü bileşenleri içeren ExoPlayer'a bağımlı olmak için modüllere şu şekilde bağımlılıklar ekleyebilirsiniz:

Kotlin

implementation("androidx.media3:media3-exoplayer:1.7.1")
implementation("androidx.media3:media3-exoplayer-dash:1.7.1")
implementation("androidx.media3:media3-ui:1.7.1")
implementation("androidx.media3:media3-ui-compose:1.7.1")

Groovy

implementation "androidx.media3:media3-exoplayer:1.7.1"
implementation "androidx.media3:media3-exoplayer-dash:1.7.1"
implementation "androidx.media3:media3-ui:1.7.1"
implementation("androidx.media3:media3-ui-compose:1.7.1")

Burada 1.7.1, tercih ettiğiniz sürümdür (en son sürümü sürüm notlarına bakarak bulabilirsiniz). Tüm modüller aynı sürümde olmalıdır.

AndroidX Media3, ek işlevler sağlamak için harici kitaplıklara bağlı kitaplık modüllerine sahiptir. Bazıları Maven deposunda bulunurken diğerlerinin manuel olarak oluşturulması gerekir. Kitaplık dizinine göz atın ve ayrıntılar için tek tek README dosyalarını inceleyin.

Kullanılabilen kitaplık modülleri hakkında daha fazla bilgiyi Google Maven AndroidX Media sayfasında bulabilirsiniz.

Java 8 desteğini etkinleştirme

Henüz etkinleştirilmediyse ExoPlayer'a bağlı tüm build.gradle dosyalarında en az Java 8 desteğini etkinleştirmeniz gerekir. Bunu yapmak için android bölümüne aşağıdakileri ekleyin:

compileOptions {
  targetCompatibility JavaVersion.VERSION_1_8
}

Oynatıcıyı oluşturma

Çeşitli özelleştirme seçenekleri sunan ExoPlayer.Builder kullanarak bir ExoPlayer örneği oluşturabilirsiniz. Aşağıdaki kod, örnek oluşturmanın en basit örneğidir.

Kotlin

val player = ExoPlayer.Builder(context).build()

Java

ExoPlayer player = new ExoPlayer.Builder(context).build();

İş parçacığı oluşturma hakkında not

ExoPlayer örneklerine tek bir uygulama iş parçacığından erişilmelidir. Çok büyük bir çoğunlukta bu, uygulamanın ana ileti dizisi olmalıdır. ExoPlayer'ın kullanıcı arayüzü bileşenlerini veya IMA uzantısını kullanırken uygulamanın ana iş parçacığını kullanmanız gerekir.

Bir ExoPlayer örneğine erişilmesi gereken iş parçacığı, oynatıcı oluşturulurken Looper iletilerek açıkça belirtilebilir. Looper belirtilmemişse oynatıcının oluşturulduğu iş parçacığının Looper değeri kullanılır. Bu iş parçacığında Looper yoksa uygulamanın ana iş parçacığının Looper değeri kullanılır. Her durumda, oyuncuya erişilmesi gereken iş parçacığının Looper değeri Player.getApplicationLooper kullanılarak sorgulanabilir.

ExoPlayer'ın iş parçacığı modeli hakkında daha fazla bilgi için ExoPlayer Javadoc'un "İş parçacığı modeli" bölümüne bakın.

Oynatıcıyı bir görünüme ekleme

ExoPlayer kitaplığı, medya oynatma için önceden oluşturulmuş çeşitli kullanıcı arayüzü bileşenleri sağlar. Bunlar arasında, videonun oluşturulduğu bir PlayerControlView, bir SubtitleView ve bir Surface öğesini kapsayan PlayerView bulunur. Uygulamanızın düzen xml'sine PlayerView dahil edilebilir. Örneğin, oynatıcıyı görünüme bağlamak için:

Kotlin

// Bind the player to the view.
playerView.player = player

Java

// Bind the player to the view.
playerView.setPlayer(player);

ExoPlayer'ın önceden oluşturulmuş kullanıcı arayüzü bileşenlerinin kullanılması isteğe bağlıdır. Kendi kullanıcı arayüzünü uygulayan video uygulamalarında hedef SurfaceView, TextureView, SurfaceHolder veya Surface, ExoPlayer'ın sırasıyla setVideoSurfaceView, setVideoTextureView, setVideoSurfaceHolder ve setVideoSurface yöntemleri kullanılarak ayarlanabilir. Listener.onCues geri çağırma işlevi, oynatma sırasında oluşturulması gereken altyazıları almak için, setImageOutput ise kod çözümü yapılmış resimleri almak için kullanılabilir.

Daha rahat bir kullanıcı deneyimi için keepScreenOn özelliğini eklemeyi veya ExoPlayer'da uyandırma kilidini ayarlamayı düşünebilirsiniz. Cihazın uyanık kalmasına neden olan diğer işlemleri arka plan çalışması sayfalarında inceleyebilirsiniz.

android:keepScreenOn="true"

Media3 kullanıcı arayüzü bileşenlerini kullanma ve bunları özelleştirme hakkında daha fazla bilgiyi Kullanıcı Arayüzü sayfasında bulabilirsiniz.

Oynatma listesini doldurma ve oynatıcıyı hazırlama

ExoPlayer'da her medya parçası bir MediaItem ile temsil edilir. Bir medya öğesini oynatmak için karşılık gelen bir MediaItem oluşturmanız, bunu oynatıcıya eklemeniz, oynatıcıyı hazırlamanız ve oynatmayı başlatmak için play işlevini çağırmanız gerekir:

Kotlin

// Build the media item.
val mediaItem = MediaItem.fromUri(videoUri)
// Set the media item to be played.
player.setMediaItem(mediaItem)
// Prepare the player.
player.prepare()
// Start the playback.
player.play()

Java

// Build the media item.
MediaItem mediaItem = MediaItem.fromUri(videoUri);
// Set the media item to be played.
player.setMediaItem(mediaItem);
// Prepare the player.
player.prepare();
// Start the playback.
player.play();

ExoPlayer, oynatma listelerini doğrudan desteklediği için oynatıcıyı, art arda oynatılacak birden fazla medya öğesiyle hazırlamak mümkündür:

Kotlin

// Build the media items.
val firstItem = MediaItem.fromUri(firstVideoUri)
val secondItem = MediaItem.fromUri(secondVideoUri)
// Add the media items to be played.
player.addMediaItem(firstItem)
player.addMediaItem(secondItem)
// Prepare the player.
player.prepare()
// Start the playback.
player.play()

Java

// Build the media items.
MediaItem firstItem = MediaItem.fromUri(firstVideoUri);
MediaItem secondItem = MediaItem.fromUri(secondVideoUri);
// Add the media items to be played.
player.addMediaItem(firstItem);
player.addMediaItem(secondItem);
// Prepare the player.
player.prepare();
// Start the playback.
player.play();

Oynatma listesi, oynatma sırasında güncellenebilir. Oynatıcının tekrar hazırlanması gerekmez. Oynatma listesini doldurma ve oynatma listesiyle ilgili işlemler hakkında daha fazla bilgiyi Oynatma listeleri sayfasında bulabilirsiniz. Kırpma ve altyazı dosyalarını ekleme gibi medya öğeleri oluştururken kullanabileceğiniz farklı seçenekler hakkında daha fazla bilgiyi Medya öğeleri sayfasında bulabilirsiniz.

Oynatıcıyı kontrol etme

Oynatıcı hazırlandıktan sonra, oynatıcıdaki yöntemler çağrılarak oynatma kontrol edilebilir. En yaygın kullanılan yöntemlerden bazıları şunlardır:

  • play ve pause ile oynatmayı başlatabilir ve duraklatabilirsiniz.
  • seekTo, medyada arama yapılmasına olanak tanır.
  • hasPrevious, hasNext, previous ve next, oynatma listesinde gezinmeye olanak tanır.
  • setRepeatMode, medyanın döngüye alınıp alınmayacağını ve nasıl döngüye alınacağını kontrol eder.
  • setShuffleModeEnabled, oynatma listesinde karıştırma özelliğini kontrol eder.
  • setPlaybackParameters oynatma hızını ve ses tonunu ayarlar.

Oynatıcı bir PlayerView veya PlayerControlView öğesine bağlıysa kullanıcı bu bileşenlerle etkileşime girdiğinde oynatıcıda ilgili yöntemler çağrılır.

Oyuncuyu serbest bırakma

Video kod çözücüler gibi sınırlı kaynakların diğer uygulamalar tarafından kullanılabilmesi için oynatıcıyı artık gerekmediğinde serbest bırakmak önemlidir. Bu işlem için ExoPlayer.release numaralı telefonu arayabilirsiniz.