Windows Phone 7.1 SDK is Alarming


alarmsURL: MangoAlarms.zip

Ok, maybe I like my distracting titles…my apologies.

As many Windows Phone developers have noticed, Mango (e.g Windows Phone SDK 7.1) supports background processing through something called Agents. While Agents are certainly a welcome addition, I am exceptionally impressed in the fact that Mango also supports a bunch of features to avoid having to have background processing agents. In this post, I’ll show you one of these: Alarms.

The general idea of Alarms is being able to create application specific alarms (not just using the Alarm clock app). Alarms do come with a couple of small caveats:

  • Alarms are fired once per minute. Sub-minute alarms will round to the minute.
  • Alarms shown over lock screen cannot launch your application.
  • Cannot control how long an alarm is snoozed.
  • Alarm’s Title is always “Alarm”.
  • Can only launch the application, not a deep link to a specific page.

To compliment alarms, the phone also supports Reminders which can overcome some of these limitations, but I’ll show them in a future post.

With that in mind, you can create your own alarms and even specify the type of alarm sound that is played. To do this, create an instance of the Alarm class (in the System.Phone.Scheduler namespace):

// Alarm Name (unique per app)
var alarmName = Guid.NewGuid().ToString();

// Create the Alarm
var alarm = new Alarm(alarmName)
{
  // When the Alarm should sound
  BeginTime = DateTime.Now.AddMinutes(1),

  // The Message in the Alarm
  Content = "Mango Alarm",

  // Exists on Alarms, but it not used
  //Title = "Not used!",

  // What sound to play for the alarm
  Sound = new Uri("alarm.wav", UriKind.Relative)
};

Each alarm must be named (unique, per application) so you can look it up later (if you want to disable it or remove it). BeginTime when the alarm should fire. Content is the message shown in the UI. Finally, Sound allows you to specify a sound file (mp3, wma or wav) to be played. This file must be delivered with your .xap file (can’t be in isolated storage or via an Internet connection). While the Title property exists on the Alarm class (because of the base class), it will throw an exception if set to ensure that you don’t think the Title will be used.

Once you create the alarm, you can register it like so:

// Add the Alarm to the Phone
ScheduledActionService.Add(alarm);

The ScheduledActionService is a class that is used to register reminders, alarms and agents. The Add method simply adds the alarm to the phone. The other methods of the service are also supported by the Alarms as well (e.g. Find, Remove, Replace and GetActions). There you go, you can now add your own alarms!



Shawn
Shawn Wildermuth
Author, Teacher, and Coach




My Courses

Wilder Minds Training
Vue.js by Example (New Lower Price)
Bootstrap 4 by Example (New Lower Price)
Intro to Font Awesome 5 (Free Course)
Pluralsight
Building an API with ASP.NET Core (New Course)
Building a Web App with ASP.NET Core, MVC6, EF Core, Bootstrap and Angular (updated for 2.2)
Less: Getting Started (New)
Using Visual Studio Code for ASP.NET Core Projects
Implementing ASP.NET Web API

Application Name WilderBlog Environment Name Production
Application Ver v4.0.30319 Runtime Framework x86
App Path D:\home\site\wwwroot\ Runtime Version .NET Core 4.6.27617.04
Operating System Microsoft Windows 10.0.14393 Runtime Arch X86