diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 8d96917c..013e50a5 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -1,7 +1,7 @@ import UIKit import Flutter -@UIApplicationMain +@main @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart index 623c246a..e69b39c0 100644 --- a/lib/pages/video/controller.dart +++ b/lib/pages/video/controller.dart @@ -56,12 +56,12 @@ import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; +import 'package:flutter_volume_controller/flutter_volume_controller.dart'; import 'package:get/get.dart' hide ContextExtensionss; import 'package:get/get_navigation/src/dialog/dialog_route.dart'; import 'package:hive/hive.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; import 'package:media_kit/media_kit.dart'; -import 'package:volume_controller/volume_controller.dart'; class VideoDetailController extends GetxController with GetTickerProviderStateMixin { @@ -1506,7 +1506,7 @@ class VideoDetailController extends GetxController if (idx == 0) { if (preference == SubtitlePrefType.on || (preference == SubtitlePrefType.auto && - await VolumeController.instance.getVolume() <= 0)) { + (await FlutterVolumeController.getVolume() ?? 0) <= 0)) { idx = 1; } } diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index 72dbfab4..6ee45ec4 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -44,6 +44,7 @@ import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; +import 'package:flutter_volume_controller/flutter_volume_controller.dart'; import 'package:get/get.dart'; import 'package:hive/hive.dart'; import 'package:media_kit/media_kit.dart'; @@ -52,7 +53,6 @@ import 'package:path/path.dart' as path; import 'package:path_provider/path_provider.dart'; import 'package:screen_brightness/screen_brightness.dart'; import 'package:universal_platform/universal_platform.dart'; -import 'package:volume_controller/volume_controller.dart'; class PlPlayerController { Player? _videoPlayerController; @@ -1212,7 +1212,7 @@ class PlPlayerController { Future getCurrentVolume() async { // mac try...catch try { - _currentVolume.value = await VolumeController.instance.getVolume(); + _currentVolume.value = (await FlutterVolumeController.getVolume())!; } catch (_) {} } @@ -1231,9 +1231,8 @@ class PlPlayerController { volume.value = volumeNew; try { - await (VolumeController.instance..showSystemUI = false).setVolume( - volumeNew, - ); + FlutterVolumeController.updateShowSystemUI(false); + await FlutterVolumeController.setVolume(volumeNew); } catch (err) { if (kDebugMode) debugPrint(err.toString()); } diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index a70e9815..02722f2d 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -54,6 +54,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; +import 'package:flutter_volume_controller/flutter_volume_controller.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:get/get.dart' hide ContextExtensionss; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; @@ -61,7 +62,6 @@ import 'package:media_kit/media_kit.dart'; import 'package:media_kit_video/media_kit_video.dart'; import 'package:saver_gallery/saver_gallery.dart'; import 'package:screen_brightness/screen_brightness.dart'; -import 'package:volume_controller/volume_controller.dart'; class PLVideoPlayer extends StatefulWidget { const PLVideoPlayer({ @@ -203,12 +203,12 @@ class _PLVideoPlayerState extends State videoController = plPlayerController.videoController!; Future.microtask(() async { try { - final volumeCtr = VolumeController.instance..showSystemUI = true; - _volumeValue.value = await volumeCtr.getVolume(); - volumeCtr.addListener((double value) { + FlutterVolumeController.updateShowSystemUI(true); + _volumeValue.value = (await FlutterVolumeController.getVolume())!; + FlutterVolumeController.addListener((double value) { if (mounted && !_volumeInterceptEventStream.value) { _volumeValue.value = value; - if (Platform.isIOS && !volumeCtr.showSystemUI) { + if (Platform.isIOS && !FlutterVolumeController.showSystemUI) { _volumeIndicator.value = true; _volumeTimer?.cancel(); _volumeTimer = Timer(const Duration(milliseconds: 800), () { @@ -239,7 +239,8 @@ class _PLVideoPlayerState extends State Future setVolume(double value) async { try { - await (VolumeController.instance..showSystemUI = false).setVolume(value); + FlutterVolumeController.updateShowSystemUI(false); + await FlutterVolumeController.setVolume(value); } catch (_) {} _volumeValue.value = value; @@ -273,7 +274,7 @@ class _PLVideoPlayerState extends State _listener?.cancel(); _controlsListener?.cancel(); animationController.dispose(); - VolumeController.instance.removeListener(); + FlutterVolumeController.removeListener(); transformationController.dispose(); super.dispose(); } diff --git a/lib/services/audio_session.dart b/lib/services/audio_session.dart index 6952d94f..4d423442 100644 --- a/lib/services/audio_session.dart +++ b/lib/services/audio_session.dart @@ -16,7 +16,12 @@ class AudioSessionHandler { Future initSession() async { session = await AudioSession.instance; - session.configure(const AudioSessionConfiguration.music()); + session.configure( + const AudioSessionConfiguration.music().copyWith( + avAudioSessionSetActiveOptions: + AVAudioSessionSetActiveOptions.notifyOthersOnDeactivation, + ), + ); session.interruptionEventStream.listen((event) { final playerStatus = PlPlayerController.getPlayerStatusIfExists(); diff --git a/pubspec.lock b/pubspec.lock index 412e2616..0a7d084c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -774,6 +774,14 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_volume_controller: + dependency: "direct main" + description: + name: flutter_volume_controller + sha256: "15f2c25bc4632ac5e8d42a208fe07c3224a4ee66b155d1ac86945b3db2bb58d9" + url: "https://pub.dev" + source: hosted + version: "1.3.3" flutter_web_plugins: dependency: transitive description: flutter @@ -1202,8 +1210,8 @@ packages: description: path: media_kit_video ref: "version_1.2.5" - resolved-ref: f89452bc27af26324a83961c8286d4f41432a5f9 - url: "https://github.com/My-Responsitories/media-kit.git" + resolved-ref: c4655bfb4bf81b6bb450d252184da20e2fbba292 + url: "https://github.com/bggRGjQaUbCoE/media-kit.git" source: git version: "1.2.5" meta: @@ -1955,14 +1963,6 @@ packages: url: "https://pub.dev" source: hosted version: "15.0.2" - volume_controller: - dependency: "direct main" - description: - name: volume_controller - sha256: d75039e69c0d90e7810bfd47e3eedf29ff8543ea7a10392792e81f9bded7edf5 - url: "https://pub.dev" - source: hosted - version: "3.4.0" wakelock_plus: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 79824ff3..696028e6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -104,7 +104,7 @@ dependencies: # media_kit_video: ^1.2.5 # For video rendering. media_kit_video: git: - url: https://github.com/My-Responsitories/media-kit.git + url: https://github.com/bggRGjQaUbCoE/media-kit.git path: media_kit_video ref: version_1.2.5 media_kit_libs_video: 1.0.5 @@ -114,7 +114,7 @@ dependencies: audio_session: ^0.2.2 # 音量、亮度、屏幕控制 - volume_controller: ^2.0.7 + flutter_volume_controller: ^1.3.3 wakelock_plus: ^1.2.8 # universal_platform: ^1.1.0 auto_orientation: @@ -230,7 +230,6 @@ dependency_overrides: url: https://github.com/My-Responsitories/media-kit.git path: libs/android/media_kit_libs_android_video ref: version_1.2.5 - volume_controller: ^3.4.0 dev_dependencies: flutter_test: