1

我正在尝试使用 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

任何帮助将不胜感激!(我是中国人,我的英语不好)

4

1 回答 1

1

添加

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"></uses-permission>

播放音频流。

于 2017-09-15T09:45:59.440 回答