Воспроизведение мультимедиа с использованием URL в Android с использованием Media

#android #url #uri #android-mediaplayer

#Android #url #uri #android-медиаплеер

Вопрос:

Я пытаюсь воспроизвести музыку с URL-адреса с помощью медиаплеера, но получаю ошибку при ее воспроизведении

         final MediaPlayer mp = new MediaPlayer();
    try {

        mp.setDataSource(url[0]);
        mp.prepare();
        mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mediaPlayer) {
                mp.start();
            }
        });
    } catch(Exception e){
        System.out.println(e);
    }
  

я также пытался использовать с URI

         Uri uri = Uri.parse(url[0]);
        mp.setDataSource(context,uri);
        mp.prepare();
  

А также пробовал использовать mp.prepareAsync(); метод

Но затем также возникает ошибка такого типа, и мультимедиа не воспроизводится

 W/MediaPlayer: Couldn't open 
java.io.FileNotFoundException: No content provider: 
    at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1675)
    at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1505)
    at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1422)
    at android.media.MediaPlayer.attemptDataSource(MediaPlayer.java:1101)
    at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1073)
    at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1001)
    at com.tuwy.Dailog.DialogClass.showAudioDialog(DialogClass.java:272)
  

и получение этого также

 W/AudioTrack: Use of stream types is deprecated for operations other than volume control
See the documentation of AudioTrack() for what to use instead with android.media.AudioAttributes to qualify your playback use case
V/AudioTrack: pause(2131): prior state:STATE_ACTIVE
I/System.out: java.io.FileNotFoundException: : open failed: ENOENT (No such file or directory)
  

Комментарии:

1. mp.setDataSource(url[0]); Вы хоть представляете, что такое значение url [0]? Мы этого не делаем. Мы не знаем, что вы пытаетесь.

Ответ №1:

У меня такая же проблема, и этот код решил мою проблему

я использовал другой поток для воспроизведения музыки с url…

     final Handler handler =new Handler();

    final Thread audioThread = new Thread(new Runnable() {
        @Override
        public void run() {
            final MediaPlayer mediaPlayer = new MediaPlayer();

            Uri myUri = Uri.parse(url[0]);
            try {
                mediaPlayer.setDataSource(context, myUri);
                mediaPlayer.prepare();
            } catch (IOException e) {
                e.printStackTrace();
            }

            handler.post(new Runnable() {
                @Override
                public void run() {
                    btnPlayPause.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            if (mediaPlayer.isPlaying()) {
                                mediaPlayer.pause();
                            } else {
                                if (mediaPlayer.getCurrentPosition() > 0)
                                    mediaPlayer.seekTo(0);
                                mediaPlayer.start();
                            }
                        }
                    });
                }
            });
        }
    });
  

** url [0] означает ваш музыкальный URL, а btnplaypause — кнопка для воспроизведения и приостановки звука

Надеюсь, это тоже решит вашу проблему…

Комментарии:

1. Да, это действительно сработало, но при перезапуске музыки оно начинается с начала

2. если вы хотите, чтобы музыка начиналась с того места, где вы оставили, удалите эти 2 строки — if (MediaPlayer.getCurrentPosition()> 0) MediaPlayer.seekTo(0);

Ответ №2:

попробуйте проанализировать URL-адрес в Uri.parse (url), это может сработать.