Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
tx_player_fork
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蒋俊
tx_player_fork
Commits
14adba1f
提交
14adba1f
authored
5月 06, 2023
作者:
kongdywang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix IOS audio preemption issue & Android brightness issue
上级
7b3fa56b
全部展开
显示空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
94 行增加
和
10 行删除
+94
-10
SuperPlayerPlugin.java
.../main/java/com/tencent/vod/flutter/SuperPlayerPlugin.java
+10
-0
FtxMessages.java
...in/java/com/tencent/vod/flutter/messages/FtxMessages.java
+0
-0
FTXAudioManager.m
Flutter/ios/Classes/FTXAudioManager.m
+4
-1
SuperPlayerPlugin.m
Flutter/ios/Classes/SuperPlayerPlugin.m
+5
-0
FtxMessages.h
Flutter/ios/Classes/messages/FtxMessages.h
+6
-2
FtxMessages.m
Flutter/ios/Classes/messages/FtxMessages.m
+19
-1
txplayer_message.dart
Flutter/lib/Core/pigeons/txplayer_message.dart
+4
-1
superplayer_plugin.dart
Flutter/lib/Core/superplayer_plugin.dart
+6
-0
txplayer_messages.dart
Flutter/lib/Core/txplayer_messages.dart
+31
-5
superplayer_widget.dart
Flutter/superplayer_widget/lib/ui/superplayer_widget.dart
+9
-0
没有找到文件。
Flutter/android/src/main/java/com/tencent/vod/flutter/SuperPlayerPlugin.java
浏览文件 @
14adba1f
...
@@ -474,6 +474,16 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware,
...
@@ -474,6 +474,16 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware,
return
doubleMsg
;
return
doubleMsg
;
}
}
@NonNull
@Override
public
DoubleMsg
getSysBrightness
()
{
float
brightness
=
getSystemScreenBrightness
();
BigDecimal
bigDecimal
=
BigDecimal
.
valueOf
(
brightness
);
DoubleMsg
doubleMsg
=
new
DoubleMsg
();
doubleMsg
.
setValue
(
bigDecimal
.
doubleValue
());
return
doubleMsg
;
}
@Override
@Override
public
void
setSystemVolume
(
@NonNull
DoubleMsg
volume
)
{
public
void
setSystemVolume
(
@NonNull
DoubleMsg
volume
)
{
mTxAudioManager
.
setSystemVolume
(
volume
.
getValue
());
mTxAudioManager
.
setSystemVolume
(
volume
.
getValue
());
...
...
Flutter/android/src/main/java/com/tencent/vod/flutter/messages/FtxMessages.java
浏览文件 @
14adba1f
差异被折叠。
点击展开。
Flutter/ios/Classes/FTXAudioManager.m
浏览文件 @
14adba1f
...
@@ -29,7 +29,6 @@ NSString *const NOTIFCATION_NAME = @"SystemVolumeDidChange";
...
@@ -29,7 +29,6 @@ NSString *const NOTIFCATION_NAME = @"SystemVolumeDidChange";
}
}
audioSession
=
[
AVAudioSession
sharedInstance
];
audioSession
=
[
AVAudioSession
sharedInstance
];
[
audioSession
setActive
:
true
error
:
nil
];
}
}
return
self
;
return
self
;
};
};
...
@@ -44,6 +43,8 @@ NSString *const NOTIFCATION_NAME = @"SystemVolumeDidChange";
...
@@ -44,6 +43,8 @@ NSString *const NOTIFCATION_NAME = @"SystemVolumeDidChange";
{
{
// 需要设置 showsVolumeSlider 为 YES
// 需要设置 showsVolumeSlider 为 YES
volumeView
.
showsVolumeSlider
=
YES
;
volumeView
.
showsVolumeSlider
=
YES
;
// 获取音频焦点
[
audioSession
setActive
:
true
error
:
nil
];
[
_volumeSlider
setValue
:
value
animated
:
NO
];
[
_volumeSlider
setValue
:
value
animated
:
NO
];
[
_volumeSlider
sendActionsForControlEvents
:
UIControlEventTouchUpInside
];
[
_volumeSlider
sendActionsForControlEvents
:
UIControlEventTouchUpInside
];
[
_volumeSlider
sizeToFit
];
[
_volumeSlider
sizeToFit
];
...
@@ -51,6 +52,8 @@ NSString *const NOTIFCATION_NAME = @"SystemVolumeDidChange";
...
@@ -51,6 +52,8 @@ NSString *const NOTIFCATION_NAME = @"SystemVolumeDidChange";
-
(
void
)
setVolumeUIVisible
:
(
BOOL
)
volumeUIVisible
-
(
void
)
setVolumeUIVisible
:
(
BOOL
)
volumeUIVisible
{
{
// 获取音频焦点
[
audioSession
setActive
:
true
error
:
nil
];
volumeView
.
hidden
=
!
volumeUIVisible
;
volumeView
.
hidden
=
!
volumeUIVisible
;
}
}
...
...
Flutter/ios/Classes/SuperPlayerPlugin.m
浏览文件 @
14adba1f
...
@@ -306,6 +306,11 @@ SuperPlayerPlugin* instance;
...
@@ -306,6 +306,11 @@ SuperPlayerPlugin* instance;
return
[
CommonUtil
doubleMsgWith
:
brightness
.
doubleValue
];
return
[
CommonUtil
doubleMsgWith
:
brightness
.
doubleValue
];
}
}
-
(
DoubleMsg
*
)
getSysBrightnessWithError
:
(
FlutterError
*
_Nullable
__autoreleasing
*
)
error
{
NSNumber
*
brightness
=
[
NSNumber
numberWithFloat
:[
UIScreen
mainScreen
].
brightness
];
return
[
CommonUtil
doubleMsgWith
:
brightness
.
doubleValue
];
}
-
(
nullable
DoubleMsg
*
)
getSystemVolumeWithError
:
(
FlutterError
*
_Nullable
__autoreleasing
*
_Nonnull
)
error
{
-
(
nullable
DoubleMsg
*
)
getSystemVolumeWithError
:
(
FlutterError
*
_Nullable
__autoreleasing
*
_Nonnull
)
error
{
NSNumber
*
volume
=
[
NSNumber
numberWithFloat
:[
audioManager
getVolume
]];
NSNumber
*
volume
=
[
NSNumber
numberWithFloat
:[
audioManager
getVolume
]];
return
[
CommonUtil
doubleMsgWith
:
volume
.
doubleValue
];
return
[
CommonUtil
doubleMsgWith
:
volume
.
doubleValue
];
...
...
Flutter/ios/Classes/messages/FtxMessages.h
浏览文件 @
14adba1f
// // Copyright (c) 2022 Tencent. All rights reserved.
// // Copyright (c) 2022 Tencent. All rights reserved.
// Autogenerated from Pigeon (v9.
0.4
), do not edit directly.
// Autogenerated from Pigeon (v9.
1.0
), do not edit directly.
// See also: https://pub.dev/packages/pigeon
// See also: https://pub.dev/packages/pigeon
#import <Foundation/Foundation.h>
#import <Foundation/Foundation.h>
...
@@ -35,7 +35,7 @@ NS_ASSUME_NONNULL_BEGIN
...
@@ -35,7 +35,7 @@ NS_ASSUME_NONNULL_BEGIN
@class
MapMsg
;
@class
MapMsg
;
/// pigeon原始原件,由此文件生成messages原生通信代码
/// pigeon原始原件,由此文件生成messages原生通信代码
/// 生成命令如下
/// 生成命令如下
,使用生成命令的时候,需要实现注释掉以上两个import导入
@interface
PlayerMsg
:
NSObject
@interface
PlayerMsg
:
NSObject
+
(
instancetype
)
makeWithPlayerId
:(
nullable
NSNumber
*
)
playerId
;
+
(
instancetype
)
makeWithPlayerId
:(
nullable
NSNumber
*
)
playerId
;
@property
(
nonatomic
,
strong
,
nullable
)
NSNumber
*
playerId
;
@property
(
nonatomic
,
strong
,
nullable
)
NSNumber
*
playerId
;
...
@@ -365,6 +365,10 @@ NSObject<FlutterMessageCodec> *TXFlutterNativeAPIGetCodec(void);
...
@@ -365,6 +365,10 @@ NSObject<FlutterMessageCodec> *TXFlutterNativeAPIGetCodec(void);
///
///
/// @return `nil` only when `error != nil`.
/// @return `nil` only when `error != nil`.
-
(
nullable
DoubleMsg
*
)
getBrightnessWithError
:(
FlutterError
*
_Nullable
*
_Nonnull
)
error
;
-
(
nullable
DoubleMsg
*
)
getBrightnessWithError
:(
FlutterError
*
_Nullable
*
_Nonnull
)
error
;
/// 获取系统界面亮度,IOS系统与界面亮度一致,安卓可能会有差异
///
/// @return `nil` only when `error != nil`.
-
(
nullable
DoubleMsg
*
)
getSysBrightnessWithError
:(
FlutterError
*
_Nullable
*
_Nonnull
)
error
;
/// 设置当前系统音量,0.0 ~ 1.0
/// 设置当前系统音量,0.0 ~ 1.0
-
(
void
)
setSystemVolumeVolume
:(
DoubleMsg
*
)
volume
error
:(
FlutterError
*
_Nullable
*
_Nonnull
)
error
;
-
(
void
)
setSystemVolumeVolume
:(
DoubleMsg
*
)
volume
error
:(
FlutterError
*
_Nullable
*
_Nonnull
)
error
;
/// 获得当前系统音量,范围:0.0 ~ 1.0
/// 获得当前系统音量,范围:0.0 ~ 1.0
...
...
Flutter/ios/Classes/messages/FtxMessages.m
浏览文件 @
14adba1f
// // Copyright (c) 2022 Tencent. All rights reserved.
// // Copyright (c) 2022 Tencent. All rights reserved.
// Autogenerated from Pigeon (v9.
0.4
), do not edit directly.
// Autogenerated from Pigeon (v9.
1.0
), do not edit directly.
// See also: https://pub.dev/packages/pigeon
// See also: https://pub.dev/packages/pigeon
#import "FtxMessages.h"
#import "FtxMessages.h"
...
@@ -1291,6 +1291,24 @@ void TXFlutterNativeAPISetup(id<FlutterBinaryMessenger> binaryMessenger, NSObjec
...
@@ -1291,6 +1291,24 @@ void TXFlutterNativeAPISetup(id<FlutterBinaryMessenger> binaryMessenger, NSObjec
[
channel
setMessageHandler
:
nil
];
[
channel
setMessageHandler
:
nil
];
}
}
}
}
/// 获取系统界面亮度,IOS系统与界面亮度一致,安卓可能会有差异
{
FlutterBasicMessageChannel
*
channel
=
[[
FlutterBasicMessageChannel
alloc
]
initWithName
:
@"dev.flutter.pigeon.TXFlutterNativeAPI.getSysBrightness"
binaryMessenger
:
binaryMessenger
codec
:
TXFlutterNativeAPIGetCodec
()];
if
(
api
)
{
NSCAssert
([
api
respondsToSelector
:
@selector
(
getSysBrightnessWithError
:)],
@"TXFlutterNativeAPI api (%@) doesn't respond to @selector(getSysBrightnessWithError:)"
,
api
);
[
channel
setMessageHandler
:
^
(
id
_Nullable
message
,
FlutterReply
callback
)
{
FlutterError
*
error
;
DoubleMsg
*
output
=
[
api
getSysBrightnessWithError
:
&
error
];
callback
(
wrapResult
(
output
,
error
));
}];
}
else
{
[
channel
setMessageHandler
:
nil
];
}
}
/// 设置当前系统音量,0.0 ~ 1.0
/// 设置当前系统音量,0.0 ~ 1.0
{
{
FlutterBasicMessageChannel
*
channel
=
FlutterBasicMessageChannel
*
channel
=
...
...
Flutter/lib/Core/pigeons/txplayer_message.dart
浏览文件 @
14adba1f
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
import
'package:pigeon/pigeon.dart'
;
import
'package:pigeon/pigeon.dart'
;
import
'package:super_player/super_player.dart'
;
import
'package:super_player/super_player.dart'
;
/// pigeon原始原件,由此文件生成messages原生通信代码
/// pigeon原始原件,由此文件生成messages原生通信代码
/// 生成命令如下
/// 生成命令如下
,使用生成命令的时候,需要实现注释掉以上两个import导入
/*
/*
flutter pub run pigeon \
flutter pub run pigeon \
--input lib/Core/pigeons/txplayer_message.dart \
--input lib/Core/pigeons/txplayer_message.dart \
...
@@ -335,6 +335,9 @@ abstract class TXFlutterNativeAPI {
...
@@ -335,6 +335,9 @@ abstract class TXFlutterNativeAPI {
/// 获得当前界面亮度 0.0 ~ 1.0
/// 获得当前界面亮度 0.0 ~ 1.0
DoubleMsg
getBrightness
();
DoubleMsg
getBrightness
();
/// 获取系统界面亮度,IOS系统与界面亮度一致,安卓可能会有差异
DoubleMsg
getSysBrightness
();
/// 设置当前系统音量,0.0 ~ 1.0
/// 设置当前系统音量,0.0 ~ 1.0
void
setSystemVolume
(
DoubleMsg
volume
);
void
setSystemVolume
(
DoubleMsg
volume
);
...
...
Flutter/lib/Core/superplayer_plugin.dart
浏览文件 @
14adba1f
...
@@ -130,6 +130,12 @@ class SuperPlayerPlugin {
...
@@ -130,6 +130,12 @@ class SuperPlayerPlugin {
return
doubleMsg
.
value
;
return
doubleMsg
.
value
;
}
}
/// 获取系统界面亮度,IOS系统与界面亮度一致,安卓可能会有差异 范围:0.0 ~ 1.0
static
Future
<
double
?>
getSysBrightness
()
async
{
DoubleMsg
doubleMsg
=
await
_nativeAPI
.
getSysBrightness
();
return
doubleMsg
.
value
;
}
/// 设置当前系统音量,0.0 ~ 1.0
/// 设置当前系统音量,0.0 ~ 1.0
static
Future
<
void
>
setSystemVolume
(
double
volume
)
async
{
static
Future
<
void
>
setSystemVolume
(
double
volume
)
async
{
return
await
_nativeAPI
.
setSystemVolume
(
DoubleMsg
()..
value
=
volume
);
return
await
_nativeAPI
.
setSystemVolume
(
DoubleMsg
()..
value
=
volume
);
...
...
Flutter/lib/Core/txplayer_messages.dart
浏览文件 @
14adba1f
// // Copyright (c) 2022 Tencent. All rights reserved.
// Copyright (c) 2022 Tencent. All rights reserved.
part of
SuperPlayer
;
part of
SuperPlayer
;
// Autogenerated from Pigeon (v9.0.4), do not edit directly.
// See also: https://pub.dev/packages/pigeon
// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import
/// pigeon原始原件,由此文件生成messages原生通信代码
/// pigeon原始原件,由此文件生成messages原生通信代码
/// 生成命令如下
/// 生成命令如下
,使用生成命令的时候,需要实现注释掉以上两个import导入
class
PlayerMsg
{
class
PlayerMsg
{
PlayerMsg
({
PlayerMsg
({
this
.
playerId
,
this
.
playerId
,
...
@@ -1290,6 +1288,34 @@ class TXFlutterNativeAPI {
...
@@ -1290,6 +1288,34 @@ class TXFlutterNativeAPI {
}
}
}
}
/// 获取系统界面亮度,IOS系统与界面亮度一致,安卓可能会有差异
Future
<
DoubleMsg
>
getSysBrightness
()
async
{
final
BasicMessageChannel
<
Object
?>
channel
=
BasicMessageChannel
<
Object
?>(
'dev.flutter.pigeon.TXFlutterNativeAPI.getSysBrightness'
,
codec
,
binaryMessenger:
_binaryMessenger
);
final
List
<
Object
?>?
replyList
=
await
channel
.
send
(
null
)
as
List
<
Object
?>?;
if
(
replyList
==
null
)
{
throw
PlatformException
(
code:
'channel-error'
,
message:
'Unable to establish connection on channel.'
,
);
}
else
if
(
replyList
.
length
>
1
)
{
throw
PlatformException
(
code:
replyList
[
0
]!
as
String
,
message:
replyList
[
1
]
as
String
?,
details:
replyList
[
2
],
);
}
else
if
(
replyList
[
0
]
==
null
)
{
throw
PlatformException
(
code:
'null-error'
,
message:
'Host platform returned null value for non-null return value.'
,
);
}
else
{
return
(
replyList
[
0
]
as
DoubleMsg
?)!;
}
}
/// 设置当前系统音量,0.0 ~ 1.0
/// 设置当前系统音量,0.0 ~ 1.0
Future
<
void
>
setSystemVolume
(
DoubleMsg
arg_volume
)
async
{
Future
<
void
>
setSystemVolume
(
DoubleMsg
arg_volume
)
async
{
final
BasicMessageChannel
<
Object
?>
channel
=
BasicMessageChannel
<
Object
?>(
final
BasicMessageChannel
<
Object
?>
channel
=
BasicMessageChannel
<
Object
?>(
...
...
Flutter/superplayer_widget/lib/ui/superplayer_widget.dart
浏览文件 @
14adba1f
...
@@ -318,6 +318,7 @@ class SuperPlayerViewState extends State<SuperPlayerView> with WidgetsBindingObs
...
@@ -318,6 +318,7 @@ class SuperPlayerViewState extends State<SuperPlayerView> with WidgetsBindingObs
// 页面从后台回来
// 页面从后台回来
// 不更新状态,直接resume
// 不更新状态,直接resume
_playController
.
getCurrentController
().
resume
();
_playController
.
getCurrentController
().
resume
();
checkBrightness
();
// 从后台回来之后,如果手机横竖屏状态发生更改,被改为竖屏,那么这里根据判断切换横屏
// 从后台回来之后,如果手机横竖屏状态发生更改,被改为竖屏,那么这里根据判断切换横屏
if
(
_playController
.
_playerUIStatus
==
SuperPlayerUIStatus
.
FULLSCREEN_MODE
&&
if
(
_playController
.
_playerUIStatus
==
SuperPlayerUIStatus
.
FULLSCREEN_MODE
&&
defaultTargetPlatform
==
TargetPlatform
.
iOS
)
{
defaultTargetPlatform
==
TargetPlatform
.
iOS
)
{
...
@@ -335,6 +336,14 @@ class SuperPlayerViewState extends State<SuperPlayerView> with WidgetsBindingObs
...
@@ -335,6 +336,14 @@ class SuperPlayerViewState extends State<SuperPlayerView> with WidgetsBindingObs
}
}
}
}
void
checkBrightness
()
async
{
double
?
sysBrightness
=
await
SuperPlayerPlugin
.
getSysBrightness
();
double
?
windowBrightness
=
await
SuperPlayerPlugin
.
getBrightness
();
if
(
sysBrightness
!=
windowBrightness
&&
null
!=
sysBrightness
)
{
SuperPlayerPlugin
.
setBrightness
(
sysBrightness
);
}
}
void
_calculateSize
(
double
videoWidth
,
double
videoHeight
)
{
void
_calculateSize
(
double
videoWidth
,
double
videoHeight
)
{
if
(
mounted
&&
(
0
!=
videoWidth
&&
0
!=
videoHeight
)
&&
if
(
mounted
&&
(
0
!=
videoWidth
&&
0
!=
videoHeight
)
&&
(
_videoWidth
!=
videoWidth
&&
_videoHeight
!=
videoHeight
))
{
(
_videoWidth
!=
videoWidth
&&
_videoHeight
!=
videoHeight
))
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论