バックグラウンドによるファイル転送(前編)

2011年9月9日(金)
PROJECT KySS

このサンプルは、Windows Phone Developer Tools 7.1から追加された、BackgroundTransferServiceを使用して、アプリケーションを開始し、バックグラウンドファイル転送を監視するサンプルです。BackgroundTransferServiceクラスは、バックグラウンド転送要求の管理を可能にするクラスです。

今回も解説が長くなるため前編と後編の2回に分けて解説いたします。前編では、バックグラウンドファイル転送の状況を表示する、MainPage.xaml.vbの処理をメインに解説します。

このプログラムで実装する機能の動作を、下記に解説しておきます。

実行すると、「登録なし」の画面が表示されます。画面下にある+のアイコンをクリックすると、転送するファイルの一覧画面が表示されます。右横に表示される+の「追加」アイコンをクリックし、その後エミュレーターのBackアイコン(←)をクリックします(図1)。

するとファイルの転送画面が表示され、「受信Byte数」の値が変化していきます。転送の途中で画像が表示されます。既に転送済みのファイルは追加できませんが、それ以外のファイルは何個でも転送が可能です(図2)。ただし、wmvファイルだけは、同じ画面上で1個しか再生できません。また、ほかの画像ファイルと同じ画面に表示することもできませんので、注意してください(図3)。

[削除]ボタンで任意のファイルを削除できます。エミュレーターの下方にある×のアイコンをクリックすると、全部のファイルが一括で削除されます(図4)。受信の途中で[WebBrowser]ボタンをクリックして、任意のサイトを表示しても、バックグラウンドでファイルの転送は実行されます(図5)。

※注意:wmvファイルを選択する場合は、[削除]ボタンではなく、×のアイコンで削除を実行してから、wmvファイルを選択してください。

図1:追加アイコンをクリックして(左図)、ファイル選択画面に入る。転送するファイルを追加アイコンで選択し、Backアイコン(←)をクリックする(右図)(クリックで拡大)

図2:ファイルの転送画面が表示され、「受信Byte数」の値が変化する(左図)。転送の途中で画像が表示される(中央図)。既に転送済みのファイルは追加できないが、それ以外のファイルは何個でも追加転送が可能(右図)(クリックで拡大)

図3:wmvファイルは、同じ画面上で1個しか再生できない。ほかの画像ファイルと同じ画面に表示することはできない(クリックで拡大)

図4:[削除]ボタンで任意のファイルを削除した(中央図)。エミュレーターの下方にある×のアイコンをクリックすると、全部のファイルが一括で削除される(右図)(クリックで拡大)

図5:転送の途中で[WebBrowser]ボタンをクリックして、任意のサイトを表示しても、バックグラウンドでファイルの転送は実行されている(クリックで拡大)

サンプル一式は、会員限定特典としてダウンロードできます。記事末尾をご確認ください。
※サンプル実行でエラーが発生した場合は、「ソリューションのビルド」を実行後、再度、デバッグ開始を行ってください

プロジェクトの作成

VS 2010のメニューから[ファイル(F)/新規作成(N)/プロジェクト(P)]を選択します。次に、「Windows Phone アプリケーション」を選択して、「名前(N)」に任意のプロジェクト名を指定します。ここでは「WP71_BackgroundTransfer」という名前を付けています。Windows Phoneのバージョンは7.1を選択します。

ソリューションエクスプローラー内にImageというフォルダを作成し、PNG画像を追加します。この画像はWindows 7 Professionalでは、下記のディレクトリに存在するPNG画像です。

C:\Program Files\Microsoft SDKs\Windows Phone\v7.1\Icons\dark

この中の、appbar.add.rest.pngとappbar.basecircle.rest.pngとappbar.cancel.rest.pngを選択して追加します。appbar.add.rest.pngをadd.pngに、appbar.basecircle.rest.png をen.pngに、appbar.cancel.rest.pngをremove.pngに名前を変更しています。これらの追加したImageフォルダ内の.pngファイルのプロパティから、「ビルドアクション」に「コンテンツ」と指定しておきます。

デフォルトでは「Resource」になっています。「Resource」のままでは、画像が表示されませんので、注意してください。またリスト1のXML文書ファイル(absoluteUri.xml)も追加しておきます。

これらのファイルは、ダウンロードされたサンプルファイルには追加済みです。

リスト1 XML文書ファイル(absoluteUri.xml)

最後の1個のみWMVファイルを指定しています。
<?xml version="1.0" encoding="utf-8" ?>
<Image>
  <ImageName>http://2008r2.projectkyss.net/Image/Image1.png</ImageName>
  <ImageName>http://2008r2.projectkyss.net/Image/Image2.png</ImageName>
  <ImageName>http://2008r2.projectkyss.net/Image/Image3.png</ImageName>
  <ImageName>http://2008r2.projectkyss.net/Image/Image4.png</ImageName>
  <ImageName>http://2008r2.projectkyss.net/Image/Image5.png</ImageName>
  <ImageName>http://sei.seindesign.net/sampledata/WP7_VegetarianCooking.wmv</ImageName>
</Image>
  • 「バックグラウンドによるファイル転送(前編)」サンプルプログラム

四国のSOHO。薬師寺国安(VBプログラマ)と、薬師寺聖(デザイナ、エンジニア)によるコラボレーション・ユニット。1997年6月、Dynamic HTMLとDirectAnimationの普及を目的として結成。共同開発やユニット名義での執筆活動を行う。XMLおよび.NETに関する著書や連載多数。最新刊は「Silverlight実践プログラミング」両名とも、Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。http://www.PROJECTKySS.NET/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています