gpt4 book ai didi

java - android java从sd卡播放wav音频文件

转载 作者:行者123 更新时间:2023-12-02 11:28:10 25 4
gpt4 key购买 nike

我无法从 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();

关于java - android java从sd卡播放wav音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49466977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com