Worker123
Worker123

Reputation: 587

Android mediaplayer stream not playing

i'm trying to work with internet radio streams, but on some streams I get nothing except this:

05-14 13:16:13.480: E/MediaPlayer(2088): error (1, -2147483648)
05-14 13:16:13.480: W/System.err(2088): java.io.IOException: Prepare failed.: status=0x1
05-14 13:16:13.480: W/System.err(2088):     at android.media.MediaPlayer.prepare(Native Method)
05-14 13:16:13.480: W/System.err(2088):     at com.darko.mk.RadioTresActivity$2.run(RadioTresActivity.java:141)
05-14 13:16:13.480: W/System.err(2088):     at java.lang.Thread.run(Thread.java:1019)

Some stations are working fine but some are not playing at all.

Here is my code that gives the error:

public void playRadio(final String source) {
        new Thread(new Runnable() {

            public void run() {
                try {
                    mediaPlayer.release();
                    mediaPlayer = new MediaPlayer();
                    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    mediaPlayer.setDataSource(source);
                    mediaPlayer.prepare(); //line 141 that gives the error
                    mediaPlayer.start();
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IllegalStateException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();

    }

What can be the problem? Here is the souce example:http://217.16.69.17:8000/metropolis.mp3

Upvotes: 2

Views: 1663

Answers (2)

Meher
Meher

Reputation: 2585

To Stream audio using Android media player you should start playing audio once you receive onPreparedListner callback.As loading the data into the media player takes time .If you start playing the media player without listening onPreparedListner media player will Exception.

Upvotes: 0

Meir Gerenstadt
Meir Gerenstadt

Reputation: 3593

Android documentation

"For streams, you should call prepareAsync(), which returns immediately, rather than blocking until enough data has been buffered."

iplayer.setOnPreparedListener(new OnPreparedListener() {
    public void onPrepared(MediaPlayer mp) {
        mp.start();
    }
});
iplayer.prepareAsync();

Upvotes: 2

Related Questions