アラーム機能を使用する
今回はWindowsPhone7の標準のアラーム機能の利用方法をご紹介します。
アラームというのは指定した時間に音を鳴らしてユーザに時間が来たことを知らせる機能です。
WP7では標準でユーザが指定した音源で指定した時間に音を鳴らすAlarmクラスが用意されています。
今回は以下の内容についてご紹介します。
- アラームの設定
- アラームをセットする
詳しい内容は続きを御覧ください。
アラームの設定
アラームは3点のことが設定できます。
時刻の設定、音源の設定、テキスト(アラームの目的)の設定の3点です。
それぞれAlarmクラスの下記のプロパティで設定できます。
BeginTimeの例として現在時刻の1分後を指定したい場合は下記のように書きます。
BeginTime = DateTime.Now.AddMinutes(1.0)
ここでのDateTimeでは現在時刻を取得しAddMinutesで1分後を指定しています。
ここでセットするDateTimeは下記のページをご参照ください。
DateTime
次にアラームの音源を設定するにはSoundプロパティに音源のパスをセットします。
例えば相対パスのalarm.wavの音源で音楽を流したい場合は下記のようにUriを設定します。
Sound = new Uri("alarm.wav", UriKind.Relative)
最後にアラームにはテキストについてです。
このテキストはアラームを鳴らした際にこのアラームは何を目的にして鳴らしているのかを書きます。
テキストの表示する内容は下記のプロパティに文字列を入れます。
実際は下記のように書きます。
Content = "1分後にアラーム"
以上の3点でアラームの設定ができます。
アラームをセットする
アラームをセットするにはScheduledActionServiceを利用します。
ScheduledActionServiceはOSに対してスケジュールされたアクションを登録したり、削除したりすることができます。
ScheduledActionServiceのよく利用するメソッドは表のようになります。
[table “193” not found /]
addでアラームをセットしremoveでアラームを止めます。
今回はアラームを1分後にセットして鳴らすサンプルを用意しました。
■MainPage.xaml
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Button Content="AlarmStart" Height="72" HorizontalAlignment="Left" Margin="244,6,0,0" Name="button1" VerticalAlignment="Top" Width="206" Click="button_click" />
<TextBlock Height="72" HorizontalAlignment="Left" Margin="9,6,0,0" Name="textBlock1" Text="TextBlock" VerticalAlignment="Top" Width="229" />
</Grid>
■MainPage.xaml.cs
public partial class MainPage : PhoneApplicationPage
{
private DispatcherTimer mTimer;
private int mTime = 60;
// コンストラクター
public MainPage()
{
InitializeComponent();
textBlock1.Text = mTime.ToString();
}
public void button_click(object sender, RoutedEventArgs e)
{
mTime = 60;
mTimer = new DispatcherTimer();
mTimer.Interval = TimeSpan.FromMilliseconds(1000); //1秒間隔に設定
mTimer.Tick += new EventHandler(TickTimer);
textBlock1.Text = mTime.ToString();
mTimer.Start();
SetAlarm();
}
private void SetAlarm()
{
if (ScheduledActionService.Find("Alarm") != null)
ScheduledActionService.Remove("Alarm");
var alarm = new Alarm("Alarm") //アラームの名前
{
BeginTime = DateTime.Now.AddMinutes(1.0), //現在時刻の1分後
Content = "1分後にアラーム", //テキスト
Sound = new Uri("alarm.wav", UriKind.Relative)//音楽ファイル指定
};
ScheduledActionService.Add(alarm);
}
void TickTimer(object sender, EventArgs e)
{
if (mTime <= 0)
{
mTimer.Stop();
return;
}
mTime -= 1;
textBlock1.Text = mTime.ToString();
}
}
30行目でアラームの生成しプロパティに時刻、音源、テキストを設定しています。
そしてnewをする際にはアラームの名前を設定します。
作成したアラームを36行目でOSに登録して時間が来たらアラームを起動してもらいます。
もしすでに登録していて重複を避けるには28行目のコードのように同じ名前のアラームが設定されている場合にアラームを解除することで対処することも出来ます。
このサンプルコードを実行すると下図のようにボタンが表示され、左側の数字が秒を表しています。
ボタンを押すと左側の数字がカウントダウンを始め、1分間をカウントします。
カウントダウンはDispatcherTimerを使って定期実行をするをご参照ください。

そして1分間経つと下図のような画面が表示され指定した音源が流れます。
