Android上的Shoutcast Radio

时间:2014-05-06 10:28:16

标签: android shoutcast internet-radio

我正在制作一款来自互联网的流式广播内容应用!我花了很多时间试图找到一个简单的源代码来展示如何实现流媒体内容! 我在StackOverflow中找到了一些有用的链接,但没有人为我工作! 拜托我需要你的帮忙 ! ,这是我制作的代码片段,但仍然无法正常工作!而且我不知道为什么! Ps:广播电台的网址工作正常

package com.example.radio;

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

public class MainActivity extends Activity implements OnPreparedListener  {



    MediaPlayer mp;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try {
             mp = new MediaPlayer();
             String url="http://108.168.175.174:7120";
             mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
             mp.setDataSource(url);
             mp.prepareAsync();
             mp.setOnPreparedListener(this);
        } catch (Exception e) {
            Log.i("ExceptionOnCreate:",e.getMessage());
        }


    }

    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.start();

    }



}

这是log cat:

05-06 10:20:07.291: E/MediaPlayer(1470): error (1, -2147483648)
05-06 10:20:07.291: E/MediaPlayer(1470): Error (1,-2147483648)

1 个答案:

答案 0 :(得分:1)

您的问题可能是由于SHOUTcast将您发送到管理界面。如果您的用户代理字符串包含Mozilla,那么您将获得管理页面而不是流。您可以通过在URL中请求分号来覆盖此行为:

http://108.168.175.174:7120/;

这会强制服务器将您的用户代理字符串视为MPEG OVERRIDE,它会向您发送真正的流。

如果这不能解决问题,您可能会遇到SHOUTcast服务器不符合HTTP的问题。他们将状态行发送为ICY 200 OK而不是HTTP/1.0 200 OK,从而打破了许多客户。