私は、インターネットサーバー上でホストされているmp4ファイルを再生するためにmediaPlayerElementを使用するWindows 10ユニバーサルアプリケーションを作成しています。DisplayRequestがWindowsユニバーサルアプリケーションで動作していません
動画はうまく再生されますが、画面がロックされるとアプリが一時停止します。私は、DisplayRequestを使って画面を消さなければならないことを知りました。私はhttps://msdn.microsoft.com/en-us/library/windows/apps/Windows.UI.Xaml.Controls.MediaPlayerElement.aspx 上で参照コードが含まれていますが、まだ動作しないと私はコンピュータ上でアプリケーションをデバッグするとき、アプリケーションはDisplayRequestを呼び出した後にクラッシュし、例外は次のとおりです。
シングルスレッドクラスをアクティブにMTAからではありません
例をそのままコピー&ペーストして、x64とARMの両方で周年更新をターゲットにしました。
//Video url is on the button tag, I have commented out the code as it doesn't work
private void Button_Tapped(object sender, TappedRoutedEventArgs e)
{
var source = sender;
if (source.GetType() == typeof(Button))
{
var button = source as Button;
Player.Source = MediaSource.CreateFromUri(new Uri(button.Tag.ToString()));
//if ((Player.MediaPlayer != null) && (!isPlayerSet))
//{
// Player.MediaPlayer.PlaybackSession.PlaybackStateChanged += MediaPlayerElement_CurrentStateChanged;
// isPlayerSet = true;
//}
}
}
//I have copied the below from the referenced url
private void MediaPlayerElement_CurrentStateChanged(MediaPlaybackSession sender, object args)
{
MediaPlaybackSession playbackSession = sender as MediaPlaybackSession;
if (playbackSession != null && playbackSession.NaturalVideoHeight != 0)
{
if (playbackSession.PlaybackState == MediaPlaybackState.Playing)
{
if (appDisplayRequest == null)
{
// This call creates an instance of the DisplayRequest object
//This line throws the exception when debugging
appDisplayRequest = new DisplayRequest();
appDisplayRequest.RequestActive();
}
}
else // PlaybackState is Buffering, None, Opening, or Paused.
{
if (appDisplayRequest != null)
{
// Deactivate the display request and set the var to null.
appDisplayRequest.RequestRelease();
appDisplayRequest = null;
}
}
}
}
あなたはUIスレッドではないスレッドプールのスレッドでDisplayRequestを起動していることを確認します、問題を解決し、イベントを処理するための別の方法を追加し、UIスレッドでコードを実行するために、ディスパッチャを使用するには
。 –
こんにちは、返事をいただきありがとうございます、あなたは何を意味するのか説明していただけますか?私は、mediaplayerelementを含むビューのコードの上でそれを呼び出すのですが、私はそれがUIだと言います。乾杯 – hlovbeyond
どのイベントハンドラでメソッドを呼び出しますか?質問に例外をスローする呼び出しコードを含めてください。 –