2017-07-07 111 views
0

我知道关于AlarmClockAlarmManager以及如何设置闹钟,启动应用程序等有很多讨论。但是,我还没有找到完美的答案以下场景。当闹钟在自定义闹钟应用程序中关闭时启动自定义活动Android

在我的Android闹钟应用我发展,我想设置特定时间的报警,通过在其他设置,如玩什么歌,振动等

1)什么我应该用它来做到这一点吗? AlarmClockAlarmManager

2)现在,当警报在指定时间熄灭时,我该如何告诉它启动我的自定义活动?再次是AlarmClockAlarmManager的问题。

这个自定义活动将显示时间,并有按钮说,“睡眠”或“贪睡”,用户可以按(当任何其他闹钟应用程序中的警报消失时发生什么)。我不想启动我的闹钟应用程序,只有当闹钟响起时才显示一个屏幕。当用户点击一个按钮时,我想关闭该自定义活动,并且不打开与该应用程序相关的其他任何内容。我喜欢它,以便用户可以回去做他们正在做的事情。

+0

如果你打算downvote请评论为什么这样我可以改善问题:) – Michael

回答

0

我认为你可以用AlarmManager做你的工作。正如你所说,如果你想在特定的时间设置闹钟,你应该使用setRepeating()。如果您想在报警触发时唤醒您的设备,请选择RTC_WAKEUP类型,如果您不想要那种类型的RTC类型。您可以定义一个PendingIntent,无论您想要做什么(播放声音,光线和振动),您都可以在此活动中执行此操作。您应该在该(YOUR_ACTIVITY)布局中设计布局,并将按钮设置为延后/取消闹钟。

private AlarmManager alarmMgr; 
private PendingIntent alarmIntent; 

Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis(System.currentTimeMillis()); 
calendar.set(Calendar.HOUR_OF_DAY, 14); 

alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(context, YOUR_ACTIVITY.class); 
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 

alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, 
     calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, alarmIntent); 

上面代码中设置闹钟为14:00,有一天,这意味着它会被解雇每天14:00和运行YOUR_ACTIVITY直到您取消它的时间间隔。这是Google Android Documents中的一个示例。