如何开发Android报警应用程序

我试图开发一个示例报警应用程序。 我search了Google和SC,他们大部分的例子都感到困惑。 如何创build具有以下要求的警报应用程序,

  1. 在我的主屏幕上,我有一个button,如“开始警报”,当我点击button时间select器必须启用。

  2. 我按照自己的意愿select时间,一旦select了时间,就会在小部件上启用闹钟图标。 (例如,如果我们将闹钟设置为默认移动闹钟应用程序,图标将被启用,表示闹钟已设置)。

  3. 当达到设定的时间(从TimePicker应用程序设置的时间),闹钟将发出蜂鸣声。

这些是我的要求,我完成了前两点,但我仍然在设置闹钟挣扎。

Solutions Collecting From Web of "如何开发Android报警应用程序"

看看AlarmManager 。 而且,如果要同时使用警报,则必须使用Service类。 而且,请参阅下面的示例代码 –

 public class OnBootReceiver extends BroadcastReceiver { private static final int PERIOD=300000; // 5 minutes @Override public void onReceive(Context context, Intent intent) { AlarmManager mgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent i=new Intent(context, OnAlarmReceiver.class); PendingIntent pi=PendingIntent.getBroadcast(context, 0, i, 0); mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+60000, PERIOD, pi); } 

这将每6分钟重复一次警报。 请参阅计划重复警报文档。

当您启用警报时,您必须调用内置警报pipe理器,并使用alarmmanager.set设置pipe理器中的警报时间。 一旦报警时间(以毫秒为单位)发送给报警pipe理器,报警pipe理器将发送报文,您可以通过接收器类别

 //creating and assigning value to alarm manager class Intent AlarmIntent = new Intent(MainActivity.this, AlarmReciever.class); AlarmManager AlmMgr = (AlarmManager)getSystemService(ALARM_SERVICE); PendingIntent Sender = PendingIntent.getBroadcast(MainActivity.this, 0, AlarmIntent, 0); AlmMgr.set(AlarmManager.RTC_WAKEUP, Alarm.getTimeInMillis(), Sender); 

为了接收警报,你必须创build一个新的类,它扩展了接收器,你可以设置意图到你想要在闹钟上呼叫的活动,也可以提供通知。

 public class AlarmReciever extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //Build pending intent from calling information to display Notification PendingIntent Sender = PendingIntent.getBroadcast(context, 0, intent, 0); NotificationManager manager = (NotificationManager)context.getSystemService(android.content.Context.NOTIFICATION_SERVICE); Notification noti = new Notification(android.R.drawable.stat_notify_more, "Wake up alarm", System.currentTimeMillis()); noti.setLatestEventInfo(context, "My Alarm", "WAKE UP...!!!", Sender); noti.flags = Notification.FLAG_AUTO_CANCEL; manager.notify(R.string.app_name, noti); //intent to call the activity which shows on ringing Intent myIntent = new Intent(context, Alarmring.class); myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(myIntent); //display that alarm is ringing Toast.makeText(context, "Alarm Ringing...!!!", Toast.LENGTH_LONG).show(); }} 

如果你仍然有任何问题再问.. 🙂

为了完成您的最后一点,您需要执行Date Comparision并使用AlaramManager Alaram Doc ,再次需要使用Service来比较下一个date和时间。 希望这会对你有所帮助。

您需要使用RingtoneManagerNotificationManager (在屏幕顶部向用户显示任何文本或图像以通知),或者您可以使用MediaPlayer设置为在达到闹钟时间后播放声音。 您必须在清单文件中设置<receiver>标签,该标签必须包含扩展BroadCastReceiver的类。 在接收器类中,您可以编写代码来唤醒设备。