作业做一个音乐播放器,把歌曲放在res.raw的文件夹里面,老师演示的时候用的是R.raw.歌名来创建mediaplayer,多个歌曲怎么不用通过歌名获取这个地址呀?
作业做一个音乐播放器,把歌曲放在res.raw的文件夹里面,老师演示的时候用的是R.raw.歌名来创建mediaplayer,多个歌曲怎么不用通过歌名获取这个地址呀?
raw 目录下的文件读取只能用文件名指定路径了,这些文件属于应用资源,其实不算真正意义上的 file 文件路径,Android APK打包后所有的资源文件都分配了固定的资源id,记录在 R.java 文件里,使用时,有应用 Resources 去匹配相应的 id 得到资源文件。raw 在安装后并不会呈现成某个文件夹,所以,不能通过遍历文件夹的方式来批量获取其下属的文件路径,都是以 R.raw.xxx 来转换匹配。
8 回答6.4k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
3 回答1.6k 阅读✓ 已解决
这种存粹学习性质的app实现不要考虑那么多,你不需要知道文件的具体地址.
既然是放到raw下,那么项目就会给他分配一个
Id
,直接使用这个Id去获取相应的资源即可。例如有个多个歌曲放在raw下
song1.mp3,song2.mp3,song4.mp3
,那你直接用R.raw.song1,R.raw.song2,R.raw.song4
获取资源就行了。我猜你是不是不记得获取项目自带资源的方法了,
getResources().openRawResource(R.id.fileNameID)
另外 这个项目仅仅是个学习性质的,其实没什么卵用,当初我们也是这么做的。
结果项目只能播放自带的5首歌,而且打包生成的apk有600M,基本上全是歌占的。