android - Android Videoview 不显示 mp4
问题描述
Videoview 只是在某些设备上播放黑屏。
例如:在 Pixel 2 设备上流畅播放。但是三星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" />
解决方案
我遇到了同样的问题,并用上面接受的解决方案加上这个来解决它:
@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 中隐藏占位符,屏幕仍然显示黑屏。
推荐阅读
- android - 实现 Azure 通信服务 - Android 应用程序中的聊天
- python - 访问在安装在 unix 服务器上的 Docker 容器上运行的 jupyter
- qt - 如何在 Qt 5.12 和 Qt Quick Controls 2 的 TableView 中支持行选择?
- postgresql - 如何在 typeorm 中使用 LEFT JOIN LATERAL?
- c# - 在 Blazor 组件中使用 Javascript addEventListener
- javascript - Puppeteer 图像 src 选择器不适用于所有组件
- python - 函数“矩形”中的(-5:错误参数) - 无法解析“pt1”。索引为 0 的序列项类型错误
- c - 产生竞争条件
- excel - Excel:- 多级表中的差异 b/w 枢轴值 col
- vhdl - VHDL:生成内部的 if 语句