Browse Source

上传代码

weicu
liwei1dao 1 year ago
parent
commit
12375ca97d
  1. 1
      local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt
  2. 11
      local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicLoginManager.kt
  3. 10
      local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt
  4. 44
      local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicSingleton.kt
  5. 2
      local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QqMusicPlugin.kt

1
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
//保存配置

11
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
)

10
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音乐服务已解绑")
}

44
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<List<Map<String, Any?>>>) -> 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<List<Map<String, Any?>>>) -> 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>) -> 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>) -> 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<PlayTimeInfo>) -> 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<Map<String, Any?>>) -> 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<String, Any?>) {
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) -> 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<Map<String, Any?>>) -> 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<String, Any?>) {
handler.post {

2
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")
}

Loading…
Cancel
Save