Windows Phoneの最近のブログ記事

WindowsPhone8Dev.png

ようやく Windows Phone 8 アプリの開発環境を構築しました^^;

 

Windows Phone 8 アプリの開発環境としては、以下のシステム要件を満たす必要があります((((;゜Д゜)))

 

システム要件

  • Windows 8 64 ビット (x64) クライアント バージョン
  • ハードウェア:
    • 4 GB のハード ディスク空き容量
    • 4 GB の RAM
    • 64 ビット (x64) CPU
  • Windows Phone 8 Emulator:
    • Windows 8 Pro エディション以上
    • Second Level Address Translation (SLAT) をサポートするプロセッサが必要

 

開発環境の構築自体は、とても簡単です。

Windows Phone SDK 8.0 をダウンロードし、インストールするだけです。

 

Windows Phone SDK 8.0

※赤いダウンロードボタンを押すとネットワークインストールが開始されますが、
 ページ中央より下にある .ISO 版のリンクで丸ごとダウンロードするのがお勧め

 

インストールが完了すると、統合開発環境である Visual Studio 2012 や Emulaotr などがインストールされます。

 

アプリケーションを作成する

SDK のインストールが完了したら、IDE である VC 2012 Express を起動し、

「ファイル」 メニューから、「新しいプロジェクト」 「Windowss Phone アプリ」を選択すると、

ひな形のソリューションが作成されます。

 

エミュレータ上でアプリを実行する

続けて、「Emulator WVGA 512MB(JA)」などのボタンを押すと、

作成したアプリがエミュレータ上で実行されます。

 

もしも、仮想環境上でエミュレータの実行が上手くいかなった場合には、以下のブログを参考にしてみてください。

ワタクシの環境(VMWare Player 5.0.0(ホスト:Windows 7 Pro 64ビット、ゲスト:Windows 8 Pro 64ビット))でも同じ対処方法で動作しました。

 

あわせて読みたい

Windows Phone 7.5 で、WebClient を使用してXMLを読み込み表示するサンプルを探していたら、

以下の Microsoft の公式ページにありました。

 

ということで、実際にソースコードを作成して試してみました。

wp75_twitter.png wp75_twitter_menu.png

 

以下、ソースコードの解説です。

※オリジナルのソースコードに書かれていないコメントなどを追記しています

 

ソースコード解説

アプリケーションを起動すると、MainPage のコンストラクタが呼び出されます。

※MainPage はウィザードで自動的に作成される PhoneApplicationPage クラスのサブクラス

コンストラクタでは、独自に定義した GetTweets メソッドを呼び出し、指定したユーザの TL を表示しています。

// コンストラクタ
public MainPage()
{
    InitializeComponent();
    // 指定したユーザーのタイムラインを表示する
    GetTweets(TwitterId);
}

 

コンストラクタから呼び出された GetTweets メソッドでは、

指定された文字列を検索するための Twitter API の URI 文字列を作成し、

WebClient クラスを使用して非同期読み込みを開始しています。

// 指定したユーザのタイムラインを取得して表示する
private void GetTweets(string strId)
{
    // Twitterで検索する文字列を作成
    String queryString = HttpUtility.UrlEncode(strId); // URLで使用できる文字列に変換

    // TwitterAPIのURIを作成
    String uriString = "http://search.twitter.com/search.atom?q=" + queryString;

    // Uriインスタンス生成
    Uri u = new Uri(uriString);

    WebClient cli = new WebClient();
    // ダウンロード完了後に呼び出されるイベントハンドラを設定
    cli.DownloadStringCompleted += new DownloadStringCompletedEventHandler(cli_DownloadStringCompleted);

    // 指定したURIを非同期でダウンロード
    cli.DownloadStringAsync(u);
}

 

非同期読み込みが完了すると、DownloadStringCompleted に設定したイベントハンドラが呼び出されます。

ダウンロードしたデータ(文字列)から XML のインスタンスを生成し、データコンテキストに設定しています。

// 通信を実行し、結果を画面に表示する
void cli_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    if (e.Error == null)
    {
        // 指定したURIから読み込んだ文字列を取得
        String stringResult = e.Result;

        // 指定した文字列から StringReader(StringReader は TextReader のサブクラス)
        StringReader sr = new StringReader(stringResult);

        // 指定した TextReader を使用して、新しい XmlReader インスタンスを作成する
        XmlReader xr = XmlReader.Create(sr);

        // 指定した XmlReader から配信フィードを読み込む
        SyndicationFeed sf = SyndicationFeed.Load(xr);
        
        // 読み込んだ配信フィードをデータコンテキストに設定
        this.DataContext = sf;
    } else
    {
        MessageBox.Show("通信エラーが発生しました。\r\n" + e.Error.Message);
    }
}

 

データコンテキストにデータを設定すると、データバインディングにより自動的に、

XAML に定義していたオブジェクトのプロパティに値が設定、再描画されます。

この例では Twitter API で取得した以下のデータをデータバンディングさせています。

    • Links[1].Uri ・・・ツイートしたアカウントのプロフィール画像のURI
    • Authors[0].Name ・・・ツイートしたアカウントの名前
    • Title.Text ・・・ツイート本文

※Twitter API - GET search の仕様は GET search | Twitter Developers にあります。

<phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Key="SyndicationItemTemplate">
        <StackPanel Orientation="Horizontal" Width="460">
            <Image Height="91" Width="91" Source="{Binding Links[1].Uri}" Margin="4"/>
            <StackPanel Orientation="Vertical" Width="350">
                <TextBlock Text="{Binding Authors[0].Name}" FontWeight="Bold" >
                <TextBlock.Foreground>
                    <SolidColorBrush Color="{StaticResource PhoneAccentColor}"/>
                </TextBlock.Foreground>
                </TextBlock>
                <TextBlock TextWrapping="Wrap" Text="{Binding Title.Text}" />
            </StackPanel>
        </StackPanel>
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>

 

このサンプルで使用されている主なクラスのドキュメントへのリンク

Windows Phone Emulator が起動しない場合の対処法

Windows Phone Emulator(エミュレーター)起動時、

error.png

別の Virtual Machine Manager を実行中です。他の Virtual Machine Manager
を終了し、しばらく待機してから、エミュレーターを再起動してください

のようなアラートが表示されて、エミュレーターが起動しない場合の対処法。

 

私の環境では、別途インストールしていた

uninstall.png

Intel® Hardware Accelerated Execution Manager

 

をアンインストールすると、無事、エミュレーターを起動することができました。

※Windows Phone SDK 7.1.1 で確認

 

ちなみに、この 「Intel® Hardware Accelerated Execution Manager」 は、

Android SDK Tools, Revision 17 で追加された Android Emulator の高速化のためのものです。。。

1

2016年8月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31