2017-09-15 60 views
0

我試圖發揮使用audioTrack音頻流,所以我創建audioTrack這樣的:AudioFlinger無法創建跟蹤,狀態:-12

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

任何幫助將不勝感激!(我是中國人,我的英語不是好)

+0

不要張貼你的代碼截圖。直接點擊你的代碼片段 – Akshay

+0

謝謝!但我不知道如何做到這一點,那麼如何呢? –

+0

是的..現在更好.. – Akshay

回答

0

添加

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

播放音頻流。

+0

我已經在...之前添加了此權限...謝謝 –