我正在尝试在 PageViewer 中流式传输 2-3 秒 .ogg 文件,我需要能够缓冲 3-4 个 .ogg 文件,以便在他们单击预览时立即显示。
示例:加载缩略图的 Gridview 用户单击任何缩略图 Activity 加载到 ViewPager ViewPager 显示图像和播放按钮 单击播放 MediaPlayer 将从 URL 加载音频 当我单击播放时,它有 1-4 秒的延迟直到播放开始我滑动到下一页并点击播放按钮,再延迟 1-4 秒
是否可以预加载/缓冲接下来的 2-3 个 ViewPager 选项卡,以便即时播放?
这些文件很小,25-100kb。
公共无效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;
创建:
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。