Browse Source

优化qq音乐自动登陆已经状态同步优化

newdev_shunjiawei
liwei1dao 1 year ago
parent
commit
38569482c8
  1. 4
      lib/data/services/qq_musoc.dart
  2. 3
      local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicLoginManager.kt
  3. 1
      local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt
  4. 38
      local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicSingleton.kt

4
lib/data/services/qq_musoc.dart

@ -35,7 +35,9 @@ class QqMusocService extends GetxService {
final result = await _qqMusic.login();
if (result['success'] == true) {
print('QQ音乐自动登录成功: ${result['openId']}');
syncCurrentPlayInfo();
Future.delayed(Duration(milliseconds: 500), () {
syncCurrentPlayInfo();
});
} else {
print('QQ音乐自动登录失败: ${result['error']}');
}

3
local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicLoginManager.kt

@ -100,7 +100,8 @@ class QQMusicLoginManager(private val activity: Activity) {
ErrorCodes.ERROR_OK -> {
// 已授权,直接请求登录信息
Log.d(TAG, "已授权,直接获取登录信息")
requestAuth(callback)
callback.onSuccess("","","")
// requestAuth(callback)
}
ErrorCodes.ERROR_API_NO_PERMISSION -> {
// 需要授权

1
local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt

@ -63,7 +63,6 @@ class QQMusicManager(private val activity: Activity) {
}
init {
Log.d(TAG, "QQ音乐服务未连接,无法发送hi消息")
bindQQMusicApiService()
}

38
local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicSingleton.kt

@ -87,19 +87,14 @@ class QQMusicSingleton private constructor() {
* 检查是否已登录且未过期
*/
fun isLoggedIn(): Boolean {
val loginResult = currentLoginResult ?: return false
try {
val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault())
val expireDate = dateFormat.parse(loginResult.expireTime)
val currentDate = Date()
val isValid = expireDate != null && currentDate.before(expireDate)
Log.d(TAG, "登录状态检查: ${if (isValid) "有效" else "已过期"}")
return isValid
} catch (e: Exception) {
Log.e(TAG, "解析过期时间失败: ${e.message}")
return false
if (currentLoginResult == null){
loadSavedLoginInfo()
if (currentLoginResult == null){
return false
}
return true
}else{
return true
}
}
@ -118,25 +113,27 @@ class QQMusicSingleton private constructor() {
callback(Result.failure(Exception("未安装QQ音乐软件,请先安装QQ音乐软件")))
return
}
val currentActivity = activity
// 先检查是否已经登录且未过期
if (isLoggedIn()) {
Log.d(TAG, "用户已登录且未过期,直接返回登录信息")
ensureMusicManager(currentActivity!!)
callback(Result.success(currentLoginResult!!))
return
}
val currentActivity = activity
if (currentActivity == null) {
callback(Result.failure(Exception("Activity not available")))
return
}
Log.d(TAG, "开始新的登录流程")
loginManager = QQMusicLoginManager(currentActivity)
loginManager?.startLogin(object : QQMusicLoginManager.LoginCallback {
override fun onSuccess(openId: String, openToken: String, expireTime: String) {
handler.post {
ensureMusicManager(currentActivity!!)
val result = LoginResult(openId, openToken, expireTime)
currentLoginResult = result
saveLoginInfo(result)
@ -501,13 +498,6 @@ class QQMusicSingleton private constructor() {
if (openId != null && openToken != null && expireTime != null) {
currentLoginResult = LoginResult(openId, openToken, expireTime)
Log.d(TAG, "从本地加载登录信息成功")
// 检查是否过期
if (!isLoggedIn()) {
Log.d(TAG, "本地登录信息已过期,清除")
clearSavedLoginInfo()
currentLoginResult = null
}
} else {
Log.d(TAG, "本地无保存的登录信息")
}

Loading…
Cancel
Save