SHOEISHA iD

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

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

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

Windowsストアアプリのコントラクトの基礎
――ファイルピッカーコントラクトほか

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

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

キャッシュファイルアップデーターコントラクト

 キャッシュファイルアップデーターコントラクトを用いると、前述のファイルオープンピッカーコントラクトなどを通してストアアプリに渡したファイルの更新を受け取り、ファイルを同期できます。

 例えばファイルオープンピッカーコントラクトを通して画像ファイルを渡した場合、渡されたアプリ側でファイルが加工された場合その通知を受け取ることは通常できませんが、キャッシュファイルアップデータコントラクトに対応したストアアプリはその更新を取得して更新内容を受け取ることができます。

 これはSkyDriveなどの、クラウドベースのファイル共有サービスのファイル同期に利用できます。

連絡先ピッカー拡張機能

 連絡先ピッカー拡張機能を利用すると、あなたのストアアプリから別のストアアプリに連絡先情報を返すことができるようになります。

 連絡先ピッカーを備えたストアアプリとしては、デフォルトのPeopleアプリが該当します。

連絡先ピッカー拡張機能の実装

 連絡先ピッカー拡張機能として、ストアアプリに住所情報を返す方法を紹介します。

 1. まずPackage.appxmanifestの宣言タブに「連絡先ピッカー」を追加します。この状態でアプリケーションを実行すると、連絡先ピッカーの送り側として登録されます。

 2. 起動時に呼び出されるイベントハンドラーを、App.xaml.csに以下のコードを追記します。

連絡先ピッカーの起動イベントハンドラー
protected override void OnActivated(Windows.ApplicationModel.Activation.IActivatedEventArgs args)
{
    if (args.Kind == ActivationKind.ContactPicker)
    {
        var page = new MainPage();
        page.Activate((ContactPickerActivatedEventArgs)args);
    }
    else
    {
        base.OnActivated(args);
    }
}

 連絡先ピッカーから起動された場合、App.xaml.csのOnActivatedイベントハンドラーが呼び出されます。

 引数のIActivatedEventArgs.Kindプロパティで起動されたイベントを判定します。連絡先ピッカーの場合ActivationKind.ContactPickerがKindプロパティに入っています。

 3. 最後に、連絡先を返す処理を記述します。MainPage.xamlのActivateメソッドで、ContactPickerUIクラスを変数に格納します。

ActivateメソッドでContactPickerUIクラスを保持する
ContactPickerUI contactPickerUI;

internal void Activate(Windows.ApplicationModel.Activation.ContactPickerActivatedEventArgs args)
{
    contactPickerUI = args.ContactPickerUI;

    Window.Current.Content = this;
    this.OnNavigatedTo(null);
    Window.Current.Activate();
}

 この後ユーザーがリストから連絡先を選択した場合に、contactPickerUIのAddContactメソッドで連絡先を表すContactクラスを追加します。例えば、以下のような記述になります。

連絡先情報の追加
var contact = new Contact();
contact.Name = "テスト";
contact.Fields.Add(new ContactField("mac.nishimura@gmail.com", ContactFieldType.Email));

contactPickerUI.AddContact(Guid.NewGuid().ToString(), contact);

 これで連絡先ピッカー拡張機能の実装の紹介を終わります。

自動再生拡張機能

 自動再生拡張機能を利用すると、カメラや外部メディアファイルの接続に合わせて自動起動するストアアプリを作成することができます。

自動再生拡張機能の実装

 今回は外部ストレージに保存されたカメラ画像を開くために、自動再生に対応して起動するストアアプリの実装方法を紹介します。

 1. Package.appxmanifestの宣言タブで、「ファイルの種類の関連付け」を追加します。

 2. プロパティの「表示名」を”AutoPlaySample”、「名前」を”autoplay”と指定します。

 3. 続いてサポートされるファイルの種類に”.jpg”と”.png”を追加します。

ファイルの種類の関連付けを追加する
ファイルの種類の関連付けを追加する

 4. 同じく宣言タブで「自動再生コンテンツ」を追加します。

 5. 起動アクションに以下を追加します。

  • 動詞: Show
  • アクションの表示名: 画像を表示する
  • コンテンツイベント: ShowPicturesOnArrival

 6. マニフェストファイルの編集の最後に、ストレージのデータを扱うために機能タブの「リムーバブル記憶域」にチェックを入れます。

自動再生拡張機能の起動処理
protected override void OnFileActivated(FileActivatedEventArgs args)
{
    if (args.Verb == "show")
    {
        // 自動再生拡張機能を用いて起動した場合
    }

    base.OnFileActivated(args);
}

自動再生拡張機能の動作確認

 動作を確認するためには、デジカメのストレージ(microSDカードなど)をPCに読み込ませます。ストレージであればUSBストレージでも構いませんが、ファイル構造としてデジタルカメラ同様、トップディレクトリにDCIMがあり、その中にjpgないしpng形式のファイルを配置しておいてください。

 なお、デジタルカメラを接続した場合は、カメラというデバイスとして判定されるため上記設定では起動しません

 すでに外部ストレージに対応する既定のプログラミングが指定されている場合は、自動再生するアプリとして既定のアプリが起動してしまいますので、コントロールパネルの自動再生から「毎回動作を確認する」などに変更しておきましょう。

まとめ

 前回に引き続き、コントラクトの解説を行いました。

 今回は触れませんでしたが、ファイルピッカーコントラクトには、ファイル保存ピッカーコントラクトという保存する側の機能も含まれます。

 また、自動再生拡張機能に対応したデバイスは、DVDや携帯電話などの外部デバイスもありますのでMSDNのドキュメントなどを参考に理解を深めておきましょう。

参考資料

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング