リマインダーとアラームを使うサンプル

2012年6月25日(月)
PROJECT KySS
<p>次に、MainPage.xamlを展開して表示される、MainPage.xaml.vbをダブルクリックしてリスト5のコードを記述します。</p> <h3>ロジックコードを記述する</h3> <h4>リスト5 (MainPage.xaml.vb)</h4> <pre class="brush: plain" type="syntaxhighlighter">Option Strict On Imports System.Xml.Linq </pre> <p>Windows Phoneのスケジューラ機能へのアクセスを提供し、アラーム、通知、およびバックグラウンドエージェントが含まれるMicrosoft.Phone.Scheduler名前空間をインポートします。</p> <pre class="brush: plain" type="syntaxhighlighter">Imports Microsoft.Phone.Scheduler Partial Public Class MainPage Inherits PhoneApplicationPage ' コンストラクター Public Sub New() InitializeComponent() End Sub Dim xmldoc As XElement </pre> <h4>ページがアクティブになった時に呼び出されるメソッド</h4> <p>XElement.LoadメソッドでXML文書ファイル(Alarm.xml)を読み込みます。</p> <p>文字列型の新しいインスタンスであるリストオブジェクトtitleListを作成します。Descendantsメソッドで、子孫要素であるすべての 要素のコレクションに対して、各要素を変数resultに格納しながら、要素の値をtitleListオブジェクトにAddメソッドで追加していきます。</p> <p>ListBoxのItemsSourceプロパティにtitleListオブジェクトを指定します。これでAlarm.xmlの 要素の内容テキストが、ListBox内に一覧で表示されます。</p> <pre class="brush: plain" type="syntaxhighlighter"> 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 </pre> <h4>ListBoxから任意の項目が選択された時の処理</h4> <p>アラームを設定した旨のメッセージを表示します。</p> <p>ListBoxより選択された項目のインデックスをmyIndex変数に格納しておきます。</p> <p>ScheduledActionService.Findメソッドで、指定した名前のScheduledAction(この場合AlarmSample)が見つかった場合は、RemoverメソッドでScheduledActionを削除します。</p> <p>AlarmSampleというScheduledActionで初期化された、新しいAlarmのインスタンス、myAlarmオブジェクトを作成します。</p> <p>myAlarmオブジェクトのプロパティを設定していきます。</p> <p>Contentプロパティには読み込んだXML文書ファイル(Alarm.xml)のmyIndexに該当する要素の子要素の内容テキストを指定します。</p> <p>BeginTimeには、アクションのスケジュールが開始する時刻を設定します。このサンプルでは1分を指定しているため、アプリが起動して1分後に通知が表示されます。</p> <p>SoundにはAlarmが起動した時に再生されるサウンドファイルを指定します。myIndexに該当する要素の子要素に記述されているサウンドファイルをWMAフォルダと連結して指定します。</p> <p>RecurrenceTypeには、通知の繰り返しの種類を設定します。このサンプルでは、RecurrenceInterval.Noneと指定して、通知の繰り返しを「なし」としています。None以外に、「毎日繰り返す」Daily、「毎週繰り返す」Weekly、「毎月繰り返す」Monthly、「各月末に繰り返す」EndOfMonth、「毎年繰り返す」Yearlyなどがあります。</p> <p>ScheduledActionService.Addメソッドで、スケジュールされたアクション(myAlarm)をオペレーティング システムに登録します。</p> <pre class="brush: plain" type="syntaxhighlighter"> 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 </pre> <p>今回のサンプルは以上で終了です。</p> <h4>【参照リンク】</h4> <p>PROJECT KySSでは現在、16個のWindows PhoneアプリをMarketplaceに公開しています。試用版もありますので、興味のある方はお試しください。<br /> →参照:<a href="http://2008r2.projectkyss.net/App_WP.htm" target="_blank">Windows Phone App Information(PROJECT KySS)</a></p>
  • リマインダーアプリのサンプル

  • アラームアプリのサンプル

四国のSOHO。薬師寺国安(VBプログラマ)と、薬師寺聖(デザイナ、エンジニア)によるコラボレーション・ユニット。1997年6月、Dynamic HTMLとDirectAnimationの普及を目的として結成。共同開発やユニット名義での執筆活動を行う。XMLおよび.NETに関する著書や連載多数。最新刊は「Silverlight実践プログラミング」両名とも、Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。http://www.PROJECTKySS.NET/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています