#android #android-studio #android-videoview #android-video-player
Вопрос:
Videoview просто воспроизводит черный экран на некоторых устройствах.
Например: Плавно воспроизводится на устройстве Pixel 2. Но на Samsung SM-T395 есть только черный экран
Как сделать его совместимым на всех устройствах?
override fun onCreate(savedInstanceState: Bundle?) {
---
videoView!!.setMediaController(null)
videoView?.setOnCompletionListener {
...
}
}
public override fun onResume() {
super.onResume()
val uri = Uri.parse("android.resource://" packageName "/" R.raw.asd)
videoView?.setVideoURI(uri)
videoView?.setMediaController(mediaController)
//mediaController?.setAnchorView(videoView)
videoView?.requestFocus()
videoView?.start()
}
XML:
<VideoView
android:id="@ id/video_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
Ответ №1:
Я сталкиваюсь с той же проблемой и решаю ее с помощью принятого решения выше плюс это:
@Override
public void onPrepared(MediaPlayer mp) {
mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
Log.d(TAG, "onInfo, what = " what);
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
// video started; hide the placeholder.
placeholder.setVisibility(View.GONE);
return true;
}
return false;
}
});
Я думаю, что onPrepared просто означает, что видео готово к воспроизведению, но не означает, что видео начало воспроизводиться. Если скрыть заполнитель в onPrepared, на экране по-прежнему будет отображаться черный экран.