PR

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

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>
Think IT会員限定特典
  • リマインダーアプリのサンプル

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

四国の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のWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

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