[フォトギャラリー & ムービーメーカー Plug in] 第10回(最終回) ~プラグインが受けとる情報とは~

[ フォトギャラリー & ムービーメーカーPlug in]
第10回 ( 最終回 ) ~プラグインが受けとる情報とは~ 前回までの記事で、プラグインの作り方を説明しました。
今回は、プラグインに機能を追加するために不可欠な、プラグインが受け取る情報について説明します。

[ プラグインが受け取る情報 ]
プラグインを作っている途中に、何回かsessionXMLというものが出てきました。
このsessionXMLは、フォトギャラリーやムービーメーカーが画像や動画に関する詳細な情報を渡すために使用する、XMLのデータです。
以下のXMLのデータは、フォトギャラリーから渡される情報の例です。

<?xml version="1.0"?>
<PhotoGalleryPublishSession versionMajor="1" versionMinor="0">
<PublishParameters>
(中略)
</PublishParameters>
<ItemSet>
<Item id="10">
<FullFilePath>C:\Users\ttanaka\Pictures\test.jpg</FullFilePath>
<OriginalFileName>test.jpg</OriginalFileName>
<OriginalFileExtension>.jpg</OriginalFileExtension>
<PerceivedType>image</PerceivedType>
<Title></Title>
<OriginalWidth>246</OriginalWidth>
<OriginalHeight>221</OriginalHeight>
<LengthMS>0</LengthMS>
<FileSize>13473</FileSize>
<KeywordSet />
<PeopleRegionSet />
</Item>
</ItemSet>
</PhotoGalleryPublishSession>

このように、sessionXMLの中にはFullFilePathというファイルのフルパスの情報や、PerceicedTypと 画像か動画かを示す情報などが入っています。
プラグインの中で特定のWebサイトに画像をアップロードするときには、これらの情報を使用してアップロードするファイルを取り出します。

[ 動画の場合の情報 ]
動画が送られてくるときは、PerceivedTypeがVideoになります。
プラグイン側で用意しているメソッドであるShowConfigurationSettingsとPublishItemにはsessionXMLが引数として送られてきますので、その情報を使用してファイルにアクセスすることができます。

ここでムービーメーカーの場合は注意することがあります。
ShowConfigrationSettingsの中でも、sessionXMLを使用してファイルのフルパスを取得することができます。
フォトギャラリーからプラグインを呼んだ場合は、ShowConfigrationSettingsが呼ばれたときにフルパスで指定された場所にファイルが存在します。
ムービーメーカーからプラグインを呼んだ場合は、このタイミングではファイルが存在しないのです。
それは、ムービーメーカーが編集中の動画を一時的にハードディスクに保存するタイミングが、ShowConfigrationSettingsの呼び出しとPublishItemの呼び出しの間だからです。

[XML中のデータの読み出し ]
sessionXMLの中から情報を抽出する方法は、第7回のPublishDialog_Loadの実装部分をご参照ください。
例えばPerceivedTypeがimageのものを抽出するときには、以下のようなコードを使用します。

XmlNodeList imageItems = sessionXml.SelectNodes("/PhotoGalleryPublishSession/ItemSet/Item[PerceivedType=\"image\"]/FullFilePath");

[sessionXMLの中身を見るには ]
フォトギャラリーやムービーメーカーから送られてくるsessionXMLの内容を見るには、ShowConfigrationSettingsやPublishItemで使用しているフォームにテキストボックスを貼り付け、以下のコードを書きます。

textBox1.Text = sessionXml.InnerXml.ToString();

この時に、テキストボックスのMultiLineプロパティをtrueにしておくと、複数の行を一度に見られるようになります。
XML系の機能を使用するときは、コードの最初に

using System.Xml;

を追加しておいてください。

今回で、フォトギャラリー & ムービーメーカーのプラグインについての連載を終了します。
ご購読いただき、ありがとうございました!

次回から、Windows Phone 7 UIガイドを読み解くという連載を開始します。

[ フォトギャラリー & ムービーメーカーPlugin 連載 ]
第1回 : ~フォトギャラリーを知っていますか?~ 第2回 : ~なかなか使えるムービーメーカー~ 第3回 : ~プラグインとは? プラグインを作るには?~ 第4回 : ~プラグインについて知っておくべきこと~
第5回 : ~プラグインに実装する6つのメソッドの用意~ 第6回 : ~設定画面の表示~
第7回 : ~画像の処理またはアップロード~
第8回 : ~詳細情報を表示するには~ 第9回 : ~レジストリへの登録~
第10回 ( 最終回 ) : ~プラグインが受けとる情報とは~

マイクロソフト
田中達彦