Browse Source

feat(qq_music): 添加自动暂停音乐方法以简化暂停逻辑

新增 autopauseMusic 方法,该方法在 QQ 音乐插件、服务层和控制器中实现。它封装了检查播放状态并暂停的逻辑,替换了原先需要先同步播放信息再手动暂停的多步操作,使代码更简洁并减少潜在的错误。
weicu
liwei1dao 8 months ago
parent
commit
0828b74a6b
  1. 14
      lib/data/services/qq_music.dart
  2. 4
      lib/modules/translation/controllers/translation_controller.dart
  3. 8
      local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QqMusicPlugin.kt
  4. 10
      local_plugins/qq_music/lib/qq_music.dart

14
lib/data/services/qq_music.dart

@ -1,4 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'dart:ffi';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:qq_music/qq_music.dart'; import 'package:qq_music/qq_music.dart';
import '../models/song_model.dart'; import '../models/song_model.dart';
@ -266,6 +267,19 @@ class QqMusicService extends GetxService {
} }
} }
/// 自动暂停音乐
Future<bool> autopauseMusic() async {
try {
final result = await _qqMusic.autopauseMusic();
if (result['success'] == true) {
isPlaying.value = false;
}
return result['success'] == true;
} catch (e) {
return false;
}
}
/// 继续播放 /// 继续播放
Future<Map<String, dynamic>> resumeMusic() async { Future<Map<String, dynamic>> resumeMusic() async {
try { try {

4
lib/modules/translation/controllers/translation_controller.dart

@ -766,10 +766,8 @@ class TranslationController extends GetxController with WidgetsBindingObserver {
} }
if (!_isContinueQqMusicPlaying) { if (!_isContinueQqMusicPlaying) {
await _qqMusicManager.syncCurrentPlayInfo(); if (await _qqMusicManager.autopauseMusic()) {
if (_qqMusicManager.isPlaying.value == true) {
_isContinueQqMusicPlaying = true; _isContinueQqMusicPlaying = true;
await _qqMusicManager.pauseMusic();
} }
} }
} catch (e) { } catch (e) {

8
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" -> { "resumeMusic" -> {
qqMusicSingleton.resumeMusic { kotlinResult -> qqMusicSingleton.resumeMusic { kotlinResult ->
kotlinResult.fold( kotlinResult.fold(

10
local_plugins/qq_music/lib/qq_music.dart

@ -81,6 +81,16 @@ class QqMusic {
} }
} }
/// 自动暂停音乐
Future<Map<String, dynamic>> autopauseMusic() async {
try {
final result = await _methodChannel.invokeMethod('autopauseMusic');
return Map<String, dynamic>.from(result);
} on PlatformException catch (e) {
return {'success': false, 'error': e.message ?? '自动暂停失败', 'code': e.code};
}
}
/// 恢复播放 /// 恢复播放
Future<Map<String, dynamic>> resumeMusic() async { Future<Map<String, dynamic>> resumeMusic() async {
try { try {

Loading…
Cancel
Save