3

onPause()アクティビティが呼び出されたときにサウンドを再生したい。そのために、次のコードを使用します。

@Override
public void onPause()
{
    super.onPause();

    MediaPlayer player = MediaPlayer.create(this, Settings.System.DEFAULT_RINGTONE_URI);
    player.setLooping(false);
    player.start();
}

これは正常に機能しますが、サウンドは永遠に再生され続けます。を追加しようとしましたOnCompletionListenerが、役に立ちませんでした (Listenerが呼び出されることはありません)。

player.stop()どこにも電話していないことはわかっていますが、どこに電話player.release()すればよいかさえわかりません。

私の質問は次のとおりです。サウンドを一度だけ再生するにはどうすればよいですか? アプリケーションがバックグラウンドに移行する前に、メディア プレーヤーが終了するのを待つ方法はありますか?

4

4 に答える 4

2

わかりました、私は解決策を見つけました。

問題は、私が使用してSettings.System.DEFAULT_RINGTONE_URIいたことで、どうやら再生が止まらないようです。

代わりに使用Settings.System.DEFAULT_NOTIFICATION_URIすると問題が修正されました。

于 2013-05-08T08:58:54.240 に答える
0

これを試すことができます(私が正しく理解していれば)

public boolean test=false; // At begin

public void onPause()
{
    super.onPause();
if(!test){
    MediaPlayer player = MediaPlayer.create(this, Settings.System.DEFAULT_RINGTONE_URI);
    player.setLooping(false);
    player.start();
    test=true;
}
}

何が言いたいのかわからないのかもしれません。もう少し詳しく説明していただければ、お役に立てるかもしれません:)

于 2013-05-08T08:44:21.430 に答える
0

私はこれを行っていませんが、これを確認できると思います

       player.setLooping(false);
       player.setOnCompletionListener(new OnCompletionListener() 
        {
            @Override
            public void onCompletion(MediaPlayer mp)
            {
                player.stop();
                player.release();
            }
        });
于 2013-05-08T08:45:30.870 に答える