Aerrow
Aerrow

Reputation: 12134

How to develop Android Alarm application

I tried to develop a sample Alarm Application. I searched Google and SC, most of their examples confused. How can I create an alarm application with the following requirements,

  1. In My Home screen i have a button, like "START ALARM", when i click the button a time picker must enable.

  2. I select the time as I wish, once I pick the time, the alarm icon will enabled on widget. (For example if we set the alarm in default mobile Alarm application, the icon will be enabled, that indicates the alarm is set).

  3. When the set time is reached (the time which is set form the TimePicker app), the alarm will beep.

These are my requirements, I finished the first two points, but I'm still struggling on setting the alarm.

Upvotes: 10

Views: 34630

Answers (4)

Vladimir Marton
Vladimir Marton

Reputation: 576

If you want to make things interesting, you can try to create one without a possibility of dismissing/snoozing. I made this a while ago, you can read about it in this tutorial:

Alarm Application in Android (Tutorial using AlarmManager)

And test the app functionality by downloading this app: Oversleeper on Google Play

Upvotes: 1

Scorpian
Scorpian

Reputation: 113

when you enable the alarm you have to call inbuilt alarm manager and use the alarmmanager.set to set the alarm time in the manager. Once the alarm time (in milliseconds) is given to the alarm manager it will send message and you can retrive the message through reciever class

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

For recieving the alarm you have to make a new class which extends reciever where in onrecieve you can set the intent to the activity u want to call on alarm time , you can also provide notification.

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

If you still get any problem ask again..:)

Upvotes: 4

Pattabi Raman
Pattabi Raman

Reputation: 5854

You need to use RingtoneManageror the NotificationManager(to show any text or image to the user for notification at the top of screen), Or you can use MediaPlayerto set to play sound when alarm time is reached. You have to set <receiver> tag in manifest file, that must include a class extending BroadCastReceiver. In the receiver class you can write your code to wake your device up.

Upvotes: 0

OnkarDhane
OnkarDhane

Reputation: 1460

To finish your last point you need to do Date Comparision and use AlaramManager Alaram Doc and again you need to use Service to compare next date and time. Hope it will helpful for you.

Upvotes: 0

Related Questions