使ってみよう! Windows Live SDK/API

第24回 Windows Live フォト ギャラリー ── はてなフォトライフ プラグインの作成 Part III

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

はじめに

前回は,はてなフォトライフに画像がアップロードできるところまでを作りました。今回は作成済みのプラグインのコード変更は行いませんが,紹介しきれなかった機能についてとプラグインの配布についてです。22回23回も併せて参照してください。

メタデータの参照

アップロードする動画像の情報は,Session XMLというXmlDocumentオブジェクトによって取得していました。Photo Gallery Publishing Plug-in PlatformではSession XMLに含まれていない動画像のメタデータを参照する方法も提供しています。これによりカメラの機種名やF値などの値が参照できます。ただし,メタデータを必ず参照できるわけではありません。

メタデータの参照は,IPublishPropertiesとIPublishItemPropertyStoreというインターフェースを通して行います。IPublishPropertiesインターフェースのオブジェクトは次のメソッドの引数として渡されています。

  • ShowConfigurationSettings: 設定ウィンドウの表示
  • PublishItem: 動画像のアップロード

引数名はpublishPropertiesです。これを使用してメタデータを参照してみましょう。たとえばカメラの機種名を参照するには次のように記述します。PublishItemメソッド内に以下のように記述します。

' カメラの機種名の取得
Dim cameraModel As String = Nothing
If publishProperties.GetItemProperties(mediaObjectId).GetValue(Of String)("System.Photo.CameraModel", cameraModel) Then
    ' (指定した動画像にカメラの機種名の情報がある場合)
End If

参照に必要な情報は,参照する動画像のIDと参照する値の型と参照する値のプロパティ名の3個です。

IDは,Session XMLの<Item>要素id属性値,またはPublishItemメソッドの引数mediaObjectIdからわかります。参照したい動画像のIDをGetItemPropertiesメソッドの引数に指定します。

値の型とプロパティ名は,GetItemPropertiesメソッドの戻り値のインターフェースオブジェクトIPublishItemPropertyStoreのGetValueメソッドに指定します。機種名の場合は「String」「System.Photo.CameraModel」になります。

このほかのプロパティ名の値はMSDNライブラリの次のページで確認できます。

進行状況の通知,キャンセル処理

動画像のアップロード時に,アップロードの進行状況をLiveアプリケーションに通知することができます。またユーザーがアップロード処理のキャンセルした場合,アプリケーションから通知を受け取ることも可能です。いずれもIPublishProgressCallbackというインターフェースを通して行います。このインターフェースのオブジェクトは動画像アップロード処理を行うPublishItemメソッドの引数(引数名callback)として受け取ります。

アップロード進行状況の通知

図1のようにLiveアプリケーションではアップロードの進行を示すウィンドウが用意されています。

図1 進行通知ウィンドウ

図1 進行通知ウィンドウ

アップロードの進行状況をLiveアプリケーションに通知するにはIPublishProgressCallback.SetPublishProgressメソッドを使用します。PublishItemメソッド内で次のように記述します。

Dim percent As Integer
callback.SetPublishProgress(percent)

SetPublishProgressメソッドの引数は,進行を表す0~100のパーセントで指定します。パーセントはひとつの動画像に対して0~100を指定します。

キャンセル通知の参照

ユーザーがアップロード処理をキャンセルした場合,IPublishProgressCallback.Canceledメソッドにより知ることができます。Canceledの戻り値はBoolean型です。

If callback.Canceled Then
    ' (ユーザーがアップロード処理をキャンセルした場合)
End If

キャンセル通知を受け取るには,PublishItemメソッドの引数にある EventWaitHandle型のcancelEventを使用することもできます。

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp

コメント

コメントの記入