|
|
@ -434,41 +434,72 @@ class QQMusicSingleton private constructor() { |
|
|
callback(Result.failure(Exception("Activity not available"))) |
|
|
callback(Result.failure(Exception("Activity not available"))) |
|
|
return@lambda |
|
|
return@lambda |
|
|
} |
|
|
} |
|
|
Log.d(TAG, "开始 ${actionName}") |
|
|
|
|
|
ensureMusicManager(currentActivity,object: QQMusicManager. BindCallback{ |
|
|
|
|
|
override fun onSuccess(){ |
|
|
|
|
|
action(musicManager!!, object : QQMusicManager.SearchCallback { |
|
|
|
|
|
override fun onSuccess(songs: List<Map<String, Any?>>) { |
|
|
|
|
|
Log.d(TAG, "${actionName} 成功") |
|
|
|
|
|
handler.post { |
|
|
|
|
|
callback(Result.success(songs)) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun onError(errorCode: Int, errorMessage: String) { |
|
|
// 添加登录状态检查 |
|
|
Log.d(TAG, "失败 ${actionName} 成功") |
|
|
if (!isLoggedIn()) { |
|
|
if (allagain > 0 && curragain < allagain){ //重试机制 |
|
|
Log.d(TAG, "用户未登录,开始自动登录") |
|
|
executeSearchbackAction(actionName,curragain+1,allagain,action) |
|
|
login { loginResult -> |
|
|
}else{ |
|
|
if (loginResult.isSuccess) { |
|
|
handler.post { |
|
|
Log.d(TAG, "自动登录成功,继续执行 ${actionName}") |
|
|
callback(Result.failure(Exception("$actionName 失败: $errorMessage"))) |
|
|
// 登录成功后继续执行原操作 |
|
|
} |
|
|
executeSearchAction(actionName, curragain, allagain, action, callback) |
|
|
} |
|
|
} else { |
|
|
} |
|
|
Log.e(TAG, "自动登录失败: ${loginResult.exceptionOrNull()?.message}") |
|
|
}) |
|
|
callback(Result.failure(Exception("用户未登录且自动登录失败: ${loginResult.exceptionOrNull()?.message}"))) |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
override fun onError(errorCode: Int, errorMessage: String) { |
|
|
return@lambda |
|
|
if (allagain > 0 && curragain < allagain){ //重试机制 |
|
|
} |
|
|
executeSearchbackAction(actionName,curragain+1,allagain,action) |
|
|
|
|
|
}else{ |
|
|
// 用户已登录,直接执行搜索操作 |
|
|
|
|
|
executeSearchAction(actionName, curragain, allagain, action, callback) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 提取搜索执行逻辑为独立方法 |
|
|
|
|
|
private fun executeSearchAction( |
|
|
|
|
|
actionName: String, |
|
|
|
|
|
curragain: Int, |
|
|
|
|
|
allagain: Int, |
|
|
|
|
|
action: (QQMusicManager, QQMusicManager.SearchCallback) -> Unit, |
|
|
|
|
|
callback: (Result<List<Map<String, Any?>>>) -> Unit |
|
|
|
|
|
) { |
|
|
|
|
|
Log.d(TAG, "开始 ${actionName}") |
|
|
|
|
|
ensureMusicManager(context!!, object: QQMusicManager.BindCallback{ |
|
|
|
|
|
override fun onSuccess(){ |
|
|
|
|
|
action(musicManager!!, object : QQMusicManager.SearchCallback { |
|
|
|
|
|
override fun onSuccess(songs: List<Map<String, Any?>>) { |
|
|
|
|
|
Log.d(TAG, "${actionName} 成功") |
|
|
handler.post { |
|
|
handler.post { |
|
|
callback(Result.failure(Exception("$actionName 失败: $errorMessage"))) |
|
|
callback(Result.success(songs)) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
override fun onError(errorCode: Int, errorMessage: String) { |
|
|
|
|
|
Log.d(TAG, "失败 ${actionName} errorCode: $errorCode errorMessage:$errorMessage 当前重试${curragain}/${allagain}") |
|
|
|
|
|
if (allagain > 0 && curragain < allagain){ //重试机制 |
|
|
|
|
|
Log.d(TAG, "重试 ${actionName} 当前重试${curragain+1}/${allagain}") |
|
|
|
|
|
executeSearchbackAction(actionName,curragain+1,allagain,action)(callback) |
|
|
|
|
|
}else{ |
|
|
|
|
|
handler.post { |
|
|
|
|
|
callback(Result.failure(Exception("$actionName 失败: $errorMessage"))) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
override fun onError(errorCode: Int, errorMessage: String) { |
|
|
|
|
|
Log.d(TAG, "失败 ${actionName} errorCode: $errorCode errorMessage:$errorMessage 当前重试${curragain}/${allagain}") |
|
|
|
|
|
if (allagain > 0 && curragain < allagain){ //重试机制 |
|
|
|
|
|
Log.d(TAG, "重试 ${actionName} 当前重试${curragain+1}/${allagain}") |
|
|
|
|
|
executeSearchbackAction(actionName,curragain+1,allagain,action)(callback) |
|
|
|
|
|
}else{ |
|
|
|
|
|
handler.post { |
|
|
|
|
|
callback(Result.failure(Exception("$actionName 失败: $errorMessage"))) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -491,49 +522,80 @@ class QQMusicSingleton private constructor() { |
|
|
callback(Result.failure(Exception("Activity not available"))) |
|
|
callback(Result.failure(Exception("Activity not available"))) |
|
|
return@lambda |
|
|
return@lambda |
|
|
} |
|
|
} |
|
|
Log.d(TAG, "开始 ${actionName}") |
|
|
|
|
|
ensureMusicManager(currentActivity,object: QQMusicManager. BindCallback{ |
|
|
// 添加登录状态检查 |
|
|
override fun onSuccess(){ |
|
|
if (!isLoggedIn()) { |
|
|
action(musicManager!!, object : QQMusicManager.PlayCallback { |
|
|
Log.d(TAG, "用户未登录,开始自动登录") |
|
|
override fun onSuccess() { |
|
|
login { loginResult -> |
|
|
Log.d(TAG, "${actionName}成功") |
|
|
if (loginResult.isSuccess) { |
|
|
handler.post { |
|
|
Log.d(TAG, "自动登录成功,继续执行 ${actionName}") |
|
|
callback(Result.success(Unit)) |
|
|
// 登录成功后继续执行原操作 |
|
|
} |
|
|
executePlayAction(actionName, curragain, allagain, action, callback) |
|
|
|
|
|
} else { |
|
|
|
|
|
Log.e(TAG, "自动登录失败: ${loginResult.exceptionOrNull()?.message}") |
|
|
|
|
|
callback(Result.failure(Exception("用户未登录且自动登录失败: ${loginResult.exceptionOrNull()?.message}"))) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return@lambda |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 用户已登录,直接执行搜索操作 |
|
|
|
|
|
executePlayAction(actionName, curragain, allagain, action, callback) |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private fun executePlayAction( |
|
|
|
|
|
actionName: String, |
|
|
|
|
|
curragain:Int, |
|
|
|
|
|
allagain:Int, |
|
|
|
|
|
action: (QQMusicManager, QQMusicManager.PlayCallback) -> Unit, |
|
|
|
|
|
callback: (Result<Unit>) -> Unit |
|
|
|
|
|
) { |
|
|
|
|
|
Log.d(TAG, "开始 ${actionName}") |
|
|
|
|
|
ensureMusicManager(context!!,object: QQMusicManager. BindCallback{ |
|
|
|
|
|
override fun onSuccess(){ |
|
|
|
|
|
action(musicManager!!, object : QQMusicManager.PlayCallback { |
|
|
|
|
|
override fun onSuccess() { |
|
|
|
|
|
Log.d(TAG, "${actionName}成功") |
|
|
|
|
|
handler.post { |
|
|
|
|
|
callback(Result.success(Unit)) |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
override fun onError(errorCode: Int, errorMessage: String) { |
|
|
override fun onError(errorCode: Int, errorMessage: String) { |
|
|
if (allagain > 0 && curragain < allagain){ //重试机制 |
|
|
if (allagain > 0 && curragain < allagain){ //重试机制 |
|
|
executePlaybackAction(actionName,curragain+1,allagain,action) |
|
|
executePlaybackAction(actionName,curragain+1,allagain,action)(callback) |
|
|
}else{ |
|
|
}else{ |
|
|
handler.post { |
|
|
handler.post { |
|
|
Log.e(TAG, "${actionName}失败: $errorCode $errorMessage") |
|
|
Log.e(TAG, "${actionName}失败: $errorCode $errorMessage") |
|
|
if (errorCode == -1){ |
|
|
if (errorCode == -1){ |
|
|
musicManager?.bindQQMusicApiService() |
|
|
musicManager?.bindQQMusicApiService() |
|
|
callback(Result.failure(Exception("播放失败: $errorMessage"))) |
|
|
callback(Result.failure(Exception("播放失败: $errorMessage"))) |
|
|
} else if (errorCode == 1030) { |
|
|
} else if (errorCode == 1030) { |
|
|
callback(Result.success(Unit)) |
|
|
callback(Result.success(Unit)) |
|
|
}else{ |
|
|
}else{ |
|
|
callback(Result.failure(Exception("播放失败: $errorMessage"))) |
|
|
callback(Result.failure(Exception("播放失败: $errorMessage"))) |
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
override fun onError(errorCode: Int, errorMessage: String) { |
|
|
|
|
|
Log.e(TAG, "${actionName}失败: $errorCode $errorMessage") |
|
|
|
|
|
if (allagain > 0 && curragain < allagain){ //重试机制 |
|
|
|
|
|
executePlaybackAction(actionName,curragain+1,allagain,action) |
|
|
|
|
|
}else{ |
|
|
|
|
|
callback(Result.failure(Exception("$actionName 失败: $errorMessage"))) |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
override fun onError(errorCode: Int, errorMessage: String) { |
|
|
|
|
|
Log.e(TAG, "${actionName}失败: $errorCode $errorMessage") |
|
|
|
|
|
if (allagain > 0 && curragain < allagain){ //重试机制 |
|
|
|
|
|
executePlaybackAction(actionName,curragain+1,allagain,action)(callback) |
|
|
|
|
|
}else{ |
|
|
|
|
|
callback(Result.failure(Exception("$actionName 失败: $errorMessage"))) |
|
|
} |
|
|
} |
|
|
}) |
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private fun executeInfoAction( |
|
|
private fun executeInfoAction( |
|
|
actionName: String, |
|
|
actionName: String, |
|
|
action: (QQMusicManager, QQMusicManager.InfoCallback) -> Unit |
|
|
action: (QQMusicManager, QQMusicManager.InfoCallback) -> Unit |
|
|
|