package com.xscm.moduleutil.activity; import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.content.res.Resources; import android.view.View; import androidx.annotation.NonNull; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.databinding.ViewDataBinding; import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.ToastUtils; import com.tencent.imsdk.v2.V2TIMConversationListener; import com.tencent.imsdk.v2.V2TIMConversationManager; import com.tencent.imsdk.v2.V2TIMSDKListener; import com.tencent.imsdk.v2.V2TIMValueCallback; import com.tencent.qcloud.tuicore.TUIConfig; import com.tencent.qcloud.tuicore.TUIConstants; import com.tencent.qcloud.tuicore.TUICore; import com.tencent.qcloud.tuicore.interfaces.TUILoginListener; import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.base.RoomManager; import com.xscm.moduleutil.bean.UserBean; import com.xscm.moduleutil.bean.UserInfo; import com.xscm.moduleutil.dialog.ConfirmDialog; import com.xscm.moduleutil.event.UnreadCountEvent; import com.xscm.moduleutil.http.RetrofitClient; import com.xscm.moduleutil.utils.LanguageUtil; import com.xscm.moduleutil.utils.location.LocationProvider; import com.xscm.moduleutil.utils.location.SystemLocationProvider; import com.tencent.imsdk.v2.V2TIMCallback; import com.tencent.imsdk.v2.V2TIMManager; import com.tencent.imsdk.v2.V2TIMUserFullInfo; import com.tencent.qcloud.tuicore.TUILogin; import com.tencent.qcloud.tuicore.interfaces.TUICallback; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; public abstract class BaseMvpActivity

extends BaseAppCompatActivity implements IView { protected P MvpPre; protected abstract P bindPresenter(); @Override protected void doDone() { super.doDone(); } @Override protected void initView() { MvpPre = bindPresenter(); } @Override public void showLoadings() { // showLoading("加载中"); } @Override public void showLoadings(String content) { // showLoading(content); } @Override public void disLoadings() { // disLoading(); } @Override protected void onDestroy() { if (MvpPre != null) { try { MvpPre.detachView(); }catch (Exception e){ e.printStackTrace(); } } super.onDestroy(); } @Override public Activity getSelfActivity() { return this; } @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(LanguageUtil.attachBaseContext(newBase)); } @Subscribe(threadMode = ThreadMode.MAIN) public void logOutEvent(UserBean userBean) { // 在用户 UI 点击登录的时候调用 TUILogin.login(getBaseContext(), CommonAppContext.getInstance().getCurrentEnvironment().getSdkAppId(), "u" + userBean.getUser_id(), userBean.getTencent_im(), new TUICallback() { @Override public void onError(final int code, final String desc) { LogUtils.e("@@@1", code, "描述:", desc); } @Override public void onSuccess() { LogUtils.e("@@@", "成功"); V2TIMManager.getConversationManager().getTotalUnreadMessageCount(new V2TIMValueCallback() { @Override public void onSuccess(Long aLong) { // 通知未读数变化 UnreadCountEvent event =CommonAppContext.getInstance().unreadCountEvent; if (event==null){ event=new UnreadCountEvent(); } event.setALong(aLong); // 使用EventBus通知 CommonAppContext.getInstance().setUnreadCountEvent(event); EventBus.getDefault().post(event); } @Override public void onError(int code, String desc) { // 错误处理 } }); //initLocation(); } }); // V2TIMManager.getInstance().addIMSDKListener(imSdkListener); } private final V2TIMSDKListener imSdkListener = new V2TIMSDKListener() { @Override public void onConnecting() { } @Override public void onConnectSuccess() {//重连成功 if (CommonAppContext.getInstance().playId!=null){ LogUtils.e("@@@", "重连成功"); LogUtils.e("@@@", ""+CommonAppContext.getInstance().playId); RetrofitClient.getInstance().roomUserReconnect(CommonAppContext.getInstance().playId); } } @Override public void onConnectFailed(int code, String error) { LogUtils.e("@@@", "断开连接"); CommonAppContext.getInstance().onConnectFailed=true; } @Override public void onKickedOffline() { // queren1(); if (CommonAppContext.getInstance().playId!=null){ ToastUtils.showShort("您的账号已被挤下线"); try { CommonAppContext.getInstance().clearLoginInfo(); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } } @Override public void onUserSigExpired() { } @Override public void onSelfInfoUpdated(V2TIMUserFullInfo info) { } }; private void queren1() { // 创建并显示确认对话框 new ConfirmDialog(this, "温馨提示", "您的账号已在别处登录,请确认密码是否已经泄露", "知道了", "", v -> { // 点击“确认”按钮时执行删除操作 if (CommonAppContext.getInstance().playId!=null){ RoomManager.getInstance().exitRoom(CommonAppContext.getInstance().playId); } try { CommonAppContext.getInstance().clearLoginInfo(); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } }, v -> { // 点击“取消”按钮时什么都不做 }, false, 0).show(); } @Override public Resources getResources() { Resources resources = super.getResources(); if (resources != null) { Configuration configuration = resources.getConfiguration(); if (configuration != null) { // 设置字体缩放比例不随系统变化 configuration.fontScale = 1.0f; // 1.0f表示默认大小 resources.updateConfiguration(configuration, resources.getDisplayMetrics()); } } return resources; } }