2

MediaPlayerインスタンスmPlayerがあります。Java。 MediaPlayerインスタンスのonCompletionメソッドを再定義する方法

mPlayerのプレイが完了したら、何かアクションをしたいです。私はこれがインターフェイスOnCompletionListeneronCompletionメソッドによって行われていることを見てきました。

mPlayerインスタンスでこのメソッドを再定義するにはどうすればよいですか?

編集:

私は私のAPI AudioPlayerを作成しました。

私は様々なAudioPlayersを持っています。しかし、私は一度に一つの遊びが欲しいだけです。したがって、私は相互排除を実装しました(厳密にはそうではありませんが、私のアプリにとっては十分です)。

boolean token = true; 

public void onClick(View v) { 
    if (token) { 
     token = false; 
     mPlayer.startPlaying(); 
    } 
} 

再生が終了すると、トークンが返されます。あなたは次の操作を実行しようとすることができ

onCompletion() { 
    token = true; 
} 
+0

を助ける私達にあなたの 'MediaPlayer'とどのような行動あなたはOnCompletionListener'上の必要を表示します'。 – Stanojkovic

+0

@Stanojkovic完了!質問ます。public void onCompletion(MediaPlayerの融点){ \t \t \t \t \t \t // TODO –

+1

mPlayer.setOnCompletionListener(新OnCompletionListener(){ \t \t \t \t \t \t \t \t \t \t @Override \t \t \t \t \tを編集しました自動生成メソッドスタブ \t \t \t \t \t \tmPlayer。リリース(); token = true; \t \t \t \t \t} – Stanojkovic

答えて

1

  1. あなたのクラスを変更実装する宣言OnCompletionListener;

  2. リスナーのonCompletion()メソッドを実装します。

  3. 現在のクラスをmPlayerOnCompletionListenerに設定します。

ここでは、コードスニペット変更されます。

public class AudioPlayer implements MediaPlayer.OnCompletionListener { // 1 

    public MediaPlayer mPlayer = new MediaPlayer(); 

    public AudioPlayer(String source, boolean loop) { 
     configurePlayer(source, loop); 
     mPlayer.setOnCompletionListener(this); // 3 
    } 

    @Override 
    public void onCompletion(MediaPlayer mediaPlayer) { // 2 
     token = true; 
    } 

    /* the other class implementation */ 
} 

希望これは、あなたが今まで何をした:)

+0

そして、私はAudioPlayerのすべてのインスタンスが 'onCompletion'をオーバーライドしないようにします。したがって、AudioPlayerのコンストラクタに対する3番目のブール値のパラメータoverrideはうまくいくでしょうし、 'if(override)'、 'setOnCompletionListener'を実行してください –

+1

オプションとしてYeap。もちろん、あなたは、コンストラクタで、あなたの 'の場合(上書き)'句と一緒に使用することができます 'mPlayer.setOnCompletionListener(新MediaPlayer.OnCompletionListener(){@Override ます。public void onCompletion(MediaPlayerのMediaPlayerの){ トークン=真;} }); ''で、クラス宣言で' OnCompletionListener'を指定するのではなく、 –

0

のようなものかもしれないのMediaPlayerクラスを拡張して、uはスーパーを(使用して再定義するメソッドの魔女を上書きしようとする)

+0

AudioPlayerのすべてのインスタンスがメソッドをオーバーライドしないようにしたいと思います。 –

関連する問題