我正在使用RingtoneManager
播放声音。一切
当我将声音文件(.mp3)存储在适当的SD目录中时,工作正常。
我找到了该文件的URI,并将其提供给RingtoneManager
来播放。
sd_uri = Uri.parse( "/sdcard/media/path/to/file" );
Ringtone rt = RingtoneManager.getRingtone( getApplicationContext(), sd_uri );
rt.play();
想知道如果平板电脑没有附带SD卡,该怎么做。
我的想法是将声音文件存储在res/raw
或res/assets
dirs中,但与接受资源标识符的MediaPlayer
不同,RingtoneManager
只需要Uri。
如何在res/raw
或res/assets
目录中获取文件的Uri?
理想情况下,我会使用res/raw
来获取R.raw.*
标识符,这可能很方便。
答案 0 :(得分:0)
请勿将路径硬编码为/sdcard
而是使用Environment.getExternalStorageDirectory()
。这将删除对SD卡的依赖。
答案 1 :(得分:0)
在我的应用程序中,我使用URI来引用应用程序 res / asset 定位的媒体文件:
private static final String PLACEHOLDER="file:///android_asset/sample_video.3gp";