2013-11-26 208 views
0

需要播放一些.wav文件,但僅播放某些部分(從開始)。 例如我有test.wav文件,它是10秒,我只想播放0-5秒。 我嘗試使用seekTo方法,但它無助於我的應用程序崩潰。Android播放音頻文件(.wav)

AssetFileDescriptor afd = context.getResources().openRawResourceFd(R.raw.test); 
    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_SYSTEM); 
    mMediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
    mMediaPlayer.setOnPreparedListener(mOnPreparedListener); 
    mMediaPlayer.setOnCompletionListener(mMediaPlayerCompletionListener); 
    mMediaPlayer.seekTo(5000); 
    mMediaPlayer.prepare(); 
+0

意味着,只想要在你的應用程序播放.wav音頻右 –

+0

只.wav文件 – GigantoMK

回答

2

您可以在設定的時間量後停止播放(您的情況爲5秒)。有很多方法可以做到這一點,一個可能是:

final Handler handler = new Handler(); 

//create a runnable that will be called to stop playback 
final Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     //stop playback, make sure mMediaPlayer is declared as a field 
     //in the class where it's used 
     mMediaPlayer.stop(); 
    } 
}; 

//post a job for handler do be done in 5 seconds 
handler.postDelayed(runnable, 5 * 1000); 
+0

感謝您的好主意! – GigantoMK

0

您準備打電話之前,你可以不求,我不知道你是否能做到這一點實際調用MediaPlayer.play()說實話之前,你需要檢查了,但可以肯定的準備先行。

+0

啊這是事實的某些部分。我需要在準備後致電seekto,但不幸的是,seekto開始從設置位置開始播放記錄,而不是從開始... – GigantoMK