2013-06-17 4 views
1

Je développe une application pour Wp7.x et Wp8 qui exécute YouTube Video avec écran de verrouillage désactivé. J'ai vu que la nouvelle version de MyTube App et la version Microsoft de votre application de tube qui a été retiré avaient une fonction qui permet à l'utilisateur de continuer à écouter de la vidéo lorsque le téléphone est verrouillé. Je veux développer une application de type YouTube Radio qui ne cesse de tirer un nouveau type spécifique de Viedo Url à partir du site YouTube et de lire la partie audio même si elle fonctionne en arrière-plan ou dans un écran verrouillé.Mise en vidéo en arrière-plan dans wp8

Voir l'application MyTube dans le magasin wp8 pour en savoir plus de quoi je parle.

Répondre

0

L'application Windows Phone passe en mode dormant/tombstone lorsque l'écran du téléphone est verrouillé. Ce comportement peut être modifié en modifiant les propriétés UserIdleDetectionMode et ApplicationIdleDetectionMode de la classe PhoneApplicationService. Par défaut, UserIdleDetectionMode et ApplicationIdleDetectionMode sont définis sur Enable, ce qui permet au service de verrouiller le téléphone lorsque l'utilisateur est inactif et ceux-ci désactivent l'application lorsque le téléphone est verrouillé. Comme indiqué ci-dessous, j'ai utilisé ApplicationIdleDetectionMode, qui, lorsqu'il est défini sur Désactiver, ne désactive pas l'application lorsque le téléphone est verrouillé.

PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled; 
PhoneApplicationFrame rootFrame = App.Current.RootVisual as PhoneApplicationFrame; 
if (rootFrame != null)    
{     
    rootFrame.Obscured += new EventHandler<ObscuredEventArgs>(rootFrame_Obscured);     
    rootFrame.Unobscured += new EventHandler(rootFrame_Unobscured);    
} 

Une fois ApplicationIdleDetectionMode est désactivé, il ne peut être activé tant que l'application est lancée à nouveau. Si vous essayez de l'activer, il va lancer une exception. Pour gérer l'état de verrouillage et de déverrouillage du périphérique, vous pouvez appeler le gestionnaire d'événements Obscured et Unobscured de RootFrame. Obscurci sera appelé lorsque le téléphone est verrouillé. Ici, nous devrions utiliser un minimum de CPU, moins de consommation de batterie, etc. et Unobscured est appelé lorsque le téléphone est déverrouillé. C'est l'étape où nous pouvons reprendre tous les états de l'application.

+0

merci beaucoup. Pouvez-vous m'envoyer un exemple de comment l'événement obscurci et non obscur devrait être utilisé pour répondre à mes besoins. Dois-je envoyer l'audio au lecteur de fond pour les vidéos afin de continuer à jouer dans un écran verrouillé. Si je joue une radio, une fois la vidéo arrêtée, je dois passer à la seconde vidéo/audio sans intervention de l'utilisateur. Comment faire quand l'écran est verrouillé? –

0

Dans Windows Phone 8, vous pouvez réellement donner des URL vidéo à la classe BackgroundAudioPlayer et les lire en arrière-plan. J'utilise cette technique dans Podcaster pour basculer entre audio et vidéo, bien que ce soit une interaction de l'utilisateur qui déclenche le changement.

Mise à jour

Dans Windows Phone 7 cette technique ne fonctionne pas. En outre, MediaElement suspendra toujours la vidéo lorsque l'écran de verrouillage est affiché (même si ApplicationIdleDetectionMode est désactivé) et vous ne pouvez rien y faire.

En résumé, vous pouvez contourner ce problème en WP8 mais vous ne pouvez rien faire sur WP7

+0

PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled; cette logique ne fonctionne que pour les pistes audio que je joue en utilisant mediaelement. Qu'en est-il des vidéos? La vidéo est mise en pause lorsque je verrouille l'écran. –

+0

En fait, j'étais capable de résoudre le problème en attrapant l'événement MediaElement StateChanged. annuler MusicPlayer_CurrentStateChanged (de l'expéditeur d'objet, RoutedEventArgs e) { if (MusicPlayer.CurrentState == MediaElementState.Paused) {if (rootFrameObscured) {MusicPlayer.Jouer(); rootFrameObscured = false; // bascule le commutateur } } } Indicateur RootFrameObsured Je configure lorsque le cadre racine est masqué. –

+0

Maintenant, le problème est que les images vidéo ne sont plus synchronisées avec l'audio et lorsque la musique est terminée, l'événement MediaEnded n'est pas appelé, donc je ne suis pas capable de passer à la vidéo suivante dans ma radio. Même si j'envoie la musique à backgroundAudioPlayer for WP8, comment vais-je montrer la vidéo quand quelqu'un déverrouille l'écran? –