2016-06-05 2 views
2

내 recycler보기의 각 항목에서 mediaplayer를 사용하고 싶습니다. 나는 그것이 보여 질 때 특정한 품목에 즉시 오디오를하고 싶다.Android : recyclerview에서 mediaplayer 사용

나는 노력하고 있어요 :

public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int i) { 
vhplaymusic = (PersonViewHolderplaymusic) viewHolder; 
mp = MediaPlayer.create(viewHolder.itemView.getContext(), Uri.parse(context.getExternalFilesDir("krishna").getPath() + "/amalharinaam_finalcut_loud.mp3")); 
mp.start(); 
} 

실행하려고에, 그것은 MP가 null 말할 때. 오류에 대한

로그 캣 :

새로운 MediaPlayer를을 만들기 위해, 다음과 같은 방법으로 그것을해야합니까에서
E/AndroidRuntime: FATAL EXCEPTION: main 
E/AndroidRuntime: Process: com.simha.sacredindaapp, PID: 29281 
E/AndroidRuntime: java.lang.NullPointerException 
E/AndroidRuntime:  at com.simha.yatras.Myplanshowrvadapter.onBindViewHolder(Myplanshowrvadapter.java:410) 
E/AndroidRuntime:  at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5217) 
E/AndroidRuntime:  at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5250) 
E/AndroidRuntime:  at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4487) 
E/AndroidRuntime:  at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4363) 
+0

'Uri.fromFile (파일 파일)'이 아니라'Uri.parse'를 사용하십시오. – pskink

+0

uri.parse는 파일의 올바른 경로를 제공합니다. 나는 그 문제를 일으키는 것을 생각하지 않는다. –

+0

그것은 mp가 null이라고 말합니다 –

답변

0

:

MediaPlayer mPlayer = new MediaPlayer(); 
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mPlayer.setDataSource(context.getExternalFilesDir("krishna").getPath() + "/amalharinaam_finalcut_loud.mp3")); 
mPlayer.prepareAsync(); 

prepareAsync를 (사용) 당신이를 차단하지 않습니다 오디오가로드되는 동안 오디오를 재생하므로 콜백 메서드가 필요합니다.

mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
         @Override 
         public void onPrepared(MediaPlayer mPlayer) { 
          Common.dismissLoading(progressDialog); 
          if (mPlayer != null) { 
           mPlayer.start(); 
          } 
         } 
        }); 

그 후에는 mPlayer.start();mPlayer.pause();으로 일시 중지 및 이력서를 처리 할 수 ​​있습니다. 마지막으로 오디오를 더 이상 원하지 않을 때 mPlayer.release();