Browse Source

上传代码代码优化

newdev_shunjiawei
liwei1dao 1 year ago
parent
commit
c892abd63c
  1. 2
      lib/core/translations/language/zh_cn.dart
  2. 2
      local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureTtsHelper.kt
  3. 83
      local_plugins/chat_api/android/src/main/kotlin/com/yunqiinnovation/chat_api/QQMusicSystemFunctionHandler.kt

2
lib/core/translations/language/zh_cn.dart

@ -511,7 +511,7 @@ const Map<String, String> zhCN = {
"loadMoreMessages": "加载更多消息...", "loadMoreMessages": "加载更多消息...",
"loadFailedClickRetry": "加载失败,点击重试", "loadFailedClickRetry": "加载失败,点击重试",
"swipeUpForMore": "向上滑动查看更多", "swipeUpForMore": "向上滑动查看更多",
"callingTool": "正在为您调用工具查询相关信息!", "callingTool": "正在调用工具!",
// 预设提示词 // 预设提示词
"presetMusic": "来点音乐", // 来点音乐 "presetMusic": "来点音乐", // 来点音乐

2
local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureTtsHelper.kt

@ -671,8 +671,8 @@ class AzureTtsHelper(private val context: Context) : ITtsService {
try { try {
synthesizer?.StopSpeakingAsync() synthesizer?.StopSpeakingAsync()
synthesizer?.close()
streamBuffer.clear() streamBuffer.clear()
isSpeaking = false isSpeaking = false
return true return true
} catch (e: Exception) { } catch (e: Exception) {

83
local_plugins/chat_api/android/src/main/kotlin/com/yunqiinnovation/chat_api/QQMusicSystemFunctionHandler.kt

@ -6,6 +6,7 @@ import kotlinx.coroutines.delay
import com.yunqiinnovation.qq_music.QQMusicSingleton import com.yunqiinnovation.qq_music.QQMusicSingleton
import kotlin.coroutines.suspendCoroutine import kotlin.coroutines.suspendCoroutine
import kotlin.coroutines.resume import kotlin.coroutines.resume
import kotlinx.coroutines.CompletableDeferred
/** /**
* QQ音乐系统功能处理器 * QQ音乐系统功能处理器
* 负责注册QQ音乐相关的MCP函数 * 负责注册QQ音乐相关的MCP函数
@ -211,7 +212,8 @@ private class QQMusicPlaySongsHandler(private val context: Context?) : FunctionH
val index = (arguments["index"] as? Number)?.toInt() ?: 0 val index = (arguments["index"] as? Number)?.toInt() ?: 0
val qqMusicSingleton = QQMusicSingleton.getInstance() val qqMusicSingleton = QQMusicSingleton.getInstance()
var result = "" var result = ""
// 创建一个CompletableDeferred用于等待回调结果
val deferred = CompletableDeferred<String>()
qqMusicSingleton.playSongs(songMids, index) { playResult -> qqMusicSingleton.playSongs(songMids, index) { playResult ->
result = if (playResult.isSuccess) { result = if (playResult.isSuccess) {
"{\"broadcast\": false, \"success\": true, \"message\": \"开始播放歌曲列表\"}" "{\"broadcast\": false, \"success\": true, \"message\": \"开始播放歌曲列表\"}"
@ -219,11 +221,12 @@ private class QQMusicPlaySongsHandler(private val context: Context?) : FunctionH
val error = playResult.exceptionOrNull() val error = playResult.exceptionOrNull()
"{\"success\": false, \"message\": \"播放失败: ${error?.message}\"}" "{\"success\": false, \"message\": \"播放失败: ${error?.message}\"}"
} }
// 回调完成,唤醒挂起的协程
deferred.complete(result)
} }
// 等待回调完成 十秒 // 挂起等待回调结果(无超时,直到回调触发)
delay(10000) deferred.await()
result.ifEmpty { "{\"nocard\": false,\"broadcast\": true, \"success\": false, \"message\": \"播放超时\"}" }
} catch (e: Exception) { } catch (e: Exception) {
Log.e("QQMusicPlaySongsHandler", "QQ音乐播放歌曲失败", e) Log.e("QQMusicPlaySongsHandler", "QQ音乐播放歌曲失败", e)
"{\"nocard\": true, \"success\": false, \"message\": \"播放异常: ${e.message}\"}" "{\"nocard\": true, \"success\": false, \"message\": \"播放异常: ${e.message}\"}"
@ -236,7 +239,8 @@ private class QQMusicPlayHandler(private val context: Context?) : FunctionHandle
return try { return try {
val qqMusicSingleton = QQMusicSingleton.getInstance() val qqMusicSingleton = QQMusicSingleton.getInstance()
var result = "" var result = ""
// 创建一个CompletableDeferred用于等待回调结果
val deferred = CompletableDeferred<String>()
qqMusicSingleton.playMusic { playResult -> qqMusicSingleton.playMusic { playResult ->
result = if (playResult.isSuccess) { result = if (playResult.isSuccess) {
"{\"broadcast\": false, \"success\": true, \"message\": \"开始播放\"}" "{\"broadcast\": false, \"success\": true, \"message\": \"开始播放\"}"
@ -244,10 +248,12 @@ private class QQMusicPlayHandler(private val context: Context?) : FunctionHandle
val error = playResult.exceptionOrNull() val error = playResult.exceptionOrNull()
"{\"success\": false, \"message\": \"播放失败: ${error?.message}\"}" "{\"success\": false, \"message\": \"播放失败: ${error?.message}\"}"
} }
// 回调完成,唤醒挂起的协程
deferred.complete(result)
} }
delay(10000) // 挂起等待回调结果(无超时,直到回调触发)
result.ifEmpty { "{\"success\": false, \"message\": \"播放超时\"}" } deferred.await()
} catch (e: Exception) { } catch (e: Exception) {
Log.e("QQMusicPlayHandler", "QQ音乐播放失败", e) Log.e("QQMusicPlayHandler", "QQ音乐播放失败", e)
"{\"success\": false, \"message\": \"播放异常: ${e.message}\"}" "{\"success\": false, \"message\": \"播放异常: ${e.message}\"}"
@ -260,7 +266,8 @@ private class QQMusicPauseHandler(private val context: Context?) : FunctionHandl
return try { return try {
val qqMusicSingleton = QQMusicSingleton.getInstance() val qqMusicSingleton = QQMusicSingleton.getInstance()
var result = "" var result = ""
// 创建一个CompletableDeferred用于等待回调结果
val deferred = CompletableDeferred<String>()
qqMusicSingleton.pauseMusic { pauseResult -> qqMusicSingleton.pauseMusic { pauseResult ->
result = if (pauseResult.isSuccess) { result = if (pauseResult.isSuccess) {
"{\"broadcast\": false, \"success\": true, \"message\": \"暂停播放\"}" "{\"broadcast\": false, \"success\": true, \"message\": \"暂停播放\"}"
@ -268,10 +275,12 @@ private class QQMusicPauseHandler(private val context: Context?) : FunctionHandl
val error = pauseResult.exceptionOrNull() val error = pauseResult.exceptionOrNull()
"{\"success\": false, \"message\": \"暂停失败: ${error?.message}\"}" "{\"success\": false, \"message\": \"暂停失败: ${error?.message}\"}"
} }
// 回调完成,唤醒挂起的协程
deferred.complete(result)
} }
delay(2000) // 挂起等待回调结果(无超时,直到回调触发)
result.ifEmpty { "{\"success\": false, \"message\": \"暂停超时\"}" } deferred.await()
} catch (e: Exception) { } catch (e: Exception) {
Log.e("QQMusicPauseHandler", "QQ音乐暂停失败", e) Log.e("QQMusicPauseHandler", "QQ音乐暂停失败", e)
"{\"success\": false, \"message\": \"暂停异常: ${e.message}\"}" "{\"success\": false, \"message\": \"暂停异常: ${e.message}\"}"
@ -284,7 +293,8 @@ private class QQMusicResumeHandler(private val context: Context?) : FunctionHand
return try { return try {
val qqMusicSingleton = QQMusicSingleton.getInstance() val qqMusicSingleton = QQMusicSingleton.getInstance()
var result = "" var result = ""
// 创建一个CompletableDeferred用于等待回调结果
val deferred = CompletableDeferred<String>()
qqMusicSingleton.resumeMusic { resumeResult -> qqMusicSingleton.resumeMusic { resumeResult ->
result = if (resumeResult.isSuccess) { result = if (resumeResult.isSuccess) {
"{\"broadcast\": false, \"success\": true, \"message\": \"恢复播放\"}" "{\"broadcast\": false, \"success\": true, \"message\": \"恢复播放\"}"
@ -292,10 +302,12 @@ private class QQMusicResumeHandler(private val context: Context?) : FunctionHand
val error = resumeResult.exceptionOrNull() val error = resumeResult.exceptionOrNull()
"{\"success\": false, \"message\": \"恢复播放失败: ${error?.message}\"}" "{\"success\": false, \"message\": \"恢复播放失败: ${error?.message}\"}"
} }
// 回调完成,唤醒挂起的协程
deferred.complete(result)
} }
delay(2000) // 挂起等待回调结果(无超时,直到回调触发)
result.ifEmpty { "{\"success\": false, \"message\": \"恢复播放超时\"}" } deferred.await()
} catch (e: Exception) { } catch (e: Exception) {
Log.e("QQMusicResumeHandler", "QQ音乐恢复播放失败", e) Log.e("QQMusicResumeHandler", "QQ音乐恢复播放失败", e)
"{\"success\": false, \"message\": \"恢复播放异常: ${e.message}\"}" "{\"success\": false, \"message\": \"恢复播放异常: ${e.message}\"}"
@ -308,7 +320,8 @@ private class QQMusicStopHandler(private val context: Context?) : FunctionHandle
return try { return try {
val qqMusicSingleton = QQMusicSingleton.getInstance() val qqMusicSingleton = QQMusicSingleton.getInstance()
var result = "" var result = ""
// 创建一个CompletableDeferred用于等待回调结果
val deferred = CompletableDeferred<String>()
qqMusicSingleton.stopMusic { stopResult -> qqMusicSingleton.stopMusic { stopResult ->
result = if (stopResult.isSuccess) { result = if (stopResult.isSuccess) {
"{\"broadcast\": false, \"success\": true, \"message\": \"停止播放\"}" "{\"broadcast\": false, \"success\": true, \"message\": \"停止播放\"}"
@ -316,10 +329,12 @@ private class QQMusicStopHandler(private val context: Context?) : FunctionHandle
val error = stopResult.exceptionOrNull() val error = stopResult.exceptionOrNull()
"{\"success\": false, \"message\": \"停止失败: ${error?.message}\"}" "{\"success\": false, \"message\": \"停止失败: ${error?.message}\"}"
} }
// 回调完成,唤醒挂起的协程
deferred.complete(result)
} }
delay(2000) // 挂起等待回调结果(无超时,直到回调触发)
result.ifEmpty { "{\"success\": false, \"message\": \"停止超时\"}" } deferred.await()
} catch (e: Exception) { } catch (e: Exception) {
Log.e("QQMusicStopHandler", "QQ音乐停止失败", e) Log.e("QQMusicStopHandler", "QQ音乐停止失败", e)
"{\"success\": false, \"message\": \"停止异常: ${e.message}\"}" "{\"success\": false, \"message\": \"停止异常: ${e.message}\"}"
@ -332,7 +347,8 @@ private class QQMusicNextHandler(private val context: Context?) : FunctionHandle
return try { return try {
val qqMusicSingleton = QQMusicSingleton.getInstance() val qqMusicSingleton = QQMusicSingleton.getInstance()
var result = "" var result = ""
// 创建一个CompletableDeferred用于等待回调结果
val deferred = CompletableDeferred<String>()
qqMusicSingleton.skipToNext { nextResult -> qqMusicSingleton.skipToNext { nextResult ->
result = if (nextResult.isSuccess) { result = if (nextResult.isSuccess) {
"{\"broadcast\": false, \"success\": true, \"message\": \"切换到下一首\"}" "{\"broadcast\": false, \"success\": true, \"message\": \"切换到下一首\"}"
@ -340,10 +356,12 @@ private class QQMusicNextHandler(private val context: Context?) : FunctionHandle
val error = nextResult.exceptionOrNull() val error = nextResult.exceptionOrNull()
"{\"success\": false, \"message\": \"切换失败: ${error?.message}\"}" "{\"success\": false, \"message\": \"切换失败: ${error?.message}\"}"
} }
// 回调完成,唤醒挂起的协程
deferred.complete(result)
} }
delay(2000) // 挂起等待回调结果(无超时,直到回调触发)
result.ifEmpty { "{\"success\": false, \"message\": \"切换超时\"}" } deferred.await()
} catch (e: Exception) { } catch (e: Exception) {
Log.e("QQMusicNextHandler", "QQ音乐下一首失败", e) Log.e("QQMusicNextHandler", "QQ音乐下一首失败", e)
"{\"success\": false, \"message\": \"切换异常: ${e.message}\"}" "{\"success\": false, \"message\": \"切换异常: ${e.message}\"}"
@ -356,7 +374,8 @@ private class QQMusicPreviousHandler(private val context: Context?) : FunctionHa
return try { return try {
val qqMusicSingleton = QQMusicSingleton.getInstance() val qqMusicSingleton = QQMusicSingleton.getInstance()
var result = "" var result = ""
// 创建一个CompletableDeferred用于等待回调结果
val deferred = CompletableDeferred<String>()
qqMusicSingleton.skipToPrevious { previousResult -> qqMusicSingleton.skipToPrevious { previousResult ->
result = if (previousResult.isSuccess) { result = if (previousResult.isSuccess) {
"{\"broadcast\": false, \"success\": true, \"message\": \"切换到上一首\"}" "{\"broadcast\": false, \"success\": true, \"message\": \"切换到上一首\"}"
@ -364,10 +383,12 @@ private class QQMusicPreviousHandler(private val context: Context?) : FunctionHa
val error = previousResult.exceptionOrNull() val error = previousResult.exceptionOrNull()
"{\"success\": false, \"message\": \"切换失败: ${error?.message}\"}" "{\"success\": false, \"message\": \"切换失败: ${error?.message}\"}"
} }
// 回调完成,唤醒挂起的协程
deferred.complete(result)
} }
delay(2000) // 挂起等待回调结果(无超时,直到回调触发)
result.ifEmpty { "{\"success\": false, \"message\": \"切换超时\"}" } deferred.await()
} catch (e: Exception) { } catch (e: Exception) {
Log.e("QQMusicPreviousHandler", "QQ音乐上一首失败", e) Log.e("QQMusicPreviousHandler", "QQ音乐上一首失败", e)
"{\"success\": false, \"message\": \"切换异常: ${e.message}\"}" "{\"success\": false, \"message\": \"切换异常: ${e.message}\"}"
@ -380,7 +401,8 @@ private class QQMusicGetPlaybackStateHandler(private val context: Context?) : Fu
return try { return try {
val qqMusicSingleton = QQMusicSingleton.getInstance() val qqMusicSingleton = QQMusicSingleton.getInstance()
var result = "" var result = ""
// 创建一个CompletableDeferred用于等待回调结果
val deferred = CompletableDeferred<String>()
qqMusicSingleton.getPlaybackState { stateResult -> qqMusicSingleton.getPlaybackState { stateResult ->
result = if (stateResult.isSuccess) { result = if (stateResult.isSuccess) {
val state = stateResult.getOrNull() ?: emptyMap() val state = stateResult.getOrNull() ?: emptyMap()
@ -392,10 +414,12 @@ private class QQMusicGetPlaybackStateHandler(private val context: Context?) : Fu
val error = stateResult.exceptionOrNull() val error = stateResult.exceptionOrNull()
"{\"success\": false, \"message\": \"获取播放状态失败: ${error?.message}\"}" "{\"success\": false, \"message\": \"获取播放状态失败: ${error?.message}\"}"
} }
// 回调完成,唤醒挂起的协程
deferred.complete(result)
} }
delay(2000) // 挂起等待回调结果(无超时,直到回调触发)
result.ifEmpty { "{\"success\": false, \"message\": \"获取播放状态超时\"}" } deferred.await()
} catch (e: Exception) { } catch (e: Exception) {
Log.e("CahtApi", "获取QQ音乐播放状态失败", e) Log.e("CahtApi", "获取QQ音乐播放状态失败", e)
"{\"success\": false, \"message\": \"获取播放状态异常: ${e.message}\"}" "{\"success\": false, \"message\": \"获取播放状态异常: ${e.message}\"}"
@ -408,7 +432,8 @@ private class QQMusicGetCurrentSongHandler(private val context: Context?) : Func
return try { return try {
val qqMusicSingleton = QQMusicSingleton.getInstance() val qqMusicSingleton = QQMusicSingleton.getInstance()
var result = "" var result = ""
// 创建一个CompletableDeferred用于等待回调结果
val deferred = CompletableDeferred<String>()
qqMusicSingleton.getCurrentSong { songResult -> qqMusicSingleton.getCurrentSong { songResult ->
result = if (songResult.isSuccess) { result = if (songResult.isSuccess) {
val song = songResult.getOrNull() ?: emptyMap() val song = songResult.getOrNull() ?: emptyMap()
@ -420,10 +445,12 @@ private class QQMusicGetCurrentSongHandler(private val context: Context?) : Func
val error = songResult.exceptionOrNull() val error = songResult.exceptionOrNull()
"{\"success\": false, \"message\": \"获取当前歌曲失败: ${error?.message}\"}" "{\"success\": false, \"message\": \"获取当前歌曲失败: ${error?.message}\"}"
} }
// 回调完成,唤醒挂起的协程
deferred.complete(result)
} }
delay(2000) // 挂起等待回调结果(无超时,直到回调触发)
result.ifEmpty { "{\"success\": false, \"message\": \"获取当前歌曲超时\"}" } deferred.await()
} catch (e: Exception) { } catch (e: Exception) {
Log.e("QQMusicLoginHandler", "获取QQ音乐当前歌曲失败", e) Log.e("QQMusicLoginHandler", "获取QQ音乐当前歌曲失败", e)
"{\"success\": false, \"message\": \"获取当前歌曲异常: ${e.message}\"}" "{\"success\": false, \"message\": \"获取当前歌曲异常: ${e.message}\"}"

Loading…
Cancel
Save