На сервере лежат довольно большие файлы в формате mp3, есть необходимость прослушать их не с начала, а с определенного места.
При вызове seekTo() позиция меняется, но в буффер продолжает вбиваться весь файл с самого начала. Как сделать так, чтобы в буффер шёл только кусок после выставленной позиции?
Код функции:
public void playMusic(String url){
destroyMusic();
AudioManager am=(AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
am.requestAudioFocus(null,AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
mp=new MediaPlayer();
mp.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener(){
public void onSeekComplete(MediaPlayer mp){
mp.setVolume(0,0);
mp.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener(){
public void onBufferingUpdate(MediaPlayer mp, int pc){
float duration=mp.getDuration()/1000;
float buffer=duration/100*pc;
float current=mp.getCurrentPosition()/1000;
float loadTo=current+30;
float l=buffer/loadTo*100;
if(loading!=null) loading.setText("Буфферизация аудио... "+(int)l+"%");
if(buffer-current>=30){
mp.setOnBufferingUpdateListener(null);
spawnAnswer();
startTimer(0);
int realW=getSizes()[0];
anim=ValueAnimator.ofInt(0, realW/50);
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
int val = (Integer) valueAnimator.getAnimatedValue();
if(timeBut==null) return;
ViewGroup.LayoutParams layoutParams=timeBut.getLayoutParams();
layoutParams.height=val;
timeBut.setLayoutParams(layoutParams);
}
});
anim.setDuration(500);
anim.start();
mp.start();
fadeInAudio();
}
}});
}});
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener(){
public void onPrepared(MediaPlayer mp){
int d=mp.getDuration();
int r=60000;
if((r+30000)>d){
r=d-30000;
}
mp.seekTo(new Random().nextInt(r));
}});
try{
mp.setDataSource(url);
mp.prepareAsync();
}
catch (IllegalStateException e){
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости