如何开发Android Alarm应用程序

时间:2012-02-09 09:51:56

标签: android

我尝试开发一个示例警报应用程序。我搜索了Google和SC,他们的大多数例子都很混乱。如何创建具有以下要求的警报应用程序

  1. 在我的主屏幕中,我有一个按钮,例如“START ALARM”,当我点击时间选择器必须启用的按钮时。

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

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

  4. 这些是我的要求,我完成了前两点,但我仍然在努力设置闹钟。

5 个答案:

答案 0 :(得分:9)

看看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分钟重复闹铃。请参阅Scheduling Repeating Alarms文档。

答案 1 :(得分:4)

启用警报时,您必须调用内置警报管理器并使用alarmmanager.set在管理器中设置警报时间。 一旦警报管理器发出警报时间(以毫秒为单位),它将发送消息,您可以通过接收器类检索消息

//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);

要接收警报,您必须制作一个新的课程,以便延长接收者的位置,您可以设置您想要在闹钟时间呼叫的活动的意图,您也可以提供通知。

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();
}}

如果你仍然有任何问题,请再次询问.. :)

答案 2 :(得分:0)

要完成最后一点,您需要执行Date Comparision并使用AlaramManager Alaram Doc,然后再次使用Service 比较下一个日期和时间。希望它对你有所帮助。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果您想使事情变得有趣,则可以尝试创建一个事物,而不必消除/延后处理。我之前做了这个,您可以在本教程中阅读它:

Alarm Application in Android (Tutorial using AlarmManager)

并通过下载此应用程序来测试应用程序功能: Oversleeper on Google Play