Media Player stream url, then play next url
13,761
You can register an OnCompletionListener with the media player. When it receives its callback notification, you need to call reset()
, setDataSource
, and prepare()
on the media player for the next URL.
I don't believe there is anything in the api to tell you what data source a media player is using. You need to keep track of that yourself.
Author by
Splitusa
Updated on June 04, 2022Comments
-
Splitusa about 2 years
I'm currently have a media player that is streaming an mp3 file. When that file is done, what is the code so that it goes to the next url/mp3?
And also, is there code to get the name of the file and display it? how would I go about doing that?
thanks
EDIT
see my code below:
package com.example.m3uplayer; import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.media.MediaPlayer.OnCompletionListener; public class m3uPlayer extends Activity implements MediaPlayer.OnCompletionListener { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // //http://dl.dropbox.com/u/24535120/AfroJack-UMF11-clip2.mp3 //http://dl.dropbox.com/u/24535120/Avicii%20clip%201.mp3 Uri myUri = Uri.parse("http://dl.dropbox.com/u/24535120/AfroJack-UMF11-clip2.mp3"); MediaPlayer sdrPlayer = new MediaPlayer(); try { sdrPlayer.setDataSource(this, myUri);//"http://mp1.somafm.com:8032"); sdrPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); sdrPlayer.prepare(); //don't use prepareAsync for mp3 playback } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } sdrPlayer.start(); } @Override public void onCompletion(MediaPlayer sdrPlayer) { Uri myUri5 = Uri.parse("http://dl.dropbox.com/u/24535120/Avicii%20clip%201.mp3"); try { sdrPlayer.setDataSource(this, myUri5); sdrPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); sdrPlayer.prepare(); //don't use prepareAsync for mp3 playback } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } sdrPlayer.start(); } }
-
Splitusa about 13 yearsThanks for the help Ted. So there is no way to have the title of the song appear when that song is playing from the URL?
-
Splitusa about 13 yearsAlso, kind of a random question...Is it possible to create an array with muliple URLs inside and have the media player play the array? If it is possible, would i still have to set an on completion listener? thanks
-
Ted Hopp about 13 yearsThere's nothing in the api that I know of to extract the song title. The only thing I can suggest is processing the mp3 stream yourself and then feeding it to the media player through a local file. There's experimental code to do that in Reuben Scratton's answer to this query. As to your second question, I think you'll have to step through the url array yourself using an on completion listener.
-
Splitusa about 13 yearshmmm ok. thanks for the link. So i have been trying with the code above and it is not playing the second url. any suggesstions? it just replays the first song
-
Ted Hopp about 13 yearsThe idea would be that in your OnCompletionListener, you would go on to the next url. Your code always calls
setDataSource
with the same one. -
dorien almost 12 yearsI could be wrong, but can't you not use developer.android.com/reference/android/media/… to get the track info?
-
Ted Hopp almost 12 years@dorien - That can be used, but only if you're running Jelly Bean. It doesn't exist below API level 16.