0
(Android) 我正在製作一個帶有幾個按鈕的應用程序,每個按鈕都有一個與它們相關的短聲音片段。他們有自己的OnClick語句。下面的代碼從起着如我期望的SD卡上的文件...從原始文件夾(而不是流或SD卡)創建沒有MediaPlayer.Create的聲音片段
public void Hello (View view) {
///FuckYouseButtonClick Main Body.
//MediaPlayer mediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.hello);
//mediaPlayer.start();
SoundPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp)
//TODO Auto-generated Method stub
{
SoundPlayer.start();
}
});
String file = "/sdcard/Music/Hello.mp3";
SoundPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
SoundPlayer.setDataSource(file);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
SoundPlayer.prepareAsync();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
...但是,我怎麼能設置源R.raw.hello(聲音文件),而不引起錯誤?當前的錯誤消息是「媒體播放器類型中的方法SetDataSource(String)不適用於參數(int)」。如果你沒有推測,我使用Eclipse。
謝謝。
這正是我不想做的事。這會每次創建一個新的MediaPlayer,因此最終系統資源被堵塞。該應用程序會很快停止播放音頻。此外,我使用一個在OnClick函數外聲明的MediaPlayer,因此只需創建一次。 – Adro947
然後使用'SoundPool'對象使用加載函數加載所需的所有聲音。保存'load'函數返回的所有soundID,然後只是'play'你需要的那個soundID。 –