Просмотр видео на Android не показывает mp4

#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, на экране по-прежнему будет отображаться черный экран.