Windows phone 7 - невозможно воспроизвести звук на экране блокировки

Я разрабатываю приложение для Windows Phone 7. Существует элемент мультимедиа, который воспроизводит видео с URL-адреса. Когда я блокирую телефон, звук и видео перестают воспроизводиться. Я попытался отключить ApplicationIdleDetetction, и я обработал Rootframe Obscured и Unobscured. Я просто не мог понять, как продолжить воспроизведение звука, когда телефон заблокирован.

Любая помощь в этом очень ценится!

спасибо грэм


person jgraham    schedule 11.04.2012    source источник


Ответы (3)


Используйте AudioPlayerAgent чтобы музыка продолжала играть, даже когда телефон заблокирован!

Проверьте «Пример фонового аудиоплеера» в Windows. Примеры телефонных кодов.

person Pedro Lamas    schedule 11.04.2012
comment
Это сработало !! На самом деле все, что мне нужно было сделать, это вызвать экземпляр BackgroundPlayer. Спасибо ! - person jgraham; 11.04.2012

Видео автоматически перестанет воспроизводиться при блокировке экрана — это встроенная системная функция. Думайте об этом как о отказоустойчивом приложении для приложений, которые разряжают батарею устройства, проигрывая видео в фоновом режиме, что в любом случае является ненужной задачей — кто смотрит контент? ApplicationIdleDetection никак не поможет с этой задачей.

Если у вас есть отдельный аудиопоток, вы можете использовать AudioPlayerAgent, который можно использовать для воспроизведения как локальных, так и удаленных аудиопотоков.

Прочитайте это:

person Den Delimarsky    schedule 11.04.2012

Вы можете сделать это с помощью диспетчерского таймера. Вот пример того, как я делаю это в своем приложении Searchler (этой функции еще нет в магазине, обновление будет очень скоро!) с использованием MMP Player Framework, доступного @ 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;
    }
}
person Paul DeCarlo    schedule 31.01.2013