방법: Windows Phone의 음악+동영상 허브와 통합

2012-02-09

음악+동영상 허브는 Windows Phone 에서 모든 음악, 동영상 및 팟캐스트 활동의 중심점입니다. 음악 + 동영상 허브의 응용프로그램은 휴대폰에서 음악과 동영상이 통합된 환경을 주요 기능으로 제공합니다. 이러한 응용프로그램은 MediaHistory MediaHistoryItem 클래스를 사용하여 음악+동영상 허브와 통합하고, 미디어 재생에 대한 일관된 최종 사용자 환경을 보장합니다. 음악+동영상 허브와 통합되는 응용프로그램의 예는 Windows Phone용 코드 샘플 항목에서 음악+동영상 허브 샘플을 참조하십시오.

아래에 나오는 응용프로그램 인증 요구 사항을 따르는 것뿐 아니라, 응용프로그램에서 MediaHistoryMediaHistoryItem 클래스를 사용하여 음악+동영상 허브 응용프로그램으로 간주되도록 해야 합니다. 응용프로그램은 Windows Phone 마켓플레이스 의 응용프로그램 전송 및 인증 프로세스를 거친 후 해당 API를 호출하는 데 필요한 보안 기능을 수신하며, 목록에 자동으로 표시됩니다.

음악 + 동영상 허브는 4개의 개별 목록으로 구분됩니다.

  • Zune은 음악, 동영상, 팟캐스트, 라디오 및 Zune 마켓플레이스의 실행 지점입니다. 음악 옆에 있는 재생 버튼을 누르면 전체 음악 컬렉션이 무작위 모드로 재생됩니다.

  • 재생 기록에는 최근에 재생한 음악, 동영상, 재생 목록, 아티스트, 팟캐스트, FM 라디오 방송국 및 타사 콘텐츠가 포함됩니다. 이 목록은 음악 + 동영상 허브 응용프로그램이 미디어를 재생할 때 업데이트합니다.

  • 새로 만들기에는 휴대폰과 동기화되었거나 Zune 마켓플레이스에서 다운로드한 새 음악, 동영상 또는 팟캐스트의 업데이트된 목록이 포함됩니다. 이 목록은 미디어를 단말기에 추가할 때 또는 사용자가 응용프로그램에서 "개체"를 만들 때(예: 라디오 방송국 또는 음악 태그를 만든 경우) 업데이트합니다.

  • 에는 단말기에 설치된 음악 + 동영상 허브 응용프로그램 목록이 포함됩니다. 응용프로그램 전송 및 인증 프로세스는 개발자가 MediaHistoryMediaHistoryItem API를 호출 중임을 감지하고 응용프로그램의 HubType을 설정합니다. 이 경우 응용프로그램이 단말기에 설치되면 이 목록에 표시됩니다.

음악 + 동영상 허브 응용프로그램을 음악 + 동영상 허브와 통합하려면 Windows Phone의 응용프로그램 인증 요구 사항을 준수해야 합니다. Windows Phone 마켓플레이스 전송 프로세스는 음악 + 동영상 허브 API의 사용을 감지하고 Windows Phone 응용프로그램 매니페스트를 사용하여 응용프로그램에 대한 액세스 권한을 부여합니다.

음악 + 동영상 허브에 표시되는 타일은 추가 아이콘 규칙을 따라야 합니다.

  1. 타일마다 응용프로그램 제목 또는 로고를 포함해야 합니다.

  2. 지금 재생 타일은 358 x 358 픽셀이어야 합니다. 파일 크기는 75KB 이하여야 합니다.

  3. 다른 타일의 크기는 173 x 173 픽셀이어야 합니다.

  4. MediaHistoryItem 클래스의 Title 속성은 방송국 이름이나 동영상 제목 등, 콘텐츠를 나타내는 텍스트로 설정해야 합니다.

사용자의 혼동을 막기 위해, 허브 타일을 누를 때 앨범이 재생되는 경우가 아니면 허브 타일에 앨범 아트를 포함하면 안 됩니다. 응용프로그램이 스트림을 재생할 경우 허브 타일 그래픽은 재생 중인 스트림을 나타내야 합니다. 이것은 인증 요구 사항은 아니지만, 권장되는 사항입니다.

응용프로그램이 음악 + 동영상 허브에 통합되려면 먼저 Windows Phone 마켓플레이스 에서 응용프로그램 전송 및 인증 프로세스를 거쳐야 하므로 테스트 시에는 별도의 방법을 사용할 수 있습니다. Windows Phone의 응용프로그램 매니페스트 파일에서 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="" HubType="1">

참고

현재 릴리스의 Windows Phone 에뮬레이터에서는 음악+동영상 허브 통합을 테스트할 수 없습니다. 반드시 실제 휴대폰 단말기에서 음악 + 동영상 허브 통합을 테스트해야 합니다.

참고

휴대폰이 Zune 소프트웨어와 동기화하는 동안 음악+동영상 허브 타일을 업데이트하려고 하면 API에서 예외가 발생합니다.

다음 코드 예제에서는 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의 정보는 항목과 연결된 미디어를 확인하는 데 사용됩니다. 이 경우의 항목은 단말기 미디어 라이브러리의 곡입니다. 페이지 로드가 완료되면 PhoneApplicationPage에 대한 Loaded 이벤트 처리기에서 곡 재생이 시작됩니다. 자세한 내용은 음악+동영상 허브 샘플을 참조하십시오.

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);
        }
    }
}

표시: