Condividi tramite


Il presente articolo è stato tradotto automaticamente.

Windows Phone

Creazione di applicazioni multimediali per Windows Phone

Mark Hopkins

 

Windows Phone è una grande piattaforma per l'utilizzo di mezzi di comunicazione. Il lettore multimediale integrato e il Marketplace Windows Phone sono le mie fonti principali di ascolto del materiale per il mio podcast preferiti e la musica. Io ascolto in palestra, in auto, sul bus e anche mentre mi sto preparando per il mio giorno. Amo le applicazioni multimediali che mi aiutano a scoprire materiale su che non potrei altrimenti sapere. Ad esempio, io conoscere un sacco di nuova musica attraverso la funzionalità incorporata di DJ Smart, come pure varie altre applicazioni lo streaming di musica. Diverse applicazioni mi permettono di accedere ai contenuti video forniti da YouTube e Vimeo.

Se sei interessato a creare applicazioni multimediali per Windows Phone, è necessario mettere un certo numero di pezzi in atto per integrarsi bene con il sistema operativo. In particolare, ti consigliamo di assicurarsi che l'applicazione partecipa e superfici in Music + video Hub.

Integrazione con la musica + video Hub

"Hub" fornire un posto comodo per gli utenti a trovare i loro contenuti. Music + video Hub è andare a posto per i media su un dispositivo basato su Windows Phone. Andarci non solo per vedere i tuoi contenuti, ma anche perché fornisce accesso immediato ai mezzi di comunicazione che è più rilevante a voi. Basato su una ricerca fatta dal team Windows Phone, abbiamo imparato che le cose più comuni che gli utenti vogliono fare sono:

  1. Riprendere qualcosa che stavano giocando.
  2. Raggiungere il contenuto che più frequentemente giocano.
  3. Trovare il contenuto hai appena aggiunto al loro telefono cellulare.

Music + video Hub mette contenuto in queste tre categorie davanti e al centro, mentre anche aggregazione di applicazioni multimediali e la libreria media locali in un'unica esperienza. Figura 1 mostra la vista panoramica completa della musica + video Hub sul Windows Phone.

The Music + Videos Hub on Windows Phone
Figura 1 la musica + Hub video su Windows Phone

Oltre ad essere grande per gli utenti finali, musica + video Hub fornisce una grande quantità di valore alle vostre applicazioni. Non richiede alcuna personalizzazione utente proattiva, quindi il contenuto è facilmente individuabile. Se si dispone di un'applicazione che fornisce la riproduzione di musica o di contenuti video, dovrebbe integrare con musica + video Hub. Essa è una parte importante dell'esperienza è tutto ciò che il telefono finestra.

Ci sono quattro punti chiave di integrazione che l'applicazione può trarre vantaggio da nella musica e video di esperienza:

  1. Popolando la piastrella Now Playing.
  2. Aggiunta di elementi a New e storia.
  3. Determinare se l'applicazione è stato lanciato da un elemento nuovo o storia.
  4. Integrazione dell'elenco di applicazioni.

Popolando la piastrella giocando ora

Questa tegola è l'immobiliare più prominente nella musica + video Hub, visualizzazione di un'immagine di dimensioni relativamente grande di qualunque contenuto è attualmente in pausa o è stato giocato l'ultima volta. Colpendo su questa tegola o riprendere o avviare la riproduzione del contenuto visualizzato. Popolando quest'immagine si sia promuovono i tuoi contenuti e crea un punto di ingresso supplementari nell'esperienza di riproduzione dell'applicazione. Aggiornare l'elemento Now Playing impostando la proprietà MediaHistory.Instance.NowPlaying, come illustrato nel frammento di codice seguente (sto usando c# in questo articolo):

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;

Aggiunta di elementi di storia

Contenuti che ha giocato più di recente sul telefono cellulare possono essere visualizzati in una tegola storia chiamando il metodo MediaHistory.Instance.WriteRecentPlay. Proprio come la tegola Now Playing, piastrelle di storia di visualizzare immagini e possono essere sfruttati per avviare la riproduzione del contenuto che essi contengono. Ecco come aggiornare l'elenco di storia:

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

Aggiunta di nuovi elementi

Piastrelle "Nuovi" funzionano lo stesso di piastrelle di storia, ma visualizzazione recentemente aggiunto il contenuto del telefono. Ad esempio, una nuova icona potrebbe promuovere un file musicale che è stato appena scaricato al telefono. Tuttavia, queste piastrelle possono essere utilizzate anche per cose come stazioni radio appena creato o playlist. Qui si applica l'azione stessa di avviare la riproduzione su tegola-touch. Il codice riportato di seguito viene illustrato come aggiornare il nuovo elenco:

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

Determinare come la vostra applicazione è stata avviata

Storia e New piastrelle devono essere utilizzati solo per iniziare la riproduzione e non dovrebbero essere utilizzati come punti di lancio generico nella vostra applicazione. Va bene, se l'applicazione viene avviata e viene visualizzata l'interfaccia utente. La cosa importante è che la musica o video dovrebbe iniziare con un singolo rubinetto, così l'esperienza è efficiente e coerente.

Per determinare se la vostra applicazione è stato lanciato da una storia o una nuova icona, avviare eseguendo l'override del metodo virtuale OnNavigatedTo. Le informazioni contenute nei NavigationContext viene utilizzate per determinare che i media associate all'elemento, in questo caso un brano dalla libreria multimediale sul dispositivo. La canzone inizia a suonare nel gestore dell'evento Loaded il PhoneApplicationPage dopo che ha terminato il caricamento della pagina. Per ulteriori informazioni, scaricare musica + video Hub campione in MSDN Library al bit.ly/y0tEiX.

Il codice in Figura 2illustrato come determinare se l'applicazione è stata lanciata da un elemento nell'elenco storia o New.

Figura 2 determinare se un'applicazione è stata avviata da un elemento nella storia o nuovo elenco

// Indicates whether the app was launched from a MediaHistoryItem.
bool _historyItemLaunch = false;
// Key for MediaHistoryItem key-value pair.
const String _playSongKey = "keyString";   
// The song to play.
Song _playingSong = null;
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
  MediaLibrary library = new MediaLibrary();
  if (NavigationContext.QueryString.ContainsKey(_playSongKey))
  {
    // The app 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 the app started from a
    // history item and that it should immediately start
    // playing the song after the UI has finished loading.
_historyItemLaunch = true;
  }
}
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
  if (_historyItemLaunch)
  {
    // Launched from a history item, start playing the song.
if (_playingSong != null)
    {
      MediaPlayer.Play(_playingSong);
    }
  }
}

Integrazione con la pagina Apps

Se l'applicazione chiama una o più delle suddette API, verranno automaticamente visualizzate nell'elenco Apps dentro l'Hub, oltre a comparire dentro l'elenco di applicazioni principali. Questo rende più facile da trovare e l'applicazione di accesso e rende una parte del nucleo media esperienza. Questa integrazione automatica si verifica quando il processo di sottomissione e certificazione App Hub rileva che l'applicazione chiama le API di MediaHistoryItem e MediaHistory e cambia il manifesto dell'applicazione in modo da riflettere che è un'applicazione multimediale impostando l'attributo HubType. È possibile impostare questo voi stessi prima di presentazione — per il testing purposes solo — aggiornando il <App> elemento nel file WMAppManifest. xml nel progetto Windows Phone:

<App  ...
HubType="1">

Ciò consentirà l'editor che compare nell'elenco Apps durante i test. Si noti che il processo di presentazione AppHub sovrascriverà questo file prima della pubblicazione basato sulle API esso rileva che stai chiamando nell'applicazione.

File di grafica richiesti

Perché la musica + video Hub è incentrata sui contenuti, la quantità dei beni immobili che ottiene ogni applicazione si basa sul loro utilizzo. Ciò significa che più si abitua la vostra applicazione, più prominente il contenuto sarà. Per i clienti che utilizzano l'applicazione regolarmente, musica + video Hub saranno diventato riempiti con i contenuti, dandovi un'eccellente opportunità promozionali.

Perché la musica + video Hub aggrega contenuti da molte fonti diverse, è importante pensare tile visual design, che distinguerà la tua applicazione dagli altri. Che cosa questo significa varierà basato sul vostro app. Tenere presente che, per esempio, l'utente avrà le copertine degli album generico mostrato in quella stessa lista per suoi album effettivo. Se si dispone di una stazione radio che accade solo di suonare una canzone da un album, vostro app stazione radio dovrebbero visualizzare una tegola visivamente distinto dall'immagine di copertina album che vedrebbe quando si gioca la canzone dalla libreria multimediale. È consigliabile utilizzare piastrelle che mostrano la marca e opere d'arte per il contenuto.

Piastrelle che vengono visualizzati nella musica + video Hub devono essere conforme alle seguenti regole di iconografia:

  • È necessario includere il tuo titolo di applicazione o di un logo su ogni piastrella.
  • La piastrella Now Playing sia 358 x 358 pixel. Le dimensioni del file devono essere 75 KB o meno.
  • Altre tessere sia 173 x 173 pixel.
  • La proprietà Title della classe MediaHistoryItem deve essere impostata di testo che rappresenta il contenuto, ad esempio un nome della stazione o titolo video.

