she*_*man 19 android internal android-videoview
我正在尝试为我的用户提供使用外部或内部存储的能力.我正在显示图像和视频(科学性质).将媒体存储在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();
Run Code Online (Sandbox Code Playgroud)
gtk*_*oid 25
MediaPlayer要求正在播放的文件具有世界可读的权限.您可以在adb shell中使用以下命令查看文件的权限:
ls -al /data/data/com.mypackage/myfile
Run Code Online (Sandbox Code Playgroud)
您可能会看到"-rw ------",这意味着只有所有者(您的应用程序,而不是MediaPlayer)具有读/写权限.
注意:您的手机必须是root用户才能使用ls命令而不指定文件(在内部存储器中).
如果您的手机是root用户,则可以使用以下命令在adb shell中添加全局读取权限:
chmod o+r /data/data/com.mypackage/myfile
Run Code Online (Sandbox Code Playgroud)
如果您需要以编程方式修改这些权限(需要rooted phone!),您可以在应用代码中使用以下命令:
Runtime.getRuntime().exec("chmod o+r /data/data/com.mypackage/myfile");
Run Code Online (Sandbox Code Playgroud)
这基本上是一个linux命令.有关chmod的更多信息,请参阅https://help.ubuntu.com/community/FilePermissions.
编辑:在这里找到另一个简单的方法(对没有root电话的人有用).由于应用程序拥有该文件,因此它可以创建文件描述符并将其传递给mediaPlayer.setDataSource():
FileInputStream fileInputStream = new FileInputStream("/data/data/com.mypackage/myfile");
mediaPlayer.setDataSource(fileInputStream.getFD());
Run Code Online (Sandbox Code Playgroud)
这种方法完全避免了许可问题.
| 归档时间: |
|
| 查看次数: |
22891 次 |
| 最近记录: |