我尝试使用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;
}当我完成时,我像这样调用stop:
public void stop() {
if (mTrack != null) {
if (mTrack.getState() == AudioTrack.STATE_INITIALIZED) {
mTrack.release();
mTrack = null;
}
}
}在某些设备中,当我频繁创建和停止时,我会得到以下信息:
AudioFlinger无法创建磁道,状态:-12。
我在StackOverflow中搜索了很多次这个问题,但所有的答案都是关于音池的,而且我还没有使用过音池
非常感谢任何人的帮助!(我是中国人,我的英语不好)
发布于 2017-09-15 17:45:59
添加
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"></uses-permission>播放音频流。
https://stackoverflow.com/questions/46235182
复制相似问题