| 
					
				 | 
			
			
				@@ -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() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |