メディアプレイヤーは引き続きプレイする

私はメディアプレーヤーを持っていて、いつでもこのアクティビティが呼び出されるのは、メディアプレーヤーが再生していて、それを止めて新しいメディアプレーヤーが再生を開始したい場合です...これは私のオーディオプレーヤーのメソッドです

private void playAudio(String url) throws Exception{

mediaplayer.release();
mediaplayer.setDataSource(url);
mediaplayer.prepare();
mediaplayer.start();

}

私はクラスの初めにメディアプレーヤーを初期化します

private MediaPlayer mediaplayer = new MediaPlayer();
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {

   //TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.songplaying);

   //Getting Our Extras From Intent
     Bundle names = getIntent().getExtras();

   //Getting Specific Data

     path = names.getString("pathkeyword");


     //Start Player
     try {
        playAudio(path);

    } catch (Exception e) {
       e.printStackTrace();

}

これはクラスが作成されるたびに、新しいメディアプレーヤーが作成され、他のプレーヤーを停止せず、同時に両方を再生します。

1

1 答え

あなたは onPause を見て、メディアプレーヤーを殺すことができます。問題は、メディアプレーヤーが2回目になってもメディアプレーヤーへの参照がないことです。その結果、あなたのアクティビティが開始され、音楽が再生されますが、終了すると(たとえばHOMEボタンを押すと)、メディアプレーヤーは停止するように指示されていません(別のスレッドとして実行されます)。これを再び開くと、新しいスレッドで新しいメディアプレーヤーが起動し、2つのサウンドが生成されます。

この問題を解決するには、終了時にメディアプレーヤーを正しく終了してください。アクティビティを終了すると、メディアプレーヤーが正常に終了します:

@Override
protected void onPause(){
    super.onPause();
    if(mediaplayer.isPlaying()){
        try{
            mediaplayer.stop();
        }
        catch(IllegalStateException){
            Log.d("mediaplayer","Media player was stopped in an illegal state.");
        }
    }
}

アクティビティがフォアグラウンドにない間に音楽を続行したい場合は、サービスを使用する必要があります。

2
追加された
iveは、私がかなり確かにそれを試してみました。
追加された 著者 Waggoner_Keith,
ああ、説明と物事に感謝してくれてありがとう
追加された 著者 Waggoner_Keith,
オーディオを停止する方法が必要です。あなたのコードのどこでそれをしますか?
追加された 著者 Dororo,