我正在尝试播放一个存储在我的mp3中的SDcard文件。我使用的不是仿真器,而是三星Galaxy6.0和cyanogenmod 13,Android6.0。
我第一次试着
Uri.parse(Environment.getExternalStorageDirectory().getPath()+"/gato.mp3")
但是
Environment.getExternalStorageDirectory().getPath()让我访问/存储/模拟/0。
通过手机中的文件管理器,我看到了三个内存存储位置:
这与我从计算机中看到的不同(只有sdcard1和内部存储)。
我无法使它工作,所以我把文件"gato.mp3“在内部和sdcard1,我可以检查那里。但是有了
Environment.getExternalStorageDirectory().getPath()+"/gato.mp3"
它为我提供了path /storage/ should /0/gato.mp3,它应该将我带到文件中,并尝试手动将路径设置为/storage/FE97-A11B/gato.mp3,使用uri创建的mediaplayer为null,没有找到任何文件。如果我尝试在计算机资源管理器中看到的路径,也是一样的。
有人知道为什么找不到文件吗?我试着在乞讨时去掉"/“,加上"mnt”,看看我是不是在路上漏掉了什么东西,但似乎没有什么效果。
谢谢您抽时间见我!
我要检查的代码只是一个函数
public void ejecutar(View v) {
Uri datos = Uri.parse(Environment.getExternalStorageDirectory().getPath()+"/gato.mp3");
MediaPlayer mp = MediaPlayer.create(this, datos);
if (mp != null) {
mp.start();
}
else{ tv1.setText(datos.toString());}其中tv1是一个文本视图,因此我可以看到uri指向的路径。
发布于 2017-01-08 19:54:29
我正在尝试播放存储在我的mp3中的一个SDcard文件
您不能访问可移动存储器上的任意文件系统位置。
Uri.parse(Environment.getExternalStorageDirectory().getPath()+"/gato.mp3")在装配路径时,不要使用级联。而且,我不确定create(Context, Uri)是否与file Uri方案一起工作。我建议您使用:
File media=new File(Environment.getExternalStorageDirectory(), "gato.mp3");然后使用setDataSource(media.getAbsolutePath())。您还需要READ_EXTERNAL_STORAGE或WRITE_EXTERNAL_STORAGE权限,这也意味着您需要处理运行时权限。
但是
Environment.getExternalStorageDirectory().getPath()把我带到了/storage/emulated/0
https://stackoverflow.com/questions/41537058
复制相似问题