2017-03-06 63 views
1

我试图播放基于用户选择的音频文件... 如果用户从微调器中选择第二个值,则文件将为02.mp3,如果选择是153该文件将153.mp3试图在Android Studio中播放音频文件

的代码与所述问题的行是:

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请帮助

预先感谢

回答

0

这种方法应该工作:

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

+0

不工作:图像链接错误:[链接](https://ibb.co/eJS7dv)请帮助 –

+0

mp3文件没有损坏,如果我用R.raw.023手动播放ID,就可以工作 –