我試圖在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