我正在尝试使用 audioTrack 播放音频流,所以我创建了这样的 audioTrack:
public AudioTrack create() {
if (mTrack != null) {
if (mTrack.getState() == AudioTrack.STATE_INITIALIZED) {
return mTrack;
} else {
mTrack.release();
mTrack = null;
}
}
mBuffSize = AudioTrack.getMinBufferSize(Settings.SAMPLE_RATE, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
mTrack = new AudioTrack(AudioManager.STREAM_MUSIC, Settings.SAMPLE_RATE,
AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, mBuffSize, AudioTrack.MODE_STREAM);
if (mTrack.getState() == AudioTrack.STATE_INITIALIZED) {
mTrack.play();
return mTrack;
}
return null;
}
当我完成时,我像这样调用停止:
public void stop() {
if (mTrack != null) {
if (mTrack.getState() == AudioTrack.STATE_INITIALIZED) {
mTrack.release();
mTrack = null;
}
}
}
在某些设备中,当我经常创建和停止时,我得到了这个:
AudioFlinger 无法创建轨道,状态:-12。
我在 StackOverflow 中搜索过这个问题很多次,但是所有的答案都是关于 soundpool 的,而且我没有使用 soundpool
任何帮助将不胜感激!(我是中国人,我的英语不好)