2015-05-04 4 views
2

Вот функция воспроизведения некоторых аудиозаписей.Воспроизведение 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--| 

Я хочу играть б [] после того, как [], как это:

|----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 
    } 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^