Occhio se usate il MediaElement nelle vostre app wp7
Seguendo le ultime specifiche per la pubblicazione delle vostre app per Windows Phone 7 – disponibili a questo url – si legge una cosa molto importante. Il succo è questo:
se l’utente sta ascoltando qualcosa attraverso il lettore multimediale del telefono (quindi podcast o qualche canzone), l’avvio della vostra app NON deve MAI interrompere questo stream audio (sezione 6.5.1)
In cosa si traduce tutto ciò? In una bella rottura di scatole, perchè nel momento stesso in cui definite uno XAML come questo:
<!--LayoutRoot is the root grid where all page content is placed--> <Grid x:Name="LayoutRoot" Background="Transparent"> <MediaElement Visibility="Collapsed" x:Name="MediaPlayer" /> </Grid>
allora tutto bene, ma se lo XAML diventa questo:
<!--LayoutRoot is the root grid where all page content is placed--> <Grid x:Name="LayoutRoot" Background="Transparent"> <MediaElement Visibility="Collapsed" x:Name="MediaPlayer" Source="Start.mp3" /> </Grid>
l’eventuale stream audio dell’utente, l’mp3 o il podcast che dir si voglia, si interrompe e siete fregati. La vostra app viene inesorabilmente bocciata. Come risolvere? Qualche consiglio.
- Nello XAML non preimpostate la proprietà Source – lo farete da codice solo se serve
- quando serve? Potete controllare il valore di Microsoft.Xna.Framework.Media.MediaPlayer.GameHasControl; se vale false, significa che c’è già un audio che sta andando, e quindi all’interno della vostra app
- Ricordo che NON si può usare la classe SoundEffect per la background music: quest’ultima è specifica per gli effetti sonori, dal momento che qualsiasi cosa mandiate sullo stream viene miscelato comunque con altri suoni già presenti
Ecco un url che spiega questo problema: http://blogs.msdn.com/b/oren/archive/2010/12/02/wp7-dev-tip-detecting-whether-or-not-the-user-is-playing-music-in-the-background.aspx.