Basit kullanım alanlarında ExoPlayer
ile çalışmaya başlamak için aşağıdaki adımları uygulamanız gerekir:
- ExoPlayer'ı projenize bağımlılık olarak ekleyin.
ExoPlayer
örneği oluşturun.- Oynatıcıyı bir görünüme ekleyin (video çıkışı ve kullanıcı girişi için).
- Oynatıcıyı
MediaItem
ile oynatmaya hazırlayın. - İş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
vepause
ile oynatmayı başlatabilir ve duraklatabilirsiniz.seekTo
, medyada arama yapılmasına olanak tanır.hasPrevious
,hasNext
,previous
venext
, 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.