Shoutcast流不能在Android设备2.2中工作

时间:2011-11-30 06:30:59

标签: android http-live-streaming shoutcast

我正在我的应用程序中进行shoutcast流式传输。该应用程序正在Android模拟器2.2上播放链接,但同样没有在设备中播放。为什么?我正在使用galaxy tab 2.2。是否需要进行任何设置?感谢帮助。清单中是否需要特殊许可?

    public class radiog 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://stream.radiosai.net:8020/");
    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 + "%");
}
    }

0 个答案:

没有答案