资产文件的Uri

3

我正在使用 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/rawres/assets目录中,但与接受资源标识符的MediaPlayer不同,RingtoneManager只需要Uri。如何获取res/rawres/assets目录中文件的Uri呢?理想情况下,我会使用res/raw来获取R.raw.*标识符,这可能很方便。

2个回答

0
在我的应用程序中,我正在使用类似于URI的方式引用位于应用程序res/asset位置的媒体文件:
private static final String PLACEHOLDER="file:///android_asset/sample_video.3gp";

1
那只能在同一个应用程序中使用;其他应用程序无法访问资产文件夹中的文件,除非(我相信)您为它们编写自定义内容提供程序使其公开。 - Lorne Laliberte

0
不要硬编码路径为/sdcard,而应该使用Environment.getExternalStorageDirectory()。这样可以消除对sdcard的依赖。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接