2012-04-11 27 views
0

Ich entwickle eine App für Windows Phone 7. Es gibt ein Medienelement, das Video von einer URL abspielt. Wenn ich das Telefon sperre, werden Audio und Video nicht mehr wiedergegeben. Ich habe versucht, ApplicationIdleDetectction zu deaktivieren, und ich habe Rootframe Obscured und Unobscured gehandhabt. Ich konnte einfach nicht herausfinden, wie man das Audio weiterspielt, wenn das Telefon gesperrt ist.Windows Phone 7 - Audio kann unter Sperrbildschirm nicht wiedergegeben werden

Jede Hilfe zu diesem wird sehr geschätzt !!

dank graham

Antwort

0

Verwenden Sie die AudioPlayerAgent die Musik zu halten, spielen, auch wenn das Telefon gesperrt wird!

Überprüfen Sie das "Hintergrund Audio Player Sample" auf der Windows Phone Code Samples.

+0

Das funktionierte !! Eigentlich musste ich nur eine BackgroundPlayer-Instanz aufrufen. Vielen Dank ! – jgraham

0

Video wird automatisch gestoppt, wenn der Bildschirm gesperrt ist - das ist eine integrierte Systemfunktion. Stellen Sie es sich als Ausfallsicherung für Anwendungen vor, die den Geräteakku durch das Abspielen von Videos im Hintergrund entladen, was ohnehin überflüssig ist - wer schaut sich den Inhalt an? ApplicationIdleDetection wird bei dieser Aufgabe überhaupt nicht helfen.

Wenn Sie einen separaten Audiostream verwenden, können Sie verwenden, mit dem sowohl lokale als auch Remote-Audiostreams wiedergegeben werden können. diese

lesen:

0

Sie können dies mit einem Dispatcher-Timer. Hier ist ein Beispiel dafür, wie ich es in meinem app Searchler (diese Funktion noch nicht in Marktplatz, kommt Update sehr bald!) Mit dem MMP Player Framework verfügbar @http://smf.codeplex.com/

namespace Searchler.Views 
{ 
    public partial class PlayerView : PhoneApplicationPage 
    { 
     bool appUnderLock = false; 
     DispatcherTimer dispatcherTimer = new DispatcherTimer(); 
    } 

    public PlayerView() 
    { 

     InitializeComponent(); 

     //Hack to enable play under lock screen 
     UIThread.Invoke(() => VideoPlayer.PlayStateChanged += VideoPlayer_PlayStateChanged); 
     UIThread.Invoke(() => (Application.Current as App).RootFrame.Obscured += RootFrame_Obscured); 
     UIThread.Invoke(() => (Application.Current as App).RootFrame.Unobscured += RootFrame_Unobscured); 
     dispatcherTimer.Tick += dispatcherTimer_Tick; 
     dispatcherTimer.Interval = new TimeSpan(0, 0, 3); 
    } 

    void dispatcherTimer_Tick(object sender, EventArgs e) 
    { 
     if(VideoPlayer.PlaybackPosition == VideoPlayer.EndPosition) 
      ((PlayerViewModel)DataContext).Next(); //Custom GetNext Video Method 
    } 

    void RootFrame_Unobscured(object sender, EventArgs e) 
    { 
     dispatcherTimer.Stop(); 
     appUnderLock = false; 
    } 

    void RootFrame_Obscured(object sender, ObscuredEventArgs e) 
    { 
     dispatcherTimer.Start(); 
     appUnderLock = true; 
    } 
}