gpt4 book ai didi

android - 在 PageViewer (Android) 中为媒体播放器启动缓冲区

转载 作者:行者123 更新时间:2023-11-30 03:09:30 25 4
gpt4 key购买 nike

我正在尝试在 PageViewer 中流式传输 2-3 秒的 .ogg 文件,我需要能够缓冲 3-4 个 .ogg 文件,以便在他们单击预览时立即显示。

例子:缩略图的 Gridview 已加载用户点击任何缩略图 Activity 加载到 ViewPagerViewPager 显示一个图像和一个播放按钮单击播放 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;

创建时:

    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。

最佳答案

您只在第一个代码 fragment 中创建了一个 MediaPlayer。然后创建一个 MediaPlayer 类型的空数组,并在添加播放器之前尝试访问它。因此,为了使其正常工作,您需要在设置数据源之前使用新的 MediaPlayer 设置 arrayMediaPlayer[i]。

关于android - 在 PageViewer (Android) 中为媒体播放器启动缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21229488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com