java - 如何将android资源路径转换为字符串
问题描述
这是我的视频视图类,它工作正常
private void CopyReadVdo() {
setContentView(R.layout.video_player);
VideoView view = (VideoView) findViewById(R.id.videoview);
String path = "android.resource://" + getPackageName() + "/" + R.raw.video1;
Uri uri = Uri.parse(path);
view.setVideoURI(uri);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(view);
view.setMediaController(mediaController);
view.start();
}
我需要用一个像这样的参数来调用这个函数
private void CopyReadVdo(String vdoname) {
setContentView(R.layout.video_player);
VideoView view = (VideoView) findViewById(R.id.videoview);
String path = "android.resource://" + getPackageName() + "/" + vdoname;
Uri uri = Uri.parse(path);
view.setVideoURI(uri);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(view);
view.setMediaController(mediaController);
view.start();
}
但显示错误无法播放此视频。提前致谢。
解决方案
首先尝试rawId
从资源名称中获取资源idvdoname
int rawId = getResources().getIdentifier(vdoname, "raw", getPackageName());
String path = "android.resource://" + getPackageName() + "/" + rawId;
更新:
传递函数shaktee
而vdoname
不是CopyReadVdo
R.raw.shaktee
或将类型更改vdoname
为 int 并传递R.raw.shaktee
给CopyReadVdo
函数
private void CopyReadVdo(int vdoname) {
setContentView(R.layout.video_player);
VideoView view = (VideoView) findViewById(R.id.videoview);
String path = "android.resource://" + getPackageName() + "/" + vdoname;
Uri uri = Uri.parse(path);
view.setVideoURI(uri);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(view);
view.setMediaController(mediaController);
view.start();
}
推荐阅读
- python - 如何在一个while循环中运行两个while循环
- c# - 如何使用 OleDb 在 C# 中获取 Excel 公式?
- javascript - 尝试在洗牌后评估订单 - 包括 JSFiddle
- python - 异步函数中的变量未在 while-True 循环中重新评估
- c# - 将实体添加到斯坦福 NLP NER 分类器
- python - Python:查找重复索引累积和的有效方法(numpy方法)
- linux - 来自 Artifactory 的 docker pull 导致“net/http:request cancelled”不一致
- python-3.x - 我无法成功将 pywinauto 导入 python 3.6.4
- c++ - 如何在 qt 中隐藏可爱的报告打印对话框?
- python - 散景多选小部件回调不起作用