2014-09-30 53 views
1

我需要通過AudioTrack播放pcm文件,我想知道它已完成播放或沒有?如何查找audioTrack已完成/停止播放?

我的代碼:

scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() { public 
       void run() { 

       if (audioTrack.getPlayState() == AudioTrack.PLAYSTATE_STOPPED) { 
       System.out.println("stop"); } // doSomethingUseful(); 
       } 
      }, 0, 1, TimeUnit.SECONDS); 

然後

do{ 
if (audioTrack.getPlayState() == AudioTrack.PLAYSTATE_STOPPED) { 

       // stop(); // myAudioRecorder.release(); // stop(); // 
       myAudioRecorder = new MediaRecorder(); // myAudioRecorder.stop(); 
       System.out.println("stopped......................."); // 
       myAudioRecorder.release(); r_start = false; } 

       } while (r_start == true); 

但沒有上述工作。

我怎麼知道它已經完成播放?

回答

0
audioTrack 
        .setPlaybackPositionUpdateListener(new OnPlaybackPositionUpdateListener() { 

         @Override 
         public void onPeriodicNotification(AudioTrack track) { 
          // TODO Auto-generated method stub 

         } 

         @Override 
         public void onMarkerReached(AudioTrack track) { 
          // TODO Auto-generated method stub 

          stop(); 

          // messageHandler.sendMessage(messageHandler.obtainMessage(PLAYBACK_END_REACHED)); 

         } 
        });