The below code is a section of a music player project in which songs are fetched from External Storage and displayed using RecyclerView. Using the Toast I displayed the path and its displaying correct path. But still on clicking a particular song the song is not getting played. Following Error is shown:
2021-02-13 13:07:05.727 4846-4846/com.mohit.musicplayer E/ExtMediaPlayer-JNI: env->IsInstanceOf fails
2021-02-13 13:07:05.727 4846-4846/com.mohit.musicplayer E/MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
@Override
public void onBindViewHolder(@NonNull viewHolder holder, int position) {
holder.song_name.setText(data.get(position).getSong_name());
holder.song_name.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mediaPlayer=new MediaPlayer();
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getPath()+"/"+data.get(po sition).getSong_name()+".mp3";`
Toast.makeText(context,path,Toast.LENGTH_LONG).show();
Uri uri = Uri.parse(path);
try {
mediaPlayer.setDataSource(context,uri);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();
}
});
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
stop();
}
});
}
});
}
@Override
public int getItemCount() {
return data.size();
}
public void stop()
{
if(mediaPlayer!=null)
{
mediaPlayer.release();
mediaPlayer=null;
}
}