问题:
我的代码有问题。我想循环我的 MediaPlayer,但是当我使用 while 循环时,MediaPlayer 正在播放,但应用程序被冻结。我知道,mediaplayer 有 setLooping
方法,但我必须使用 while 循环来实现,因为我需要在代码中更改声音。
有人知道它的解决方案是什么吗?谢谢。
代码:
public void play() {
while(true) {
if (player == null) {
player = MediaPlayer.create(context, R.raw.zvuk);
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
stopPlayer();
}
});
}
player.start();
}
}
public void stopPlayer() {
if (player != null) {
player.release();
player = null;
}
}
}
答案 0 :(得分:2)
您正在使用无限循环,它永远不会结束。用这个替换你的代码:
public void play() {
if (player == null) {
player = MediaPlayer.create(context, R.raw.zvuk);
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// play again or write your logic for repeat
play();
}
});
}
player.start();
}
public void stopPlayer() {
if (player != null) {
player.release();
player = null;
}
}