2013-11-26 4 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

означает U хочет играть только .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 после подготовки, но, к сожалению, поиск начал играть запись с заданной позиции не с начала ... – GigantoMK

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