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

尝试在Android Studio中播放音频文件,android,android-studio,audio,Android,Android Studio,Audio,我正在尝试根据用户选择播放音频文件。。。 如果用户从微调器中选择第二个值,则文件将为02.mp3,如果选择为153,则文件将为153.mp3 出现问题的代码行是: mediaPlayer.setDataSource(getApplicationContext(), Uri.parse("android.resource://" + getPackageName() + "/raw/" + dir)); dir=用户从微调器中选择的字符串,例如:“023.mp3” mp3文件位于应用程序的原始文

我正在尝试根据用户选择播放音频文件。。。 如果用户从微调器中选择第二个值,则文件将为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文件没有播放

错误的图像链接:请帮助


提前感谢

此方法应适用于:

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){
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()方法进行测试


如本文所示:

如果我使用R.raw.023手动播放id,mp3文件不会损坏并且可以工作。如果我使用R.raw.023手动播放id,mp3文件不会损坏并且可以工作