2015-05-04 229 views
2

以下是播放某些audiotrack的功能。播放audiotrack之前停止之前播放過的音頻Android

調用這個函數的主要代碼:

play(a); 
play(b); 

和播放功能是:

public void play(byte[] audioData) { 
     try { 
       audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 
         getSampleRate(), 
         getChannelCount(), 
         getAudioFormat(), 
         audioData.length, 
         AudioTrack.MODE_STATIC); 


      audioTrack.play(); 
      audioTrack.write(audioData, 0, audioData.length); 


     } catch (Throwable t) { 
      Log.e("AudioTrack", "Playback Failed"); 
     } 
    } 

,但這個程序是在同一時間

打兩個音頻數據一起
|----a----| 
|--b--| 

我想打B []後[],就像這樣:

|----a----||--b--| 

我該如何解決這個問題?

回答

2

您需要檢測的音頻A的音軌播放結束要做到這一點,你需要首先獲得A音頻的音頻長度,並設置音頻音軌通知標記如下

audioTrack.setNotificationMarkerPosition(audioLength); 

然後實現播放位置更新監聽器,並且當到達標記時,您可以按如下方式開始播放音頻B:

audioTrack.setPlaybackPositionUpdateListener(new OnPlaybackPositionUpdateListener() { 
    @Override 
    public void onPeriodicNotification(AudioTrack track) { 
       // nothing to do 
    } 
    @Override 
    public void onMarkerReached(AudioTrack track) { 
       // play the audio B here 
    } 
});