Java Android Studio模拟器bug?即使我设置了mediaPlayer,警报声也会持续循环。设置循环(false)
我不确定这是否只是一个仿真器错误,还是我遗漏了什么。我正在写一个闹钟应用程序。我的应用程序通过RingToneManager获取铃声Uri,然后使用MediaPlayer播放铃声Uri。我想控制铃声是否循环。它可以在我真正的智能手机上正常工作,也可以在Android Studio emulator上使用Uri GET、RingtoneManager.TYPE_通知和RingtoneManager.TYPE_铃声。但是,如果我在emulator中使用Uri GET with RingtoneManager.TYPE_ALARM,即使我设置了mediaPlayer.setLooping(false),它也会继续循环 对我来说,这似乎是一个模拟器错误。然而,我想确保我不会错过一些我需要设置的东西。我不想在应用程序发布后发现,其他人的智能手机与仿真器存在同样的问题。有什么我可以做或检查的吗 以下是相关代码:Java Android Studio模拟器bug?即使我设置了mediaPlayer,警报声也会持续循环。设置循环(false),java,android,android-studio,android-mediaplayer,ringtone,Java,Android,Android Studio,Android Mediaplayer,Ringtone,我不确定这是否只是一个仿真器错误,还是我遗漏了什么。我正在写一个闹钟应用程序。我的应用程序通过RingToneManager获取铃声Uri,然后使用MediaPlayer播放铃声Uri。我想控制铃声是否循环。它可以在我真正的智能手机上正常工作,也可以在Android Studio emulator上使用Uri GET、RingtoneManager.TYPE_通知和RingtoneManager.TYPE_铃声。但是,如果我在emulator中使用Uri GET with RingtoneMan
activeAlarmSound = new MediaPlayer();
activeAlarmSound.setAudioAttributes(
new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setUsage(AudioAttributes.USAGE_ALARM)
.build()
);
try {
activeAlarmSound.setDataSource(this, Uri.parse(ringToneString));
if (!hasBGMusic && !timeUpItem.sayDate && !timeUpItem.sayDay && !timeUpItem.sayTime) {
activeAlarmSound.setLooping(true);
} else {
activeAlarmSound.setLooping(false);
}
activeAlarmSound.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
if (playedBGMusic && timeUpItem.getDismissMethod() == 0) {
stopSelf();
} else {
playedAlarmSound = true;
if (activeBGMusic == null) {
playBGMusic();
} else {
activeBGMusic.start();
}
if (timeUpItem.getRepeatAlarm() > 0) {
endAlarmHandler = new Handler();
endAlarmHandler.postDelayed(new Runnable() {
@Override
public void run() {
if (activeBGMusic != null) {
activeBGMusic.pause();
}
playAlarmSoundAndTime();
}
}, timeUpItem.getRepeatAlarm() * 60000);
}
}
}
});
activeAlarmSound.prepare();
activeAlarmSound.start();
} catch (IOException e) {
e.printStackTrace();
}```
我在这个链接上找到了一些有用的信息:。我不仅在emu上遇到了同样的问题,在播放铃声和闹钟时,在真实设备上也遇到了同样的问题。我选择了最安全的选项,只允许使用通知和custon声音。