我正在尝试播放存储在SD卡中的mp3文件。我没有使用模拟器,而是使用带有cyanogenmod 13 android 6.0的三星Galaxy S3。
首先我尝试了
parallaxMultiplier
但是
Uri.parse(Environment.getExternalStorageDirectory().getPath()+"/gato.mp3")
让我到/ storage / emulated / 0。
使用手机中的文件管理器,我会看到3个内存存储位置:
这与我从计算机上看到的不同(仅限sdcard1和内部存储)。
我无法让它工作所以我把文件" gato.mp3"在内部和sdcard1,我可以检查是否存在。但是
Environment.getExternalStorageDirectory().getPath()
它给我路径/storage/emulated/0/gato.mp3,它应该让我到文件,并尝试手动设置路径到/storage/FE97-A11B/gato.mp3,媒体播放器创建使用uri为null,并且找不到文件。 如果我尝试在计算机资源管理器中看到的路径,也一样。
任何人都知道为什么找不到该文件? 我试过删除" /"在开始时,添加" mnt"看看我是否遗漏了路上的东西,但似乎没有任何效果。
感谢您的时间!
我要检查的代码只是一个函数
Environment.getExternalStorageDirectory().getPath()+"/gato.mp3"
其中tv1是一个textview,所以我可以看到uri指向的路径。
答案 0 :(得分:0)
我正在尝试播放存储在SD卡中的mp3文件
您无法访问removable storage上的任意文件系统位置。
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
权限,这也意味着您需要处理runtime permissions。
但
Environment.getExternalStorageDirectory().getPath()
让我/storage/emulated/0
这是Android SDK引用external storage的典型路径,您在问题中称为内部存储。 SDK称为内部存储的内容为something else。