#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), это может сработать.