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

Loading…
Cancel
Save