Windows phone 7 - 无法在锁定屏幕下播放音频

时间:2012-04-11 14:36:57

标签: windows-phone-7 video-streaming mediaelement lockscreen

我正在为Windows Phone 7开发一个应用程序。有一个媒体元素可以从网址播放视频。当我锁定手机时,音频和视频停止播放。我已经尝试禁用ApplicationIdleDetetction,我已经处理了Rootframe Obscured和Unobscured。当手机被锁定时,我无法弄清楚如何继续播放音频。

非常感谢任何帮助!!

感谢 格雷厄姆

3 个答案:

答案 0 :(得分:0)

即使手机被锁定,也可以使用AudioPlayerAgent保持音乐播放!

检查"背景音频播放器示例"在Windows Phone Code Samples

答案 1 :(得分:0)

屏幕锁定时视频将自动停止播放 - 这是内置系统功能。可以把它想象成一个故障安全的应用程序,通过在后台播放视频来耗尽设备电池,这是一项不必要的任务 - 无论如何 - 观看内容? ApplicationIdleDetection根本不会帮助完成这项任务。

如果你有一个单独的音频流,你可以使用AudioPlayerAgent,它可以用来播放本地和远程音频流。

阅读本文:

答案 2 :(得分:0)

您可以使用调度程序计时器执行此操作。以下是我在我的应用程序Searchler(这个功能尚未在市场上,即将推出更新!)的示例,使用@ http://smf.codeplex.com/提供的MMP播放器框架

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