我正在开发一款可以在9:15AM10:30AM早上播放某些声音的应用,
我已经完成了声音部分的工作,但是在监视当前android系统时间时遇到了问题。

这是我在做什么

我有一个数组,其中9:15 AM和10:30 AM被存储为String。
当我使用Java Calendar类获取系统的当前时间时,

Calendar cTime = Calendar.getInstance();

    public String currentTime() {
        String hour = cTime.get(Calendar.HOUR) + "";
        String mins = cTime.get(Calendar.MINUTE) + "";
        return hour+""+mins+"AM";
    }


我正在使用此代码播放声音,

public void playSound() {

    MediaPlayer player = MediaPlayer.create(this, R.raw.s);
    player.start();
    player.setOnCompletionListener(new OnCompletionListener() {

        @Override
        public void onCompletion(MediaPlayer mp) {
            mp.release();
        }
    });
}


问题是,

如果是上午9:15,并且我运行该应用程序,则该应用程序将播放声音;或者,如果是上午10:30,并且我运行该应用程序,则该应用程序将播放声音,但这不是事实。我想要,
我希望我的应用程序始终监视时间,并且在9:15 AM或10:30 AM时,无论应用程序是否运行,声音都应该播放。

我尝试通过比较当前时间与while循环中的10:30 AM或9:30 AM来尝试一种方法,但是它挂了我的电话,这似乎很丑陋。
我想不出其他任何方法来监视时间,请给我一些建议。

最佳答案

Use AlarmManager计划在这些时间点获得控制权。

关于java - 如何在Android中保持监视时间而不会出现循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27461552/

10-15 03:01