【问题标题】:Android: playing audio files in /res/raw by file nameAndroid:按文件名播放/res/raw中的音频文件
【发布时间】:2021-08-19 20:27:06
【问题描述】:

在我的应用程序的 /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”。

谢谢。

【问题讨论】:

    标签: java android file audio


    【解决方案1】:
    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”

    希望能帮到你

    【讨论】:

    • 是的,我认为这是正确的想法。我发现这个网站也很有帮助:en.kuma-de.com/blog/2011-11-14/341
    • 很抱歉,我投了反对票,现在我无法更改...请编辑您的答案并通知我,以便我可以投票...
    • 你也可以试试MediaPlayer.create(context, Uri.parse(path)),比实例化MediaPlayer,然后设置它的数据源,然后调用prepare更简洁。
    猜你喜欢
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    相关资源
    最近更新 更多