0

Windows Phone 7 用のアプリを開発しています。URL からビデオを再生するメディア要素があります。電話をロックすると、オーディオとビデオの再生が停止します。ApplicationIdleDetetction を無効にしようとしましたが、Rootframe Obscured と Unobscured を処理しました。電話がロックされているときにオーディオの再生を続ける方法がわかりませんでした。

これに関するヘルプは大歓迎です!!

ありがとうグラハム

4

3 に答える 3

0

画面がロックされると、ビデオの再生が自動的に停止します。これは、組み込みのシステム機能です。これは、バックグラウンドでビデオを再生することによってデバイスのバッテリーを消耗するアプリケーションのフェイルセーフと考えてください。これはとにかく不要なタスクです。誰がコンテンツを視聴しますか?ApplicationIdleDetectionこのタスクにはまったく役立ちません。

個別のオーディオストリームがある場合は、ローカルオーディオストリームとリモートオーディオストリームの両方を再生するために使用できるAudioPlayerAgentを使用できます。

これを読む:

于 2012-04-11T16:14:09.200 に答える
0

AudioPlayerAgentを使用して、電話がロックされても音楽を再生し続けます。

Windows Phone Code Samplesの「Background Audio Player Sample」を確認してください。

于 2012-04-11T14:42:46.333 に答える
0

これは、ディスパッチャ タイマーを使用して実行できます。これは、私のアプリ Searchler でそれを行う方法の例です (この機能はまだ市場に出ていません。更新はすぐに来ます!) @ http://smf.codeplex.com/で入手可能な MMP Player Framework を使用します。

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;
    }
}
于 2013-01-31T22:45:27.330 に答える