这个Android音频流播放代码有什么问题?

时间:2011-04-20 05:33:24

标签: android streaming media-player

我对此流媒体代码存在问题:

package cm.ex.wwd;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;

public class AudioStream extends Activity {

 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  String url = "http://www.songblasts.com/songs/hindi/t/three-idiots/01-Aal_Izz_Well-(SongsBlasts.Com).mp3";
  MediaPlayer mp = new MediaPlayer();
  try {
   mp.setDataSource(url);
   mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
   mp.prepare();
   mp.start();
  } catch (Exception e) {
   Log.i("Exception", "Exception in streaming mediaplayer e = " + e);
  }
 }
}

3 个答案:

答案 0 :(得分:1)

你给的url不是一个有效的。它显示404 NOT FOUND。所以它为你创造了一个有效的问题

答案 1 :(得分:0)

在不知道确切问题的情况下很难回答。如果您在UI线程上执行此操作,则可能会遇到应用程序崩溃,因为对prepare()的调用可能需要很长时间。在使用流式传输时,最好使用prepareAsync()和关联的侦听器。

如前所述,URL也提供了404.

答案 2 :(得分:0)

我在上面的代码中做了很少的改动。看看这个。

player = new MediaPlayer();
    player.setAudioStreamType(AudioManager.STREAM_MUSIC);
    try {
        player.setDataSource("http://www.hubharp.com/web_sound/BachGavotte.mp3");
        player.setOnErrorListener(this);
        player.setOnPreparedListener(this);
        player.prepareAsync();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }       
}
@Override
public void onDestroy() {
    super.onDestroy();
    player.release();
    player = null;
}
@Override
public void onPrepared(MediaPlayer play) {
    play.start();
}
@Override
public boolean onError(MediaPlayer arg0, int arg1, int arg2) {
    return false;
}