package com.xscm.moduleutil.activity; import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.pm.PackageManager; 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.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.bean.UserBean; import com.xscm.moduleutil.bean.UserInfo; 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 , LocationProvider.LocationCallback { protected P MvpPre; protected abstract P bindPresenter(); private String city1; @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) { MvpPre.detachView(); } 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("@@@","成功"); V2TIMUserFullInfo userFullInfo = new V2TIMUserFullInfo(); userFullInfo.setNickname(userBean.getNickname()); userFullInfo.setFaceUrl(userBean.getAvatar()); userFullInfo.setAllowType(userBean.getSex()); V2TIMManager.getInstance().setSelfInfo(userFullInfo, new V2TIMCallback() { @Override public void onSuccess() { LogUtils.e("@@@", "成功"); } @Override public void onError(int code, String desc) { LogUtils.e("@@@", "描述"+desc); } }); initLocation(); } }); } private SystemLocationProvider locationProvider; private void initLocation() { if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // 请求定位权限 ActivityCompat.requestPermissions( (Activity) this, new String[]{ android.Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION }, 1001 // 自定义常量,比如 1001 ); } locationProvider = new SystemLocationProvider(); // 请求一次性的位置信息 locationProvider.getLastKnownLocation(this, this); } @Override public void onLocationReceived(double latitude, double longitude, String city) { LogUtils.e("当前位置:" + city); city1=city; EventBus.getDefault().post(city1); } @Override public void onFailed(String errorMessage) { LogUtils.e("定位失败"); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 1001) { if (locationProvider==null) { locationProvider = new SystemLocationProvider(); } locationProvider.getLastKnownLocation(this, this); } } @Subscribe(threadMode = ThreadMode.MAIN) public void userInfoEvent(UserInfo event) { V2TIMUserFullInfo userFullInfo = new V2TIMUserFullInfo(); userFullInfo.setNickname(event.getNickname()); userFullInfo.setFaceUrl(event.getAvatar()); userFullInfo.setAllowType(event.getSex()); V2TIMManager.getInstance().setSelfInfo(userFullInfo, new V2TIMCallback() { @Override public void onSuccess() { LogUtils.e("@@@", "成功"); } @Override public void onError(int code, String desc) { LogUtils.e("@@@", "描述"+desc); } }); } /** * 显示全局飘屏消息(支持任意位置飘过) * */ // @Subscribe(threadMode = ThreadMode.MAIN) // public void showPiaoPingMessage(MqttBean mqttBean) { // WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); // if (windowManager == null) return; // // int screenWidth = getResources().getDisplayMetrics().widthPixels; // int screenHeight = getResources().getDisplayMetrics().heightPixels; // // WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams( // WindowManager.LayoutParams.MATCH_PARENT, // WindowManager.LayoutParams.WRAP_CONTENT, // Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ? // WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY : // WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, // WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | // WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | // WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, // PixelFormat.TRANSLUCENT); // // // 设置 Gravity 为左上角 // layoutParams.gravity = Gravity.TOP | Gravity.START; // // // Y 轴随机位置 //// layoutParams.y = (int) ((Math.random() * (screenHeight - 200))); // // // 初始 X 设为负值,确保 View 在屏幕左侧外 // layoutParams.x = -screenWidth; // // View piaoPingView = LayoutInflater.from(this).inflate(R.layout.item_piaoping, null); // TextView textView = piaoPingView.findViewById(R.id.tv_name); // TextView textView2 = piaoPingView.findViewById(R.id.tv_to_name); // textView2.setText("送给"+mqttBean.getList().getToUserName()); // textView.setText(mqttBean.getList().getFromUserName()); // ImageUtils.loadHeadCC(mqttBean.getList().getGift_picture(), piaoPingView.findViewById(R.id.iv_piaoping)); // TextView tv_time = piaoPingView.findViewById(R.id.tv_num); // tv_time.setText(mqttBean.getList().getNumber()); // windowManager.addView(piaoPingView, layoutParams); // // piaoPingView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { // @Override // public void onGlobalLayout() { // piaoPingView.getViewTreeObserver().removeOnGlobalLayoutListener(this); // // // 设置锚点为左上角,避免偏移干扰 // piaoPingView.setPivotX(0); // piaoPingView.setPivotY(0); // // // 启动动画:从左外滑入 -> 右外滑出 // ObjectAnimator animator = ObjectAnimator.ofFloat( // piaoPingView, // "translationX", // 0f, // 初始偏移为 0(此时 View 在左侧外) // screenWidth // 向右移动整个屏幕宽度 // ); // animator.setDuration(2000); // 整个动画的时长为2秒 // // // 强制 GPU 渲染 // piaoPingView.setLayerType(View.LAYER_TYPE_HARDWARE, null); // // // 延迟显示2秒后开始滑出屏幕的动画 // piaoPingView.postDelayed(new Runnable() { // @Override // public void run() { // animator.start(); // } // }, 3000); // // animator.addListener(new AnimatorListenerAdapter() { // @Override // public void onAnimationEnd(Animator animation) { // windowManager.removeView(piaoPingView); // } // }); // } // }); // } }