|
|
@@ -1,6 +1,7 @@
|
|
|
package com.yingyang.livebroadcast.activity.list
|
|
|
|
|
|
import android.annotation.SuppressLint
|
|
|
+import android.text.TextUtils
|
|
|
import android.view.MotionEvent
|
|
|
import android.view.View
|
|
|
import androidx.recyclerview.widget.GridLayoutManager
|
|
|
@@ -8,6 +9,9 @@ import com.alibaba.android.arouter.facade.annotation.Route
|
|
|
import com.alibaba.android.arouter.launcher.ARouter
|
|
|
import com.hjq.permissions.OnPermissionCallback
|
|
|
import com.hjq.permissions.XXPermissions
|
|
|
+import com.tencent.bugly.crashreport.CrashReport
|
|
|
+import com.tencent.imsdk.v2.V2TIMCallback
|
|
|
+import com.tencent.imsdk.v2.V2TIMManager
|
|
|
import com.yingyang.livebroadcast.R
|
|
|
import com.yingyang.livebroadcast.adapter.LiveBroadcastAdapter
|
|
|
import com.yingyang.livebroadcast.databinding.ActivityLiveBroadcastListBinding
|
|
|
@@ -22,6 +26,7 @@ import com.yingyangfly.baselib.permissions.EsayPermissions
|
|
|
import com.yingyangfly.baselib.permissions.Permission
|
|
|
import com.yingyangfly.baselib.router.RouterUrlCommon
|
|
|
import com.yingyangfly.baselib.utils.JumpUtil
|
|
|
+import com.yingyangfly.baselib.utils.User
|
|
|
|
|
|
/**
|
|
|
* 直播列表
|
|
|
@@ -198,20 +203,12 @@ class LiveBroadcastListActivity :
|
|
|
private fun initPermission(url: String, id: String) {
|
|
|
val isHasPermission = XXPermissions.isGranted(this, permissions)
|
|
|
if (isHasPermission) {
|
|
|
- ARouter.getInstance().build(RouterUrlCommon.liveBroadcast)
|
|
|
- .withString("url", url)
|
|
|
- .withString("liveId", id)
|
|
|
- .withTransition(R.anim.leftin, R.anim.leftout)
|
|
|
- .navigation(mContext)
|
|
|
+ getUserSign(url, id)
|
|
|
} else {
|
|
|
XXPermissions.with(this).permission(permissions).request(object : OnPermissionCallback {
|
|
|
override fun onGranted(permissions: List<String>, all: Boolean) {
|
|
|
if (all) { // 全部获取权限成功
|
|
|
- ARouter.getInstance().build(RouterUrlCommon.liveBroadcast)
|
|
|
- .withString("url", url)
|
|
|
- .withString("liveId", id)
|
|
|
- .withTransition(R.anim.leftin, R.anim.leftout)
|
|
|
- .navigation(mContext)
|
|
|
+ getUserSign(url, id)
|
|
|
} else { // 部分获取权限成功
|
|
|
// 需要弹框处理
|
|
|
showTipDialog()
|
|
|
@@ -273,4 +270,57 @@ class LiveBroadcastListActivity :
|
|
|
}
|
|
|
return true
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取腾讯IM密钥
|
|
|
+ */
|
|
|
+ private fun getUserSign(url: String, id: String) {
|
|
|
+ viewModel.getUserSign(User.getUserId(), fail = {
|
|
|
+ }, success = {
|
|
|
+ if (TextUtils.isEmpty(it).not()) {
|
|
|
+ loginIm(it!!, url, id)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 登录腾讯IM
|
|
|
+ */
|
|
|
+ private fun loginIm(sign: String, url: String, id: String) {
|
|
|
+ V2TIMManager.getInstance().login(User.getUserId(), sign, object : V2TIMCallback {
|
|
|
+ override fun onSuccess() {
|
|
|
+ ARouter.getInstance().build(RouterUrlCommon.liveBroadcast)
|
|
|
+ .withString("url", url)
|
|
|
+ .withString("liveId", id)
|
|
|
+ .withTransition(R.anim.leftin, R.anim.leftout)
|
|
|
+ .navigation(mContext)
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onError(p0: Int, p1: String?) {
|
|
|
+ CrashReport.postCatchedException(
|
|
|
+ Throwable(
|
|
|
+ User.getName() + "直播间IM登陆报错,直播间信息:" + id + " ,用户信息:" +
|
|
|
+ User.getUserId() + " \n" + User.getName() + " ,错误信息:" + p0
|
|
|
+ )
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onDestroy() {
|
|
|
+ runOnUiThread {
|
|
|
+ val stastus = V2TIMManager.getInstance().loginStatus
|
|
|
+ if (V2TIMManager.V2TIM_STATUS_LOGINED == stastus) {
|
|
|
+ V2TIMManager.getInstance().logout(object : V2TIMCallback {
|
|
|
+ override fun onSuccess() {
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onError(p0: Int, p1: String?) {
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ super.onDestroy()
|
|
|
+ }
|
|
|
}
|