アラーム機能を使用する
|今回はWindowsPhone7の標準のアラーム機能の利用方法をご紹介します。
アラームというのは指定した時間に音を鳴らしてユーザに時間が来たことを知らせる機能です。
WP7では標準でユーザが指定した音源で指定した時間に音を鳴らすAlarmクラスが用意されています。
今回は以下の内容についてご紹介します。
- アラームの設定
- アラームをセットする
詳しい内容は続きを御覧ください。
アラームの設定
アラームは3点のことが設定できます。
時刻の設定、音源の設定、テキスト(アラームの目的)の設定の3点です。
それぞれAlarmクラスの下記のプロパティで設定できます。
BeginTimeの例として現在時刻の1分後を指定したい場合は下記のように書きます。
1 | BeginTime = DateTime.Now.AddMinutes( 1.0 ) |
ここでのDateTimeでは現在時刻を取得しAddMinutesで1分後を指定しています。
ここでセットするDateTimeは下記のページをご参照ください。
DateTime
次にアラームの音源を設定するにはSoundプロパティに音源のパスをセットします。
例えば相対パスのalarm.wavの音源で音楽を流したい場合は下記のようにUriを設定します。
1 | Sound = new Uri( "alarm.wav" , UriKind.Relative) |
最後にアラームにはテキストについてです。
このテキストはアラームを鳴らした際にこのアラームは何を目的にして鳴らしているのかを書きます。
テキストの表示する内容は下記のプロパティに文字列を入れます。
実際は下記のように書きます。
1 | Content = "1分後にアラーム" |
以上の3点でアラームの設定ができます。
アラームをセットする
アラームをセットするにはScheduledActionServiceを利用します。
ScheduledActionServiceはOSに対してスケジュールされたアクションを登録したり、削除したりすることができます。
ScheduledActionServiceのよく利用するメソッドは表のようになります。
[table “193” not found /]
addでアラームをセットしremoveでアラームを止めます。
今回はアラームを1分後にセットして鳴らすサンプルを用意しました。
■MainPage.xaml
1 2 3 4 | < 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | 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分間経つと下図のような画面が表示され指定した音源が流れます。