Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从SC 2服务器选择要播放的SID?_Java_Android_Android Mediaplayer_Shoutcast - Fatal编程技术网

Java 如何从SC 2服务器选择要播放的SID?

Java 如何从SC 2服务器选择要播放的SID?,java,android,android-mediaplayer,shoutcast,Java,Android,Android Mediaplayer,Shoutcast,我的代码如下所示,一切正常 public void ibutton_play_stop_click(View v) { switch(sharedPrefs.getInt("quality", 1)) { case 0: { uriStationURL = Uri.parse(StaticVars.RadioStations[0]); break; } case 1:

我的代码如下所示,一切正常

public void ibutton_play_stop_click(View v)
{
    switch(sharedPrefs.getInt("quality", 1))
    {
        case 0:
        {
            uriStationURL = Uri.parse(StaticVars.RadioStations[0]);
            break;
        }
        case 1:
        {
            uriStationURL = Uri.parse(StaticVars.RadioStations[1]);
            break;
        }
        case 2:
        {
            uriStationURL = Uri.parse(StaticVars.RadioStations[2]);
            break;
        }
        case 3:
        {
            uriStationURL = Uri.parse(StaticVars.RadioStations[3]);
            break;
        }
    }       
    try
    {           
        if((player == null) || (!player.isPlaying()))
        {
            this.player = new MediaPlayer();
            prgBrBuffer.setVisibility(android.view.View.VISIBLE);
            player.stop();
            player.reset(); 
            player.setDataSource(this, uriStationURL);
            player.setAudioStreamType(AudioManager.STREAM_MUSIC);
            player.setOnPreparedListener(this);
            player.setOnBufferingUpdateListener(this);
            player.setOnErrorListener(this);
            player.prepareAsync();
            ibttnPlayStop.setEnabled(false);
        }
        else if((player != null) && (player.isPlaying()))
        {
            player.stop();
            player.reset();         
            player = null;
        }

    }
    catch(IOException e)
    {
        Log.e("Media Player Error: ", e.toString());
    }
}
但无论选择哪个选项,每次播放同一个流时都会选择“?sid=”


我现在的问题是:如何从我的shoutcast2服务器选择哪个给定sid正在从媒体播放器播放?

不要使用server.address/?sid=x,而只使用server.address/x

不要使用server.address/?sid=x,只需使用服务器即可。地址/x

可能是因为您的mediaplayer未刷新。从您的问题陈述来看,似乎是这样。我用完整的代码编辑了它。正如你所看到的,我每次都重新加载完整的播放器,可能是因为你的mediaplayer没有刷新。从你的问题陈述来看,似乎是这样。我用我的完整代码编辑了它。正如你所看到的,我每次尝试你的解决方案时都会重新加载完整的播放器,但仍然是相同的问题,这是罪过。您无法通过流的数字id直接访问实际流。不过,您可以通过获取server.address/listen.pls?sid=x来获取相对播放列表文件,然后解析输出并获取条目File1=中列出的地址,这将为您提供流的实际装入点名称(即server.address:port/streamname)尝试了您的解决方案,但仍然存在相同的问题,这是错误的。您无法通过流的数字id直接访问实际流。不过,您可以通过获取server.address/listen.pls?sid=x来获取相对播放列表文件,然后解析输出并获取条目File1=中列出的地址,这将为您提供流的实际装入点名称(即server.address:port/streamname)