Java Android Studio模拟器bug?即使我设置了mediaPlayer,警报声也会持续循环。设置循环(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

我不确定这是否只是一个仿真器错误,还是我遗漏了什么。我正在写一个闹钟应用程序。我的应用程序通过RingToneManager获取铃声Uri,然后使用MediaPlayer播放铃声Uri。我想控制铃声是否循环。它可以在我真正的智能手机上正常工作,也可以在Android Studio emulator上使用Uri GET、RingtoneManager.TYPE_通知和RingtoneManager.TYPE_铃声。但是,如果我在emulator中使用Uri GET with 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();
            }```

我在这个链接上找到了一些有用的信息:。我不仅在emu上遇到了同样的问题,在播放铃声和闹钟时,在真实设备上也遇到了同样的问题。我选择了最安全的选项,只允许使用通知和custon声音。