Per evitare confusione per gli utenti, piastrelle non dovrebbero contenere copertine degli album a meno che l'album suona quando la tegola è pressata. Se l'applicazione gioca un ruscello, il grafico delle mattonelle dovrebbe descrivere il flusso che viene riprodotto. Mentre questo non è un requisito di certificazione, è una procedura consigliata.

Riproduzione di Media

Durante la riproduzione di video, l'esperienza è simile, se si crea un XNA Framework o un'applicazione Silverlight. In un'applicazione XNA Framework, utilizzare la classe MediaPlayerLauncher, che lancia il lettore multimediale Windows Phone quando si chiama MediaPlayerLauncher.Show. In Silverlight, utilizzare l'API di MediaElement, che permette di personalizzare l'esperienza utente più — come l'aspetto e il posizionamento dei controlli —, ma in ultima analisi utilizza il lettore multimediale Windows Phone effettivamente visualizzare il video. Per l'audio, ottiene un po' più interessante.

MediaElement vs. SoundEffect

In un'applicazione XNA Framework, utilizzare la classe SoundEffect (o le relative classi di SoundEffectInstance o DynamicSoundEffectInstance) per riprodurre l'audio. Queste classi supportano la riproduzione di sorgenti audio WAV solo. Tuttavia, avete un controllo maggiore su riproduzione e possibile utilizzare alcune caratteristiche, come la possibilità di giocare contemporaneamente fino a 16 suoni e hanno loro mescolati insieme sull'uscita.

In un'applicazione Silverlight, è possibile utilizzare la classe MediaElement per riproduzione audio, oltre a video. MediaElement supporta la riproduzione di MP3 WAV, WMA e altre sorgenti audio. Vedere il supportato Media Codec per Windows Phone (bit.ly/aflZrb) per un elenco completo di formati audio riproducibili in Windows Phone. MediaElement consente solo un suono a giocare in un momento. Se un altro suono è già partita, MediaElement si fermerà e quando si avvia la riproduzione di un suono nuovo.

In un'applicazione Silverlight, è possibile utilizzare la classe SoundEffect per riprodurre l'audio. Per poter utilizzare un'API di XNA Framework in un'applicazione Silverlight, è necessario simulare il ciclo di gioco trovato nelle applicazioni di XNA Framework. Per fare questo, io di solito creare un metodo denominato StartGameLoop per impostare una GameTimer. Io chiamare il metodo StartGameLoop dal costruttore della mia classe derivata PhoneApplicationPage (vedere Figura 3). GameTimer è una nuova classe disponibile in Windows Phone 7.1 SDK per agevolare l'integrazione di Silverlight e XNA Framework.

Figura 3 mio Silverlight StartGameLoop simula un ciclo gioco di XNA Framework

// Constructor
public MainPage()
{
  InitializeComponent();
   StartGameLoop();
}
private void StartGameLoop()
{
  // Timer to simulate the XNA game loop (SoundEffect
  // class is from the XNA Framework).
GameTimer gameTimer = new GameTimer();
  gameTimer.UpdateInterval = TimeSpan.FromMilliseconds(33);
  // Call FrameworkDispatcher.Update to update the XNA Framework internals.
gameTimer.Update += delegate { try { FrameworkDispatcher.Update(); } catch { } };
  // Start the GameTimer running.
gameTimer.Start();
  // Prime the pump or you'll get an exception
  // on the first XNA Framework call.
FrameworkDispatcher.Update();
}

Dopo aver implementato questo ciclo timer, è possibile chiamare API di XNA Framework altrove nella classe derivata PhoneApplicationPage.

Certificazione di mercato

Quando un'applicazione chiama le classi MediaHistory e MediaHistoryItem, e ha considerato un Music + video Hub applicazione e comparirà nell'elenco Apps quando installato sul telefono. Il processo di presentazione rileva che l'applicazione utilizza queste classi e aggiorna automaticamente il tipo di mozzo a Music + video in file manifesto dell'applicazione Windows Phone.

Diversi requisiti di certificazione per quanto riguarda la riproduzione multimediale devono essere seguiti in ordine per la vostra applicazione essere accettati nel mercato. Al momento questo articolo è stato scritto, queste sono state documentate nelle sezioni 6.4 e 6.5 dell'applicazione certificazione requisiti per Windows Phone a bit.ly/kN6N7Z. Requisiti di certificazione sono sempre soggetti a cambiamenti e vengono aggiornati regolarmente, così per una qualsiasi delle seguente linee guida, assicurati di essere fino a velocità sulla versione più recente.

