提交 cf887068 authored 作者: kongdywang's avatar kongdywang

1、add registerSysBrightness for control android brightness' observer

2、move restorePageBrightness from moreView to demoSuperPlayer
上级 034be03d
...@@ -85,6 +85,8 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware, ...@@ -85,6 +85,8 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware,
private int mCurrentOrientation = FTXEvent.ORIENTATION_PORTRAIT_UP; private int mCurrentOrientation = FTXEvent.ORIENTATION_PORTRAIT_UP;
private final TXFlutterEngineHolder mEngineHolder = new TXFlutterEngineHolder(); private final TXFlutterEngineHolder mEngineHolder = new TXFlutterEngineHolder();
private boolean mIsBrightnessObserverRegistered = false;
private final FTXAudioManager.AudioFocusChangeListener audioFocusChangeListener = private final FTXAudioManager.AudioFocusChangeListener audioFocusChangeListener =
new FTXAudioManager.AudioFocusChangeListener() { new FTXAudioManager.AudioFocusChangeListener() {
@Override @Override
...@@ -102,8 +104,7 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware, ...@@ -102,8 +104,7 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware,
@Override @Override
public void onChange(boolean selfChange, @NonNull Collection<Uri> uris, int flags) { public void onChange(boolean selfChange, @NonNull Collection<Uri> uris, int flags) {
super.onChange(selfChange, uris, flags); super.onChange(selfChange, uris, flags);
double systemBrightness = getSystemScreenBrightness(); setWindowBrightness(-1D);
setWindowBrightness(systemBrightness);
} }
}; };
...@@ -449,10 +450,23 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware, ...@@ -449,10 +450,23 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware,
IntentFilter filter = new IntentFilter(); IntentFilter filter = new IntentFilter();
filter.addAction(VOLUME_CHANGED_ACTION); filter.addAction(VOLUME_CHANGED_ACTION);
mActivityPluginBinding.getActivity().registerReceiver(mVolumeBroadcastReceiver, filter); mActivityPluginBinding.getActivity().registerReceiver(mVolumeBroadcastReceiver, filter);
}
public void enableBrightnessObserver(boolean enable) {
if (null != mActivityPluginBinding && !mActivityPluginBinding.getActivity().isDestroyed()) {
if (enable) {
if (!mIsBrightnessObserverRegistered) {
// brightness observer // brightness observer
ContentResolver resolver = mActivityPluginBinding.getActivity().getContentResolver(); ContentResolver resolver = mActivityPluginBinding.getActivity().getContentResolver();
resolver.registerContentObserver(Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS), resolver.registerContentObserver(Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS),
true, brightnessObserver); true, brightnessObserver);
mIsBrightnessObserverRegistered = true;
}
} else {
mActivityPluginBinding.getActivity().getContentResolver().unregisterContentObserver(brightnessObserver);
mIsBrightnessObserverRegistered = false;
}
}
} }
/** /**
...@@ -464,7 +478,7 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware, ...@@ -464,7 +478,7 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware,
try { try {
mTxAudioManager.removeAudioFocusChangedListener(audioFocusChangeListener); mTxAudioManager.removeAudioFocusChangedListener(audioFocusChangeListener);
mActivityPluginBinding.getActivity().unregisterReceiver(mVolumeBroadcastReceiver); mActivityPluginBinding.getActivity().unregisterReceiver(mVolumeBroadcastReceiver);
mActivityPluginBinding.getActivity().getContentResolver().unregisterContentObserver(brightnessObserver); enableBrightnessObserver(false);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -548,6 +562,13 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware, ...@@ -548,6 +562,13 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware,
return intMsg; return intMsg;
} }
@Override
public void registerSysBrightness(@NonNull BoolMsg isRegister) {
if (null != isRegister.getValue()) {
enableBrightnessObserver(isRegister.getValue());
}
}
private class VolumeBroadcastReceiver extends BroadcastReceiver { private class VolumeBroadcastReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
......
...@@ -61,9 +61,8 @@ public class CommonUtil { ...@@ -61,9 +61,8 @@ public class CommonUtil {
if (CACHE_MAP.containsKey(KEY_MAX_BRIGHTNESS)) { if (CACHE_MAP.containsKey(KEY_MAX_BRIGHTNESS)) {
//noinspection ConstantConditions //noinspection ConstantConditions
return (float) CACHE_MAP.get(KEY_MAX_BRIGHTNESS); return (float) CACHE_MAP.get(KEY_MAX_BRIGHTNESS);
} else if (CommonUtil.isMIUI()) { }
float maxBrightness = 255f; float maxBrightness = 255f;
if (Build.VERSION.SDK_INT < 33) {
try { try {
Resources system = Resources.getSystem(); Resources system = Resources.getSystem();
int resId = system.getIdentifier("config_screenBrightnessSettingMaximum", int resId = system.getIdentifier("config_screenBrightnessSettingMaximum",
...@@ -74,15 +73,12 @@ public class CommonUtil { ...@@ -74,15 +73,12 @@ public class CommonUtil {
} catch (Exception e) { } catch (Exception e) {
Log.getStackTraceString(e); Log.getStackTraceString(e);
} }
} else { if (CommonUtil.isMIUI() && Build.VERSION.SDK_INT >= 33) {
maxBrightness = 128F; maxBrightness = 128F;
} }
CACHE_MAP.put(KEY_MAX_BRIGHTNESS, maxBrightness); CACHE_MAP.put(KEY_MAX_BRIGHTNESS, maxBrightness);
return maxBrightness; return maxBrightness;
} }
CACHE_MAP.put(KEY_MAX_BRIGHTNESS, 255f);
return 255f;
}
public static boolean isMIUI() { public static boolean isMIUI() {
if (CACHE_MAP.containsKey(KEY_IS_MIUI)) { if (CACHE_MAP.containsKey(KEY_IS_MIUI)) {
......
...@@ -443,6 +443,30 @@ static Future<bool> startVideoOrientationService() async ...@@ -443,6 +443,30 @@ static Future<bool> startVideoOrientationService() async
| result | bool | true 开启成功,false 开启失败,如开启过早,还未等到上下文初始化、获取sensor失败等原因 | | result | bool | true 开启成功,false 开启失败,如开启过早,还未等到上下文初始化、获取sensor失败等原因 |
### registerSysBrightness
**说明**
开启或关闭对于系统亮度的监听,如果开启,当系统亮度发生变化,会改变当前window亮度,并回调亮度到flutter层。该接口需配合
setBrightness和onExtraEventBroadcast使用。
**接口**
```dart
static Future<void>registerSysBrightness(bool isRegister) async
```
**参数说明**
| 参数名 | 类型 | 描述 |
| ------ | ------ |-------------------------|
| isRegister | bool | true 开启建提高,false 关闭监听 |
**返回值说明**
## TXVodPlayerController类 ## TXVodPlayerController类
...@@ -1740,17 +1764,17 @@ Future<void> startDownload(TXVodDownloadMediaInfo mediaInfo) async ...@@ -1740,17 +1764,17 @@ Future<void> startDownload(TXVodDownloadMediaInfo mediaInfo) async
**TXVodDownloadMediaInfo** **TXVodDownloadMediaInfo**
| 参数名 | 类型 | 描述 | | 参数名 | 类型 | 描述 |
| ------ | ------ | ------------------ | | ------ | ------ |-----------------------------------------------|
| playPath | String? | 缓存地址,获得到的视频缓存会有该值,启动下载可以不赋值| | playPath | String? | 缓存地址,获得到的视频缓存会有该值,启动下载可以不赋值 |
| progress | double? | 缓存进度,获得到的视频缓存会有该值,启动下载可以不赋值| | progress | double? | 缓存进度,获得到的视频缓存会有该值,启动下载可以不赋值 |
| downloadState | int? | 缓存状态,获得到的视频缓存会有该值,启动下载可以不赋值| | downloadState | int? | 缓存状态,获得到的视频缓存会有该值,启动下载可以不赋值 |
| userName | String? | 下载账户名称,用于区分不同账户的下载,传空则为 default| | userName | String? | 下载账户名称,用于区分不同账户的下载,传空则为 default,不建议设置比较长的字符串 |
| duration | int? | 缓存视频总时长,安卓端单位为毫秒,IOS为秒,获得到的视频缓存会有该值,启动下载可以不赋值| | duration | int? | 缓存视频总时长,安卓端单位为毫秒,IOS为秒,获得到的视频缓存会有该值,启动下载可以不赋值 |
| playableDuration | int? | 视频已缓存时长,安卓端单位为毫秒,IOS为秒,获得到的视频缓存会有该值,启动下载可以不赋值| | playableDuration | int? | 视频已缓存时长,安卓端单位为毫秒,IOS为秒,获得到的视频缓存会有该值,启动下载可以不赋值 |
| size | int? | 文件总大小,单位:byte,获得到的视频缓存会有该值,启动下载可以不赋值| | size | int? | 文件总大小,单位:byte,获得到的视频缓存会有该值,启动下载可以不赋值 |
| downloadSize | int? | 文件已下载的大小,单位:byte,获得到的视频缓存会有该值,启动下载可以不赋值| | downloadSize | int? | 文件已下载的大小,单位:byte,获得到的视频缓存会有该值,启动下载可以不赋值 |
| url | String? | 需要下载的视频url,url下载必填,不支持嵌套m3u8和mp4下载| | url | String? | 需要下载的视频url,url下载必填,不支持嵌套m3u8和mp4下载 |
| dataSource | TXVodDownloadDataSource? | 需要下载的视频fileId信息,url与该参数可只使用一个| | dataSource | TXVodDownloadDataSource? | 需要下载的视频fileId信息,url与该参数可只使用一个 |
| speed | int? | 下载速度,单位:KByte/秒 | | speed | int? | 下载速度,单位:KByte/秒 |
| isResourceBroken | bool? | 资源是否已损坏, 如:资源被删除了 | | isResourceBroken | bool? | 资源是否已损坏, 如:资源被删除了 |
......
...@@ -46,6 +46,8 @@ class _DemoSuperPlayerState extends State<DemoSuperPlayer> with TXPipPlayerResto ...@@ -46,6 +46,8 @@ class _DemoSuperPlayerState extends State<DemoSuperPlayer> with TXPipPlayerResto
super.initState(); super.initState();
// Listen for device rotation. // Listen for device rotation.
SuperPlayerPlugin.startVideoOrientationService(); SuperPlayerPlugin.startVideoOrientationService();
// open brightness observer
SuperPlayerPlugin.registerSysBrightness(true);
_controller = SuperPlayerController(context); _controller = SuperPlayerController(context);
TXPipController.instance.setPipPlayerPage(this); TXPipController.instance.setPipPlayerPage(this);
FTXVodPlayConfig config = FTXVodPlayConfig(); FTXVodPlayConfig config = FTXVodPlayConfig();
...@@ -417,6 +419,10 @@ class _DemoSuperPlayerState extends State<DemoSuperPlayer> with TXPipPlayerResto ...@@ -417,6 +419,10 @@ class _DemoSuperPlayerState extends State<DemoSuperPlayer> with TXPipPlayerResto
// must invoke when page exit. // must invoke when page exit.
_controller.releasePlayer(); _controller.releasePlayer();
simpleEventSubscription?.cancel(); simpleEventSubscription?.cancel();
// restore current brightness to sys brightness
SuperPlayerPlugin.restorePageBrightness();
// unregister brightness observer
SuperPlayerPlugin.registerSysBrightness(false);
super.dispose(); super.dispose();
} }
......
...@@ -359,6 +359,10 @@ SuperPlayerPlugin* instance; ...@@ -359,6 +359,10 @@ SuperPlayerPlugin* instance;
[audioManager setVolume:volumeNum.floatValue]; [audioManager setVolume:volumeNum.floatValue];
} }
- (void)registerSysBrightnessIsRegister:(BoolMsg *)isRegister error:(FlutterError * _Nullable __autoreleasing *)error {
// only for android
}
#pragma mark DataBridge #pragma mark DataBridge
- (NSMutableDictionary *)getPlayers { - (NSMutableDictionary *)getPlayers {
......
...@@ -365,6 +365,11 @@ abstract class TXFlutterNativeAPI { ...@@ -365,6 +365,11 @@ abstract class TXFlutterNativeAPI {
/// -102 画中画权限关闭/设备不支持画中画 /// -102 画中画权限关闭/设备不支持画中画
/// -103 当前界面已销毁 /// -103 当前界面已销毁
IntMsg isDeviceSupportPip(); IntMsg isDeviceSupportPip();
///
/// register or unregister system brightness
///
void registerSysBrightness(BoolMsg isRegister);
} }
@HostApi() @HostApi()
......
...@@ -260,4 +260,15 @@ class SuperPlayerPlugin { ...@@ -260,4 +260,15 @@ class SuperPlayerPlugin {
BoolMsg boolMsg = await _playerPluginApi.startVideoOrientationService(); BoolMsg boolMsg = await _playerPluginApi.startVideoOrientationService();
return boolMsg.value; return boolMsg.value;
} }
///
/// register or unregister system brightness.if register the system brightness observer,
/// current window brightness wil changed by system brightness's change.
/// <h2>only for android</h2>
/// @param isRegister:true register system brightness
/// :false unregister system brightness
///
static Future<void>registerSysBrightness(bool isRegister) async {
await _nativeAPI.registerSysBrightness(BoolMsg()..value = isRegister);
}
} }
...@@ -547,7 +547,9 @@ class TXVodDownloadDataSource { ...@@ -547,7 +547,9 @@ class TXVodDownloadDataSource {
String? token; String? token;
/// Account name, used to set the account name for URL download. /// Account name, used to set the account name for URL download.
/// 账户名称,用于url下载设置账户名称 /// It is not recommended to set a string that is too long,
/// Otherwise, it may lead to unforeseen problems.
/// 账户名称,用于url下载设置账户名称。不建议设置比较长的字符串,否则可能会导致不可预料的问题。
String? userName; String? userName;
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
...@@ -578,7 +580,9 @@ class TXVodDownloadMediaInfo { ...@@ -578,7 +580,9 @@ class TXVodDownloadMediaInfo {
int? downloadState; int? downloadState;
/// Account name, used to set the account name for URL download. /// Account name, used to set the account name for URL download.
/// 账户名称,用于url下载设置账户名称 /// It is not recommended to set a string that is too long,
/// Otherwise, it may lead to unforeseen problems.
/// 账户名称,用于url下载设置账户名称。不建议设置比较长的字符串,否则可能会导致不可预料的问题。
String? userName; String? userName;
/// Total duration. /// Total duration.
......
...@@ -300,7 +300,6 @@ class _SuperPlayerMoreViewState extends State<SuperPlayerMoreView> { ...@@ -300,7 +300,6 @@ class _SuperPlayerMoreViewState extends State<SuperPlayerMoreView> {
void dispose() { void dispose() {
super.dispose(); super.dispose();
eventSubscription?.cancel(); eventSubscription?.cancel();
SuperPlayerPlugin.restorePageBrightness();
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论