Запустить буфер для медиаплеера в PageViewer (Android)
Я пытаюсь передать 2-3 секундные файлы.ogg в PageViewer, мне нужна возможность буферизовать 3-4 файла.ogg, чтобы они мгновенно нажимали на кнопку предварительного просмотра.
Пример: загружается сетка просмотра миниатюр. Пользователь нажимает на любую миниатюру. Загрузка загружается в ViewPager. ViewPager отображает изображение и кнопку воспроизведения. Нажатие кнопки "Воспроизвести" MediaPlayer загрузит звук с URL-адреса. Когда я нажимаю кнопку "Воспроизвести", задержка воспроизведения составляет 1–4 секунды. начинается, я провожу до следующей страницы и нажимаю кнопку воспроизведения с задержкой в 1-4 секунды
Можно ли предварительно загрузить / буферизовать следующие 2-3 вкладки ViewPager, чтобы у меня было мгновенное воспроизведение?
Эти файлы маленькие, 25-100kb.
public void playmusic () {
try {
this.mediaPlayer = new MediaPlayer();
if (mediaPlayer.isPlaying() || mediaPlayer != null) {
this.stopAudio();
this.mediaPlayer.stop();
}
this.mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
this.mediaPlayer.setDataSource(arrayURLAudio[getPos()]);
this.mediaPlayer.prepare();
this.mediaPlayer.start();
} catch (IOException ioe) {
}catch (IllegalThreadStateException itse){
}catch (Exception e){
}
Также
pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i2) {
}
@Override
public void onPageSelected(int i) {
if (mediaPlayer != null) {
stopAudio();
}
textView.setText(arrayURLAnimalName[i]);
setPos(i);
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
//ОБНОВИТЬ:
Я пытался создать массив MediaPlayer[], но это выглядит как ноль.
Переменная экземпляра: MediaPlayer[] arrayMediaPlayer;
OnCreate:
arrayMediaPlayer = new MediaPlayer[arrayURLAudio.length];
for (int i = 0; i < arrayURLAudio.length; i++) {
try {
arrayMediaPlayer[i].setDataSource(arrayURLAudio[i]);
} catch (IOException ioe) {
} catch (NullPointerException npe) {
};
Если я попытаюсь распечатать мой arrayMediaPlayer[i], он получит значение null.
1 ответ
Вы создаете только один MediaPlayer в своем первом фрагменте кода. Затем вы создаете пустой массив типа MediaPlayer и пытаетесь получить к нему доступ, прежде чем добавлять игроков. Поэтому, чтобы он работал, вам нужно установить arrayMediaPlayer[i] с новым MediaPlayer, прежде чем устанавливать источник данных.