Basit kullanım alanları için ExoPlayer
kullanmaya 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).
- Oyuncuyu
MediaItem
ile oynamaya hazırlayın. - Bittiğinde oynatıcıyı bırakın.
Bu adımlar aşağıda daha ayrıntılı olarak açıklanmaktadır. Eksiksiz bir örnek için ana demo uygulamasında PlayerActivity
bölümüne bakın.
Bağımlılık olarak ExoPlayer ekleme
ExoPlayer modülleri ekleyin
AndroidX Media3'ü kullanmaya başlamanın en kolay yolu, uygulama modülünü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şenleriyle ExoPlayer'a bağımlı olmak için modüllere aşağıdaki gibi bağımlılıklar ekleyebilirsiniz:
Kotlin
implementation("androidx.media3:media3-exoplayer:1.3.1") implementation("androidx.media3:media3-exoplayer-dash:1.3.1") implementation("androidx.media3:media3-ui:1.3.1")
Eski
implementation "androidx.media3:media3-exoplayer:1.3.1" implementation "androidx.media3:media3-exoplayer-dash:1.3.1" implementation "androidx.media3:media3-ui:1.3.1"
Bu durumda tercih ettiğiniz sürüm 1.3.1'dir (en son sürüme sürüm notlarına başvurarak ulaşabilirsiniz). 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ı olan kitaplık modüllerine sahiptir. Bazıları Maven deposundan kullanılabilirken bazılarının manuel olarak oluşturulması gerekir. Kitaplıklar dizinine göz atın ve ayrıntılar için README'leri ayrı ayrı inceleyin.
Kitaplık modülleri hakkında daha fazla bilgiyi Google Maven AndroidX Media sayfasında bulabilirsiniz.
Java 8 desteğini etkinleştirme
Etkinleştirilmemişse ExoPlayer'a bağlı tüm build.gradle
dosyaları için Java 8 desteğini etkinleştirmeniz gerekir. Bunun için android
bölümüne şunu ekleyin:
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
Multidex'i etkinleştirme
Gradle minSdkVersion
değeriniz 20 veya daha düşükse derleme hatalarını önlemek için multidex'i etkinleştirmeniz gerekir.
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();
İleti dizisiyle ilgili not
ExoPlayer örneklerine tek bir uygulama iş parçacığından erişilmelidir. Vakaların büyük çoğunluğu için bu, uygulamanın ana iş parçacığı olmalıdır. ExoPlayer'ın kullanıcı arayüzü bileşenleri veya IMA uzantısı kullanılırken uygulamanın ana iş parçacığının kullanılması zorunludur.
ExoPlayer örneğine erişilmesi gereken iş parçacığı, oynatıcı oluşturulurken bir Looper
iletilerek açıkça belirtilebilir. Looper
belirtilmemişse oynatıcının oluşturulduğu iş parçacığının Looper
öğesi kullanılır veya bu iş parçacığının bir Looper
öğesi yoksa uygulamanın ana iş parçacığının Looper
öğesi kullanılır. Her durumda, oynatıcıya erişilmesi gereken iş parçacığının Looper
öğesi, 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ş bir dizi kullanıcı arayüzü bileşeni sağlar. Bunlar, videonun üzerinde oluşturulduğu PlayerControlView
, SubtitleView
ve Surface
öğelerini içeren PlayerView
içerir. PlayerView
, uygulamanızın düzen XML dosyasına eklenebilir.
Ö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);
PlayerControlView
öğesini bağımsız bir bileşen olarak da kullanabilirsiniz. Bu bileşen, yalnızca ses kullanım alanlarında kullanışlıdır.
ExoPlayer'ın önceden oluşturulmuş kullanıcı arayüzü bileşenlerinin kullanımı isteğe bağlıdır. Kendi kullanıcı arayüzünü uygulayan video uygulamaları için SurfaceView
, TextureView
, SurfaceHolder
veya Surface
hedefi sırasıyla ExoPlayer'ın setVideoSurfaceView
, setVideoTextureView
, setVideoSurfaceHolder
vesetVideoSurface
yöntemleri kullanılarak ayarlanabilir. Oynatma sırasında oluşturulması gereken altyazıları almak için ExoPlayer'ın addTextOutput
yöntemi kullanılabilir.
Oynatma listesini doldurma ve oynatıcıyı hazırlama
ExoPlayer'da her medya parçası bir MediaItem
ile temsil edilir. Bir medya parçasını oynatmak için buna karşılık gelen bir MediaItem
oluşturmanız, oynatıcıya eklemeniz, oynatıcıyı hazırlamanız ve oynatmayı başlatmak üzere play
yöntemini ç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ğinden oynatıcıyı birden fazla medya öğesiyle birlikte birbiri ardına oynatılacak şekilde hazırlayabilirsiniz:
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, oynatıcıyı tekrar hazırlamaya gerek kalmadan oynatma sırasında güncellenebilir. Oynatma listeleri sayfasında oynatma listesini doldurma ve değiştirme hakkında daha fazla bilgi edinin. Kırpma ve altyazı dosyası ekleme gibi medya öğeleri oluştururken kullanılabilen farklı seçenekler hakkında daha fazla bilgiyi Medya öğeleri sayfasında bulabilirsiniz.
Oynatıcıyı kontrol etme
Oynatıcı hazırlandıktan sonra oynatma, oynatıcıdaki çağrı yöntemleriyle kontrol edilebilir. En sık kullanılan yöntemlerden bazıları şunlardır:
play
vepause
, oynatmayı başlatıp duraklatır.seekTo
, medya içinde sarmaya olanak tanır.hasPrevious
,hasNext
,previous
venext
, oynatma listesinde gezinmeye olanak tanır.setRepeatMode
, medyanın döngü halinde olup olmadığını ve nasıl döngüye alınacağını kontrol eder.setShuffleModeEnabled
, oynatma listesi karıştırmayı kontrol eder.setPlaybackParameters
, oynatma hızını ve ses perdesini ayarlar.
Oynatıcı bir PlayerView
veya PlayerControlView
öğesine bağlıysa kullanıcının bu bileşenlerle etkileşimi, oynatıcıda ilgili yöntemlerin çağrılmasına neden olur.
Oynatıcıyı serbest bırakın
Video kod çözücüler gibi sınırlı kaynakları diğer uygulamaların kullanımına açmak için oynatıcıyı artık ihtiyaç duymadığında serbest bırakmak önemlidir. Bu işlem, ExoPlayer.release
aranarak yapılabilir.