java.lang.IllegalStateException на android.media.MediaPlayer._prepare (собственный метод) - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть просмотрщик с изображением. когда я нажимаю на изображение, он должен проверить наличие музыки в папке, если она не найдена, загрузить ее и, если найден, воспроизвести ее. когда я хочу установить музыку на медиаплеере, выдает ошибку

java.lang.IllegalStateException at android.media.MediaPlayer._prepare (собственный метод)

это onBindViewHolder в адаптере утилита просмотра:

 @Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
    final musicFragment_dataModel list_item = list_Items.get(position);
    holder.txtSinger.setText(list_item.getSinger());
    holder.txtDescription.setText(list_item.getMaddahi_text());

    final String songname = list_item.getSongName();
    final File musicFile = new File(android.os.Environment.getExternalStorageDirectory(), "meraat_music/" + songname + ".mp3");
    if (!musicFile.exists()) {
        holder.imageView.setBackground(download);
    } else {
        boolean result = list_item.isFlag();
        if (!result) {
            holder.imageView.setBackground(play);
            playing = false;
        } else {
            holder.imageView.setBackground(pause);
            playing = true;
        }
    }


    holder.imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            myMediaPlayer = new MediaPlayer();
            songUri = list_item.getAudiolink();
            if (holder.imageView.getBackground() == play) {
                if (flagNumber != -1) {
                    list_Items.get(flagNumber).setFlag(false);
                    notifyItemChanged(flagNumber);
                }
                flagNumber = holder.getAdapterPosition();
                //  songUri = list_item.getAudiolink();
                if (myMediaPlayer != null) {
                    myMediaPlayer.stop();
                    myMediaPlayer.release();
                }
              //  Uri uri = Uri.parse(musicFile.getPath());
                try {
                    myMediaPlayer.setDataSource(context,Uri.fromFile(musicFile));
                } catch (IOException e) {
                    e.printStackTrace();
                }

                //Toast.makeText(context,info,Toast.LENGTH_LONG).show();
                playerService2.play();
                holder.imageView.setBackground(pause);
                list_item.setFlag(true);
                playing = true;

            } else if (holder.imageView.getBackground() == pause) {
                playerService2.pause();
                holder.imageView.setBackground(play);
                list_item.setFlag(false);
                playing = false;
            } else if (!musicFile.exists()) {
                new DownloadFileFromUrl(context, musicFile).execute(songUri);
            }


        }
    });

}
...