リマインダーとアラームを使うサンプル
次に、MainPage.xamlを展開して表示される、MainPage.xaml.vbをダブルクリックしてリスト5のコードを記述します。
ロジックコードを記述する
リスト5 (MainPage.xaml.vb)
Option Strict On Imports System.Xml.Linq
Windows Phoneのスケジューラ機能へのアクセスを提供し、アラーム、通知、およびバックグラウンドエージェントが含まれるMicrosoft.Phone.Scheduler名前空間をインポートします。
Imports Microsoft.Phone.Scheduler Partial Public Class MainPage Inherits PhoneApplicationPage ' コンストラクター Public Sub New() InitializeComponent() End Sub Dim xmldoc As XElement
ページがアクティブになった時に呼び出されるメソッド
XElement.LoadメソッドでXML文書ファイル(Alarm.xml)を読み込みます。
文字列型の新しいインスタンスであるリストオブジェクトtitleListを作成します。Descendantsメソッドで、子孫要素であるすべての 要素のコレクションに対して、各要素を変数resultに格納しながら、要素の値をtitleListオブジェクトにAddメソッドで追加していきます。
ListBoxのItemsSourceプロパティにtitleListオブジェクトを指定します。これでAlarm.xmlの 要素の内容テキストが、ListBox内に一覧で表示されます。
Protected Overrides Sub OnNavigatedTo(e As System.Windows.Navigation.NavigationEventArgs) xmldoc = XElement.Load("Alarm.xml") Dim titleList As New List(Of String) For Each result In From c In xmldoc.Descendants("情報") Select c titleList.Add(result.Element("タイトル").Value) Next ListBox1.ItemsSource = titleList MyBase.OnNavigatedTo(e) End Sub
ListBoxから任意の項目が選択された時の処理
アラームを設定した旨のメッセージを表示します。
ListBoxより選択された項目のインデックスをmyIndex変数に格納しておきます。
ScheduledActionService.Findメソッドで、指定した名前のScheduledAction(この場合AlarmSample)が見つかった場合は、RemoverメソッドでScheduledActionを削除します。
AlarmSampleというScheduledActionで初期化された、新しいAlarmのインスタンス、myAlarmオブジェクトを作成します。
myAlarmオブジェクトのプロパティを設定していきます。
Contentプロパティには読み込んだXML文書ファイル(Alarm.xml)のmyIndexに該当する要素の子要素の内容テキストを指定します。
BeginTimeには、アクションのスケジュールが開始する時刻を設定します。このサンプルでは1分を指定しているため、アプリが起動して1分後に通知が表示されます。
SoundにはAlarmが起動した時に再生されるサウンドファイルを指定します。myIndexに該当する要素の子要素に記述されているサウンドファイルをWMAフォルダと連結して指定します。
RecurrenceTypeには、通知の繰り返しの種類を設定します。このサンプルでは、RecurrenceInterval.Noneと指定して、通知の繰り返しを「なし」としています。None以外に、「毎日繰り返す」Daily、「毎週繰り返す」Weekly、「毎月繰り返す」Monthly、「各月末に繰り返す」EndOfMonth、「毎年繰り返す」Yearlyなどがあります。
ScheduledActionService.Addメソッドで、スケジュールされたアクション(myAlarm)をオペレーティング システムに登録します。
Private Sub ListBox1_SelectionChanged(sender As Object, e As System.Windows.Controls.SelectionChangedEventArgs) Handles ListBox1.SelectionChanged MessageBox.Show("アラームを設定しました。") Dim myIndex As Integer = ListBox1.SelectedIndex If ScheduledActionService.Find("AlarmSample") Is Nothing = False Then ScheduledActionService.Remove("AlarmSample") End If Dim myAlarm As New Alarm("AlarmSample") With myAlarm .Content = xmldoc.Descendants("情報")(myIndex).Element("内容").Value .BeginTime = DateTime.Now.AddMinutes(1) .Sound = New Uri("WMA/" & xmldoc.Descendants("情報")(myIndex).Element("音").Value, UriKind.Relative) .RecurrenceType = RecurrenceInterval.None End With ScheduledActionService.Add(myAlarm) End Sub End Class
今回のサンプルは以上で終了です。
【参照リンク】
PROJECT KySSでは現在、16個のWindows PhoneアプリをMarketplaceに公開しています。試用版もありますので、興味のある方はお試しください。
→参照:Windows Phone App Information(PROJECT KySS)
リマインダーアプリのサンプル
アラームアプリのサンプル