Generation App – Día 17 – Integración con Music + Video Hub para Windows Phone

El Hub de música y videos es un punto focal para toda las actividades de música, video y podcast en un Windows Phone. Aplicaciones en el Hub de Música y Videos provee una experiencia  integral de música y video en el teléfono como una función primaria. Estas aplicación se integran con este Hub usando las clases MediaHistory y MediaHistoryItem para asegurar una experiencia de usuario consistente para reproducción de material multimedia.

La arquitectura del Hub de Música + Videos

El Hub de música y videos esta dividido en las siguientes cuatro listas:

  • Zune: es el punto inicial para música, videos, podcasts, radio y el Marketplace. El botón en la parte inferior de la pantalla reproduce tu música de tu colección de manera aleatoria.

  • Historia: contiene música, videos, podcasts, listas de reproducción, artistas y estaciones de radio recientemente reproducidas por el usuario.

  • Nuevo: contiene una lista actualizada de nueva música, podcasts y video sincronizados en el teléfono o descargadas del Marketplace de Zune. Actualiza esta lista cuando tu aplicación reproduzca algún material multimedia.

  • Apps: Contiene la lista de aplicación de Música y videos que fueron instalados en el dispositivo. El proceso de registro y certificación de aplicación detectara que estas llamando los APIs de MediaHistory y MediaHistoryItem, y te dará el HubType a tu aplicación. Esto hará que tu aplicación aparezca en esta lista una vez instalada en el dispositivo.

Requerimientos de certificación de aplicación

Tu aplicación del hub de música y videos debe aprobar los requisitos de certificación de aplicación para Windows Phone para integrarse al Hub de música y videos. El proceso de registro al Marketplace de Windows Phone detecta el uso de APIs de música y videos y te permite el acceso de tu aplicación desde el Hub multimedia.

Mosaicos que son desplegados en el Hub de música y videos deben conformar unas reglas de iconografía adicionales

  1. Debes incluir el titulo o logo de tu aplicación en cada mosaico.

  2. El Mosaico “Now Playing” debe ser 358 pixeles x 358 pixeles. El archivo debe pesar menos de 75KB.

  3. Otros mosaicos deben tener un tamaño de 173 pixeles x 173 pixeles.

  4. La propiedad Title de la clase MediaHistoryItem debe ser asignada como texto que represente el contenido, tales como un nombre de estación, o titulo de video.

Para evitar confundir a los usuarios, Mosaicos de Hubs no deberían contener el arte de álbumes a menos que el álbum comience a sonar al momento que el usuario le de Tap a dicho mosaico. Esto no es un requisito de certificación, pero es una buena practica.

Probando la integración al Hub de Música + Videos

Mientras tu aplicación debe pasar por el proceso de verificación y certificación para entrar al Marketplace de Windows Phone antes de ser integrada al Hub de Música y Videos, existe una forma para saltar esto para propósitos de prueba. En el archivo “WMAppManifest.xml”, asegúrate que la propiedad HubType tenga valor 1. El siguiente código muestra un ejemplo al respecto:

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

NOTA; En el release actual, no es posible probar la integración de una aplicación con el Hub de Música y Videos en el emulador Windows Phone. Deberás contar con un dispositivo físico para instalarlo.

NOTA: si intentas actualizar los mosaicos en el Hub de música y videos mientras el teléfono se sincroniza con el software Zune, los APIs arrojarán una excepción.

Actualizando el mosaico “Now Playing” en la lista “History”

El siguiente código de ejemplo muestra como actualizar el mosaico “Now Playing” en la lista “Historia” usando las clases de MediaHistory y MediaHistoryItem:

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;

Actualizando la lista “History”

El siguiente ejemplo de código muestra como actualizar otros mosaicos además de Now Playing en la lista History usando las clases MediaHistory y MediaHistoryItem:

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

Actualizando la lista “New”

El siguiente ejemplo de código muestra como actualizar la lista New usando las clases MediaHistory y MediaHistoryItem:

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

Reproduciendo un ítem cuando es ejecutado de las listas “History” y “New”

El siguiente código de ejemplo te muestra como determinar si la aplicación fue ejecutada desde la lista History o New. Esto se logra en el manejador de evento OnNavigatedTo(NavigationEventArgs). La información en el NavigationContext es usado para determinar que tipo de elemento multimedia esta asociado, que en este caso, es una canción de la librería del dispositivo. La canción comienza a sonar en el manejador de evento Loader para el PhoneApplicationPage después que la pagina haya terminado de cargarse.

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

Autor: Jorge Ramirez      Síguelo en twitter @JorgeRamirezMSP
Publicación original –> http://j.mp/WqS5GG
Fuente 1 –> http://j.mp/XhqSJe

Anuncios

1 comentario

Archivado bajo Windows Phone

Una respuesta a “Generation App – Día 17 – Integración con Music + Video Hub para Windows Phone

  1. Pingback: Con Generation App nunca fue tan fácil desarrollar para Windows Phone « El Blog de MSP para Latinoamerica [BETA]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s