Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid 2.2 MediaPlayer is working fine with one SHOUTcast URL but not with the other one
    primarykey
    data
    text
    <p>Please see the code i am using for streaming shoutcast stream, it works with one URL but NOT with the other one.</p> <p>This one works:</p> <pre><code>Uri myUri = Uri.parse("http://fr3.ah.fm:9000/"); </code></pre> <p>But not with this one:</p> <pre><code>Uri myUri = Uri.parse("http://someOtherURL"); </code></pre> <p>SimpleMusicStream.java</p> <pre><code>import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; public class SimpleMusicStream extends Activity implements MediaPlayer.OnCompletionListener, MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener, MediaPlayer.OnBufferingUpdateListener { private String TAG = getClass().getSimpleName(); private MediaPlayer mp = null; private Button play; private Button pause; private Button stop; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); play = (Button) findViewById(R.id.play); pause = (Button) findViewById(R.id.pause); stop = (Button) findViewById(R.id.stop); play.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { play(); } }); pause.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { pause(); } }); stop.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { stop(); } }); } private void play() { Uri myUri = Uri.parse("http://fr3.ah.fm:9000/"); try { if (mp == null) { this.mp = new MediaPlayer(); } else { mp.stop(); mp.reset(); } mp.setDataSource(this, myUri); // Go to Initialized state mp.setAudioStreamType(AudioManager.STREAM_MUSIC); mp.setOnPreparedListener(this); mp.setOnBufferingUpdateListener(this); mp.setOnErrorListener(this); mp.prepareAsync(); Log.d(TAG, "LoadClip Done"); } catch (Throwable t) { Log.d(TAG, t.toString()); } } @Override public void onPrepared(MediaPlayer mp) { Log.d(TAG, "Stream is prepared"); mp.start(); } private void pause() { mp.pause(); } private void stop() { mp.stop(); } @Override public void onDestroy() { super.onDestroy(); stop(); } public void onCompletion(MediaPlayer mp) { stop(); } public boolean onError(MediaPlayer mp, int what, int extra) { StringBuilder sb = new StringBuilder(); sb.append("Media Player Error: "); switch (what) { case MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK: sb.append("Not Valid for Progressive Playback"); break; case MediaPlayer.MEDIA_ERROR_SERVER_DIED: sb.append("Server Died"); break; case MediaPlayer.MEDIA_ERROR_UNKNOWN: sb.append("Unknown"); break; default: sb.append(" Non standard ("); sb.append(what); sb.append(")"); } sb.append(" (" + what + ") "); sb.append(extra); Log.e(TAG, sb.toString()); return true; } public void onBufferingUpdate(MediaPlayer mp, int percent) { Log.d(TAG, "PlayerService onBufferingUpdate : " + percent + "%"); } } </code></pre> <p>main.xml:</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"&gt; &lt;Button android:text="Play" android:id="@+id/play" android:layout_width="wrap_content" android:layout_height="wrap_content"&gt;&lt;/Button&gt; &lt;Button android:text="Pause" android:id="@+id/pause" android:layout_width="wrap_content" android:layout_height="wrap_content"&gt;&lt;/Button&gt; &lt;Button android:text="Stop" android:id="@+id/stop" android:layout_width="wrap_content" android:layout_height="wrap_content"&gt;&lt;/Button&gt; &lt;/LinearLayout&gt; </code></pre> <p><strong>The Log-cat shows errors:</strong></p> <pre><code>NuHTTPDataSource(33): Server did not give us the content length! Media Player Error: Unknown (1) -2147483648 Media Player Error: Unknown (1) -1002 </code></pre> <p>Can someone help me to fix it?</p> <p><strong>EDIT:</strong></p> <p>Just to share with you people, that our <a href="https://stackoverflow.com/questions/8671479/android-mediaplayer-setdatasource-works-fine-in-our-custom-audio-streaming-app">current code works with Android 2.1 &amp; minor versions, but not works with Android 2.2 or higher</a>.</p> <p>Thanks</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload