如何解决Android Studio模拟器错误?即使设置了mediaPlayer.setLoopingfalse,警报声音仍会继续循环播放
我不确定这仅仅是模拟器错误还是我错过了什么。我正在编写一个警报应用程序。我的应用程序通过ringtoneManager获取了铃声Uri,然后使用MediaPlayer播放了铃声Uri。我想控制铃声是否循环播放。它可以在我真正的智能手机上正常运行,也可以与Android Studio模拟器配合使用,该模拟器通过Uri gets与ringtoneManager.TYPE_NOTIFICATION和ringtoneManager.TYPE_ringtone一起使用。但是,如果我将Uri gets与模拟器的ringtoneManager.TYPE_ALARM一起使用,即使我设置了mediaPlayer.setLooping(false),它也保持循环。
对我来说,这似乎是模拟器错误。但是,我想确保我不会错过需要设置的内容。我不希望在应用程序发布后就发现其他人的智能手机与模拟器存在相同的问题。我有什么可以做或检查的吗?
下面是相关代码:
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();
}```
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。