以下のコードは、メソッドやループを壊すことはありませんが、代わりに音楽を永久にループします。OnCompletionListener(n==maxCount)
の値を変更して出力する必要がある場合n=1
、つまり音楽の再生を停止する必要がある場合、これが私が望むものです。
どうすればこれを修正できますか?
protected void playsound() {
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if (n<=maxCount) {
mp.start();
n++;
if(n==maxCount){
n=1;
return;
}
}
}
});
mp.start();
maxCount値はスピナー値に依存し、n=1
グローバルに宣言されます。
以下は完全に機能する修正されたコードですが、以下のコードに間違いはありますか?一部のユーザーは、「このコードでは、終了条件を見逃す危険性があります。入力時にn == maxCountの場合、n++の後にn>maxCountになるためです。つまり、maxintに到達するまで実行されます。その後、クラッシュします」?
protected void playsound() {
// TODO Auto-generated method stub
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if (n<=maxCount) {
mp.start();
n++;
if(n==maxCount){
n=1;
mp.pause();
mp.seekTo(0);
}
}
}
});
mp.start();
}