diff --git a/BaseModule/build.gradle b/BaseModule/build.gradle index 761f2dc5..87a48c27 100644 --- a/BaseModule/build.gradle +++ b/BaseModule/build.gradle @@ -224,5 +224,6 @@ dependencies { api project(':Loadinglibrary') api project(':moduletablayout') + implementation "org.jetbrains.kotlin:kotlin-reflect:2.0.21" } diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/adapter/CirleListAdapter.java b/BaseModule/src/main/java/com/xscm/moduleutil/adapter/CirleListAdapter.java index 0012aa44..ae5a6a27 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/adapter/CirleListAdapter.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/adapter/CirleListAdapter.java @@ -4,6 +4,7 @@ import static android.view.View.GONE; import static android.view.View.VISIBLE; import static com.blankj.utilcode.util.ActivityUtils.startActivity; +import android.graphics.Color; import android.os.Bundle; import android.text.SpannableStringBuilder; import android.text.Spanned; @@ -30,6 +31,7 @@ import com.xscm.moduleutil.utils.MeHeadView; import com.xscm.moduleutil.utils.NumberFormatUtils; import com.xscm.moduleutil.utils.SpUtil; import com.xscm.moduleutil.widget.MyGridView; +import com.xscm.moduleutil.widget.ShineTextView; import com.xscm.moduleutil.widget.img.FullScreenUtil; import java.util.List; @@ -46,13 +48,13 @@ public class CirleListAdapter extends BaseQuickAdapter { if (mListener != null) { - mListener.onDianzanClick(helper.getPosition(),item); + mListener.onDianzanClick(helper.getPosition(), item); } }); @@ -139,11 +141,11 @@ public class CirleListAdapter extends BaseQuickAdapter { - if (mListener != null) mListener.onZsClick(helper.getPosition(),item); + if (mListener != null) mListener.onZsClick(helper.getPosition(), item); }); helper.getView(R.id.diandian).setOnClickListener(v -> { - if (mListener != null) mListener.onMoreClick(helper.getPosition(),item); + if (mListener != null) mListener.onMoreClick(helper.getPosition(), item); }); helper.getView(R.id.pinglun).setOnClickListener(v -> { @@ -164,6 +166,15 @@ public class CirleListAdapter extends BaseQuickAdapter extends BasePresenter impleme @Override public void putOnWheat(String roomId, String userId,String pitNum) { - MvpRef.get().showLoadings(); +// MvpRef.get().showLoadings(); // ApiClient.getInstance().putOnWheat(roomId, userId,pitNum, new BaseObserver() { // @Override // public void onSubscribe(Disposable d) { diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/base/CommonAppContext.java b/BaseModule/src/main/java/com/xscm/moduleutil/base/CommonAppContext.java index 3d0ed8a5..392c48c0 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/base/CommonAppContext.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/base/CommonAppContext.java @@ -446,8 +446,8 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio // startService(mqttServiceIntent); // } -// mqttConnect=MqttConnect.getInstance(this,"tcp://1.13.181.248","android-"+ MqttClient.generateClientId()); - mqttConnect=MqttConnect.getInstance(this,"tcp://1.13.101.98","android-"+ MqttClient.generateClientId()); + mqttConnect=MqttConnect.getInstance(this,"tcp://1.13.181.248","android-"+ MqttClient.generateClientId()); +// mqttConnect=MqttConnect.getInstance(this,"tcp://1.13.101.98","android-"+ MqttClient.generateClientId()); mqttConnect.mqttClient(); // 每次启动应用时重置状态 @@ -526,8 +526,8 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio public void upMqtt(){ if (mqttConnect==null){ -// mqttConnect=MqttConnect.getInstance(this,"tcp://1.13.181.248","android-"+ MqttClient.generateClientId()); - mqttConnect=MqttConnect.getInstance(this,"tcp://1.13.101.98","android-"+ MqttClient.generateClientId()); + mqttConnect=MqttConnect.getInstance(this,"tcp://1.13.181.248","android-"+ MqttClient.generateClientId()); +// mqttConnect=MqttConnect.getInstance(this,"tcp://1.13.101.98","android-"+ MqttClient.generateClientId()); mqttConnect.mqttClient(); } } diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/CircleListBean.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/CircleListBean.java index 02be2ee7..a1fa5712 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/CircleListBean.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/CircleListBean.java @@ -32,7 +32,7 @@ public class CircleListBean { public List title;//话题列表 public String nobility_image;//贵族图标 - public String nickname_color;//昵称颜色 + public String nickname_color = "";//昵称颜色 public String mic_cycle;//麦圈 public String read_num;//阅读数 diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/ExpandColumnBean.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/ExpandColumnBean.java index 81ace5ca..f4bd2b9a 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/ExpandColumnBean.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/ExpandColumnBean.java @@ -21,5 +21,5 @@ public class ExpandColumnBean { private String agree; private List icon; private String nobility_image;//贵族图标 - private String nickname_color;//昵称颜色 + private String nickname_color = "";//昵称颜色 } diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/RoonGiftModel.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/RoonGiftModel.java index 7ba275f2..75200f02 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/RoonGiftModel.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/RoonGiftModel.java @@ -23,7 +23,7 @@ public class RoonGiftModel { private String all_room_push; private String special; private String sort; - private String type; + private String type = ""; private String child_type; private String sold; private String cardiac; diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/UserInfo.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/UserInfo.java index f9742e61..7c381a25 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/UserInfo.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/UserInfo.java @@ -1,19 +1,23 @@ package com.xscm.moduleutil.bean; import com.google.gson.annotations.SerializedName; +import com.xscm.moduleutil.BaseEvent; import com.xscm.moduleutil.bean.room.FriendInfo; import java.io.Serializable; import java.util.List; import lombok.Data; +import lombok.EqualsAndHashCode; + /** *@author qx *@data 2025/6/3 *@description: 个人信息,点击我的获取 */ +@EqualsAndHashCode(callSuper = true) @Data -public class UserInfo implements Serializable { +public class UserInfo extends BaseEvent implements Serializable { private static final long serialVersionUID = 1L; public static final String FEMALE = "2"; public static final String MALE = "1"; @@ -69,7 +73,7 @@ public class UserInfo implements Serializable { private String ta; private String nobility_image;//贵族图标 - private String nickname_color;//昵称颜色 + private String nickname_color = "";//昵称颜色 private String mic_cycle;//麦圈 private String is_hide;//0不能设置,1:可以设置 private String hide_status;//0-取消隐身,1-设置隐身 diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomHourBean.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomHourBean.java index 9c7b0a26..db0558e5 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomHourBean.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomHourBean.java @@ -1,6 +1,9 @@ package com.xscm.moduleutil.bean.room; +import com.xscm.moduleutil.BaseEvent; + import lombok.Data; +import lombok.EqualsAndHashCode; import java.util.List; /** @@ -8,13 +11,15 @@ import java.util.List; *@data 2025/9/29 *@description:小时榜实体类 */ +@EqualsAndHashCode(callSuper = true) @Data -public class RoomHourBean { +public class RoomHourBean extends BaseEvent { private String time_range; private List lists; + @EqualsAndHashCode(callSuper = true) @Data - public class RoomListBean { + public class RoomListBean extends BaseEvent{ private String room_id; private String room_name; private int label_id; diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomPitBean.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomPitBean.java index cb8b873f..3619a561 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomPitBean.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomPitBean.java @@ -29,7 +29,7 @@ public class RoomPitBean implements Serializable { */ private String id;//id - private String pit_number;//麦位号 + private String pit_number = "";//麦位号 private String state;//麦位状态 正常 ,1封麦;3禁麦 private int is_lock;//0未锁麦 1锁麦 private int is_mute;//0未禁麦 1禁麦 diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java b/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java index 09ed0ca2..491ac6ff 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java @@ -766,6 +766,9 @@ public interface ApiServer { @GET(Constants.GET_NOBILITY_PRICE) Call> getNobilityPrice(@Query("id") String id); + @POST(Constants.POST_SEND_LOG) + Call> postSendAppLog(@Query("log_name") String logName,@Query("log_url") String logUrl); + @GET(Constants.GET_BOX_GIFT_LIST_XLH) Call> getBoxGiftListXLH( @Query("room_id") String room_id); diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java index 7b6bb7a2..7b59917c 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java @@ -3814,6 +3814,35 @@ public class RetrofitClient { }); } + + public void sendAppLog(String logName,String logPath,BaseObserver observer) { + sApiServer.postSendAppLog(logName,logPath).enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + if (response.code() == 200) { + int code = response.body().getCode(); + if (code == 1) { + observer.onNext("成功"); + }else if (code == 301){ + try { + ToastUtils.showShort(response.body().getMsg()); + CommonAppContext.getInstance().clearLoginInfo(); + } catch (ClassNotFoundException e) { + LogUtils.e( e.toString()); + } + }else { + observer.onNext("失败"); + } + } + } + + @Override + public void onFailure(Call> call, Throwable t) { + observer.onNext("失败"); + } + }); + } + /// 巡乐会抽奖 public void xlhChou(String roomId, String num, BaseObserver> observer) { diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/listener/MessageListenerSingleton.java b/BaseModule/src/main/java/com/xscm/moduleutil/listener/MessageListenerSingleton.java index 5ca1cc8b..c8274c6c 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/listener/MessageListenerSingleton.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/listener/MessageListenerSingleton.java @@ -217,7 +217,7 @@ public class MessageListenerSingleton { try { // 先退出当前群组(如果需要) if (groupId != null && !groupId.equals(roomId)) { - LogUtils.d("MessageListener", "开始退出群组: " + groupId); + LogUtils.d("MessageListener", "开始退出群组: " + groupId +"____room:"+ roomId); CountDownLatch quitLatch = new CountDownLatch(1); boolean[] quitSuccess = {false}; @@ -225,14 +225,14 @@ public class MessageListenerSingleton { V2TIMManager.getInstance().quitGroup("room" + groupId, new V2TIMCallback() { @Override public void onSuccess() { - LogUtils.d("MessageListener", "退出群组成功: " + groupId); + LogUtils.d("MessageListener", "退出群组成功: " + groupId+"____room:"+ roomId); quitSuccess[0] = true; quitLatch.countDown(); } @Override public void onError(int code, String desc) { - LogUtils.e("MessageListener", "退出群组失败: " + groupId + ", code=" + code + ", desc=" + desc); + LogUtils.e("MessageListener", "退出群组失败: " + groupId +"____room:"+ roomId + ", code=" + code + ", desc=" + desc); quitSuccess[0] = false; quitLatch.countDown(); } diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/presenter/BasePresenter.java b/BaseModule/src/main/java/com/xscm/moduleutil/presenter/BasePresenter.java index c184da6a..472acbca 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/presenter/BasePresenter.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/presenter/BasePresenter.java @@ -17,7 +17,7 @@ import io.reactivex.disposables.Disposable; public abstract class BasePresenter implements IPresenter { protected CompositeDisposable mDisposables = new CompositeDisposable(); protected RetrofitClient api = RetrofitClient.getInstance(); - protected Reference MvpRef; + protected Reference MvpRef; protected Context mContext; @Deprecated diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/rtc/AgoraManager.java b/BaseModule/src/main/java/com/xscm/moduleutil/rtc/AgoraManager.java index cceebc3a..4e932288 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/rtc/AgoraManager.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/rtc/AgoraManager.java @@ -863,7 +863,7 @@ public class AgoraManager { //打开对方支持的推流 public void muteAllRemoteAudioStreamsExUserId(boolean enabled){ if (rtcEngine != null){ -// rtcEngine.muteRemoteAudioStreamEx(pkUserId,enabled,connection); + rtcEngine.muteRemoteAudioStreamEx(pkUserId,enabled,connection); } } diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/utils/ClickUtils.java b/BaseModule/src/main/java/com/xscm/moduleutil/utils/ClickUtils.java index ca420428..faeebd34 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/utils/ClickUtils.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/utils/ClickUtils.java @@ -1,19 +1,35 @@ package com.xscm.moduleutil.utils; + +import android.os.SystemClock; +import android.util.SparseArray; +import android.view.View; + /** *@author qx *@data 2025/9/10 *@description: 防止重复点击的工具类 */ public class ClickUtils { - private static final long CLICK_INTERVAL = 1000; // 1000ms内不允许重复点击 - private static long lastClickTime = 0; + private static final long DEFAULT_CLICK_INTERVAL = 500; + private static final SparseArray lastClickTimes = new SparseArray<>(); - public static boolean isFastDoubleClick() { - long currentTime = System.currentTimeMillis(); - if (currentTime - lastClickTime < CLICK_INTERVAL) { + public static boolean isFastDoubleClick(View view) { + return isFastDoubleClick(view, DEFAULT_CLICK_INTERVAL); + } + + public static boolean isFastDoubleClick(View view, long interval) { + long currentTime = SystemClock.elapsedRealtime(); + int viewId = view.getId(); + Long lastClickTime = lastClickTimes.get(viewId); + if (lastClickTime != null && currentTime - lastClickTime < interval) { return true; } - lastClickTime = currentTime; + lastClickTimes.put(viewId, currentTime); return false; } -} + + // 新增:清理所有点击记录 + public static void clearAllClickRecords() { + lastClickTimes.clear(); + } +} \ No newline at end of file diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/utils/ImageUtils.java b/BaseModule/src/main/java/com/xscm/moduleutil/utils/ImageUtils.java index 4f2d75a6..68988f01 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/utils/ImageUtils.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/utils/ImageUtils.java @@ -196,7 +196,19 @@ public class ImageUtils { } - + public static void loadRoomItem(String path, ImageView mImageView) { + if (mImageView == null) { + return; + } + Context context = mImageView.getContext(); + if (context instanceof android.app.Activity) { + android.app.Activity activity = (android.app.Activity) context; + if (activity.isFinishing() || (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && activity.isDestroyed())) { + return; + } + } + Glide.with(mImageView).load(path).diskCacheStrategy(DiskCacheStrategy.ALL).into(mImageView); + } public static void loadHeadCC(String path, ImageView mImageView) { if (mImageView == null) { diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/utils/MeHeadView.java b/BaseModule/src/main/java/com/xscm/moduleutil/utils/MeHeadView.java index 2e361722..b68dbb3b 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/utils/MeHeadView.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/utils/MeHeadView.java @@ -8,6 +8,7 @@ import android.widget.ImageView; import androidx.constraintlayout.widget.ConstraintLayout; +import com.blankj.utilcode.util.LogUtils; import com.xscm.moduleutil.R; import com.xscm.moduleutil.utils.logger.Logger; import com.xscm.moduleutil.widget.AvatarFrameView; @@ -47,7 +48,7 @@ public class MeHeadView extends ConstraintLayout { } public void setData(String headPicture, String framePicture, String nobilityImage) { - Logger.e(headPicture, framePicture, nobilityImage); + LogUtils.e(headPicture, framePicture, nobilityImage); if (!TextUtils.isEmpty(headPicture)) { ImageUtils.loadHead(headPicture, mRiv); } diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/utils/TimeUtils.java b/BaseModule/src/main/java/com/xscm/moduleutil/utils/TimeUtils.java index 2db7097a..38ce26c6 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/utils/TimeUtils.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/utils/TimeUtils.java @@ -207,7 +207,7 @@ public class TimeUtils { //获取当前日期 public static String getCurrentDate2() { Date d = new Date(); - SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss SSS"); + SimpleDateFormat sf = new SimpleDateFormat("yyyy_MM_dd_hh_mm_ss_SSS"); return sf.format(d); } /** diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/utils/cos/CosUploadManager.java b/BaseModule/src/main/java/com/xscm/moduleutil/utils/cos/CosUploadManager.java index 12a8e9b8..b077cf3c 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/utils/cos/CosUploadManager.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/utils/cos/CosUploadManager.java @@ -80,7 +80,7 @@ public class CosUploadManager { String tmpSecretKey = tempKeyBean.getCredentials().getTmpSecretKey(); // 临时密钥 SecretKey String sessionToken = tempKeyBean.getCredentials().getSessionToken(); // 临时密钥 Token long expiredTime = tempKeyBean.getExpiredTime();//临时密钥有效截止时间戳,单位是秒 -// 建议返回服务器时间作为签名的开始时间,避免由于用户手机本地时间偏差过大导致请求过期 + // 建议返回服务器时间作为签名的开始时间,避免由于用户手机本地时间偏差过大导致请求过期 long startTime = tempKeyBean.getStartTime(); //临时密钥有效起始时间,单位是秒 // 存储桶所在地域简称,例如广州地区是 ap-guangzhou String region = tempKeyBean.getRegion(); @@ -95,13 +95,13 @@ public class CosUploadManager { CosXmlService cosXmlService = new CosXmlService(mContext, serviceConfig); // 任何 CosXmlRequest 都支持这种方式,例如上传 PutObjectRequest、下载 GetObjectRequest、删除 DeleteObjectRequest 等 -// 以下用上传进行示例 + // 以下用上传进行示例 PutObjectRequest putRequest = new PutObjectRequest(bucketName, objectKey, localFilePath); -// sessionQCloudCredentials 为第一步“初始化密钥”中获取到的单次临时密钥 + // sessionQCloudCredentials 为第一步“初始化密钥”中获取到的单次临时密钥 putRequest.setCredential(sessionQCloudCredentials); -// 初始化 TransferConfig,这里使用默认配置,如果需要定制,请参考 SDK 接口文档 + // 初始化 TransferConfig,这里使用默认配置,如果需要定制,请参考 SDK 接口文档 TransferConfig transferConfig = new TransferConfig.Builder().build(); -// 初始化 TransferManager + // 初始化 TransferManager TransferManager transferManager = new TransferManager(cosXmlService, transferConfig); COSXMLUploadTask uploadTask = transferManager.upload(putRequest, null); uploadTask.setCosXmlResultListener(new CosXmlResultListener() { diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/utils/logger/DataLogger.java b/BaseModule/src/main/java/com/xscm/moduleutil/utils/logger/DataLogger.java index 844c2f9d..abebba41 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/utils/logger/DataLogger.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/utils/logger/DataLogger.java @@ -63,7 +63,7 @@ public final class DataLogger implements DataLoggingInterceptor.Logger { } // 响应结束,打印整条日志 if (message.startsWith(DataLoggingInterceptor.sLogEndFlag)) { - if (mMessage.toString().contains("https://test.vespa.xscmmidi.site/api/Xintiao/keep_xintiao")) + if (mMessage.toString().contains("Xintiao/keep_xintiao")) return; LogUtils.d(mMessage.toString()); return; diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/utils/oss/OSSOperUtils.java b/BaseModule/src/main/java/com/xscm/moduleutil/utils/oss/OSSOperUtils.java index b125c594..02c09dbb 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/utils/oss/OSSOperUtils.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/utils/oss/OSSOperUtils.java @@ -17,6 +17,7 @@ import com.blankj.utilcode.util.FileUtils; import com.blankj.utilcode.util.ThreadUtils; import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.utils.Md5Utils; +import com.xscm.moduleutil.utils.TimeUtils; import com.xscm.moduleutil.utils.logger.Logger; import java.io.File; @@ -53,6 +54,7 @@ public class OSSOperUtils { public static final String img = "images/android_images/"; public static final String video = "video/"; public static final String audio = "audio/"; + public static final String AppLog = "applog/"; /** @@ -77,6 +79,15 @@ public class OSSOperUtils { // } } + public static String getAppLogPath(File file) { + String fileMD5 = Md5Utils.getFileMD5(file); + String suffix = ""; + if (file.getName().contains(".")) { + suffix = file.getName().substring(file.getName().lastIndexOf(".")); + } + return AppLog + fileMD5 + TimeUtils.getCurrentDate2() + suffix; + } + public static OSSOperUtils newInstance() { if (null == utils) { utils = new OSSOperUtils(); diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java b/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java index a03ae173..fff2a341 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java @@ -411,6 +411,7 @@ public class Constants { public static final String GET_NOBILITY_DETAIL = "/api/Nobility/get_nobility_detail";//爵位详情 public static final String GET_NOBILITY_LIST = "/api/Nobility/get_nobility_list";//爵位列表 public static final String GET_NOBILITY_PRICE = "/api/Nobility/get_nobility_price";//爵位购买价格 + public static final String POST_SEND_LOG = "api/Report/android_log_report";//上传log信息 diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/widget/ShineTextView.kt b/BaseModule/src/main/java/com/xscm/moduleutil/widget/ShineTextView.kt new file mode 100644 index 00000000..fac5d00b --- /dev/null +++ b/BaseModule/src/main/java/com/xscm/moduleutil/widget/ShineTextView.kt @@ -0,0 +1,125 @@ +package com.xscm.moduleutil.widget + + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.LinearGradient +import android.graphics.Matrix +import android.graphics.Shader +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatTextView +import com.xscm.moduleutil.R + + +/** + * + * 流光字体 + * @author TXZ + * @version 1.0 + * created by 2024/5/23 9:32 + */ +class ShineTextView : AppCompatTextView { + + //是否开启流光,默认开启 + var isShine = true + + //默认是流光效果 0 流光 1 注入效果 + var shineType = 0 + //流光效果下字体流动次数 + var shineCount: Int = Int.MAX_VALUE + //注入效果 开始,中间,结束 + var startColor: Int = Color.WHITE + var shineColor: Int = Color.WHITE + var endColor: Int = Color.WHITE + //一次动效时长 + var shineDuration: Int = 400 + + var _count: Int = 0 //自行运行动画次数 + + private lateinit var mLinearGradient: LinearGradient + private var mGradientMatrix: Matrix = Matrix() + private var mViewWidth = 0 + private var mTranslate = 0 + + constructor(context: Context) : this(context, null) + constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0) + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + obtainAttributes(attrs!!) + } + + + private fun obtainAttributes(attrs: AttributeSet) { + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.ShineTextView) + typedArray.apply { + isShine = typedArray.getBoolean(R.styleable.ShineTextView_isShine, isShine) + shineType = typedArray.getInt(R.styleable.ShineTextView_shineType, shineType) + startColor = typedArray.getColor(R.styleable.ShineTextView_startColor, startColor) + shineColor = typedArray.getColor(R.styleable.ShineTextView_midColor, shineColor) + endColor = typedArray.getColor(R.styleable.ShineTextView_endColor, endColor) + shineCount = typedArray.getInt(R.styleable.ShineTextView_shineCount, shineCount) + shineDuration = + typedArray.getInt(R.styleable.ShineTextView_shineDuration, shineDuration) + } + typedArray.recycle() + } + + + override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { + super.onSizeChanged(w, h, oldw, oldh) + if (isShine) { + mViewWidth = measuredWidth + when (shineType) { + 0 -> { + //流光效果 + mLinearGradient = LinearGradient( + 0f, + 0f, + (mViewWidth / 4).toFloat(), + 0f, + intArrayOf(currentTextColor, shineColor, currentTextColor), + null, + Shader.TileMode.CLAMP + ) + } + + 1 -> { + mLinearGradient = LinearGradient( + 0f, + 0f, + (mViewWidth / 6).toFloat(), + 0f, + intArrayOf(endColor, shineColor, startColor), + null, + Shader.TileMode.CLAMP + ) + } + } + paint.shader = mLinearGradient + } + } + + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + if (!isShine || !::mLinearGradient.isLateinit) return + mTranslate += mViewWidth / (shineDuration / 50) + if (mTranslate > 1.2 * mViewWidth) { + mTranslate = -mViewWidth / 5 + _count++ + } + mGradientMatrix.setTranslate(mTranslate.toFloat(), 0f) + mLinearGradient.setLocalMatrix(mGradientMatrix) + when { + shineType == 0 && _count < shineCount -> postInvalidateDelayed(50) + shineType == 1 && _count < 1 -> postInvalidateDelayed(50) + else -> { + mGradientMatrix.setTranslate((1.2 * mViewWidth).toFloat(), 0f) + mLinearGradient.setLocalMatrix(mGradientMatrix) + } + } + } + +} diff --git a/BaseModule/src/main/res/layout/ease_row_received_message_user_send.xml b/BaseModule/src/main/res/layout/ease_row_received_message_user_send.xml index 0cbb9e3d..98b3b50b 100644 --- a/BaseModule/src/main/res/layout/ease_row_received_message_user_send.xml +++ b/BaseModule/src/main/res/layout/ease_row_received_message_user_send.xml @@ -1,16 +1,14 @@ - + @@ -25,104 +23,105 @@ + android:id="@+id/avatar" + android:layout_width="@dimen/dp_28" + android:layout_height="@dimen/dp_28" + android:layout_marginStart="@dimen/dp_8" + android:layout_marginTop="@dimen/dp_3" + android:layout_marginEnd="@dimen/dp_3" + android:layout_marginBottom="@dimen/dp_3" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:riv_oval="true" /> - + + android:id="@+id/line" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/dp_2" + android:layout_marginTop="@dimen/dp_5" + android:orientation="horizontal" + app:layout_constraintStart_toEndOf="@+id/avatar" + app:layout_constraintTop_toBottomOf="@+id/tv_name" /> + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="4dp" + android:layout_marginTop="2dp" + android:gravity="left|center_vertical" + android:orientation="horizontal" + android:padding="@dimen/dp_3" + android:paddingEnd="@dimen/dp_10" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/avatar" + app:layout_constraintTop_toBottomOf="@+id/line"> + android:id="@+id/tv_content" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:lineHeight="@dimen/dp_20" + android:lineSpacingExtra="@dimen/dp_2" + android:paddingStart="@dimen/dp_8" + android:paddingEnd="@dimen/dp_8" + android:textColor="@color/white" + android:textSize="@dimen/sp_14" + tools:text="饶利: 潇洒亼◇生2.0:" + tools:visibility="gone" /> + android:adjustViewBounds="true" + android:scaleType="fitXY" + android:visibility="gone" + tools:src="@mipmap/ic_launcher" + tools:visibility="visible" /> - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + diff --git a/BaseModule/src/main/res/layout/item_cirle_list.xml b/BaseModule/src/main/res/layout/item_cirle_list.xml index dfec5955..006a1c45 100644 --- a/BaseModule/src/main/res/layout/item_cirle_list.xml +++ b/BaseModule/src/main/res/layout/item_cirle_list.xml @@ -44,11 +44,12 @@ android:gravity="center_vertical" android:orientation="vertical"> - diff --git a/BaseModule/src/main/res/layout/loading_dialog.xml b/BaseModule/src/main/res/layout/loading_dialog.xml index 4ebabebd..eec234ee 100644 --- a/BaseModule/src/main/res/layout/loading_dialog.xml +++ b/BaseModule/src/main/res/layout/loading_dialog.xml @@ -4,7 +4,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - android:background="@color/transparent"> + android:background="@drawable/shape_dialog"> diff --git a/BaseModule/src/main/res/values/styles.xml b/BaseModule/src/main/res/values/styles.xml index 726a23df..78195702 100644 --- a/BaseModule/src/main/res/values/styles.xml +++ b/BaseModule/src/main/res/values/styles.xml @@ -302,4 +302,29 @@ true @null + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/BaseMvpActivity.java b/MainModule/src/main/java/com/xscm/modulemain/BaseMvpActivity.java index f7dc14f4..5937ca3c 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/BaseMvpActivity.java +++ b/MainModule/src/main/java/com/xscm/modulemain/BaseMvpActivity.java @@ -50,6 +50,7 @@ import com.xscm.moduleutil.event.MqttBean; import com.xscm.moduleutil.event.RedBean; import com.xscm.moduleutil.event.UnreadCountEvent; import com.xscm.moduleutil.http.RetrofitClient; +import com.xscm.moduleutil.utils.ClickUtils; import com.xscm.moduleutil.utils.ImageUtils; import com.xscm.moduleutil.utils.LanguageUtil; import com.tencent.imsdk.v2.V2TIMManager; @@ -87,22 +88,22 @@ public abstract class BaseMvpActivity

{ // 点击“确认”按钮时执行删除操作 - if (CommonAppContext.getInstance().playId!=null){ + if (CommonAppContext.getInstance().playId != null) { RoomManager.getInstance().exitRoom(CommonAppContext.getInstance().playId); } try { @@ -260,7 +261,6 @@ public abstract class BaseMvpActivity

clazz){ + public void singleTaskToActivity(Class clazz) { Intent intent = new Intent(this, clazz); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); - startActivity( intent); + startActivity(intent); } - public void toActivity(Class clazz, Bundle bundle){ + public void toActivity(Class clazz, Bundle bundle) { Intent intent = new Intent(this, clazz); intent.putExtras(bundle); startActivity(intent); diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/login/activity/ImproveInfoActivity.java b/MainModule/src/main/java/com/xscm/modulemain/activity/login/activity/ImproveInfoActivity.java index ae67e14e..08395357 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/login/activity/ImproveInfoActivity.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/login/activity/ImproveInfoActivity.java @@ -234,7 +234,7 @@ public class ImproveInfoActivity extends BaseMvpActivity localMedia1 = PictureSelector.obtainSelectorList(data); if (localMedia1 != null && localMedia1.size() != 0) { LocalMedia imgMedia = localMedia1.get(0); - MvpPre.uploadFile(new File(imgMedia.getRealPath()), 3); + MvpPre.uploadFile(new File(imgMedia.getRealPath()), 0); } break; } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/login/contacts/ImproveInfoPresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/login/contacts/ImproveInfoPresenter.java index 56dd037b..fe60919c 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/login/contacts/ImproveInfoPresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/login/contacts/ImproveInfoPresenter.java @@ -24,7 +24,10 @@ public class ImproveInfoPresenter extends BasePresenter(mView); + } +// MvpRef.get().showLoadings("上传中..."); String url = OSSOperUtils.getPath(file, type); CosUploadManager.getInstance(CommonAppContext.getInstance()).upParameters(url,file.getPath(), new CosUploadManager.UploadCallback() { @Override @@ -100,6 +103,9 @@ public class ImproveInfoPresenter extends BasePresenter(mView); + } MvpRef.get().updateNicknameSuccess(s); } @@ -121,6 +127,9 @@ public class ImproveInfoPresenter extends BasePresenter(mView); + } MvpRef.get().updateSexTrue(userPictrue); } @@ -141,6 +150,9 @@ public class ImproveInfoPresenter extends BasePresenter(mView); + } MvpRef.get().updateSuccess(userBean); } }); diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/plaza/activity/DynamicDetailActivity.java b/MainModule/src/main/java/com/xscm/modulemain/activity/plaza/activity/DynamicDetailActivity.java index 0b881eda..3a94b14b 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/plaza/activity/DynamicDetailActivity.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/plaza/activity/DynamicDetailActivity.java @@ -23,6 +23,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.blankj.utilcode.util.ActivityUtils; +import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.ToastUtils; import com.xscm.modulemain.R; import com.xscm.modulemain.databinding.ActivityDynamicDetailBinding; @@ -274,6 +275,8 @@ public class DynamicDetailActivity extends BaseMvpActivity { - if ( ClickUtils.isFastDoubleClick()){ + if ( ClickUtils.isFastDoubleClick(mBinding.rvPopularRoom)){ return; } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt b/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt index b162925e..57749eee 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt @@ -122,6 +122,7 @@ import com.xscm.moduleutil.bean.room.FriendUserBean import com.xscm.moduleutil.bean.room.RoomAuction import com.xscm.moduleutil.bean.room.RoomAuction.AuctionListBean import com.xscm.moduleutil.bean.room.RoomBean +import com.xscm.moduleutil.bean.room.RoomHourBean import com.xscm.moduleutil.bean.room.RoomInfoResp import com.xscm.moduleutil.bean.room.RoomOnline import com.xscm.moduleutil.bean.room.RoomOnlineBean @@ -155,6 +156,7 @@ import com.xscm.moduleutil.rtc.AgoraManagerEx import com.xscm.moduleutil.rtc.MusicPlayBean import com.xscm.moduleutil.service.MyRoomSingleton import com.xscm.moduleutil.utils.ARouteConstants +import com.xscm.moduleutil.utils.ClickUtils import com.xscm.moduleutil.utils.ColorManager import com.xscm.moduleutil.utils.ImageUtils import com.xscm.moduleutil.utils.PermissionDescriptionHelper @@ -251,7 +253,6 @@ class RoomActivity : BaseMvpActivity(), override fun doDone() { - Log.e("AAAAAAAAAAA", "C " + com.xscm.moduleutil.utils.TimeUtils.getCurrentDate2()) isOnline = intent.getBooleanExtra("isOnline", false) password = intent.getStringExtra("password") roomId = intent.getStringExtra("roomId") @@ -271,12 +272,14 @@ class RoomActivity : BaseMvpActivity(), } } //重新进入无需传参 -// isOnline = intent.getBooleanExtra("isOnline", false) -// password = intent.getStringExtra("password") -// roomId = intent.getStringExtra("roomId") -// mRoomInfoResp = intent.getSerializableExtra("roomInfo") as RoomInfoResp? -// taskId = intent.getStringExtra("taskId") - + val roomInfoResp = intent.getSerializableExtra("roomInfo") as RoomInfoResp? + if (!roomInfoResp?.room_info?.room_id.equals(mRoomInfoResp?.room_info?.room_id)) { + isOnline = intent.getBooleanExtra("isOnline", false) + password = intent.getStringExtra("password") + roomId = intent.getStringExtra("roomId") + taskId = intent.getStringExtra("taskId") + mRoomInfoResp = roomInfoResp + } LogUtils.e("RoomActivity", "onNewIntent") } @@ -439,7 +442,11 @@ class RoomActivity : BaseMvpActivity(), override fun initData() { if (!EasyPermissions.hasPermissions(this, *permissions)) { - PermissionDescriptionHelper.addPermissionDescription(false, mBinding?.root as ViewGroup, permissions) + PermissionDescriptionHelper.addPermissionDescription( + false, + mBinding?.root as ViewGroup, + permissions + ) EasyPermissions.requestPermissions( this, "请开启录音使用权限", 1, *permissions @@ -585,6 +592,8 @@ class RoomActivity : BaseMvpActivity(), mBinding!!.roomTop.root.isClickable = false setView(mRoomInfoResp) + + MvpPre?.getRoomOnline(roomId, "1", "10") } // 添加弹框到管理列表 @@ -693,10 +702,10 @@ class RoomActivity : BaseMvpActivity(), } } -/** - * 设置顶部操作按钮的可见性和点击事件 - * 包括结束按钮和延时按钮的初始化和事件绑定 - */ + /** + * 设置顶部操作按钮的可见性和点击事件 + * 包括结束按钮和延时按钮的初始化和事件绑定 + */ fun tob() { // 获取并显示stubButtons2布局 val stub = mBinding!!.roomTop.stubButtons2 @@ -708,7 +717,7 @@ class RoomActivity : BaseMvpActivity(), imActionJs.setOnClickListener { dialogEnd() } // 设置结束按钮点击事件,调用dialogEnd()方法 imActionYs.setOnClickListener { - // 设置延时按钮点击事件,调用MvpPre的auctionDelay方法,传入当前拍卖ID + // 设置延时按钮点击事件,调用MvpPre的auctionDelay方法,传入当前拍卖ID MvpPre!!.auctionDelay( SpUtil.getauctionId() ) @@ -755,8 +764,8 @@ class RoomActivity : BaseMvpActivity(), if (visible) View.VISIBLE else View.INVISIBLE } - // 根据传入的visible参数设置JS按钮的可见性 - // 使用View.VISIBLE显示按钮,使用View.INVISIBLE隐藏按钮 + // 根据传入的visible参数设置JS按钮的可见性 + // 使用View.VISIBLE显示按钮,使用View.INVISIBLE隐藏按钮 fun upYs(visible: Boolean) { mBinding!!.roomTop.imActionYs.visibility = if (visible) View.VISIBLE else View.INVISIBLE @@ -1688,7 +1697,7 @@ class RoomActivity : BaseMvpActivity(), when (typeId) { RoomType.AUCTION -> { if ("9" == pitNumber) { - mRoomInfoResp!!.room_info.pit_list[0] = getPitBean(messageEvent,1) + mRoomInfoResp!!.room_info.pit_list[0] = getPitBean(messageEvent, 1) if (mRoomInfoResp!!.user_info != null) { mRoomInfoResp!!.user_info.pit_number = pitNumber.toInt() } @@ -1696,6 +1705,7 @@ class RoomActivity : BaseMvpActivity(), roomFragment!!.upRoomInfoData(mRoomInfoResp) roomFragment!!.handleRoomMessage(messageEvent) } + RoomType.DATING -> { val labelId = mRoomInfoResp!!.room_info.label_id if ("2" == labelId) { @@ -1707,16 +1717,18 @@ class RoomActivity : BaseMvpActivity(), roomFragment!!.handleRoomMessage(messageEvent) } } + RoomType.MUTUAL_ENTERTAINMENT -> { mBinding!!.rlMore.visibility = View.GONE mBinding!!.rlMisc.visibility = View.GONE roomFragment!!.handleRoomMessage(messageEvent) } - else ->{ + + else -> { roomFragment!!.updateSeatViewExchangedWithPitArray(mRoomInfoResp) } - } + } } @@ -1742,6 +1754,7 @@ class RoomActivity : BaseMvpActivity(), aBoolean = true ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding) setBoolean(aBoolean) + mRoomInfoResp?.user_info?.pit_number = 0 setRoleType(0, 0) switchMic(2) } @@ -1869,16 +1882,19 @@ class RoomActivity : BaseMvpActivity(), private fun handleMsgType1001(roomMessageEvent: RoomMessageEvent) { - if (roomMessageEvent.text.fromUserInfo.enter_image?.isNotEmpty() == true){ + if (roomMessageEvent.text.fromUserInfo.enter_image?.isNotEmpty() == true) { showFloatingMessage(roomMessageEvent.text.fromUserInfo) } + MvpPre?.getRoomOnline(roomId, "1", "10") + // number++ // mBinding!!.roomTop.tvNum.text = number.toString() + "" } + private fun showFloatingMessage(userInfo: UserInfo) { try { // 清理之前的视图(如果存在) - if ( currentMqttView?.getParent() != null) { + if (currentMqttView?.getParent() != null) { val parent = currentMqttView?.getParent() as ViewGroup parent.removeView(currentMqttView) } @@ -1913,6 +1929,7 @@ class RoomActivity : BaseMvpActivity(), } } + private fun resetAndStartMqttAnimation(view: View, onAnimationEnd: Runnable) { try { val screenWidth = getScreenWidth() @@ -1936,10 +1953,14 @@ class RoomActivity : BaseMvpActivity(), // 停留后退出 CommonAppContext.postDelayed(Runnable { val exitAnim = TranslateAnimation( - Animation.ABSOLUTE, ((screenWidth - SystemUtils.getWidth(316)) / 2).toFloat(), - Animation.ABSOLUTE, -screenWidth.toFloat(), - Animation.ABSOLUTE, 0f, - Animation.ABSOLUTE, 0f + Animation.ABSOLUTE, + ((screenWidth - SystemUtils.getWidth(316)) / 2).toFloat(), + Animation.ABSOLUTE, + -screenWidth.toFloat(), + Animation.ABSOLUTE, + 0f, + Animation.ABSOLUTE, + 0f ) exitAnim.setDuration(3000) exitAnim.setInterpolator(DecelerateInterpolator(2f)) @@ -1968,6 +1989,7 @@ class RoomActivity : BaseMvpActivity(), onAnimationEnd.run() } } + private fun getScreenWidth(): Int { val displayMetrics = DisplayMetrics() if (getWindowManager() != null) { @@ -1993,11 +2015,13 @@ class RoomActivity : BaseMvpActivity(), } mBinding!!.roomTop.tvNum.text = number.toString() if (text == null || text.fromUserInfo == null) return - if (text.fromUserInfo.user_id == SpUtil.getUserId()) { - MessageListenerSingleton.quitGroup(roomId); - quit(); - performExitRoom(1); - } +// if (text.fromUserInfo.user_id == SpUtil.getUserId()) { +// MessageListenerSingleton.quitGroup(roomId); +// quit() +// performExitRoom(1) +// } + MvpPre?.getRoomOnline(roomId, "1", "10") + } private fun handleMsgType1029(messageEvent: RoomMessageEvent, text: T?) { @@ -2353,6 +2377,9 @@ class RoomActivity : BaseMvpActivity(), private var mCountDownTimer2: CountDownTimer? = null private fun onClick(view: View) { + if (ClickUtils.isFastDoubleClick(view)) { + return + } val id = view.id if (id == R.id.btn_follow) { MvpPre!!.userGuanz(mRoomInfoResp!!.room_info.room_id, "2") @@ -2513,7 +2540,7 @@ class RoomActivity : BaseMvpActivity(), return 0 } - private fun getHostUser(): Int { + fun getHostUser(): Int { if (mRoomInfoResp?.getUser_info()?.getPit_number() == 9) { return if (mRoomInfoResp?.getUser_info()?.getIs_room_owner() == 1) { 1 @@ -2556,7 +2583,6 @@ class RoomActivity : BaseMvpActivity(), RoomManager.getInstance().exitRoom(roomId) // 清理资源 cleanupResources() - finish() } @@ -2879,6 +2905,7 @@ class RoomActivity : BaseMvpActivity(), // 设置对话框在底部显示 val window = dialog.window if (window != null) { + window.decorView.setPadding(0, 0, 0, 0) window.setGravity(Gravity.BOTTOM) // 修复宽度问题 window.setLayout( @@ -3006,121 +3033,19 @@ class RoomActivity : BaseMvpActivity(), } } + private var isSwitchRoom: Boolean = false + // TODO:不进入 2025/8/26 加入房间 override fun roomInfo(resp: RoomInfoResp) { - if (true) + if (!isSwitchRoom) return - AppStateManager.getInstance().roomInfo = resp - val roomBean = resp.room_info - this.mRoomBean = roomBean - this.mRoomUserBean = resp.user_info - this.mRoomOwnerBean = resp.room_owner - this.roomId = roomBean.room_id - MessageListenerSingleton.getInstance().joinGroup(roomId) //加入房间im - ImageUtils.loadHeadCC(resp.room_info.room_cover, mBinding!!.roomTop.avatar) - mBinding!!.roomTop.name.text = roomBean.room_name - mBinding!!.roomTop.idVal.text = "ID:" + roomBean.room_number - if (mRoomUserBean?.getIs_room_owner() == 1) { - mBinding!!.roomTop.btnFollow.visibility = View.GONE - } else { - mBinding!!.roomTop.btnFollow.visibility = View.VISIBLE - if (resp.isCollect) { - mBinding!!.roomTop.btnFollow.background = - resources.getDrawable(com.xscm.moduleutil.R.mipmap.collected) - mBinding!!.roomTop.btnFollow.text = "" - } - } - number = roomBean.online_number - mBinding!!.roomTop.tvNum.text = number.toString() + "" - - val userIds = StringBuilder() - for (i in mRoomInfoResp!!.room_info.pit_list.indices) { - val userId = mRoomInfoResp!!.room_info.pit_list[i].user_id - if (userId != null && userId != "0" && !userId.isEmpty()) { - if (userIds.length > 0) { - userIds.append(",") - } - userIds.append(userId) - } - } - if (!isFinishing && !isDestroyed) { - resetFragment() - upHeight() - } else { - Log.e("Fragment", "Fragment transaction skipped due to state loss.") - } - LogUtils.e("加入", roomId) - - CommonAppContext.getInstance().isPlaying = true - CommonAppContext.getInstance().playId = roomId - CommonAppContext.getInstance().playName = mRoomBean!!.room_name - - CommonAppContext.getInstance().playCover = resp.room_info.room_cover - CommonAppContext.getInstance().showSelf = resp.is_show_self == 1 - - if (mRoomUserBean?.getIs_collect() == 1) { - mBinding!!.roomTop.btnFollow.background = - resources.getDrawable(com.xscm.moduleutil.R.mipmap.yishouc) - mBinding!!.roomTop.btnFollow.text = "" - } else { - ThemeableDrawableUtils.setThemeableRoundedBackground( - mBinding!!.roomTop.btnFollow, - ColorManager.getInstance().primaryColorInt, - 53 - ) - mBinding!!.roomTop.btnFollow.setTextColor(ColorManager.getInstance().buttonColorInt) - mBinding!!.roomTop.btnFollow.text = "收藏" - // mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.collect)); - } - if ((roomBean.type_id == "3" || roomBean.type_id == "1" || roomBean.type_id == "4") && roomBean.label_id == "2") { - AgoraManager.getInstance().isBjMusic = false - } else { - AgoraManager.getInstance().isBjMusic = true - } - - AgoraManager.stopMuisc() - initializeAudio() - - - toutiao() - upRoomInfo(resp) - - - if (userIds.length > 0 && roomId != null) { -// MvpPre.userOnlineStatus(userIds.toString(), roomId); - } - if (publicScreenFragment != null) { - publicScreenFragment!!.upRoomInfo(resp) - } - instView() - - if (mRoomInfoResp!!.user_info.pit_number == 9 && mRoomInfoResp!!.user_info.user_id == SpUtil.getUserId()) { - mBinding!!.roomTop.rl.visibility = View.VISIBLE - ivSoundEffects(true) - } else { - mBinding!!.roomTop.rl.visibility = View.GONE - ivSoundEffects(false) - } - - if (resp.room_info.type_id == "7" || resp.room_info.type_id == "2") { - mBinding!!.rlMore.visibility = View.GONE - mBinding!!.rlMisc.visibility = View.GONE - } - setupEffectView() - - if (mRoomInfoResp!!.gift_cycle != null && mRoomInfoResp!!.gift_cycle.xlh_info != null && mRoomInfoResp!!.gift_cycle.xlh_info.xlh_status != null && mRoomInfoResp!!.gift_cycle.xlh_info.xlh_status == "1") { - mBinding?.xlhRk?.visibility = View.VISIBLE - xlhDjs(mRoomInfoResp!!.gift_cycle.xlh_info.end_time) - } else { - mBinding?.xlhRk?.visibility = View.INVISIBLE - releaseCountDownTimer1() - } - - if (mRoomInfoResp!!.hour_ranking_open == 1) { - mBinding!!.clXsb.visibility = View.VISIBLE - } else { - mBinding!!.clXsb.visibility = View.GONE - } + mRoomInfoResp = resp + isOnline = true + password = "" + roomId = mRoomInfoResp?.room_info?.room_id + taskId = null + initPublicScreenFragment() + setView(resp) } //隐藏视图 @@ -3466,6 +3391,18 @@ class RoomActivity : BaseMvpActivity(), performExitRoom(2) } + is RoomHourBean.RoomListBean -> { + AgoraManager.getInstance().cleanup() + roomId = event.room_id + isSwitchRoom = true + // 重新连接房间相关服务 + resumeRoomState() + publicScreenFragment?.onDestroy() + publicScreenFragment = null + + MvpPre?.getRoomIn(event.room_id, "") + } + is HeadlineBean -> { mRoomInfoResp!!.room_info.head_line = event toutiao() @@ -3565,45 +3502,45 @@ class RoomActivity : BaseMvpActivity(), override fun onResume() { super.onResume() - GiftDisplayManager.getInstance().setupDisplayView(mBinding?.giftContainer) - CommonAppContext.getInstance().isShow = true - CommonAppContext.getInstance().isPlaying = true - CommonAppContext.getInstance().isRoomJoininj = false - // 当Activity恢复时,重置标记 - userLeaving = true - - MvpPre!!.roomRedPackets(roomId); - LogUtils.e("RoomActivity", "onResume") - - if ((mRoomInfoResp?.room_info?.type_id.equals("1") || mRoomInfoResp?.room_info?.type_id.equals( - "8" - ) || mRoomInfoResp?.room_info?.type_id.equals( - "3" - ) - || mRoomInfoResp?.room_info?.type_id.equals("4")) && mRoomInfoResp?.room_info?.label_id.equals( - "2" - ) - ) { - return - } - if (isInBackground) { - isInBackground = false - MvpPre!!.postRoomInfo(CommonAppContext.getInstance().playId) - } - - // 检查是否从最小化状态恢复 - if (isMinimized) { - isMinimized = false - clearMinimizeState() - // 恢复房间状态 - resumeRoomState() - setupEffectView() - - MvpPre?.postRoomInfo(CommonAppContext.getInstance().playId) - } - - // 延迟调整布局,确保视图已经完全加载 - mBinding?.mainContentContainer?.post { this.adjustLayoutHeights() } +// GiftDisplayManager.getInstance().setupDisplayView(mBinding?.giftContainer) +// CommonAppContext.getInstance().isShow = true +// CommonAppContext.getInstance().isPlaying = true +// CommonAppContext.getInstance().isRoomJoininj = false +// // 当Activity恢复时,重置标记 +// userLeaving = true +// +// MvpPre!!.roomRedPackets(roomId); +// LogUtils.e("RoomActivity", "onResume") +// +// if ((mRoomInfoResp?.room_info?.type_id.equals("1") || mRoomInfoResp?.room_info?.type_id.equals( +// "8" +// ) || mRoomInfoResp?.room_info?.type_id.equals( +// "3" +// ) +// || mRoomInfoResp?.room_info?.type_id.equals("4")) && mRoomInfoResp?.room_info?.label_id.equals( +// "2" +// ) +// ) { +// return +// } +// if (isInBackground) { +// isInBackground = false +// MvpPre!!.postRoomInfo(CommonAppContext.getInstance().playId) +// } +// +// // 检查是否从最小化状态恢复 +// if (isMinimized) { +// isMinimized = false +// clearMinimizeState() +// // 恢复房间状态 +// resumeRoomState() +// setupEffectView() +// +// MvpPre?.postRoomInfo(CommonAppContext.getInstance().playId) +// } +// +// // 延迟调整布局,确保视图已经完全加载 +// mBinding?.mainContentContainer?.post { this.adjustLayoutHeights() } } // 添加检查房间连接状态的方法 @@ -4388,4 +4325,25 @@ class RoomActivity : BaseMvpActivity(), } + private val CLICK_INTERVAL: Long = 500 // 500ms内不允许重复点击 + private var lastClickTime: Long = 0 + private var lastClickedUserId = "" // 记录上次点击的用户ID + private var lastClickedPitNumber = "" // 记录上次点击的麦位号 + + fun isFastDoubleClick(userId: String, pitNumber: String): Boolean { + val currentTime = System.currentTimeMillis() + if (currentTime - lastClickTime < CLICK_INTERVAL && + userId == lastClickedUserId && + pitNumber == lastClickedPitNumber + ) { + return true // 是快速重复点击 + } + + // 更新上次点击信息 + lastClickTime = currentTime + lastClickedUserId = userId + lastClickedPitNumber = pitNumber + return false // 不是快速重复点击 + } + } \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java index bdea20f6..71951386 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java @@ -216,6 +216,7 @@ public class ChatRoomFragment extends BaseMvpFragment { - if ( ClickUtils.isFastDoubleClick()){ + if ( ClickUtils.isFastDoubleClick(mBinding.recycleView)){ return; } - voiceCategoryFragment.showLoading(); + if (ActivityUtils.getTopActivity() instanceof MainActivity){ + ((MainActivity) ActivityUtils.getTopActivity()).isShowLoading(true); + } // 添加索引有效性检查 if (position < 0 || position >= mAdapter.getData().size()) { + if (ActivityUtils.getTopActivity() instanceof MainActivity){ + ((MainActivity) ActivityUtils.getTopActivity()).isShowLoading(false); + } return; } TopRoom item = mAdapter.getItem(position); diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RankingChildFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RankingChildFragment.java index d57cdfc0..d36a52ab 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RankingChildFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RankingChildFragment.java @@ -1,5 +1,6 @@ package com.xscm.modulemain.activity.room.fragment; +import android.graphics.Color; import android.os.Bundle; import android.util.Log; import android.view.View; @@ -166,6 +167,15 @@ public class RankingChildFragment extends BaseMvpFragment { - if (ClickUtils.isFastDoubleClick()) { + if (ClickUtils.isFastDoubleClick(mBinding.ivAuction1)) { return; } if (mBinding.ivAuction1.getUserId() != null && !mBinding.ivAuction1.getUserId().equals("")) { @@ -302,7 +302,7 @@ public class RoomAuctionFragment extends BaseMvpFragment { - if (ClickUtils.isFastDoubleClick()) { + if (ClickUtils.isFastDoubleClick(mBinding.ivAuction1)) { return; } if (pitBean.getUser_id() != null && !pitBean.getUser_id().isEmpty() && !pitBean.getUser_id().equals("0")) { @@ -311,7 +311,7 @@ public class RoomAuctionFragment extends BaseMvpFragment { - if (ClickUtils.isFastDoubleClick()) { + if (ClickUtils.isFastDoubleClick(mBinding.ivAuction2)) { return; } if (mBinding.ivAuction2.getUserId() != null && !mBinding.ivAuction2.getUserId().equals("")) { @@ -319,7 +319,7 @@ public class RoomAuctionFragment extends BaseMvpFragment { - if (ClickUtils.isFastDoubleClick()) { + if (ClickUtils.isFastDoubleClick(mBinding.ivAuction2)) { return; } if (pitBean.getUser_id() != null && !pitBean.getUser_id().isEmpty() && !pitBean.getUser_id().equals("0")) { @@ -327,7 +327,7 @@ public class RoomAuctionFragment extends BaseMvpFragment { - if (ClickUtils.isFastDoubleClick()) { + if (ClickUtils.isFastDoubleClick(mBinding.ivAuction3)) { return; } if (mBinding.ivAuction3.getUserId() != null && !mBinding.ivAuction3.getUserId().equals("")) { @@ -338,7 +338,7 @@ public class RoomAuctionFragment extends BaseMvpFragment= Build.VERSION_CODES.O) { -// // Android 12+ 需要指定 foregroundServiceType -// Intent serviceIntent = new Intent(context, FloatingWindowService.class); -// serviceIntent.setAction("ACTION_START_FLOAT"); -// context.startForegroundService(serviceIntent); -// } -// -// } } @Override diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomKtvFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomKtvFragment.java index be8c99de..c9e4e69f 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomKtvFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomKtvFragment.java @@ -8,6 +8,7 @@ import android.view.animation.LinearInterpolator; import androidx.recyclerview.widget.LinearLayoutManager; +import com.blankj.utilcode.util.ActivityUtils; import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.ToastUtils; import com.chad.library.adapter.base.BaseQuickAdapter; @@ -338,7 +339,7 @@ public class RoomKtvFragment extends BaseMvpFragment { - if (ClickUtils.isFastDoubleClick()) { + if (ClickUtils.isFastDoubleClick(muJb)) { return; } if (pitBean.getUser_id() != null && !pitBean.getUser_id().isEmpty() && !pitBean.getUser_id().equals("0")) { diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/SingSongFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/SingSongFragment.java index 7eef3f33..26bc1a0c 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/SingSongFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/SingSongFragment.java @@ -29,8 +29,10 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; +import com.blankj.utilcode.util.ActivityUtils; import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.ObjectUtils; +import com.blankj.utilcode.util.ToastUtils; import com.google.android.flexbox.FlexboxLayout; import com.xscm.modulemain.R; import com.xscm.modulemain.activity.room.activity.RoomActivity; @@ -59,6 +61,7 @@ import com.xscm.moduleutil.event.RoomWheatEvent; import com.xscm.moduleutil.listener.MessageListenerSingleton; import com.xscm.moduleutil.rtc.AgoraManager; import com.xscm.moduleutil.rtc.AgoraManagerEx; +import com.xscm.moduleutil.utils.ClickUtils; import com.xscm.moduleutil.utils.GsonUtils; import com.xscm.moduleutil.utils.ImageUtils; import com.xscm.moduleutil.utils.SpUtil; @@ -150,6 +153,9 @@ public class SingSongFragment extends BaseRoomFragment { // 示例:跳转到房间 详情页 if (data != null) { - showLoading(); + if (ActivityUtils.getTopActivity() instanceof MainActivity){ + ((MainActivity) ActivityUtils.getTopActivity()).isShowLoading(true); + } RoomManager.getInstance().fetchRoomDataAndEnter(getActivity(), data.getRoom_id(), "", null); } }); @@ -170,7 +171,9 @@ public class VoiceCategoryFragment extends BaseMvpFragment { - mBinding.coolWaitView.setVisibility(View.GONE); - }); - } - } - @Override protected void initView () { diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java index 21fd43e5..d7f480b8 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java @@ -56,14 +56,8 @@ public class RoomPresenter extends BasePresenter implements R } LogUtils.e("token",token); LogUtils.e("roomId:",roomId); - - if (getView()!= null && getView().getSelfActivity()!=null){ - AgoraManager.getInstance() - .joinRoom(token, roomId, uid, enableMic,enableJs); - }else { - AgoraManager.getInstance() - .joinRoom(token, roomId, uid, enableMic,enableJs); - } + AgoraManager.getInstance() + .joinRoom(token, roomId, uid, enableMic,enableJs); if (MvpRef==null){ MvpRef=new WeakReference<>(mView); } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/NobleDetailsActivity.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/NobleDetailsActivity.java index 346db3eb..68946d0b 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/NobleDetailsActivity.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/NobleDetailsActivity.java @@ -44,6 +44,7 @@ public class NobleDetailsActivity extends BaseMvpActivity { Intent intent = new Intent(this, NoblePaymentActivity.class); Bundle bundle = new Bundle(); - bundle.putString("lid",lid); + bundle.putString("lid",xlid); intent.putExtras( bundle); startActivity(intent); }); @@ -166,10 +167,14 @@ public class NobleDetailsActivity extends BaseMvpActivity=index){ - if (position==index){ - mBinding.imLjkt.setImageResource(com.xscm.moduleutil.R.mipmap.noble_xf); + if (!lid.isEmpty()) { + if (position == index) { + mBinding.imLjkt.setImageResource(com.xscm.moduleutil.R.mipmap.noble_xf); + } else { + mBinding.imLjkt.setImageResource(com.xscm.moduleutil.R.mipmap.noble_ljsj); + } }else { - mBinding.imLjkt.setImageResource(com.xscm.moduleutil.R.mipmap.noble_ljsj); + mBinding.imLjkt.setImageResource(com.xscm.moduleutil.R.mipmap.noble_ljkt); } mBinding.imLjkt.setClickable( true); }else { diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/SettingActivity.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/SettingActivity.java index cdee8234..02b68bbc 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/SettingActivity.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/SettingActivity.java @@ -26,14 +26,19 @@ import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.bean.UserInfo; import com.xscm.moduleutil.dialog.RealNameDialog; import com.xscm.moduleutil.utils.ARouteConstants; +import com.xscm.moduleutil.utils.Md5Utils; import com.xscm.moduleutil.utils.SpUtil; +import com.xscm.moduleutil.utils.TimeUtils; import com.xscm.moduleutil.utils.config.ConfigManager; import com.xscm.moduleutil.utils.config.EnvironmentEnum; import com.xscm.moduleutil.utils.config.EnvironmentPrefs; +import com.xscm.moduleutil.utils.cos.CosUploadManager; import com.xscm.moduleutil.widget.CommonAppConfig; import java.io.File; import java.util.Objects; +import java.util.Set; +import java.util.UUID; import io.reactivex.Observable; import io.reactivex.ObservableEmitter; @@ -101,6 +106,7 @@ public class SettingActivity extends BaseMvpActivity() { @SuppressLint("CheckResult") diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/SettingConacts.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/SettingConacts.java index cd314485..d549224c 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/SettingConacts.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/SettingConacts.java @@ -17,5 +17,7 @@ public class SettingConacts { void cancel(); void getModifyHideStatus(String hide_status); + + void sendAppLog(); } } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/UserHomepageFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/UserHomepageFragment.java index 22d6e871..826a1ff3 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/UserHomepageFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/UserHomepageFragment.java @@ -119,7 +119,14 @@ public class UserHomepageFragment extends BaseMvpFragment @Override public void uploadFile(File file, int type, int index, int size) { - MvpRef.get().showLoadings("上传中..."); +// MvpRef.get().showLoadings("上传中..."); String url = OSSOperUtils.getPath(file, type); CosUploadManager.getInstance(CommonAppContext.getInstance()).upParameters(url,file.getPath(), new CosUploadManager.UploadCallback() { @Override diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/EditUserPresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/EditUserPresenter.java index d1094047..de0fa820 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/EditUserPresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/EditUserPresenter.java @@ -30,7 +30,7 @@ public class EditUserPresenter extends BasePresenter impl @Override public void uploadFile(File file, int type, int index, int size) { - MvpRef.get().showLoadings("上传中..."); +// MvpRef.get().showLoadings("上传中..."); String url = OSSOperUtils.getPath(file, type); CosUploadManager.getInstance(CommonAppContext.getInstance()).upParameters(url,file.getPath(), new CosUploadManager.UploadCallback() { @Override @@ -105,6 +105,9 @@ public class EditUserPresenter extends BasePresenter impl @Override public void onNext(String s) { + if (MvpRef==null){ + MvpRef=new WeakReference<>(mView); + } MvpRef.get().editUserInfoSuccess(s); } }); @@ -120,6 +123,9 @@ public class EditUserPresenter extends BasePresenter impl @Override public void onNext(String s) { + if (MvpRef==null){ + MvpRef=new WeakReference<>(mView); + } MvpRef.get().editUserInfoSuccess(s); } }); diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/MyAlbumPresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/MyAlbumPresenter.java index a3a0c216..19e6dde4 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/MyAlbumPresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/MyAlbumPresenter.java @@ -3,6 +3,7 @@ package com.xscm.modulemain.activity.user.presenter; import android.content.Context; import com.hjq.toast.ToastUtils; +import com.xscm.modulemain.activity.plaza.contacts.CircleContacts; import com.xscm.modulemain.activity.user.conacts.MyAlbumConacts; import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.bean.AlbumBean; @@ -12,13 +13,17 @@ import com.xscm.moduleutil.utils.cos.CosUploadManager; import com.xscm.moduleutil.utils.oss.OSSOperUtils; import java.io.File; +import java.lang.ref.WeakReference; import java.util.List; import io.reactivex.disposables.Disposable; public class MyAlbumPresenter extends BasePresenter implements MyAlbumConacts.IMePre { + MyAlbumConacts.View mView; + public MyAlbumPresenter(MyAlbumConacts.View view, Context context) { super(view, context); + this.mView = view; } @Override @@ -31,6 +36,9 @@ public class MyAlbumPresenter extends BasePresenter impleme @Override public void onNext(List albumBeans) { + if (MvpRef==null){ + MvpRef=new WeakReference<>(mView); + } MvpRef.get().getAlbumList(albumBeans); } }); @@ -54,7 +62,7 @@ public class MyAlbumPresenter extends BasePresenter impleme @Override public void uploadFile(File file, int type) { - MvpRef.get().showLoadings("上传中..."); +// MvpRef.get().showLoadings("上传中..."); String url = OSSOperUtils.getPath(file, type); CosUploadManager.getInstance(CommonAppContext.getInstance()).upParameters(url,file.getPath(), new CosUploadManager.UploadCallback() { @Override diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/SettingPresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/SettingPresenter.java index 04d3db8b..aabe8697 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/SettingPresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/SettingPresenter.java @@ -1,16 +1,35 @@ package com.xscm.modulemain.activity.user.presenter; +import android.annotation.SuppressLint; import android.content.Context; +import com.blankj.utilcode.util.FileUtils; +import com.blankj.utilcode.util.LogUtils; +import com.blankj.utilcode.util.ToastUtils; +import com.blankj.utilcode.util.ZipUtils; +import com.xscm.modulemain.Application; +import com.xscm.modulemain.activity.user.activity.SettingActivity; import com.xscm.modulemain.activity.user.conacts.SettingConacts; import com.xscm.moduleutil.http.BaseObserver; import com.xscm.moduleutil.presenter.BasePresenter; +import com.xscm.moduleutil.utils.SpUtil; +import com.xscm.moduleutil.utils.TimeUtils; +import com.xscm.moduleutil.utils.cos.CosUploadManager; +import com.xscm.moduleutil.utils.oss.OSSOperUtils; import org.jetbrains.annotations.NotNull; +import java.io.File; import java.lang.ref.WeakReference; +import java.util.UUID; +import io.reactivex.Observable; +import io.reactivex.ObservableEmitter; +import io.reactivex.ObservableOnSubscribe; +import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Consumer; +import io.reactivex.schedulers.Schedulers; public class SettingPresenter extends BasePresenter implements SettingConacts.IMePre { private SettingConacts.View mView; @@ -69,4 +88,84 @@ public class SettingPresenter extends BasePresenter impleme } }); } + + + @SuppressLint("CheckResult") + @Override + public void sendAppLog() { + MvpRef.get().showLoadings("正在上传..."); + Observable.create(new ObservableOnSubscribe() { + @SuppressLint("CheckResult") + @Override + public void subscribe(ObservableEmitter emitter) throws Exception { + try { + File file = new File(Application.Companion.getInstance().getAppContent()); + + if (FileUtils.isFileExists(file.getParent() +"/DataInfo.zip")){ + FileUtils.delete(file.getParent() +"/DataInfo.zip"); + } + boolean isZip = ZipUtils.zipFile(Application.Companion.getInstance().getAppContent(), + file.getParent() +"/DataInfo.zip"); + if (isZip) { + emitter.onNext(file.getParent() + "/DataInfo.zip"); + }else { + emitter.onNext(""); + } + }catch (Exception e){ + LogUtils.e("压缩失败",e.toString()); + emitter.onNext(""); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer() { + @SuppressLint("CheckResult") + @Override + public void accept(String zipPath) { + String upLogUrl = OSSOperUtils.getAppLogPath(new File(zipPath)); + if(!zipPath.isEmpty()){ + CosUploadManager.getInstance(Application.getInstance()).upParameters(upLogUrl,zipPath, new CosUploadManager.UploadCallback(){ + + @Override + public void onSuccess(String url) { + if (MvpRef==null){ + MvpRef=new WeakReference<>(mView); + } + api.sendAppLog(upLogUrl,url, new BaseObserver() { + + + @Override + public void onSubscribe(Disposable d) { + + } + + + @Override + public void onNext(String s) { + MvpRef.get().disLoadings(); + ToastUtils.showShort(s); + } + }); + } + + @Override + public void onFailure(Exception e) { + ToastUtils.showLong("上传失败"); + LogUtils.e("上传失败",e.toString()); + MvpRef.get().disLoadings(); + } + + @Override + public void onFailure1(IllegalStateException e) { + ToastUtils.showLong("上传失败"); + LogUtils.e("上传失败",e.toString()); + MvpRef.get().disLoadings(); + } + }); + }else { + ToastUtils.showLong("上传失败"); + LogUtils.e("压缩失败"); + MvpRef.get().disLoadings(); + } + } + }); + } } diff --git a/MainModule/src/main/java/com/xscm/modulemain/adapter/EaseChatAdapter.java b/MainModule/src/main/java/com/xscm/modulemain/adapter/EaseChatAdapter.java index 7de42d2a..52bb3c5d 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/adapter/EaseChatAdapter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/adapter/EaseChatAdapter.java @@ -15,11 +15,13 @@ import android.text.style.ForegroundColorSpan; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; +import com.blankj.utilcode.util.LogUtils; import com.bumptech.glide.Glide; import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.engine.GlideException; @@ -29,19 +31,18 @@ import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.transition.Transition; import com.chad.library.adapter.base.BaseMultiItemQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; -import com.xscm.modulemain.R; import com.xscm.modulemain.FakeNinePatchDrawable; +import com.xscm.modulemain.R; import com.xscm.moduleutil.bean.GiftBean; import com.xscm.moduleutil.bean.RoomMessageEvent; import com.xscm.moduleutil.bean.UserInfo; import com.xscm.moduleutil.bean.room.EMMessageInfo; -import com.xscm.moduleutil.bean.room.EmotionDeatils; import com.xscm.moduleutil.utils.ImageUtils; import com.xscm.moduleutil.utils.MeHeadView; -import com.xscm.moduleutil.utils.logger.Logger; import com.xscm.moduleutil.widget.AdaptiveImageView; -import com.xscm.moduleutil.widget.GifAvatarOvalView; +import com.xscm.moduleutil.widget.ShineTextView; import com.xscm.moduleutil.widget.img.BubbleBackgroundHelper; +import com.xscm.moduleutil.bean.room.EmotionDeatils; import java.util.ArrayList; import java.util.Collection; @@ -73,7 +74,6 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter images1 = emMessage.getText().getFromUserInfo().getIcon(); // LinearLayout ll_images1 = helper.getView(com.xscm.moduleutil.R.id.line); // ll_images1.removeAllViews(); @@ -382,10 +392,10 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter() { // @Override // public void onResourceReady(@NonNull Drawable drawable, @Nullable Transition transition) { // if (drawable instanceof WebpDrawable) { -// AppCompatImageView imageView = helper.getView(R.id.iv_wagginh); +// AppCompatImageView imageView = helper.getView(com.xscm.moduleutil.R.id.iv_wagginh); // imageView.setImageDrawable(drawable); // ((WebpDrawable) drawable).start(); // ((WebpDrawable) drawable).setLoopCount(1); @@ -443,7 +453,7 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter"; //前面加一个铃铛 // Spanned sp = Html.fromHtml(bell + txtBody.getMessage(), source -> { @@ -533,10 +543,10 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter"; //前面加一个铃铛 // Spanned sp11 = Html.fromHtml(bell11 + txtBody.getMessage(), source -> { @@ -546,11 +556,11 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter - + + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@mipmap/noble_bj"> + android:id="@+id/top_bar" + android:layout_width="match_parent" + android:layout_height="45dp" + android:layout_marginTop="@dimen/dp_40" + app:layout_constraintTop_toTopOf="parent"> + android:id="@+id/iv_back" + android:layout_width="0dp" + android:layout_height="0dp" + android:contentDescription="@null" + android:scaleType="centerInside" + android:src="@mipmap/ic_topbar_back_dark" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintDimensionRatio="1:1" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + android:id="@+id/tv_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@mipmap/icon_noble_title" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + android:id="@+id/iv_intent" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="@dimen/dp_16" + android:src="@mipmap/icon_noble_gz" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + android:id="@+id/ci_user_image" + android:layout_width="@dimen/dp_30" + android:layout_height="@dimen/dp_30" + android:layout_marginStart="@dimen/dp_16" + android:layout_marginTop="@dimen/dp_16" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/top_bar" + tools:src="@mipmap/ic_launcher_foreground" /> + android:id="@+id/tv_user_name" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/dp_6" + android:textColor="#F5E9D1" + android:textSize="@dimen/sp_12" + app:layout_constraintBottom_toBottomOf="@+id/ci_user_image" + app:layout_constraintStart_toEndOf="@+id/ci_user_image" + app:layout_constraintTop_toTopOf="@+id/ci_user_image" + tools:text="用户名" /> + android:id="@+id/tv_user_lv" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textColor="#F5E9D1" + android:textSize="@dimen/sp_12" + app:layout_constraintBottom_toBottomOf="@+id/tv_user_name" + app:layout_constraintStart_toEndOf="@+id/tv_user_name" + app:layout_constraintTop_toTopOf="@+id/tv_user_name" + tools:text="Lv.1" /> + android:id="@+id/im_me_noble" + android:layout_width="match_parent" + android:layout_height="@dimen/dp_94" + android:layout_marginStart="@dimen/dp_15" + android:layout_marginTop="@dimen/dp_8" + android:layout_marginEnd="@dimen/dp_15" + android:scaleType="fitXY" + android:src="@mipmap/me_noble_bj" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/ci_user_image" /> + android:id="@+id/tv_me_noble_lv" + android:layout_width="wrap_content" + android:layout_height="@dimen/dp_44" + android:layout_marginStart="@dimen/dp_15" + android:layout_marginTop="@dimen/dp_8" + android:fontFamily="@font/youshebiaotihei" + android:textSize="@dimen/sp_34" + android:visibility="gone" + app:layout_constraintStart_toStartOf="@+id/im_me_noble" + app:layout_constraintTop_toTopOf="@+id/im_me_noble" + tools:text="Lv.1" + tools:visibility="visible" /> + android:id="@+id/im_me_noble_status" + android:layout_width="wrap_content" + android:layout_height="@dimen/dp_36" + android:layout_marginStart="@dimen/dp_13" + android:layout_marginTop="@dimen/dp_13" + android:scaleType="fitCenter" + app:layout_constraintStart_toStartOf="@+id/im_me_noble" + app:layout_constraintTop_toTopOf="@+id/im_me_noble" + tools:src="@mipmap/me_noble_no" + tools:visibility="gone" /> + android:id="@+id/im_me_noble_xf" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/dp_12" + android:src="@mipmap/me_noble_xf" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="@+id/tv_me_noble_lv" + app:layout_constraintStart_toEndOf="@+id/tv_me_noble_lv" + app:layout_constraintTop_toTopOf="@+id/tv_me_noble_lv" + tools:visibility="visible" /> + android:id="@+id/tv_user_status" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/dp_12" + android:layout_marginTop="@dimen/dp_12" + android:layout_marginBottom="@dimen/dp_12" + android:textColor="#F5E9D1" + android:textSize="@dimen/sp_12" + app:layout_constraintBottom_toBottomOf="@+id/im_me_noble" + app:layout_constraintStart_toStartOf="@+id/im_me_noble_status" + tools:text="未开通" /> + android:id="@+id/im_noble_db" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/dp_15" + android:layout_marginTop="@dimen/dp_8" + android:layout_marginEnd="@dimen/dp_15" + android:scaleType="fitCenter" + android:src="@mipmap/noble_duib" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/im_me_noble" /> + android:id="@+id/im_noble" + android:layout_width="@dimen/dp_120" + android:layout_height="@dimen/dp_120" + android:layout_marginTop="@dimen/dp_10" + android:layout_marginEnd="@dimen/dp_13" + android:scaleType="fitXY" + android:src="@mipmap/me_noble_image" + app:layout_constraintEnd_toEndOf="@+id/im_me_noble" + app:layout_constraintTop_toBottomOf="@+id/top_bar" /> @@ -203,83 +191,78 @@ + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_marginStart="@dimen/dp_16" + android:layout_marginTop="@dimen/dp_13" + android:layout_marginEnd="@dimen/dp_16" + android:background="@drawable/noble_card_border" + app:layout_constraintBottom_toTopOf="@+id/im_kt" + app:layout_constraintTop_toBottomOf="@+id/im_noble_db"> + android:id="@+id/contentView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="@dimen/dp_12" + android:background="@drawable/bg_r6_2a2a4e" + android:orientation="vertical" /> - + android:id="@+id/im_kt" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:scaleType="fitXY" + android:src="@mipmap/me_sj" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + tools:visibility="visible" /> + + android:id="@+id/ci_image2" + android:layout_width="@dimen/dp_30" + android:layout_height="@dimen/dp_30" + android:layout_marginStart="@dimen/dp_12" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="@+id/im_kt" + app:layout_constraintStart_toStartOf="@+id/im_kt" + app:layout_constraintTop_toTopOf="@+id/im_kt" + tools:src="@mipmap/ic_launcher" + tools:visibility="visible" /> + android:id="@+id/tv_me_x" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/dp_6" + android:ellipsize="end" + android:maxEms="12" + android:maxLines="1" + android:singleLine="true" + android:textColor="#F5E9D1" + android:textSize="@dimen/sp_12" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="@+id/im_kt" + app:layout_constraintStart_toEndOf="@+id/ci_image2" + app:layout_constraintTop_toTopOf="@+id/im_kt" + tools:text="夏沫..的当前爵位状态是骑" + tools:visibility="visible" /> + android:id="@+id/im_sj" + android:layout_width="wrap_content" + android:layout_height="@dimen/dp_36" + android:layout_marginEnd="@dimen/dp_16" + android:src="@mipmap/noble_sj" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="@+id/im_kt" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/im_kt" + tools:visibility="visible" /> diff --git a/MainModule/src/main/res/layout/activity_setting.xml b/MainModule/src/main/res/layout/activity_setting.xml index 17c0b1c0..7e992d8f 100644 --- a/MainModule/src/main/res/layout/activity_setting.xml +++ b/MainModule/src/main/res/layout/activity_setting.xml @@ -258,6 +258,26 @@ + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MainModule/src/main/res/layout/fragment_room_user_info.xml b/MainModule/src/main/res/layout/fragment_room_user_info.xml index 7af59f45..3dd44214 100644 --- a/MainModule/src/main/res/layout/fragment_room_user_info.xml +++ b/MainModule/src/main/res/layout/fragment_room_user_info.xml @@ -24,7 +24,7 @@ app:layout_constraintTop_toTopOf="parent"> - + app:layout_constraintTop_toTopOf="parent" /> - + tools:visibility="visible" /> - + app:layout_constraintTop_toBottomOf="@+id/kb" /> + android:textSize="@dimen/sp_10" + tools:text="用户昵称" /> + android:textStyle="bold" + tools:text="开始使用" /> @@ -402,13 +400,13 @@ android:layout_alignParentEnd="true" android:layout_marginTop="@dimen/dp_43" android:layout_marginEnd="@dimen/dp_22" + android:background="@drawable/bg_r53_33333" android:gravity="center" android:paddingStart="5dp" android:paddingEnd="5dp" - android:background="@drawable/bg_r53_33333" - tools:text="5天" android:textColor="@color/white" - android:textSize="@dimen/sp_9" /> + android:textSize="@dimen/sp_9" + tools:text="5天" /> + android:background="@mipmap/home_bj"> - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/MainModule/src/main/res/layout/item_expand_column.xml b/MainModule/src/main/res/layout/item_expand_column.xml index 3171dd11..3cdbd147 100644 --- a/MainModule/src/main/res/layout/item_expand_column.xml +++ b/MainModule/src/main/res/layout/item_expand_column.xml @@ -46,11 +46,12 @@ android:gravity="center_vertical" android:orientation="horizontal"> - diff --git a/MainModule/src/main/res/layout/item_onlie_room.xml b/MainModule/src/main/res/layout/item_onlie_room.xml index 3875d993..f235619f 100644 --- a/MainModule/src/main/res/layout/item_onlie_room.xml +++ b/MainModule/src/main/res/layout/item_onlie_room.xml @@ -2,14 +2,14 @@ - + + app:layout_constraintStart_toStartOf="@+id/like_avatar" /> - diff --git a/MainModule/src/main/res/layout/room_cabin_fragment.xml b/MainModule/src/main/res/layout/room_cabin_fragment.xml index 4882d690..e528c8d6 100644 --- a/MainModule/src/main/res/layout/room_cabin_fragment.xml +++ b/MainModule/src/main/res/layout/room_cabin_fragment.xml @@ -42,27 +42,14 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@+id/tv_main_title" /> - - - - - - - - - - - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/iv_exit" /> + app:layout_constraintTop_toTopOf="@+id/im"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/MainModule/src/main/res/layout/room_gift_dialog.xml b/MainModule/src/main/res/layout/room_gift_dialog.xml index 89d3ef40..fcbc8029 100644 --- a/MainModule/src/main/res/layout/room_gift_dialog.xml +++ b/MainModule/src/main/res/layout/room_gift_dialog.xml @@ -128,10 +128,10 @@ app:tl_indicator_corner_radius="@dimen/dp_3" app:tl_indicator_drawable="@color/transparent" app:tl_indicator_height="@dimen/dp_6" + app:tl_tab_padding="@dimen/dp_10" app:tl_indicator_margin_bottom="@dimen/dp_3" app:tl_indicator_width="0dp" app:tl_showCateIndicator="false" - app:tl_tab_width="@dimen/dp_50" app:tl_textBold="SELECT" app:tl_textSelectColor="@color/white" app:tl_textSelectedSize="@dimen/sp_14" diff --git a/MainModule/src/main/res/layout/room_ranking_child.xml b/MainModule/src/main/res/layout/room_ranking_child.xml index a780f150..6c2a7a86 100644 --- a/MainModule/src/main/res/layout/room_ranking_child.xml +++ b/MainModule/src/main/res/layout/room_ranking_child.xml @@ -63,7 +63,8 @@ app:layout_constraintEnd_toEndOf="@id/view_top2" app:layout_constraintStart_toStartOf="@id/view_top2"/> - - - - - + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c3f7580b..ddd021e9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -54,7 +54,10 @@ android { dimension "environment" // 正式版包名:使用基础包名(com.example.myapp) applicationIdSuffix "" - +// // 测试版包名:基础包名 + .beta(com.example.myapp.beta) +// applicationIdSuffix ".beta.b" +// // 测试版版本名:1.0-beta +// versionNameSuffix "-beta.b" // 【正式版应用名称】通过resValue动态生成string资源 resValue "string", "app_name", "羽声语音" diff --git a/locktableview/build.gradle b/locktableview/build.gradle index ecc0fd1c..1eaab87b 100644 --- a/locktableview/build.gradle +++ b/locktableview/build.gradle @@ -7,8 +7,8 @@ android { defaultConfig { minSdk 24 targetSdk 35 - versionCode 12 - versionName "1.1.2" + versionCode 1 + versionName "1.0.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"