我试图将2-3秒的.ogg文件流到PageViewer中,我需要缓冲3-4 .ogg文件的能力,这样当它们单击预览时,它就会立即出现。
示例:加载缩略图的Gridview用户单击加载到ViewPager ViewPager中的任何缩略图活动,显示一个图像和一个播放按钮,单击“播放”,MediaPlayer将从一个URL加载音频,当我单击“播放”时,它有1-4秒的延迟,直到播放开始,然后滑动到下一个页面,然后用另一个1-4秒的延迟点击播放按钮。
是否有可能预加载/缓冲下一个2-3 ViewPager标签,这样我就可以立即播放?
这些文件很小,25-100 25。
公开无效音乐(){
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[]数组,但是这个结果是null。
实例变量: 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) {
};如果我试图打印出我的arrayMediaPlayeri,它将显示为null。
发布于 2014-01-21 03:52:37
在第一个代码段中只创建一个MediaPlayer。然后创建一个类型为MediaPlayer的空数组,并在添加播放器之前尝试访问它。因此,在设置数据源之前,需要使用新的arrayMediaPlayeri设置MediaPlayer。
https://stackoverflow.com/questions/21229488
复制相似问题