[英]android java playing wav audio file from sd card
我很難從SD卡播放WAV音頻文件:
這是我的代碼:
mp = new MediaPlayer(); //Defined as MediaPlayer above
try {
mp.setDataSource(fileNamePath);
mp.prepare();
mp.start();
} catch (IOException e) {
e.printStackTrace();
}
fileNamePath的格式為:/storage/emulated/0/MyApp/name.wav
這是我得到的錯誤代碼:
E/MediaPlayer: stop called in state 1, mPlayer(0x0)
E/MediaPlayer: error (-38, 0)
E/MediaPlayer: Error (-38,0)
我希望你能在這里幫助我嗎?
謝謝!
Android媒體播放器在處理某些wav文件時會遇到一些麻煩,建議您使用AudioTrack代替MediaPlayer。
這是一個例子:
new Thread(new Runnable() {
@Override
public void run() {
try {
// just put here your wav file
File yourWavFile = new File(Environment.getExternalStorageDirectory() + "/" + AUDIO_FOLDER, fileName);
FileInputStream fis = new FileInputStream(yourWavFile);
int minBufferSize = AudioTrack.getMinBufferSize(16_000,
AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
AudioTrack at = new AudioTrack(AudioManager.STREAM_MUSIC, 16_000,
AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT,
minBufferSize, AudioTrack.MODE_STREAM);
int i = 0;
byte[] music = null;
try {
music = new byte[512];
at.play();
while ((i = fis.read(music)) != -1)
at.write(music, 0, i);
} catch (IOException e) {
e.printStackTrace();
}
at.stop();
at.release();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}).start();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.