title: Android 2.2 MediaPlayer is working fine with one SHOUTcast URL but not with the other one
body: <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>