我试图在PageViewer中流动2-3秒.ogg文件,我需要缓冲3-4个.ogg文件的能力,以便当它们点击预览。PageViewer中的媒体播放器的启动缓冲区(Android)
实施例:缩略图 的GridView被装载在任何缩略图 活动载荷 用户点击到ViewPager ViewPager显示图像加上一个播放按钮 点击播放的MediaPlayer会从网址 加载音频当我点击播放它有一个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) {
}
});
// UPDATE:
我试图创建一个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],它来了空。
啊!谢谢:)这已经解决了我的空指针。现在我需要弄清楚如何使prepareAsync不会抛出IllegalStateException,但我可以解决这个问题:) – Will