2014-01-20 3 views
1

PageViewer에서 2-3 초 .ogg 파일을 스트리밍하려고하는데, 3-4 .ogg 파일을 버퍼링 할 수 있어야합니다. 미리보기를 클릭하십시오.PageViewer의 미디어 플레이어 시작 버퍼 (안드로이드)

는 예 : 축소판 GRIDVIEW이 ViewPager ViewPager에 축소판 작업 부하에 사용자의 클릭을로드는 이미지와 재생 버튼 클릭하면 내가 플레이를 클릭하면 URL 에서 오디오를로드 할 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) { 
     }; 

내가 [I], 그것으로 널오고 내 arrayMediaPlayer를 인쇄하려고하면

.

답변

1

첫 번째 코드 단편에 하나의 MediaPlayer 만 만듭니다. 그런 다음 플레이어를 추가하기 전에 MediaPlayer 유형의 빈 배열을 만들고 액세스하려고합니다. 따라서 작동하려면 데이터 소스를 설정하기 전에 새 MediaPlayer로 arrayMediaPlayer [i]를 설정해야합니다.

+0

아! 고마워 :) 이것은 널 포인터를 해결했다. 이제 prepareAsync가 IllegalStateException을 던지지 않게 만드는 방법을 알아야하지만 문제를 해결할 수 있습니다. :) – Will

관련 문제