Medya oynatan bir uygulama, medyayı görüntülemek için kullanıcı arayüzü bileşenleri ve çalmayı kontrol ediyor. Media3 kitaplığı, şunları içeren bir UI modülü içerir: bazı kullanıcı arayüzü bileşenlerine sahip. Kullanıcı arayüzü modülüne bağımlı olmak için aşağıdakini ekleyin: bağımlılık:
Kotlin
implementation("androidx.media3:media3-ui:1.4.1")
Eski
implementation "androidx.media3:media3-ui:1.4.1"
En önemli bileşen, medya oynatmalarına yönelik bir görünüm olan PlayerView
'tir.
PlayerView
, oynatma sırasında video, resim, altyazı ve albüm kapağını gösterir.
yanı sıra oynatma
kontrollerine de erişebilirsiniz.
PlayerView
, eklemek ve çıkarmak için setPlayer
yöntemini kullanır (
null
) oynatıcı örneği geçiliyor.
Oynatıcı Görünümü
PlayerView
hem video, resim ve ses oynatmaları için kullanılabilir. Oluşturduğu
Video oynatılırken video ve altyazılar, görüntü oynatma için bit eşlemler
ve ses dosyalarına meta veri olarak eklenen posterleri gösterebilir. URL'yi
diğer kullanıcı arayüzü bileşenlerinde olduğu gibi
düzenleyebilirsiniz. Örneğin, PlayerView
aşağıdaki XML ile birlikte eklenebilir:
<androidx.media3.ui.PlayerView
android:id="@+id/player_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:show_buffering="when_playing"
app:show_shuffle_button="true"/>
Yukarıdaki snippet, PlayerView
ürününün birkaç
özellikleri hakkında daha fazla bilgi edinin. Bu özellikler görünümün davranışını özelleştirmek için kullanılabilir. Örneğin,
hem de görünüm ve izlenimi. Bu özelliklerin çoğunda, ilgili
Bu yöntemler, çalışma zamanında görünümü özelleştirmek için kullanılabilir. İlgili içeriği oluşturmak için kullanılan
PlayerView
Javadoc bu özellikleri ve belirleyici yöntemlerini
ele alacağız.
Görünüm düzen dosyasında bildirildikten sonra
onCreate
etkinliğin yöntemi:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... playerView = findViewById(R.id.player_view) }
Java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... playerView = findViewById(R.id.player_view); }
Bir oynatıcı başlatıldığında, oynatıcıyı çağırarak görünüme eklenebilir.
setPlayer
:
Kotlin
// Instantiate the player. val player = ExoPlayer.Builder(context).build() // Attach player to the view. playerView.player = player // Set the media item to be played. player.setMediaItem(mediaItem) // Prepare the player. player.prepare()
Java
// Instantiate the player. player = new ExoPlayer.Builder(context).build(); // Attach player to the view. playerView.setPlayer(player); // Set the media item to be played. player.setMediaItem(mediaItem); // Prepare the player. player.prepare();
Yüzey türü seçin
PlayerView
için surface_type
özelliği, yüzey türünü ayarlamanızı sağlar.
Video oynatma için kullanılır. spherical_gl_surface_view
değerlerinin yanında
Küresel video oynatma için özel bir değerdir) ve
video_decoder_gl_surface_view
(uzantı kullanarak video oluşturma içindir)
oluşturucuları) izin verilen değerler: surface_view
, texture_view
ve none
. Eğer
Görünüm yalnızca ses oynatma amaçlı olduğundan, birden fazla kez ses göndermemek için none
kullanılmalıdır.
Pahalı olabileceği için bir yüzey oluşturmak.
Görüntüleme normal video oynatma içinse surface_view
veya texture_view
kullanılmalıdır. SurfaceView
, şunun için TextureView
ile karşılaştırıldığında çok sayıda avantaj sunar:
video oynatma:
- Büyük ölçüde daha düşük güç YouTube'da cihazlar.
- Daha doğru kare zamanlaması, daha akıcı video oynatma sağlar.
- Uygun olan cihazlarda daha yüksek kaliteli HDR video çıkışı desteği.
- DRM korumalı içerik oynatılırken güvenli çıkış desteği.
- Video içeriğini ekranın tam çözünürlüğünde oluşturma imkanı Kullanıcı arayüzü katmanını yükselten Android TV cihazları.
Dolayısıyla mümkünse TextureView
yerine SurfaceView
tercih edilmelidir.
TextureView
yalnızca SurfaceView
ihtiyaçlarınızı karşılamıyorsa kullanılmalıdır. Bir
Örneğin, video yüzeyinin yumuşak animasyonların veya kaydırılmasının gerekli olduğu durumlar
önceki sürümlerden birine sahip olması gerekir. Örneğin,
bu durumda, yalnızca SDK_INT
daha az olduğunda TextureView
kullanılması tercih edilir
24'ten (Android 7.0) ve aksi takdirde SurfaceView
.
Android TV'de d-pad ile gezinme
Android TV'nin uzaktan kumandasında, D-pad kontrolüne sahip olan
Activity
cihazınızın dispatchKeyEvent(KeyEvent)
zamanına önemli etkinlik olarak varacaksınız. Bu
oynatıcı görünümüne yetki verilmesi gerekir:
Kotlin
override fun dispatchKeyEvent(event: KeyEvent?): Boolean{ return playerView.dispatchKeyEvent(event!!) || super.dispatchKeyEvent(event) }
Java
@Override public boolean dispatchKeyEvent(KeyEvent event) { return playerView.dispatchKeyEvent(event) || super.dispatchKeyEvent(event); }
Oynatıcı görünümü için odak isteğinde bulunmak, oynatma arasında gezinme açısından önemlidir
ve reklamları atlama. Şuna odaklanılmasını isteyebilirsiniz: onCreate
Activity
:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... playerView.requestFocus() // ... }
Java
@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... playerView.requestFocus(); // ... }
Android TV'de Oluştur özelliğini kullanıyorsanız AndroidView
ayarını yapmanız gerekir.
odaklanılabilir ve değiştirici parametreyi
AndroidView
:
AndroidView(
modifier = modifier
.focusable()
.onKeyEvent { playerView.dispatchKeyEvent(it.nativeKeyEvent) },
factory = { playerView }
)
Çekilebilir öğeleri geçersiz kıl
PlayerView
, oynatmayı görüntülemek için PlayerControlView
kullanıyor
kontrol düğmeleri ve ilerleme çubuğu. PlayerControlView
tarafından kullanılan çekilebilirler
uygulamanızda tanımlı aynı adlara sahip çekilebilir öğeler tarafından geçersiz kılınır. Görüntüleyin
kontrol çekilebilirlerinin listesi için PlayerControlView
Javadoc
geçersiz kılınabilir.
Daha fazla özelleştirme
Yukarıda açıklananların ötesinde özelleştirmenin gerekli olduğu durumlarda, uygulamanın geliştiriciler, sağlananlar yerine kendi kullanıcı arayüzü bileşenlerini uygular kullanıcı arayüzü modülü tarafından oluşturulabilir.