我正在尝试为我的用户提供使用外部或内部存储的能力。我正在显示图像和视频(具有科学性质)。将媒体存储在 SD 卡上时,一切正常。但是当我在内部存储媒体时,只会显示图像。无论我尝试什么,在尝试加载和显示存储在 applicationcontext.getFilesDir() 下的媒体时都会遇到各种错误。
将视频视图的内容设置为这样的文件有技巧吗?
ContentResolver 可以帮助我吗?
在相关说明中,假设存在外部存储是否被认为是不好的形式?
提前致谢,
席德
以下是一个失败的版本,显示“无法播放视频。抱歉,无法播放此视频”。但我还有很多其他的失败模式。我可以将内部视频复制到临时存储(外部)并播放它,所以这个复制到内部确实会创建一个有效的电影。只有当我尝试直接从内部存储播放它时它才会失败。
videoFile = new File(this.getFilesDir() + File.separator + "test.mp4");
InputStream data = res.openRawResource(R.raw.moviegood);
try {
OutputStream myOutputStream = new FileOutputStream(videoFile);
byte[] buffer = new byte[8192];
int length;
while ( (length = data.read(buffer)) > 0 ) {
myOutputStream.write(buffer);
}
//Close the streams
myOutputStream.flush();
myOutputStream.close();
data.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
vview.setKeepScreenOn(true);
vview.setVideoPath(videoFile.getAbsolutePath());
vview.start();