web-dev-qa-db-ja.com

サウンドファイルの終了をどのように検出しますか?

ブロードキャストレシーバーアクティビティ内でこのコードを使用してサウンドファイルを再生しています。

_notification.sound = Uri.parse("Android.resource://emad.app/raw/seven_chimes");
_

このファイルの再生が終了したことを検出したいと思います。

私はこのようなループを試しましたが、サウンドファイルがまだ再生されていることを確認したにもかかわらず、常に= falseなので、これはメディアプレーヤーにのみ適していると思います:

_/*
 * Stay here until the chime sound is finished.
 */
   while (manager.isMusicActive()){
   }
_

manager.isMusicActive()の代わりに使用すべきものを教えてもらえますか?

44
Emad-ud-deen

MediaPlayerクラスを使用して、サウンドの再生が終了したときにアクティブになるCompletionリスナーを追加できます。

MediaPlayer mp = MediaPlayer.create(this,Uri.parse("Android.resource://emad.app/raw/seven_chimes"));

mp.setOnCompletionListener(new OnCompletionListener() {

    @Override
    public void onCompletion(MediaPlayer mp) {
        performOnEnd();
    }

});

mp.start();
105
Ronny

サービスを使用して音楽を再生してみてください。一度再生した後、サービスを停止すると、onDestroy()サービスメソッドにプログラムを追加できます。

1
Michael Frans