Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lindexi_gd
Uno
提交
b620157f
U
Uno
项目概览
lindexi_gd
/
Uno
11 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
Uno
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b620157f
编写于
5月 26, 2023
作者:
R
Rafael Rosa
1
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore: control status on PIP
上级
2f9e0a52
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
107 addition
and
15 deletion
+107
-15
src/AddIns/Uno.UI.MediaPlayer.WebAssembly/HtmlMediaPlayer.cs
src/AddIns/Uno.UI.MediaPlayer.WebAssembly/HtmlMediaPlayer.cs
+70
-0
src/AddIns/Uno.UI.MediaPlayer.WebAssembly/MediaPlayerExtension.cs
...ns/Uno.UI.MediaPlayer.WebAssembly/MediaPlayerExtension.cs
+37
-15
未找到文件。
src/AddIns/Uno.UI.MediaPlayer.WebAssembly/HtmlMediaPlayer.cs
浏览文件 @
b620157f
...
...
@@ -11,6 +11,7 @@ using Windows.UI.Xaml;
using
System.Globalization
;
using
Windows.UI.Xaml.Controls.Maps
;
using
Windows.UI.Xaml.Media
;
using
Windows.UI.Notifications
;
namespace
Uno.UI.Media
;
...
...
@@ -26,8 +27,10 @@ internal partial class HtmlMediaPlayer : Border
ImmutableArray
.
Create
(
new
string
[]
{
".MP4"
,
".WEBM"
,
".OGG"
});
private
UIElement
_activeElement
;
private
string
_activeElementName
;
public
bool
IsPause
;
public
event
EventHandler
<
object
>
OnSourceLoaded
;
public
event
EventHandler
<
object
>
OnStatusChanged
;
public
event
EventHandler
<
object
>
OnSourceFailed
;
public
event
EventHandler
<
object
>
OnSourceEnded
;
public
event
EventHandler
<
object
>
OnMetadataLoaded
;
...
...
@@ -62,6 +65,8 @@ internal partial class HtmlMediaPlayer : Border
_activeElement
=
IsVideo
?
_htmlVideo
:
IsAudio
?
_htmlAudio
:
default
;
_activeElementName
=
IsVideo
?
"Video"
:
IsAudio
?
"Audio"
:
""
;
SourceLoaded
+=
OnHtmlSourceLoaded
;
StatusPlayChanged
+=
OnHtmlStatusPlayChanged
;
StatusPauseChanged
+=
OnHtmlStatusPauseChanged
;
SourceFailed
+=
OnHtmlSourceFailed
;
SourceEnded
+=
OnHtmlSourceEnded
;
MetadataLoaded
+=
OnHtmlMetadataLoaded
;
...
...
@@ -76,6 +81,8 @@ internal partial class HtmlMediaPlayer : Border
}
SourceLoaded
-=
OnHtmlSourceLoaded
;
StatusPlayChanged
-=
OnHtmlStatusPlayChanged
;
StatusPauseChanged
-=
OnHtmlStatusPauseChanged
;
SourceFailed
-=
OnHtmlSourceFailed
;
SourceEnded
-=
OnHtmlSourceEnded
;
MetadataLoaded
-=
OnHtmlMetadataLoaded
;
...
...
@@ -240,6 +247,48 @@ internal partial class HtmlMediaPlayer : Border
}
}
/// <summary>
/// Occurs when the video source change the status
/// </summary>
event
EventHandler
StatusPauseChanged
{
add
{
_htmlVideo
.
RegisterHtmlEventHandler
(
"pause"
,
value
);
_htmlAudio
.
RegisterHtmlEventHandler
(
"pause"
,
value
);
//_htmlVideo.RegisterHtmlEventHandler("playing", value);
//_htmlAudio.RegisterHtmlEventHandler("playing", value);
}
remove
{
_htmlVideo
.
UnregisterHtmlEventHandler
(
"pause"
,
value
);
_htmlAudio
.
UnregisterHtmlEventHandler
(
"pause"
,
value
);
//_htmlVideo.UnregisterHtmlEventHandler("pause", value);
//_htmlAudio.UnregisterHtmlEventHandler("pause", value);
//_htmlVideo.UnregisterHtmlEventHandler("playing", value);
//_htmlAudio.UnregisterHtmlEventHandler("playing", value);
}
}
/// <summary>
/// Occurs when the video source change the status
/// </summary>
event
EventHandler
StatusPlayChanged
{
add
{
_htmlVideo
.
RegisterHtmlEventHandler
(
"play"
,
value
);
_htmlAudio
.
RegisterHtmlEventHandler
(
"play"
,
value
);
}
remove
{
_htmlVideo
.
UnregisterHtmlEventHandler
(
"play"
,
value
);
_htmlAudio
.
UnregisterHtmlEventHandler
(
"play"
,
value
);
}
}
/// <summary>
/// Occurs when there is an error associated with video retrieval or format.
/// </summary>
...
...
@@ -307,6 +356,27 @@ internal partial class HtmlMediaPlayer : Border
OnSourceLoaded
?.
Invoke
(
this
,
EventArgs
.
Empty
);
}
private
void
OnHtmlStatusPlayChanged
(
object
sender
,
EventArgs
e
)
{
if
(
this
.
Log
().
IsEnabled
(
Uno
.
Foundation
.
Logging
.
LogLevel
.
Debug
))
{
this
.
Log
().
Debug
(
$"Media Changed Status Play [
{
Source
}
]"
);
}
IsPause
=
false
;
OnStatusChanged
?.
Invoke
(
this
,
EventArgs
.
Empty
);
}
private
void
OnHtmlStatusPauseChanged
(
object
sender
,
EventArgs
e
)
{
if
(
this
.
Log
().
IsEnabled
(
Uno
.
Foundation
.
Logging
.
LogLevel
.
Debug
))
{
this
.
Log
().
Debug
(
$"Media Changed Status Pause [
{
Source
}
]"
);
}
IsPause
=
true
;
OnStatusChanged
?.
Invoke
(
this
,
EventArgs
.
Empty
);
}
private
void
OnHtmlSourceFailed
(
object
sender
,
HtmlCustomEventArgs
e
)
{
TimeUpdated
+=
OnHtmlTimeUpdated
;
...
...
src/AddIns/Uno.UI.MediaPlayer.WebAssembly/MediaPlayerExtension.cs
浏览文件 @
b620157f
#
nullable
enable
using
System
;
using
Uno.Media.Playback
;
using
Windows.Media.Core
;
using
Uno.Extensions
;
using
System.IO
;
using
Uno.Foundation.Logging
;
using
System.Collections.Generic
;
using
Uno
;
using
Uno.Helpers
;
using
System.Linq
;
using
System.Threading.Tasks
;
using
Uno.Foundation.Extensibility
;
using
Uno.Foundation.Logging
;
using
Uno.Media.Playback
;
using
Windows.Foundation
;
using
Windows.Media.Core
;
using
Windows.Media.Playback
;
using
Windows.Storage
;
using
Windows.Storage.Streams
;
using
Windows.Foundation
;
using
Windows.UI.Xaml.Controls
;
using
System.Diagnostics.CodeAnalysis
;
using
Windows.ApplicationModel.Background
;
using
Uno.Foundation.Extensibility
;
using
Windows.UI.Xaml.Controls.Maps
;
using
System.Numerics
;
[
assembly
:
ApiExtension
(
typeof
(
IMediaPlayerExtension
),
typeof
(
Uno
.
UI
.
Media
.
MediaPlayerExtension
))]
...
...
@@ -231,6 +221,8 @@ public partial class MediaPlayerExtension : IMediaPlayerExtension
_player
.
OnSourceEnded
+=
OnCompletion
;
_player
.
OnTimeUpdate
+=
OnTimeUpdate
;
_player
.
OnStatusChanged
+=
OnStatusMediaChanged
;
_owner
.
PlaybackSession
.
PlaybackStateChanged
-=
OnStatusChanged
;
_owner
.
PlaybackSession
.
PlaybackStateChanged
+=
OnStatusChanged
;
...
...
@@ -238,6 +230,36 @@ public partial class MediaPlayerExtension : IMediaPlayerExtension
ApplyVideoSource
();
}
private
void
OnStatusMediaChanged
(
object
?
sender
,
object
e
)
{
if
(
this
.
Log
().
IsEnabled
(
LogLevel
.
Debug
))
{
this
.
Log
().
Debug
(
$"MediaPlayerExtension.OnStatusMediaChanged Paused (
{
_player
?.
IsPause
.
ToString
()}
)"
);
}
switch
(
_owner
.
PlaybackSession
.
PlaybackState
)
{
case
MediaPlaybackState
.
None
:
break
;
case
MediaPlaybackState
.
Opening
:
break
;
case
MediaPlaybackState
.
Buffering
:
break
;
case
MediaPlaybackState
.
Playing
:
if
(
_player
?.
IsPause
==
true
)
{
_owner
.
PlaybackSession
.
MediaPlayer
.
Pause
();
}
break
;
case
MediaPlaybackState
.
Paused
:
if
(
_player
?.
IsPause
==
false
)
{
_owner
.
PlaybackSession
.
MediaPlayer
.
Play
();
}
break
;
}
}
private
void
SetPlaylistItems
(
MediaPlaybackList
playlist
)
{
_playlistItems
=
playlist
.
Items
...
...
lindexi_gd
@lindexi_gd
mentioned in commit
38aa3c3d
·
5月 30, 2023
mentioned in commit
38aa3c3d
mentioned in commit 38aa3c3d17489976770d54336f426fea5259a320
开关提交列表
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录