diff --git a/lib/data/services/qq_music.dart b/lib/data/services/qq_music.dart index 87a20f645..2ea18a91b 100644 --- a/lib/data/services/qq_music.dart +++ b/lib/data/services/qq_music.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:ffi'; import 'package:get/get.dart'; import 'package:qq_music/qq_music.dart'; import '../models/song_model.dart'; @@ -266,6 +267,19 @@ class QqMusicService extends GetxService { } } + /// 自动暂停音乐 + Future autopauseMusic() async { + try { + final result = await _qqMusic.autopauseMusic(); + if (result['success'] == true) { + isPlaying.value = false; + } + return result['success'] == true; + } catch (e) { + return false; + } + } + /// 继续播放 Future> resumeMusic() async { try { diff --git a/lib/modules/translation/controllers/translation_controller.dart b/lib/modules/translation/controllers/translation_controller.dart index d53e2876d..58169b063 100644 --- a/lib/modules/translation/controllers/translation_controller.dart +++ b/lib/modules/translation/controllers/translation_controller.dart @@ -766,10 +766,8 @@ class TranslationController extends GetxController with WidgetsBindingObserver { } if (!_isContinueQqMusicPlaying) { - await _qqMusicManager.syncCurrentPlayInfo(); - if (_qqMusicManager.isPlaying.value == true) { + if (await _qqMusicManager.autopauseMusic()) { _isContinueQqMusicPlaying = true; - await _qqMusicManager.pauseMusic(); } } } catch (e) { diff --git a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QqMusicPlugin.kt b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QqMusicPlugin.kt index bc081fdb1..d1367ba2c 100644 --- a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QqMusicPlugin.kt +++ b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QqMusicPlugin.kt @@ -141,6 +141,14 @@ class QqMusicPlugin: FlutterPlugin, MethodCallHandler, ActivityAware { ) } } + "autopauseMusic" -> { + qqMusicSingleton.autopauseMusic { kotlinResult -> + kotlinResult.fold( + onSuccess = { result.success(mapOf("success" to true)) }, + onFailure = { error -> result.error("PAUSE_FAILED", error.message, null) } + ) + } + } "resumeMusic" -> { qqMusicSingleton.resumeMusic { kotlinResult -> kotlinResult.fold( diff --git a/local_plugins/qq_music/lib/qq_music.dart b/local_plugins/qq_music/lib/qq_music.dart index 6ec79da88..adc01c2f3 100644 --- a/local_plugins/qq_music/lib/qq_music.dart +++ b/local_plugins/qq_music/lib/qq_music.dart @@ -81,6 +81,16 @@ class QqMusic { } } + /// 自动暂停音乐 + Future> autopauseMusic() async { + try { + final result = await _methodChannel.invokeMethod('autopauseMusic'); + return Map.from(result); + } on PlatformException catch (e) { + return {'success': false, 'error': e.message ?? '自动暂停失败', 'code': e.code}; + } + } + /// 恢复播放 Future> resumeMusic() async { try {