3

我有一个服务,它开始在 Android 的后台播放 MP3 流。有一个带有频道选择的菜单活动和播放器活动,它开始播放通过按钮单击选择的 MP3。它使用 MediaPlayer 类。这是 URL 的开始方式。

mp3Service.playSong(getBaseContext(),url);

现在,当返回带有 URL 的菜单时,我想更改正在播放的 URL。我不想停止服务,只更改它的 URL。可能吗?我已经阅读了 MediaPlayer 的文档,但不确定该怎么做,尝试了一些变体。

如何切换到另一个 URL?mp3Service.pauseSong(getBaseContext());

然后停止,然后 mp3Service.playSong(getBaseContext(),newurl)?

////////////////////////////// PART OF THE CLASS

 public String currenturl="";

public void playSong(Context c, String url) {
        if (currenturl.equals(""))
        {
        if(!created){
            this.mplayer = MediaPlayer.create(c, Uri.parse(url));
            created = true;
            currenturl=url;
        }
            this.mplayer.start();
        }
        else
            {
            if (!currenturl.equals(url))
            {

                if(!created){
                    this.mplayer.stop();
                    this.mplayer = MediaPlayer.create(c, Uri.parse(url));
                    created = true;
                    currenturl=url;
                }
                    this.mplayer.start();


            }

            };
    }

public void pauseSong(Context c) {
        this.mplayer.pause();
    }

    //
    public void stopSong(Context c) {
        this.mplayer.stop();
    } 

没那么容易...

4

1 回答 1

0

关于你的评论,这是因为created在第一次播放之后是真的,所以你永远不会执行你的else逻辑。这就是我的做法,我认为没有必要存储单独的created值。

public String currenturl = "";

public void playSong(Context c, String url) {
    if (currenturl.equals(url)) {
        // it's the same
    }
    else {
        // it's not the same
        currenturl = url;
    }
}
于 2013-07-09T10:07:57.203 回答