diff --git a/local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt b/local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt index 648b37238..dcc463e94 100644 --- a/local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt +++ b/local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt @@ -196,6 +196,7 @@ object AgentService : CoroutineScope { UserPortrait.initialize(appContext); //初始化定位服务 LocationService.initialize(appContext) + QQMusicSingleton.getInstance().initialize(appContext) // 设置系统提示词 val customSystemPrompt = config["systemPrompt"] as? String //保存配置 diff --git a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicLoginManager.kt b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicLoginManager.kt index 6cee7e034..4674fca8f 100644 --- a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicLoginManager.kt +++ b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicLoginManager.kt @@ -1,6 +1,7 @@ package com.yunqiinnovation.qq_music import android.app.Activity +import android.content.Context import android.os.Bundle import android.os.Handler import android.os.Looper @@ -16,7 +17,7 @@ import org.json.JSONTokener * QQ音乐登录管理器 * 负责处理QQ音乐的登录授权流程 */ -class QQMusicLoginManager(private val activity: Activity) { +class QQMusicLoginManager(private val context: Context) { companion object { private const val TAG = "QQMusicLoginManager" @@ -53,7 +54,7 @@ class QQMusicLoginManager(private val activity: Activity) { } // 初始化绑定助手 - qPlayBindHelper = QPlayBindHelper(activity) + qPlayBindHelper = QPlayBindHelper(context) // 开始绑定QQ音乐服务 bindQQMusicService(callback) @@ -126,7 +127,7 @@ class QQMusicLoginManager(private val activity: Activity) { Log.d(TAG, "启动QQ音乐登录页面") // 启动QQ音乐登录 - CommonCmd.loginQQMusic(activity, URI_LOGIN) + CommonCmd.loginQQMusic(context, URI_LOGIN) // 等待用户登录完成后进行身份验证 handler.postDelayed({ @@ -145,9 +146,9 @@ class QQMusicLoginManager(private val activity: Activity) { val encryptString = OpenIDHelper.getEncryptString(nonce) CommonCmd.verifyCallerIdentity( - activity, + context, Config.OPENID_APPID, - activity.packageName, + context.packageName, encryptString, BASE_SCHEME ) diff --git a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt index b7851ff0c..4fdc139ef 100644 --- a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt +++ b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt @@ -15,7 +15,7 @@ import com.tencent.qqmusic.third.api.contract.* import android.os.Handler import android.os.Looper -class QQMusicManager(private val activity: Activity) { +class QQMusicManager(private val context: Context) { companion object { const val TAG = "QQMusicManager" } @@ -123,18 +123,18 @@ class QQMusicManager(private val activity: Activity) { Log.d(TAG, "绑定Intent: action=${intent.action}, package=${intent.`package`}") try { - val bindResult = activity.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE) + val bindResult = context.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE) Log.d(TAG, "bindService结果: $bindResult") if (!bindResult) { Log.e(TAG, "绑定QQ音乐服务失败,尝试启动QQ音乐进程") // 尝试启动QQ音乐进程 - CommonCmd.startQQMusicProcess(activity, activity.packageName) + CommonCmd.startQQMusicProcess(context, context.packageName) // 延迟重试绑定 Handler(Looper.getMainLooper()).postDelayed({ Log.d(TAG, "重试绑定QQ音乐服务") - activity.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE) + context.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE) }, 2000) } } catch (e: Exception) { @@ -657,7 +657,7 @@ class QQMusicManager(private val activity: Activity) { fun cleanup() { try { if (isBindQQMusicService) { - activity.unbindService(serviceConnection) + context.unbindService(serviceConnection) isBindQQMusicService = false Log.d(TAG, "QQ音乐服务已解绑") } diff --git a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicSingleton.kt b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicSingleton.kt index 6cd6de9de..9aad96445 100644 --- a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicSingleton.kt +++ b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicSingleton.kt @@ -39,7 +39,7 @@ class QQMusicSingleton private constructor() { } } - private var activity: Activity? = null + private var context: Context? = null private var loginManager: QQMusicLoginManager? = null private var musicManager: QQMusicManager? = null private val handler = Handler(Looper.getMainLooper()) @@ -51,9 +51,9 @@ class QQMusicSingleton private constructor() { /** * 初始化单例,设置Activity上下文 */ - fun initialize(activity: Activity) { - this.activity = activity - this.sharedPreferences = activity.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE) + fun initialize(context: Context) { + this.context = context + this.sharedPreferences = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE) loadSavedLoginInfo() Log.d(TAG, "QQ音乐单例初始化完成") } @@ -72,7 +72,7 @@ class QQMusicSingleton private constructor() { } return try { - this.activity?.packageManager?.getPackageInfo(packageName, 0) + this.context?.packageManager?.getPackageInfo(packageName, 0) Log.d(TAG, "QQ音乐app已安装: $packageName") true } catch (e: PackageManager.NameNotFoundException) { @@ -113,7 +113,7 @@ class QQMusicSingleton private constructor() { callback(Result.failure(Exception("未安装QQ音乐软件,请先安装QQ音乐软件"))) return } - val currentActivity = activity + val currentActivity = context // 先检查是否已经登录且未过期 if (isLoggedIn()) { Log.d(TAG, "用户已登录且未过期,直接返回登录信息") @@ -159,7 +159,7 @@ class QQMusicSingleton private constructor() { callback(Result.failure(Exception("未安装QQ音乐软件,请先安装QQ音乐软件"))) return } - val currentActivity = activity + val currentActivity = context // 先检查是否已经登录且未过期 if (isLoggedIn()) { @@ -206,7 +206,7 @@ class QQMusicSingleton private constructor() { retryCount: Int, callback: (Result>>) -> Unit ) { - val currentActivity = activity + val currentActivity = context if (currentActivity == null) { callback(Result.failure(Exception("Activity not available"))) return @@ -240,7 +240,7 @@ class QQMusicSingleton private constructor() { retryCount: Int, callback: (Result>>) -> Unit ) { - val currentActivity = activity ?: return + val currentActivity = context ?: return val searchKey = "${keyword}_${System.currentTimeMillis()}" var completed = false @@ -336,7 +336,7 @@ class QQMusicSingleton private constructor() { index: Int, callback: (Result) -> Unit ) { - val currentActivity = activity + val currentActivity = context if (currentActivity == null) { callback(Result.failure(Exception("Activity not available"))) return @@ -369,7 +369,7 @@ class QQMusicSingleton private constructor() { index: Int, callback: (Result) -> Unit ) { - val currentActivity = activity ?: return + val currentActivity = context ?: return ensureMusicManager(currentActivity) musicManager?.playSongs(songMids, index, object : QQMusicManager.PlayCallback { @@ -481,7 +481,7 @@ class QQMusicSingleton private constructor() { * 获取播放时间 */ fun getPlayTime(callback: (Result) -> Unit) { - val currentActivity = activity + val currentActivity = context if (currentActivity == null) { callback(Result.failure(Exception("Activity not available"))) return @@ -512,13 +512,13 @@ class QQMusicSingleton private constructor() { * 同步当前播放信息 - 统一接口 */ fun syncCurrentPlayInfo(callback: (Result>) -> Unit) { - val currentActivity = activity - if (currentActivity == null) { + val currentcontext = context + if (currentcontext == null) { callback(Result.failure(Exception("Activity not available"))) return } - ensureMusicManager(currentActivity) + ensureMusicManager(currentcontext) musicManager?.syncCurrentPlayInfo(object : QQMusicManager.InfoCallback { override fun onSuccess(data: Map) { handler.post { @@ -549,7 +549,7 @@ class QQMusicSingleton private constructor() { loginManager = null musicManager?.cleanup() musicManager = null - activity = null + context = null Log.d(TAG, "QQ音乐单例资源清理完成") } @@ -598,9 +598,9 @@ class QQMusicSingleton private constructor() { } // 私有辅助方法 - private fun ensureMusicManager(activity: Activity) { + private fun ensureMusicManager(context: Context) { if (musicManager == null) { - musicManager = QQMusicManager(activity) + musicManager = QQMusicManager(context) } } @@ -609,7 +609,7 @@ class QQMusicSingleton private constructor() { action: (QQMusicManager, QQMusicManager.PlayCallback) -> Unit ): (callback: (Result) -> Unit) -> Unit { return lambda@{ callback -> - val currentActivity = activity + val currentActivity = context if (currentActivity == null) { callback(Result.failure(Exception("Activity not available"))) return@lambda @@ -639,13 +639,13 @@ class QQMusicSingleton private constructor() { action: (QQMusicManager, QQMusicManager.InfoCallback) -> Unit ): (callback: (Result>) -> Unit) -> Unit { return lambda@{ callback -> - val currentActivity = activity - if (currentActivity == null) { + val currentcontext = context + if (currentcontext == null) { callback(Result.failure(Exception("Activity not available"))) return@lambda } - ensureMusicManager(currentActivity) + ensureMusicManager(currentcontext) action(musicManager!!, object : QQMusicManager.InfoCallback { override fun onSuccess(data: Map) { handler.post { 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 9c9cd8e26..62f8c40a2 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 @@ -42,7 +42,7 @@ class QqMusicPlugin: FlutterPlugin, MethodCallHandler, ActivityAware { Log.d("QqMusicPlugin", "onAttachedToActivity called") activity = binding.activity println("QQ音乐 onAttachedToActivity") - qqMusicSingleton.initialize(activity!!) +// qqMusicSingleton.initialize(activity!!) Log.d("QqMusicPlugin", "qqMusicSingleton.initialize completed") }