无法使用android studio中的AudioManager停止最后一个音轨

nukf8bse  于 2022-11-16  发布在  Android
关注(0)|答案(2)|浏览(138)

我实现了5mins报警应用程序,在那里我们可以设置报警在5分钟的增量。例如,如果我在01:00PM打开应用程序,并按下按钮三次,报警设置为01:05PM,01:10PM和01:15PM。我使用AlarmManager设置未来广播的待定意图,并在广播接收器中使用通知显示通知在同一时间应用程序默认铃声使用MediaPlayer。而使用MediaPlayer时,我面临的问题是停止最后一个报警,因为当第一个报警开始时,它是好的,但如果第一个报警连续响起,第二个报警开始,然后多个报警同时响起。如何在所有广播中获得相同的MediaPlayer示例,或者有任何更好的方式来处理它?
由于MediaPlayer类的不同示例,无法停止最后一个警报铃声。所以如果我想停止最后一个警报铃声并开始另一个铃声,那么我应该怎么做?

cld4siwp

cld4siwp1#

要使Media Player示例在多个广播中可用,可以创建一个包含静态Media Player的类,这意味着它在所有广播中都是相同的示例。
首先,您应该创建一个包含Media Player的类,并创建一个静态方法来获取它。

class MediaPlayerHandler {

    private static MediaPlayer mediaPlayer;

    public MediaPlayerHandler() {
        mediaPlayer = new MediaPlayer();
    }

    public static MediaPlayer getMediaPlayerInstance() {
        return mediaPlayer;
    }
}

然后,随着静态媒体播放器可用,您可以访问它从任何地方引用它,如下所示。

MediaPlayer mediaPlayer = MediaPlayerHandler.getMediaPlayerInstance();

有了这个实现,你应该可以从任何地方访问你的媒体播放器。允许你停止和重置警报声音,这样就不会有警报重叠。
希望这对你有帮助。编码快乐!

xlpyo6sf

xlpyo6sf2#

public class mediaPlayerInstance {
    private static MediaPlayer mediaPlayer;

    public mediaPlayerInstance(MainActivity mainActivity, Uri defaultRingtoneUri) {
        mediaPlayer = MediaPlayer.create(mainActivity, defaultRingtoneUri);
    }

    public static MediaPlayer getMediaPlayerInstance() {
        return mediaPlayer;
    }

}

并在将调用一次的代码中的某个位置声明此类。

相关问题