I requisiti di certificazione dettano che è non può interrompere la musica che l'utente possa giocare quando lancia il vostro app. Questo ha un senso perché un utente potrebbe godere di ascoltare la sua musica preferita mentre lei interagisce con un gioco, per esempio. Sezioni 6.5.1 e 6.5.2 affrontano questo particolare scenario.

Di interessi aggiuntivi è sezione 6.5.3, che afferma:

Un'applicazione può interrompere attualmente riproduzione di musica sul telefono cellulare per riprodurre un video full motion non interattiva, o un segmento audio non-interattivo (ad esempio clip cut-scene o mezzi di comunicazione) senza chiedere il consenso dell'utente.

Un'applicazione deve riprendere la musica che in precedenza stava giocando, una volta che l'applicazione viene chiusa.

Così, come mettere in pausa e riavviare la musica dell'utente? Se si sta creando un'applicazione Silverlight, è necessario impostare il ciclo di gioco simulato, come descritto in precedenza.

Ho sperimentato con l'audio attualmente giocando la pausa, giocando mio effetto sonoro e riavviare immediatamente l'audio che stava giocando. Questo creato un'esperienza utente stridente e davvero diminuita l'impatto dell'effetto suono che ho voglia di giocare. Così ho finito per mettere in pausa il centrocampista audio quando l'utente si sposta alla mia pagina, poi riavviarlo quando lei naviga lontano. Fatto questo eseguendo l'override dei metodi OnNavigatedTo e OnNavigatedFrom. All'interno di quei metodi di override, io chiamare funzioni di supporto per mettere in pausa e riavviare l'audio, come mostrato nel Figura 4.

Figura 4 si esegue l'override di OnNavigatedTo e OnNavigatedFrom a Pause Audio

protected override void OnNavigatedTo(NavigationEventArgs e)
{
  // If the MediaPlayer is already playing music,
  // pause it upon entering the app.
PauseMediaPlayer();
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
  // If the MediaPlayer was already playing music,
  // resume playback as the user leaves the app.
ResumeMediaPlayer();
}
private void PauseMediaPlayer()
{
  // See the MainPage Constructor earlier in the
  // article where the GameTimer object is created.
// This enables the use of the XNA Framework MediaPlayer
  // class by pumping the XNA FrameworkDispatcher.
// Pause the media player if it's already playing music.
if (!MediaPlayer.GameHasControl)
  {
    MediaPlayer.Pause();
    resumeMediaPlayerAfterDone = true;
  }
}
private void ResumeMediaPlayer()
{
  // If music was playing, resume playback.
if (resumeMediaPlayerAfterDone)
  {
    MediaPlayer.Resume();
  }
}

Essere un buon cittadino

Per ricapitolare, durante la creazione di supporti applicazioni per l'OS Windows Phone ci sono parecchie cose da considerare oltre i dettagli a basso livello di gestione multimediale effettivo.

Assicurarsi che integrano con la musica + video Hub così l'applicazione contribuisce all'esperienza utente nei modi in cui gli utenti sono venuti aspettarsi da tutte le applicazioni multimediali. Questo significa popolando le piastrelle storia e nuova con il tuo contenuto e assicurandosi che il programma si presenta nell'elenco Apps.

Leggere e comprendere i requisiti di certificazione che circondano applicazioni multimediali, quindi l'applicazione è più probabile che passano attraverso il processo di presentazione Windows Phone Marketplace.

Seguendo queste linee guida è assicurarsi che gli utenti avranno un vantaggio sul saper interagire con la tua applicazione. Sarò anche per generare la visibilità del vostro app e il tuo contenuto assicurandosi di superficie nelle aree adeguate in Music + video Hub. E l'applicazione sarà un "buon cittadino" su Windows Phone.

Mark Hopkins è uno scrittore di programmazione senior del Team Windows Phone Developer Documentation. Egli è stato impiegato in Microsoft dal 1992, lavorando su sviluppatori prodotti tra cui il supporto di sviluppatore, Visual C++, MFC, Windows Platform SDK, Internet Explorer SDK, Tablet PC SDK, superficie SDK e Windows Phone SDK. Egli è anche un musicista e fan di Seattle Sounders FC dedicato.

Grazie ai seguenti esperti tecnici per la revisione di questo articolo: Andrew Byrne, Kim Cameron, Robert Lyon, Nitya Ravi,Cheryl Simmons e Matt Stroshane