Android:通过文件名在/res/raw中播放音频文件

3
在我的应用程序的 /res/raw/ 文件夹中,我有:file1.ogg file2.ogg ... fileN.ogg 在本地数据库中,我有文件名的引用,例如:file1 file2 ... fileN
假设给定其中一个字符串,比如 fileM,如何播放包含在 fileM.ogg 中的音频?希望提供相关的Java代码。
这是我到目前为止看过的内容:
String name = "plumber";
String link = "/res/raw/" + name + ".ogg";

try {
    mp.setDataSource(link); //earlier: mp = new MediaPlayer();
    mp.prepare();
    mp.start();
} catch (Exception e) {
    Toast.makeText(PlayScreen.this, "ERROR: audio player not working.", Toast.LENGTH_LONG).show(); 
}

我在 toast 中收到错误信息。此外,我已经尝试过不在字符串 link 中加入 "/res/raw"。

谢谢。

1个回答

8
MediaPlayer player = new MediaPlayer();
String path = "android.resource://" + getPackageName() + "/raw" + filename;
try {
     player.setDataSource(context, Uri.parse(path));
     player.prepare();
     player.start();
} catch (IOException e) {
     e.printStackTrace();
}

尝试使用或不使用扩展名“.mp3”

希望我能帮到你


1
是的,我认为那是正确的想法。我也发现这个网站很有帮助:http://en.kuma-de.com/blog/2011-11-14/341 - JDS
很抱歉我给了一个负评,现在无法更改...请编辑您的答案并通知我,以便我可以点赞。 - Ankit Srivastava
你也可以尝试使用MediaPlayer.create(context, Uri.parse(path)),这比实例化MediaPlayer、设置数据源,然后调用prepare更加简洁。 - ahmadPH

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