android - 无法使用 VideoView 播放视频
问题描述
我想播放 4 个不同的视频(当按下 4 个不同的按钮时),它们在我手机的内部存储中。所有按钮都在DashBoardActivity
。当按下 a时,我通过为每个视频创建并放置一个唯一的整数来Button
开始一个新的按钮单击。这是我的代码VideoActivity
Intent
DashBoardActivty
Button b1= findViewById(R.id.education_button);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(DashboardActivity.this,VideoActivity.class);
i.putExtra(sBUTTON_,1);
startActivity(i);
}
});
这是我的代码VideoActivity
public class VideoActivity extends AppCompatActivity {
int j;
VideoView vid;
Uri uri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
Intent i = getIntent();
j = i.getIntExtra(DashboardActivity.sBUTTON_,1);
vid=(VideoView) findViewById(R.id.video);
if(j==1)
uri=Uri.parse(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Movies/MoShow/Educations.mp4");
runOnUiThread(new Runnable() {
@Override
public void run() {
vid.setVideoURI(uri);
vid.start();
}
});
}
}//end of class
当我在物理设备上安装应用程序时。我收到一个错误
无法播放此视频
但是,当我看到logcat
它显示的错误是
? E/ViewRootImpl:非 UI 线程上的可访问性内容更改。未来的 Android 版本将引发异常。android.view.ViewRootImpl$CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能接触其视图。
我很困惑这是否是视频格式(编解码器)问题(我在手机屏幕上看到“无法播放此视频”)。我试着按照这篇 文章来解决
CalledFromWrongThreadException
但我得到了同样的错误。下面是我的 XML 文件VideoActivity
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
tools:context="com.example.srini.animtest.VideoActivity">
<VideoView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/video"/>
</RelativeLayout>
解决方案
尝试这个:
vid.setVideoURI(uri);
vid.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
vid.start();
}
});
推荐阅读
- anaconda - 如何使用 conda 安装 **Pytorch**?anaconda.org 暂时关闭了吗?
- python-3.x - 包含 pandas 数据帧的解包字典会引发 AttributeError:“Dataframe”对象没有属性“_data”
- python - 全局键绑定?
- bash - 编写一个 linux 脚本来查找过去一小时内日志文件中发生的错误,如果发现错误则发送邮件
- android - ConstraintLayout 2.0 渲染问题
- django - 在 django 中设置时间字段,以便以后无法更改存储的时间
- oracle - 从 Postgres 导出 bytea 数据并将其作为 blob 导入 Oracle DB
- android - Android Kotlin 我们可以将文本和图像图标的组合放在复选框中吗?
- javascript - 从生产函数返回数组值 | immer.js
- python-3.x - 我有一个在此代码中称为数字的整数列表打印python中大于90的每个数字?