android - 尝试在Android Studio中播放音频文件

标签 android android-studio audio

我正在尝试根据用户选择播放音频文件...
如果用户从微调器中选择第二个值,则文件为02.mp3;如果选择为153,则文件为153.mp3。

有问题的代码行是:

mediaPlayer.setDataSource(getApplicationContext(), Uri.parse("android.resource://" + getPackageName() + "/raw/" + dir));

dir =用户从微调器中选择的字符串,例如:“023.mp3”

mp3文件位于应用程序的原始文件夹中

代码行的结果是:android.resource://mypackagename/raw/023.mp3

但是mp3文件无法播放...

错误的图片链接:https://ibb.co/eJS7dv请帮助

预先感谢

最佳答案

此方法应该起作用:

void playSound(String dir){
String filename = "android.resource://" + this.getPackageName() + "/raw/" + dir;

mp = new MediaPlayer();
try { mp.setDataSource(this,Uri.parse(filename)); } catch (Exception e) {}
try { mp.prepare(); } catch (Exception e) {}
mp.start();
}

编辑

您可以检查是否可以在计算机上播放mp3,以检查文件是否未损坏吗?或使用方法getIdentifier()进行测试
void playSound(String dir){
try { 
 MediaPlayer mp =MediaPlayer.create(getApplicationContext(), getResources().getIdentifier(dir,"raw",getPackageName()));
} catch (Exception e) {}
mp.start();
}

像这篇文章一样:MediaPlayer.setDataSource(String) not working with local files

关于android - 尝试在Android Studio中播放音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42626426/

相关文章:

android - 如何在可扩展的 ListView 组之间留出空白

java - 是否可以将同一个 BitmapDrawable 分配给多个对象?

Android Facebook SDK 不显示登录屏幕

android - AVD 未启动(无错误消息)

c++ - 使用 Chromaprint 时的空白声学指纹

android - 无法解析 com.android.billingclient :billing:1. 0

android - 将 Gradle 和 Android Studio 更新到 3.5 后复制 Hamcrest 和 JUnit 类

android - 比特桶 : The requested URL returned error: 402

c++ - 如何将外部音频流转发到虚拟音频电缆?

c# - 在Visual Studio上禁用音频