Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
tx_player_fork
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蒋俊
tx_player_fork
Commits
5f170bba
提交
5f170bba
authored
7月 22, 2022
作者:
kongdywang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix bug
上级
36f702fd
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
32 行增加
和
4 行删除
+32
-4
FTXPIPManager.java
.../src/main/java/com/tencent/vod/flutter/FTXPIPManager.java
+19
-1
FTXFlutterPipActivity.java
...m/example/super_player_example/FTXFlutterPipActivity.java
+3
-2
FTXDownloadManager.m
Flutter/ios/Classes/FTXDownloadManager.m
+1
-1
FTXVodPlayer.m
Flutter/ios/Classes/FTXVodPlayer.m
+9
-0
没有找到文件。
Flutter/android/src/main/java/com/tencent/vod/flutter/FTXPIPManager.java
浏览文件 @
5f170bba
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
package
com
.
tencent
.
vod
.
flutter
;
package
com
.
tencent
.
vod
.
flutter
;
import
android.app.Activity
;
import
android.app.Activity
;
import
android.app.AppOpsManager
;
import
android.app.PendingIntent
;
import
android.app.PendingIntent
;
import
android.app.PictureInPictureParams
;
import
android.app.PictureInPictureParams
;
import
android.app.RemoteAction
;
import
android.app.RemoteAction
;
...
@@ -110,7 +111,10 @@ public class FTXPIPManager {
...
@@ -110,7 +111,10 @@ public class FTXPIPManager {
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
O
)
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
O
)
{
params
.
mPipParams
=
new
PictureInPictureParams
.
Builder
();
params
.
mPipParams
=
new
PictureInPictureParams
.
Builder
();
updatePipActions
(
isPlaying
,
params
);
updatePipActions
(
isPlaying
,
params
);
mActivity
.
enterPictureInPictureMode
(
params
.
mPipParams
.
build
());
boolean
enterResult
=
mActivity
.
enterPictureInPictureMode
(
params
.
mPipParams
.
build
());
if
(!
enterResult
)
{
pipResult
=
FTXEvent
.
ERROR_PIP_DENIED_PERMISSION
;
}
}
else
{
}
else
{
mActivity
.
enterPictureInPictureMode
();
mActivity
.
enterPictureInPictureMode
();
}
}
...
@@ -129,6 +133,9 @@ public class FTXPIPManager {
...
@@ -129,6 +133,9 @@ public class FTXPIPManager {
if
(!
isSuccess
)
{
if
(!
isSuccess
)
{
pipResult
=
FTXEvent
.
ERROR_PIP_DENIED_PERMISSION
;
pipResult
=
FTXEvent
.
ERROR_PIP_DENIED_PERMISSION
;
Log
.
e
(
TAG
,
"enterPip failed,because PIP feature is disabled"
);
Log
.
e
(
TAG
,
"enterPip failed,because PIP feature is disabled"
);
}
else
if
(!
hasPipPermission
())
{
pipResult
=
FTXEvent
.
ERROR_PIP_DENIED_PERMISSION
;
Log
.
e
(
TAG
,
"enterPip failed,because PIP has no permission"
);
}
}
}
else
{
}
else
{
pipResult
=
FTXEvent
.
ERROR_PIP_LOWER_VERSION
;
pipResult
=
FTXEvent
.
ERROR_PIP_LOWER_VERSION
;
...
@@ -142,6 +149,17 @@ public class FTXPIPManager {
...
@@ -142,6 +149,17 @@ public class FTXPIPManager {
return
pipResult
;
return
pipResult
;
}
}
private
boolean
hasPipPermission
()
{
AppOpsManager
appOpsManager
=
(
AppOpsManager
)
mActivity
.
getSystemService
(
Context
.
APP_OPS_SERVICE
);
if
(
android
.
os
.
Build
.
VERSION
.
SDK_INT
>=
android
.
os
.
Build
.
VERSION_CODES
.
O
)
{
int
permissionResult
=
appOpsManager
.
checkOpNoThrow
(
AppOpsManager
.
OPSTR_PICTURE_IN_PICTURE
,
android
.
os
.
Process
.
myUid
(),
mActivity
.
getPackageName
());
return
permissionResult
==
AppOpsManager
.
MODE_ALLOWED
;
}
else
{
return
false
;
}
}
public
boolean
isInPipMode
()
{
public
boolean
isInPipMode
()
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
N
)
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
N
)
{
return
mActivity
.
isInPictureInPictureMode
();
return
mActivity
.
isInPictureInPictureMode
();
...
...
Flutter/example/android/app/src/main/java/com/example/super_player_example/FTXFlutterPipActivity.java
浏览文件 @
5f170bba
...
@@ -122,10 +122,11 @@ public class FTXFlutterPipActivity extends FlutterActivity {
...
@@ -122,10 +122,11 @@ public class FTXFlutterPipActivity extends FlutterActivity {
@Override
@Override
public
boolean
enterPictureInPictureMode
(
@NonNull
PictureInPictureParams
params
)
{
public
boolean
enterPictureInPictureMode
(
@NonNull
PictureInPictureParams
params
)
{
if
(
null
!=
mEventSink
)
{
boolean
enterResult
=
super
.
enterPictureInPictureMode
(
params
);
if
(
enterResult
&&
null
!=
mEventSink
)
{
mEventSink
.
success
(
getParams
(
EVENT_PIP_MODE_REQUEST_START
,
null
));
mEventSink
.
success
(
getParams
(
EVENT_PIP_MODE_REQUEST_START
,
null
));
}
}
return
super
.
enterPictureInPictureMode
(
params
)
;
return
enterResult
;
}
}
private
Map
<
String
,
Object
>
getParams
(
int
event
,
Bundle
bundle
)
{
private
Map
<
String
,
Object
>
getParams
(
int
event
,
Bundle
bundle
)
{
...
...
Flutter/ios/Classes/FTXDownloadManager.m
浏览文件 @
5f170bba
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
#import "FTXPlayerEventSinkQueue.h"
#import "FTXPlayerEventSinkQueue.h"
#import "FTXEvent.h"
#import "FTXEvent.h"
#import "FTXDownloadManager.h"
#import "FTXDownloadManager.h"
#import
"TXVodPreloadManager.h"
#import
<TXLiteAVSDK_Player/TXVodPreloadManager.h>
#import <TXLiteAVSDK_Player/TXVodDownloadManager.h>
#import <TXLiteAVSDK_Player/TXVodDownloadManager.h>
#import "FTXEvent.h"
#import "FTXEvent.h"
#import "CommonUtil.h"
#import "CommonUtil.h"
...
...
Flutter/ios/Classes/FTXVodPlayer.m
浏览文件 @
5f170bba
...
@@ -66,11 +66,20 @@ BOOL volatile isStop = false;
...
@@ -66,11 +66,20 @@ BOOL volatile isStop = false;
_netStatusChannel
=
[
FlutterEventChannel
eventChannelWithName
:[
@"cloud.tencent.com/txvodplayer/net/"
stringByAppendingString
:[
self
.
playerId
stringValue
]]
binaryMessenger
:[
registrar
messenger
]];
_netStatusChannel
=
[
FlutterEventChannel
eventChannelWithName
:[
@"cloud.tencent.com/txvodplayer/net/"
stringByAppendingString
:[
self
.
playerId
stringValue
]]
binaryMessenger
:[
registrar
messenger
]];
[
_netStatusChannel
setStreamHandler
:
self
];
[
_netStatusChannel
setStreamHandler
:
self
];
[[
NSNotificationCenter
defaultCenter
]
addObserver
:
self
selector
:
@selector
(
onApplicationTerminateClick
)
name
:
UIApplicationWillTerminateNotification
object
:
nil
];
}
}
return
self
;
return
self
;
}
}
-
(
void
)
onApplicationTerminateClick
{
[
_txVodPlayer
removeVideoWidget
];
_txVodPlayer
=
nil
;
_txVodPlayer
.
videoProcessDelegate
=
nil
;
_textureId
=
-
1
;
}
-
(
void
)
destory
-
(
void
)
destory
{
{
[
self
stopPlay
];
[
self
stopPlay
];
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论