2016-08-25 7 views
1

Я пробовал MediaPlayer, ExoPlayer, SoundPool. У всех из них был пробел при записи аудиофайлов длиной 15 сек. Есть ли какое-либо решение или библиотека?Есть ли какая-нибудь библиотека для беззаботного аудио-цикла?

+0

вы пытались это mediaPlayer.setLooping (истина); ?? –

+0

Конечно. Но между двумя играми есть небольшой разрыв. Мне нужен бесцельный цикл. –

+0

попробуйте http://stackoverflow.com/a/13410499/5545429 –

ответ

0

новый выпуск Exoplayer2 поддерживает бесщеточный звук, считывая всю информацию из заголовков id3. Вам нужно только создать ConcatenatingMediaSource, включая все ваши треки, и если они содержат беспроблемную информацию в заголовках, сам плеер будет их комбинировать автоматически.

с помощью демо Exoplayer2:

String[] uriStrings = new String[]{ 
     Environment.getExternalStorageDirectory()+"/Music/gapless/temp1.mp3", 
     Environment.getExternalStorageDirectory()+"/Music/gapless/temp2.mp3" 
}; 
uris = new Uri[uriStrings.length]; 
for (int i = 0; i < uriStrings.length; i++) { 
    uris[i] = Uri.parse(uriStrings[i]); 
} 

MediaSource[] mediaSources = new MediaSource[uris.length]; 
for (int i = 0; i < uris.length; i++) { 
    mediaSources[i] = buildMediaSource(uris[i], extensions[i]); 
} 
MediaSource mediaSource = new ConcatenatingMediaSource(mediaSources); 

player.prepare(mediaSource, !shouldRestorePosition); 

Там также LoopingMediaSource управлять зацикливания MediaSources. Вы можете комбинировать все источники мультимедиа в дереве.

Единственная проблема заключается в том, что структура MediaSources, которую вы даете игроку в подготовке, является статичной.