Windows Phoneアプリケーション開発入門

第33回 Mangoで追加されたLancherとChooserを使ってみよう!

この記事を読むのに必要な時間:およそ 7 分

はじめに

Windows Phone SDK 7.1 Beta 2がリリースされました。⁠Windows Phone Developer Tools」の名称で配布されていましたが,今回から名称が「Windows Phone SDK」に変更となりました。

変更されたのは実質名前だけですので,インストール方法やインストールに関しての注意点等は,連載第11回第31回のWindows Phone Developer Toolsの方法を参照していただければと思います。

画像

Windows Phone SDK 7.1 Beta2にて配布されています。このWindows Phone SDK 7.1 Beta2でインストールされるツールは以下の通りです。

  • Windows Phone SDK 7.1(Beta2)
  • Windows Phone Emulator(Beta2)
  • Windows Phone SDK 7.1 Assemblies(Beta2)
  • Silverlight 4 SDK and DRT
  • Windows Phone SDK 7.1 Extensions for XNA Game Studio 4.0
  • Microsoft Expression Blend SDK Preview for Windows Phone 7.1
  • WCF Data Services Client for Window Phone 7.1
  • Microsoft Advertising SDK for Windows Phone 7

新規で「Microsoft Advertising SDK for Windows Phone 7」が追加されました。今までに別途配布されていた広告表示用のSDKが開発ツールに同梱されるようになったイメージです。

過去の開発ツールと同様に,インターネットに繋がっていない場合や,回線速度が遅い方向けにCDイメージ(.ISO)でもインストーラが公開されています。何度もやり直すことを考えるとISOファイルをダウンロードしてきたほうがよいかもしれません。

AppHubの登録者を対象に,開発者向け早期評価プログラムが開始されました。NoDo(Build 7.0.7390.0 または 7.0.7392.0)へのアップデート済みの実機を持っている開発者,かつAppHubからの招待メールを受信した方はMango Betaへアップデートすることが可能です。

ただし,開発中の製品を扱うことになりますので,Microsoft Connect経由で秘密保持義務契約を結ぶ必要があります。Microsoft Connectへの参加条件を確認してください。

一部,技術解説のためにスクリーンショットを撮影しています。これはMango Betaでのスクリーンショットであるため,サンプルアプリケーションから起動されるLauncherとChooser画面に関しても開発中のものです。よって,予告なくUIが変更される可能性がありますのであらかじめご了承ください。

Windows Phone OS 7.1で追加されたLauncherとChooser

本連載でも第25回第26回第27回に掛けてWindows Mobile 6.xと比較しながらLauncherとChooserの紹介をさせて頂きました。今回は,⁠Mango⁠にて追加されるLauncherとChooserを紹介いたします。

画像

サンプルアプリはこちらからダウンロードしてください。今回ご紹介するTaskは以下の通りです。

  • BingMapsTask
  • BingMapsDirectionsTask
  • GameInviteTask
  • SaveContactTask
  • ShareLinkTask
  • ShareStatusTask

BingMapsTask

Windows Phone OS 7.1で追加されたLauncherです。BingMapsTaskは,Bing Mapsアプリケーションを起動することができます。最も簡単な使用例としては,SearchTermプロパティに地図上の位置をマークするための地名等を設定した上で,Showメソッドを呼びます。

ZoomLevelプロパティをあらかじめ指定しておくと,最初にマップが表示されるときに表示されるズームレベルを指定することができます。

Centerプロパティは表示されるマップの中心点を設定することができます。Centerプロパティを設定しない場合,ユーザーの現在位置が地図の中心点として使用されます(下の例では,Centerプロパティへの設定をコメントアウトをしています)⁠

private void btnBingMaps_Click(object sender, RoutedEventArgs e)
{
    // SearchTermプロパティに検索用テキストに設定して表示を行う
    var bingMapsTask = new BingMapsTask();
    bingMapsTask.SearchTerm = "Ichikawa, Japan";
    bingMapsTask.ZoomLevel = 10;
    // bingMapsTask.Center = new GeoCoordinate(35.691356, 139.690046);
    bingMapsTask.Show();
}
Private Sub btnBingMaps_Click(sender As Object, e As RoutedEventArgs)
    ' SearchTermプロパティに検索用テキストに設定して表示を行う
    Dim bingMapsTask = New BingMapsTask()
    bingMapsTask.SearchTerm = "Ichikawa, Japan" 
    bingMapsTask.ZoomLevel = 10
    ' bingMapsTask.Center = new GeoCoordinate(35.691356, 139.690046);
    bingMapsTask.Show()
End Sub

上記のコードを実行した際のスクリーンショットです。⁠Ichikawa, Japan」で検索を行いラベルが付いているのが判ると思います。左側にあるピンク色のマーカーはユーザーの現在地を示しています。

画像

必要に応じて,表示されるマップの中心点を設定することができます。Centerプロパティに都庁の座標を設定しています。

中心点は,GeoCoordinateオブジェクトを使用して指定されます。利用するにはプロジェクトにSystem.Deviceアセンブリへの参照を追加します。GeoCoordinate APIにアクセスするには,System.Device.Location名前空間を参照するusingディレクティブを含める必要があります。

private void btnBingMaps_Click(object sender, RoutedEventArgs e)
{
    BingMapsTask bingMapsTask = new BingMapsTask();
    bingMapsTask.Center = new GeoCoordinate(35.691356, 139.690046);
    bingMapsTask.ZoomLevel = 15;
    bingMapsTask.Show();
}
Private Sub btnBingMaps_Click(sender As Object, e As RoutedEventArgs)
    Dim bingMapsTask As New BingMapsTask()
    bingMapsTask.Center = New GeoCoordinate(35.691356, 139.690046)
    bingMapsTask.ZoomLevel = 15
    bingMapsTask.Show()
End Sub

上記のコードを実行した際のスクリーンショットです。都庁が地図上の中心に表示されています。

画像

SearchTermプロパティとCenterプロパティを両方とも設定した場合は,一旦Centerプロパティに指定した位置へ移動してから,SearchTermプロパティの検索結果の場所へ移動するような挙動となりました。

private void btnBingMaps_Click(object sender, RoutedEventArgs e)
{
    // SearchTermプロパティにテキストに設定して,
    // Centerプロパティに地図上で中央になる座標を設定している場合,
    // SearchTermプロパティが優先されて表示される
    BingMapsTask bingMapsTask = new BingMapsTask();
    bingMapsTask.SearchTerm = "Ichikawa, Chiba, Japan";
    bingMapsTask.Center = new GeoCoordinate(35.691356, 139.690046);
    bingMapsTask.Show();
}
Private Sub btnBingMaps_Click(sender As Object, e As RoutedEventArgs)
    ' SearchTermプロパティにテキストに設定して、
    ' Centerプロパティに地図上で中央になる座標を設定している場合、
    ' SearchTermプロパティが優先されて表示される
    Dim bingMapsTask As New BingMapsTask()
    bingMapsTask.SearchTerm = "Ichikawa, Chiba, Japan" 
    bingMapsTask.Center = New GeoCoordinate(35.691356, 139.690046)
    bingMapsTask.Show()
End Sub

なお,BingMapsTaskの呼び出し時には,SearchTermプロパティとCenterプロパティにそれぞれ何も設定しなかった場合,InvalidOperationExceptionが発生してしまいます。

private void btnBingMaps_Click(object sender, RoutedEventArgs e)
{
    // SearchTermとCenter,両方のプロパティに何も設定しなかった場合,
    // InvalidOperationExceptionが発生する
    BingMapsTask bingMapsTask = new BingMapsTask();
    bingMapsTask.Show();
}
Private Sub btnBingMaps_Click(sender As Object, e As RoutedEventArgs)
    ' SearchTermとCenter、両方のプロパティに何も設定しなかった場合、
    ' InvalidOperationExceptionが発生する
    Dim bingMapsTask As New BingMapsTask()
    bingMapsTask.Show()
End Sub

画像

Windows Phone SDK 7.1 Beta2では,SearchTermプロパティに日本語を入力すると文字化けしてしまう現象が発生していました。正式版が出る頃には日本語でも検索できるようになっていると思われます。

著者プロフィール

和田健司(わだけんじ)

1982年10月12日生まれ。大阪で働くプログラマ。Microsoft MVP for Device Application Development(Jul 2010 - Jun 2011)。Windows Mobileに傾倒し今に至る。Windows Mobile向けのTipsを書いています。iPhoneアプリ開発を始めました。嫌いな食べ物はカレー。

URL: http://ch3cooh.jp/
Blog: http://d.hatena.ne.jp/ch3cooh393/

コメント

コメントの記入