キャッシュファイルアップデーターコントラクト
キャッシュファイルアップデーターコントラクトを用いると、前述のファイルオープンピッカーコントラクトなどを通してストアアプリに渡したファイルの更新を受け取り、ファイルを同期できます。
例えばファイルオープンピッカーコントラクトを通して画像ファイルを渡した場合、渡されたアプリ側でファイルが加工された場合その通知を受け取ることは通常できませんが、キャッシュファイルアップデータコントラクトに対応したストアアプリはその更新を取得して更新内容を受け取ることができます。
これは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クラスを変数に格納します。
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のドキュメントなどを参考に理解を深めておきましょう。