diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 63398c9bc..d67a772ca 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -210,4 +210,5 @@
-->
+
diff --git a/lib/pages/live_room/view.dart b/lib/pages/live_room/view.dart
index d3cae5dfc..2a3da604c 100644
--- a/lib/pages/live_room/view.dart
+++ b/lib/pages/live_room/view.dart
@@ -143,7 +143,7 @@ class _LiveRoomPageState extends State
void dispose() {
videoPlayerServiceHandler?.onVideoDetailDispose(heroTag);
WidgetsBinding.instance.removeObserver(this);
- if (Utils.isMobile) {
+ if (Platform.isAndroid && !plPlayerController.setSystemBrightness) {
ScreenBrightnessPlatform.instance.resetApplicationScreenBrightness();
}
PlPlayerController.setPlayCallBack(null);
diff --git a/lib/pages/setting/models/play_settings.dart b/lib/pages/setting/models/play_settings.dart
index 9cefdf95c..e692d476c 100644
--- a/lib/pages/setting/models/play_settings.dart
+++ b/lib/pages/setting/models/play_settings.dart
@@ -82,6 +82,14 @@ List get playSettings => [
setKey: SettingBoxKey.enableSlideVolumeBrightness,
defaultVal: true,
),
+ if (Platform.isAndroid)
+ const SettingsModel(
+ settingsType: SettingsType.sw1tch,
+ title: '调节系统亮度',
+ leading: Icon(Icons.brightness_6_outlined),
+ setKey: SettingBoxKey.setSystemBrightness,
+ defaultVal: false,
+ ),
const SettingsModel(
settingsType: SettingsType.sw1tch,
title: '中间滑动进入/退出全屏',
diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart
index a112b9622..e06ba9bfe 100644
--- a/lib/pages/video/controller.dart
+++ b/lib/pages/video/controller.dart
@@ -110,6 +110,7 @@ class VideoDetailController extends GetxController
PlPlayerController plPlayerController = PlPlayerController.getInstance()
..setCurrBrightness(-1.0);
+ bool get setSystemBrightness => plPlayerController.setSystemBrightness;
late VideoItem firstVideo;
late AudioItem firstAudio;
diff --git a/lib/pages/video/view.dart b/lib/pages/video/view.dart
index c2a8077ba..015eea1a2 100644
--- a/lib/pages/video/view.dart
+++ b/lib/pages/video/view.dart
@@ -326,7 +326,7 @@ class _VideoDetailPageVState extends State
);
if (!Get.previousRoute.startsWith('/video')) {
- if (Utils.isMobile) {
+ if (Platform.isAndroid && !videoDetailController.setSystemBrightness) {
ScreenBrightnessPlatform.instance.resetApplicationScreenBrightness();
}
PlPlayerController.setPlayCallBack(null);
@@ -371,7 +371,7 @@ class _VideoDetailPageVState extends State
WidgetsBinding.instance.removeObserver(this);
- if (Utils.isMobile) {
+ if (Platform.isAndroid && !videoDetailController.setSystemBrightness) {
ScreenBrightnessPlatform.instance.resetApplicationScreenBrightness();
}
@@ -418,7 +418,9 @@ class _VideoDetailPageVState extends State
introController.startTimer();
- if (Utils.isMobile && mounted) {
+ if (mounted &&
+ Platform.isAndroid &&
+ !videoDetailController.setSystemBrightness) {
if (videoDetailController.brightness != null) {
plPlayerController?.setCurrBrightness(
videoDetailController.brightness!,
diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart
index b2a47f802..ffcc471b3 100644
--- a/lib/plugin/pl_player/controller.dart
+++ b/lib/plugin/pl_player/controller.dart
@@ -98,6 +98,7 @@ class PlPlayerController {
final RxDouble _currentVolume = RxDouble(
Utils.isDesktop ? Pref.desktopVolume : 1.0,
);
+ final setSystemBrightness = Pref.setSystemBrightness;
final RxDouble _currentBrightness = (-1.0).obs;
final RxBool _showControls = false.obs;
diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart
index 04fd0a211..d80652cee 100644
--- a/lib/plugin/pl_player/view.dart
+++ b/lib/plugin/pl_player/view.dart
@@ -204,14 +204,22 @@ class _PLVideoPlayerState extends State
try {
_brightnessValue.value =
await ScreenBrightnessPlatform.instance.application;
- _listener = ScreenBrightnessPlatform
- .instance
- .onApplicationScreenBrightnessChanged
- .listen((double value) {
- if (mounted) {
- _brightnessValue.value = value;
- }
- });
+
+ void listener(double value) {
+ if (mounted) {
+ _brightnessValue.value = value;
+ }
+ }
+
+ _listener = Platform.isIOS || plPlayerController.setSystemBrightness
+ ? ScreenBrightnessPlatform
+ .instance
+ .onSystemScreenBrightnessChanged
+ .listen(listener)
+ : ScreenBrightnessPlatform
+ .instance
+ .onApplicationScreenBrightnessChanged
+ .listen(listener);
} catch (_) {}
});
}
@@ -264,9 +272,15 @@ class _PLVideoPlayerState extends State
Future setBrightness(double value) async {
try {
- await ScreenBrightnessPlatform.instance.setApplicationScreenBrightness(
- value,
- );
+ if (Platform.isIOS || plPlayerController.setSystemBrightness) {
+ await ScreenBrightnessPlatform.instance.setSystemScreenBrightness(
+ value,
+ );
+ } else {
+ await ScreenBrightnessPlatform.instance.setApplicationScreenBrightness(
+ value,
+ );
+ }
} catch (_) {}
_brightnessIndicator.value = true;
_brightnessTimer?.cancel();
diff --git a/lib/utils/storage_key.dart b/lib/utils/storage_key.dart
index cfefad935..14f1eeedd 100644
--- a/lib/utils/storage_key.dart
+++ b/lib/utils/storage_key.dart
@@ -142,7 +142,8 @@ abstract class SettingBoxKey {
silentDownImg = 'silentDownImg',
showMemberShop = 'showMemberShop',
enablePlayAll = 'enablePlayAll',
- enableTapDm = 'enableTapDm';
+ enableTapDm = 'enableTapDm',
+ setSystemBrightness = 'setSystemBrightness';
static const String minimizeOnExit = 'minimizeOnExit',
windowSize = 'windowSize',
diff --git a/lib/utils/storage_pref.dart b/lib/utils/storage_pref.dart
index 642691dd0..43a29e79a 100644
--- a/lib/utils/storage_pref.dart
+++ b/lib/utils/storage_pref.dart
@@ -865,4 +865,7 @@ abstract class Pref {
static bool get showTrayIcon =>
_setting.get(SettingBoxKey.showTrayIcon, defaultValue: true);
+
+ static bool get setSystemBrightness =>
+ _setting.get(SettingBoxKey.setSystemBrightness, defaultValue: false);
}