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 に答える