我正在开发一个应用程序,早上可以在9:15AM和10:30AM上播放某些声音,我已经完成了播放声音的工作,但在监控当前的安卓系统时间时,我面临着一些问题。
这是我在做的事,
我有一个数组,其中上午9:15和上午10:30存储为字符串。当我使用类获取系统的当前时间时,
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分,然后我运行应用程序,那么app会播放声音,但这不是我想要的,我希望我的应用程序一直在监控时间,当它的时间是上午9:15或上午10:30时,无论应用程序运行与否,声音都应该播放。
我尝试了一种方法,通过比较当前的时间与上午10:30或上午9:30在一个时间循环,但它挂我的手机,这似乎是丑陋的想法。我想不出任何其他方法来监控时间,请给我一些建议。
发布于 2014-12-13 17:29:03
AlarmManager计划在这些时间点获得控制。
发布于 2014-12-13 17:40:43
我认为你应该试试这些代码( Android )。
使用AlarmManager类来调度和执行您想要执行的操作/操作,而不管您的安卓应用程序的状态如何,不管它是否正在运行。
但是在应用这个概念之前,您应该详细了解这个类,因为它提供了两种类型的警报运行实时和实时时钟。
您将不得不使用BroadcastReceiver来接收意图。
如果您想使用循环,则应该使用以下代码(比java日历类更好)
Time t=新时间();t.setToNow();
或者更好的代码将是,因为现在你将得到你的用户的当前时区,所以给你;
时间t=新时间(Time.getCurrentTimezone();t .setToNow();
https://stackoverflow.com/questions/27461552
复制相似问题