此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

如何与 Windows Phone 8 的音乐和视频中心集成

2014/6/18

适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

“音乐 + 视频”中心是 Windows Phone 上所有音乐、视频和播客活动的焦点。“音乐 + 视频”中心的应用在手机上提供集成的音乐和视频体验,帮助确保媒体播放具有一致的最终用户体验。有关与“音乐 + 视频”中心集成的应用示例,请参见“音乐 + 视频”中心示例

若要出现在“音乐 + 视频”中心,应用必须满足以下条件:

应用在 Windows Phone 开发人员中心 中通过应用提交和认证过程后,会发生以下情况:

  • 应用提交和认证过程检测出您正在调用 MediaHistoryMediaHistoryItem API,授予应用调用这些 API 所需的安全功能。

  • 认证过程还设置应用的 HubType。因此,当应用安装在某个设备上后,它会自动出现在“音乐 + 视频”中心的“应用”列表中。

“音乐 + 视频”中心有 5 个页面:

  • 集锦是音乐、视频、播客以及 商店 的启动点。页面底部的“播放” 按钮用于以随机模式播放整个音乐集锦。

  • 历史记录包含最近播放的音乐、视频、播放列表、艺术家、播客以及第三方提供商的内容。“音乐 + 视频”中心应用播放媒体时会更新此列表。

  • 最新上市包含已同步到手机或已从 XBox 音乐商店下载的新音乐、视频或播客。向设备添加媒体或用户在应用中创建“对象”(例如,创建音乐标记)时会更新此列表。

  • 应用包含设备上安装的“音乐 + 视频”中心应用的列表。

  • xbox 包含 Xbox Companion 和 Xbox 音乐商店的链接。

“音乐 + 视频”中心应用必须符合 Windows Phone 的应用认证要求,才能与“音乐 + 视频”中心集成。开发人员中心 提交过程检测“音乐 + 视频”中心 API 的使用,并使用 Windows Phone 应用清单授予对该应用的访问权限。

在“音乐 + 视频”中心显示的磁贴必须符合附加的图标规则:

  1. 必须在每个磁贴上包含应用标题或徽标。

  2. 正在播放磁贴大小必须为 358 像素 x 358 像素。文件大小必须为 75 KB 或更小。

  3. 其他磁贴大小必须为 173 像素 x 173 像素。

  4. MediaHistoryItem 类的 Title 属性必须设置为表示该内容的文本,如电台名称或视频标题。

为了帮助用户避免混淆,中心磁贴不应该包含唱片集画面,除非按中心磁贴时播放该唱片集。如果您的应用播放流,则中心磁贴图形应该描述正在播放的流。尽管这不是认证要求,但却是最佳做法。

因为在集成到“音乐 + 视频”中心之前,您的应用必须通过 开发人员中心 中的应用提交和认证过程,针对测试,您可以使用一种解决方案。在 Windows Phone 8 的应用清单文件中,确保 HubType 的值设置为 1。以下代码示例演示如何设置 HubType 的值。

<App xmlns="" ProductID="{00000000-0000-0000-0000-000000000000}"
     Title="WindowsPhoneApplication" RuntimeType="Silverlight" 
     Version="1.0.0.0" Genre="NormalApp" Author="" Description="" 
     Publisher="" PublisherID="" HubType="1">

以下代码示例显示如何使用 MediaHistoryMediaHistoryItem 类更新“历史记录”列表的“正在播放”磁贴:

MediaHistoryItem mediaHistoryItem = new MediaHistoryItem();

//<hubTileImageStream> must be a valid ImageStream.
mediaHistoryItem.ImageStream = <hubTileImageStream>; 
mediaHistoryItem.Source = "";
mediaHistoryItem.Title = "NowPlaying";
mediaHistoryItem.PlayerContext.Add("keyString", "Song Name");
MediaHistory.Instance.NowPlaying = mediaHistoryItem;

以下代码示例显示如何使用 MediaHistoryMediaHistoryItem 类更新“历史记录”列表中除了“正在播放”磁贴之外的其他磁贴:

MediaHistoryItem mediaHistoryItem = new MediaHistoryItem();

//<hubTileImageStream> must be a valid ImageStream.
mediaHistoryItem.ImageStream = <hubTileImageStream>; 
mediaHistoryItem.Source = "";
mediaHistoryItem.Title = "RecentPlay";
mediaHistoryItem.PlayerContext.Add("keyString", "Song Name");
MediaHistory.Instance.WriteRecentPlay(mediaHistoryItem);

以下代码示例显示如何使用 MediaHistoryMediaHistoryItem 类更新“最新上市”列表。

MediaHistoryItem mediaHistoryItem = new MediaHistoryItem();

//<hubTileImageStream> must be a valid ImageStream.
mediaHistoryItem.ImageStream = <hubTileImageStream>; 
mediaHistoryItem.Source = "";
mediaHistoryItem.Title = "MediaHistoryNew";
mediaHistoryItem.PlayerContext.Add("keyString", "Song Name");
MediaHistory.Instance.WriteAcquiredItem(mediaHistoryItem);

以下代码示例显示如何确定应用是从“历史记录”还是从“最新上市”列表中的项启动。在 OnNavigatedTo(NavigationEventArgs) 事件处理程序中完成该操作。NavigationContext 中的信息用于确定与项关联的媒体。在本示例中,项是设备媒体库中的歌曲。页面完成加载之后,歌曲开始在 PhoneApplicationPageLoaded 事件处理程序中播放。有关此内容的更多信息,请参见“音乐 + 视频”中心示例

bool _historyItemLaunch = false;            // Indicates whether the app was launched from a MediaHistoryItem.
const String _playSongKey = "keyString";    // Key for MediaHistoryItem key-value pair.
Song _playingSong = null;                   // The song to play.

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    MediaLibrary library = new MediaLibrary();

    if (NavigationContext.QueryString.ContainsKey(_playSongKey))
    {
        // We were launched from a history item.
        // Change _playingSong even if something was already playing 
        // because the user directly chose a song history item.

        // Use the navigation context to find the song by name.
        String songToPlay = NavigationContext.QueryString[_playSongKey];

        foreach (Song song in library.Songs)
        {
            if (0 == String.Compare(songToPlay, song.Name))
            {
                _playingSong = song;
                break;
            }
        }

        // Set a flag to indicate that we were started from a 
        // history item and that we should immediately start 
        // playing the song after the UI has finished loading.
        _historyItemLaunch = true;
    }
}

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
    if (_historyItemLaunch)
    {
        // We were launched from a history item, start playing the song.
        if (_playingSong != null)
        {
            MediaPlayer.Play(_playingSong);
        }
    }
}

显示:
© 2015 Microsoft