SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

速習 Windowsストアアプリケーション

Windowsストアアプリのコントラクトの基礎
――検索、共有、設定、リモート再生

速習 Windowsストアアプリケーション 第4回

  • X ポスト
  • このエントリーをはてなブックマークに追加

設定コントラクト

 設定コントラクトは、チャームの設定ボタンから呼び出されアプリケーションの設定を行える機能です。

 画像のように設定チャーム起動時にメニューを追加、追加したメニューから設定を行うページを表示します。

設定チャームにメニューを追加する
設定チャームにメニューを追加する

設定コントラクトの追加

 設定コントラクトの追加は、以下のように行います。

設定コントラクトを呼び出す
    // チャームから設定が呼び出された際のイベントハンドラー
    SettingsPane.GetForCurrentView().CommandsRequested += onCommandsRequested;
}

/// <summary>
/// 設定コントラクトが呼び出された際に実行される
/// ここでメニュー項目を追加する
/// </summary>
/// <param name="settingsPane"></param>
/// <param name="eventArgs"></param>
public void onCommandsRequested(SettingsPane settingsPane, SettingsPaneCommandsRequestedEventArgs eventArgs)
{
    UICommandInvokedHandler handler = new UICommandInvokedHandler(onSettingsCommand);

    SettingsCommand generalCommand = new SettingsCommand("generalSettings", "このアプリについて", handler);
    eventArgs.Request.ApplicationCommands.Add(generalCommand);
}

void onSettingsCommand(IUICommand command)
{
    // 「このアプリについて」メニューを選択した際の処理を書く
}

 SettingsPane.GetForCurrentView().CommandsRequestedイベントハンドラーに、設定チャームから設定が押された際に呼び出されるハンドラーを設定します。続いて、イベントハンドラーで設定メニューの追加を行います。

コラム:XAML+C#のプロジェクトにはフライアウトがない

 設定コントラクトで画面端3分の1ほどに設定メニューが表示される表示方法があります。この表示をチャームフライアウトと言います。しかし、チャームフライアウトのコントロールはC#には存在しません(HTML+JavaScriptのプロジェクトには存在します)。

 

 XAML+C#プロジェクトでチャームフライアウトを利用したい場合は、NuGetからダウンロードできる「CharmFlyout」を利用しましょう。

チャームフライアウト
チャームフライアウト
NuGetでCharmFlyoutをインストール
NuGetでCharmFlyoutをインストール

リモート再生コントラクト

 リモート再生コントラクトを利用すると音声、ビデオなどをコンピューターから別のデバイスにストリーミングすることができます。

 リモート再生コントラクトも送信側と受信側という2つの側面があります。受信側はストアアプリに限らずPlay Toに対応したデバイスであれば受信可能です。

送信側の作成

 リモート再生の送信側は、チャームのデバイス選択時に受信対応デバイスが選択されると以下のコードで配信を行います。

リモート再生送信側
    playToManager = PlayToManager.GetForCurrentView();
    playToManager.SourceRequested += playToManager_SourceRequested;
}

void playToManager_SourceRequested(PlayToManager sender, PlayToSourceRequestedEventArgs args)
{
    var deferral = args.SourceRequest.GetDeferral();
    var handler = dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
        {
            args.SourceRequest.SetSource(VideoSource.PlayToSource);
            deferral.Complete();
        });
}

 PlayToManagerクラス、PlayToSourceRequestedEventArgsクラスを利用します。

受信側の作成

 受信側はPlayToReceiverクラスを用いて配信を待機します。待機はPlayToReceiverクラスのStartAsyncメソッドを利用します。

まとめ

 今回はWindowsストアアプリケーションの特徴的な機能、「コントラクト」について紹介しました。コントラクトを利用することで、ストアアプリのガイドラインに沿ったアプリ作成が可能になり、ほかのストアアプリやOSの機能を借りてより自分のアプリケーションを機能豊かなものにすることができます。

 次回以降も引き続き残りコントラクトを紹介していきますので、ぜひ理解してストアアプリ開発に役立ててください。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
速習 Windowsストアアプリケーション連載記事一覧

もっと読む

この記事の著者

西村 誠(ニシムラ マコト)

 Microsoft MVP Windows Platform Development。 Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。 ブログ:眠るシーラカンスと水底のプログラマー 著書:基礎から学ぶ Windowsストアアプリ開発

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6934 2012/12/31 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング