2017-03-06 28 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,就可以工作 –