导出 (0) 打印
全部展开

如何使用 Windows Phone 的应用程序连接扩展图片查看器

2012/2/9

使用“应用程序连接”,您的应用程序可以从图片查看器中的“应用程序”链接启动并且根据用户查看的图片提供丰富的用户体验。本主题介绍如何创建可以从图片查看器启动的应用程序以及如何从深层链接 URI 中提取相应的图片标记。有关扩展图片体验的更多信息,请参阅 Windows Phone 的图片可扩展性概述

重要说明重要说明:

在 Windows Phone OS 7.1 中,已对图片可扩展性进行了更改。有关如何扩展在 Windows Phone OS 7.0 上运行的应用程序中的图片体验的信息,请参阅此处的 Windows Phone OS 7.0 开发人员文档。

在 Windows Phone SDK 7.1 中,Extras.xml 文件不是必需文件。当将扩展图片查看器的应用程序升级到 Windows Phone OS 7.1 时,删除此文件并使用本主题中所述的新扩展性技术。

对于这个版本的 Windows Phone SDK,本主题只能在设备上完成,而不能在 Windows Phone 模拟器上完成。当前版本的模拟器不包括对设备上图片中心的访问。

本主题基于 C# 开发;但也提供 Visual Basic 代码。

在本节中,您将创建应用程序,声明图片查看器的扩展以及添加图像控件以显示与应用程序的启动相对应的图像。

声明图片查看器扩展的步骤

  1. 在 Visual Studio 2010 Express for Windows Phone 中,通过选择“文件 | 新建项目”菜单命令创建一个新项目。

  2. 将显示“新建项目”窗口。展开“Visual C#”模板,然后选择“Silverlight for Windows Phone”模板。

  3. 选择“Windows Phone 应用程序”模板。用您选择的名称填写“名称”框。默认情况下,这是将出现在图片查看器“应用程序”页面上的名称。

  4. 单击“确定”。将显示“新建 Windows Phone 应用程序”窗口。

  5. “目标 Windows Phone 版本”菜单中,确保已选择 Windows Phone 7.1。

  6. 单击“确定”。将创建一个新的项目,并且“MainPage.xaml”将在 Visual Studio 设计器窗口中打开。

  7. “项目”菜单中,选择“添加引用”。在 .NET 选项卡中,选择 Microsoft.Xna.Framework 并单击“确定”

  8. 打开应用程序清单文件 WMAppManifest.xml 并添加以下代码作为 App 元素的子元素。这样,您的应用程序便能够从图片查看器中启动。

    <Extensions>
          <Extension ExtensionName="Photos_Extra_Viewer" ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID="_default" />
    </Extensions>
    
    
  9. 打开主页的代码隐藏文件 MainPage.xaml.cs,在该页面的顶部添加以下指令。

    using System.Windows.Media.Imaging;
    using Microsoft.Phone;
    using System.IO;
    using Microsoft.Xna.Framework.Media;
    using System.Windows.Navigation;
    
    
  10. MainPage.xaml 中,将名为 LayoutRootGrid 替换为以下代码。

        <!--LayoutRoot is the root grid where all page content is placed.-->
        <Grid x:Name="LayoutRoot" Background="Transparent">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
    
            <!--TitlePanel contains the name of the application and page title.-->
            <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
                <TextBlock 
                    x:Name="ApplicationTitle" Text="APP CONNECT EXAMPLE" 
                    Style="{StaticResource PhoneTextNormalStyle}"/>
                <TextBlock 
                    x:Name="PageTitle" Text="picture app" Margin="9,-7,0,0" 
                    Style="{StaticResource PhoneTextTitle1Style}"/>
            </StackPanel>
    
            <!--ContentPanel - place additional content here-->
            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <Image 
                    Height="350" 
                    HorizontalAlignment="Left" 
                    Margin="6,18,0,0" 
                    Name="retrievePic" 
                    Stretch="Fill" 
                    VerticalAlignment="Top" 
                    Width="450" />
            </Grid>
        </Grid>
    
    

在本节中,您从深层链接 URI 提取 token 参数值。参数值 token 与从其启动您的应用程序的图片相对应。使用该 token 时,该图片显示在图像控件中。

提取 token 参数的步骤

  • MainPage.xaml.cs 中,向 MainPage 类中添加以下代码。该代码实现 OnNavigatedTo(NavigationEventArgs) 方法,在启动应用程序的 URI 中查找 token 参数。如果 token 参数存在,则应用程序从媒体库中检索相应的图片,使用该图片创建位图图像并在名为 retrievePicImage 控件中显示该图像。

       protected override void OnNavigatedTo(NavigationEventArgs e)
            {
                // Get a dictionary of query string keys and values.
                IDictionary<string, string> queryStrings = this.NavigationContext.QueryString;
    
    
                // Ensure that there is at least one key in the query string, and check whether the "token" key is present.
                if (queryStrings.ContainsKey("token"))
                {
                    
                    // Retrieve the picture from the media library using the token passed to the application.
                    MediaLibrary library = new MediaLibrary();
                    Picture picture = library.GetPictureFromToken(queryStrings["token"]);
    
    
                    // Create a WriteableBitmap object and add it to the Image control Source property.
                    BitmapImage bitmap = new BitmapImage();
                    bitmap.CreateOptions = BitmapCreateOptions.None;
                    bitmap.SetSource(picture.GetImage());
    
                    WriteableBitmap picLibraryImage = new WriteableBitmap(bitmap);
                    retrievePic.Source = picLibraryImage;
                }
    
            }
    
    
    
    重要说明重要说明:

    如果您在应用程序中使用 PhotoChooserTask 选择器,则会导致该应用程序被取消激活。当该应用程序被取消激活时,调用 OnNavigatedTo 方法。您必须确保该应用程序使用正确的图像刷新页面,否则您可能会因此体验到应用程序性能问题以及崩溃。而且,对应的代码提供为 Silverlight 应用程序检索 token 参数的说明。对于基于 XNA Framework 的应用程序,您可以使用 Microsoft.Xna.Framework Game 类的 LaunchParameter 属性。示例为:string token = LaunchParameters["token"];

当设备连接到计算机时,不能使用图片中心,也不能从图片查看器启动您的应用程序。但是,设备必须连接到计算机才能加载您的应用程序。该过程介绍如何将您的应用程序传输到设备并对其进行测试。

在设备上测试应用程序连接的步骤

  1. 借助您的设备,使用相机拍摄一张照片。

  2. 将您的设备连接到计算机并等待 Zune 软件识别。确保应用程序设置为部署到“Windows Phone 设备”,从菜单中选择“调试”,然后选择“开始调试”。看到应用程序之后,回到“调试”菜单并选择“停止调试”。断开设备与计算机的连接并导航到“开始”屏幕。

  3. “开始”屏幕上,点按“图片”应用程序,然后点按“全部”。点按“本机拍照”部分以查找您的图片,然后点按该图片缩略图来扩展该图片。

  4. 点按位于应用程序栏上页面底部的三个圆点。应该显示一个菜单,在该菜单列表的底部带有一个“应用程序...”链接。选择“应用程序...”

  5. “应用程序”页面上,选择您应用程序的名称。您的应用程序应当会打开,并显示在 Image 控件中。

下图从左到右显示了如何从图片查看器启动名为 Your Photo App 的应用程序。

AP_Con_PhotoExtras

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft