1:修改时间选择框,根据需要,展示时分秒和不显示时分秒
2:修改展示设备id,在头部信息中,使用第三方的获取设备唯一id 3:优化群聊成员列表展示 4:修改房间封面,上传图片的时候,需要裁剪 5:添加营业时间展示 6:pk修改开始的时候,选择时间去掉1分钟 7:修改声网,添加声卡开关
This commit is contained in:
@@ -137,7 +137,7 @@ public class CommonAppContext extends MultiDexApplication implements Application
|
|||||||
@Getter
|
@Getter
|
||||||
public UnreadCountEvent unreadCountEvent;
|
public UnreadCountEvent unreadCountEvent;
|
||||||
|
|
||||||
public static int selectRelease = 1;
|
public static int selectRelease = -1;
|
||||||
|
|
||||||
public int is_open = 0;//主题的开关
|
public int is_open = 0;//主题的开关
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ package com.xscm.moduleutil.bean
|
|||||||
class GroupBean {
|
class GroupBean {
|
||||||
var guild_id: String = ""
|
var guild_id: String = ""
|
||||||
var guild_cover: String = ""
|
var guild_cover: String = ""
|
||||||
var is_deacon: Int = 0 //是否是群主 1:是 ,其他的不是
|
var is_deacon: Int = 0 //是否是群主 1:是 ,其他的不是 2:管理员 3:普通成员
|
||||||
var user_list: List<GroupUserBean> = ArrayList()
|
var user_list: List<GroupUserBean> = ArrayList()
|
||||||
|
|
||||||
var name: String = ""
|
var name: String = ""
|
||||||
@@ -27,6 +27,7 @@ class GroupBean {
|
|||||||
var role_str: String = ""
|
var role_str: String = ""
|
||||||
var in_room_id: Int = 0 //是否在房间内 1:在 0:不在
|
var in_room_id: Int = 0 //是否在房间内 1:在 0:不在
|
||||||
var is_mute: Int = 0 //是否被禁言 1:是 0:不是
|
var is_mute: Int = 0 //是否被禁言 1:是 0:不是
|
||||||
|
var group_role : Int = 0 //群角色 1:群主 2:管理员 3:普通成员
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -19,4 +19,6 @@ public class PkRoomInfo implements Serializable {
|
|||||||
private String pk_part;;//2:等待开始、3:进行中、4:惩罚阶段
|
private String pk_part;;//2:等待开始、3:进行中、4:惩罚阶段
|
||||||
private String pk_end_times;
|
private String pk_end_times;
|
||||||
private int receive_pk_user_id = -2;//接受pk的用户id
|
private int receive_pk_user_id = -2;//接受pk的用户id
|
||||||
|
|
||||||
|
private String close_users="";//关闭pk麦克风的用户id
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,6 +65,10 @@ public class RoomSettingBean implements MultiItemEntity {
|
|||||||
public static final int QXRoomSettingTypeRoomTimeSpace = 34;//时空之巅
|
public static final int QXRoomSettingTypeRoomTimeSpace = 34;//时空之巅
|
||||||
public static final int QXRoomSettingTypeRoomTimeRedSound = 35;//红包声音
|
public static final int QXRoomSettingTypeRoomTimeRedSound = 35;//红包声音
|
||||||
|
|
||||||
|
public static final int QXRoomSettingTypeRoomBusinessTime = 37;//营业时间
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static final int ITEM_TYPE_DEFAULT = 0;
|
public static final int ITEM_TYPE_DEFAULT = 0;
|
||||||
public static final int ITEM_TYPE_WITH_ICON = 1;
|
public static final int ITEM_TYPE_WITH_ICON = 1;
|
||||||
|
|
||||||
|
|||||||
@@ -360,7 +360,7 @@ public interface ApiServer {
|
|||||||
@GET(Constants.GET_CUSTOM_GIFT_LIST)
|
@GET(Constants.GET_CUSTOM_GIFT_LIST)
|
||||||
Call<BaseModel<List<RoonGiftModel>>> getCustomGiftList(@Query("user_id") String user_id);
|
Call<BaseModel<List<RoonGiftModel>>> getCustomGiftList(@Query("user_id") String user_id);
|
||||||
|
|
||||||
@GET(Constants.GET_NEW_GIFT_LIST)
|
@GET(Constants.GET_NEW_GIFT_LIST) //拍卖位选择拍卖礼物,type=3 label =99
|
||||||
Call<BaseModel<List<RoonGiftModel>>> getNewGiftList(@Query("label") int label, @Query("type") String type );
|
Call<BaseModel<List<RoonGiftModel>>> getNewGiftList(@Query("label") int label, @Query("type") String type );
|
||||||
|
|
||||||
@GET(Constants.SET_CUSTOM_GIFT)
|
@GET(Constants.SET_CUSTOM_GIFT)
|
||||||
@@ -528,6 +528,10 @@ public interface ApiServer {
|
|||||||
@POST(Constants.postRoomSwToken)
|
@POST(Constants.postRoomSwToken)
|
||||||
Call<BaseModel<PkSwTokenBean>> postRoomSwToken(@Field("room_id") String roomId);
|
Call<BaseModel<PkSwTokenBean>> postRoomSwToken(@Field("room_id") String roomId);
|
||||||
|
|
||||||
|
@FormUrlEncoded
|
||||||
|
@POST(Constants.POST_CLOSE_PK_MIC)
|
||||||
|
Call<BaseModel<String>> closePkMic(@Field("pk_id") String pk_id,@Field("type") String type,@Field("user_id") String user_id);
|
||||||
|
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
@POST(Constants.SET_USER_DECORATE)
|
@POST(Constants.SET_USER_DECORATE)
|
||||||
Call<BaseModel<String>> setUserDecorate(@Field("udid") String udid);
|
Call<BaseModel<String>> setUserDecorate(@Field("udid") String udid);
|
||||||
@@ -749,6 +753,10 @@ public interface ApiServer {
|
|||||||
@GET(Constants.GET_BLIND_BOX_STATUS)
|
@GET(Constants.GET_BLIND_BOX_STATUS)
|
||||||
Call<BaseModel<List<BlindBoxStatus>>> blindBoxStatus();
|
Call<BaseModel<List<BlindBoxStatus>>> blindBoxStatus();
|
||||||
|
|
||||||
|
@FormUrlEncoded
|
||||||
|
@POST(Constants.SET_ROOM_BUSINESS_TIME)
|
||||||
|
Call<BaseModel<String>> setRoomBusinessTime(@Field("room_id") String roomId,@Field("start_time") String startTime,@Field("end_time") String endTime);
|
||||||
|
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
@POST(Constants.POST_END_SONG)
|
@POST(Constants.POST_END_SONG)
|
||||||
Call<BaseModel<String>> endSong(@Field("room_id") String roomId);
|
Call<BaseModel<String>> endSong(@Field("room_id") String roomId);
|
||||||
@@ -770,7 +778,7 @@ public interface ApiServer {
|
|||||||
Call<BaseModel<List<RoomCharmRankBean>>> getCharmRank(@Field("room_id") String roomId);
|
Call<BaseModel<List<RoomCharmRankBean>>> getCharmRank(@Field("room_id") String roomId);
|
||||||
|
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
@POST(Constants.POST_ROOM_RELATION_LIST)
|
@POST(Constants.POST_ROOM_RELATION_LIST) //1:真爱拍 2:亲密拍 3:星球(互娱)
|
||||||
Call<BaseModel<List<RoomRelationBean>>> roomRelationList(@Field("type") String type);
|
Call<BaseModel<List<RoomRelationBean>>> roomRelationList(@Field("type") String type);
|
||||||
|
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
|
|||||||
@@ -749,7 +749,7 @@ public class RetrofitClient {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(Call<BaseModel<GroupUserListBean>> call, Response<BaseModel<GroupUserListBean>> response) {
|
public void onResponse(Call<BaseModel<GroupUserListBean>> call, Response<BaseModel<GroupUserListBean>> response) {
|
||||||
if (response.code() == 200) {
|
if (response.code() == 200) {
|
||||||
BaseModel<GroupUserListBean> baseModel = response.body();
|
BaseModel<GroupUserListBean> baseModel = response.body();
|
||||||
if (baseModel.getCode() == 1)
|
if (baseModel.getCode() == 1)
|
||||||
observer.onNext(baseModel.getData());
|
observer.onNext(baseModel.getData());
|
||||||
@@ -3363,7 +3363,6 @@ public class RetrofitClient {
|
|||||||
setCode301(indexRecommendRoomBaseModel.getMsg());
|
setCode301(indexRecommendRoomBaseModel.getMsg());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ToastUtils.showLong("首页房间推荐异常", response.code());
|
|
||||||
LogUtils.e("首页房间推荐", response.message());
|
LogUtils.e("首页房间推荐", response.message());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4654,6 +4653,33 @@ public class RetrofitClient {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setRoomBusinessTime(String roomId,String start_time,String end_time, BaseObserver<String> observer) {
|
||||||
|
sApiServer.setRoomBusinessTime(roomId,start_time,end_time).enqueue(new Callback<BaseModel<String>>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) {
|
||||||
|
if (response.code() == 200) {
|
||||||
|
BaseModel<String> baseModel = response.body();
|
||||||
|
if (baseModel.getCode() == 1)
|
||||||
|
ToastUtils.showLong(baseModel.getMsg());
|
||||||
|
else if (baseModel.getCode() == 301) {
|
||||||
|
setCode301(baseModel.getMsg());
|
||||||
|
}else if (baseModel.getCode() == 0) {
|
||||||
|
ToastUtils.showLong(baseModel.getMsg());
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
ToastUtils.showLong("设置营业时间失败,", response.code());
|
||||||
|
LogUtils.e("setRoomBusinessTime", response.message());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
|
||||||
|
LogUtils.e("setRoomBusinessTime", t.fillInStackTrace());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void endSong(String room_id, BaseObserver<String> observer) {
|
public void endSong(String room_id, BaseObserver<String> observer) {
|
||||||
sApiServer.endSong(room_id).enqueue(new Callback<BaseModel<String>>() {
|
sApiServer.endSong(room_id).enqueue(new Callback<BaseModel<String>>() {
|
||||||
@Override
|
@Override
|
||||||
@@ -5343,6 +5369,33 @@ public class RetrofitClient {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void closePkMic(String pk_id ,String type ,String user_id,BaseObserver<String> observer) {
|
||||||
|
sApiServer.closePkMic(pk_id,type,user_id).enqueue(new Callback<BaseModel<String>>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) {
|
||||||
|
if (response.code() == 200) {
|
||||||
|
BaseModel<String> baseModel = response.body();
|
||||||
|
if (baseModel.getCode() == 1) {
|
||||||
|
observer.onNext(baseModel.getMsg());
|
||||||
|
} else if (baseModel.getCode() == 301) {
|
||||||
|
setCode301(baseModel.getMsg());
|
||||||
|
} else if (baseModel.getCode() == 0) {
|
||||||
|
ToastUtils.showShort(baseModel.getMsg());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ToastUtils.showLong("数据错误", response.code());
|
||||||
|
LogUtils.e("closePkMic", response.message());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
|
||||||
|
LogUtils.e("closePkMic", t.fillInStackTrace());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void removeBlackList(String user_id, BaseObserver<String> observer) {
|
public void removeBlackList(String user_id, BaseObserver<String> observer) {
|
||||||
sApiServer.removeBlackList(user_id).enqueue(new Callback<BaseModel<String>>() {
|
sApiServer.removeBlackList(user_id).enqueue(new Callback<BaseModel<String>>() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ import io.reactivex.disposables.Disposable;
|
|||||||
public class AgoraManager {
|
public class AgoraManager {
|
||||||
|
|
||||||
private static volatile AgoraManager instance;
|
private static volatile AgoraManager instance;
|
||||||
public RtcEngineEx rtcEngine;
|
public RtcEngineEx rtcEngine;
|
||||||
// private RtcEngineEx rtcEngineEx;
|
// private RtcEngineEx rtcEngineEx;
|
||||||
private Context context;
|
private Context context;
|
||||||
private boolean isLocalAudioEnabled = true; // 默认开启麦克风
|
private boolean isLocalAudioEnabled = true; // 默认开启麦克风
|
||||||
@@ -230,6 +230,9 @@ public class AgoraManager {
|
|||||||
"}" +
|
"}" +
|
||||||
"}");
|
"}");
|
||||||
rtcEngine.setParameters("{\"che.video.mobile_1080p\":true}");
|
rtcEngine.setParameters("{\"che.video.mobile_1080p\":true}");
|
||||||
|
|
||||||
|
setEnable();
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtils.w("AgoraManager", "Failed to set parameters", e);
|
LogUtils.w("AgoraManager", "Failed to set parameters", e);
|
||||||
}
|
}
|
||||||
@@ -242,6 +245,7 @@ public class AgoraManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int calculateScreenAngle(int orientation) {
|
public static int calculateScreenAngle(int orientation) {
|
||||||
if (orientation >= 315 || orientation < 45) {
|
if (orientation >= 315 || orientation < 45) {
|
||||||
return 0; // 竖屏(0度)
|
return 0; // 竖屏(0度)
|
||||||
@@ -253,6 +257,7 @@ public class AgoraManager {
|
|||||||
return 270; // 横屏左(270度)
|
return 270; // 横屏左(270度)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加入语音聊天房间
|
* 加入语音聊天房间
|
||||||
*/
|
*/
|
||||||
@@ -281,6 +286,7 @@ public class AgoraManager {
|
|||||||
// 在频道中发布屏幕采集的音频
|
// 在频道中发布屏幕采集的音频
|
||||||
options.publishScreenCaptureAudio = true;
|
options.publishScreenCaptureAudio = true;
|
||||||
ClientRole(isCamerJs);
|
ClientRole(isCamerJs);
|
||||||
|
|
||||||
// options.publishMediaPlayerId = 0;
|
// options.publishMediaPlayerId = 0;
|
||||||
rtcEngine.joinChannel(token, mRoomId, uid, options);
|
rtcEngine.joinChannel(token, mRoomId, uid, options);
|
||||||
|
|
||||||
@@ -289,6 +295,18 @@ public class AgoraManager {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setEnable(){
|
||||||
|
if (SpUtil.getSkService()==1){
|
||||||
|
rtcEngine.setParameters("{\"che.audio.aec.enable\":false}"); // 关闭回音消除
|
||||||
|
rtcEngine.setParameters("{\"che.audio.ans.enable\":false}"); // 关闭降噪
|
||||||
|
rtcEngine.setParameters("{\"che.audio.agc.enable\":false}"); // 关闭增益控制
|
||||||
|
}else {
|
||||||
|
rtcEngine.setParameters("{\"che.audio.aec.enable\":true}"); // 开启回音消除
|
||||||
|
rtcEngine.setParameters("{\"che.audio.ans.enable\":true}"); // 开启降噪
|
||||||
|
rtcEngine.setParameters("{\"che.audio.agc.enable\":true}"); // 开启增益控制
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清理资源但保留实例
|
* 清理资源但保留实例
|
||||||
*/
|
*/
|
||||||
@@ -342,14 +360,14 @@ public class AgoraManager {
|
|||||||
}
|
}
|
||||||
handlers.clear();
|
handlers.clear();
|
||||||
}
|
}
|
||||||
if (disposableA != null && !disposableA.isDisposed()){
|
if (disposableA != null && !disposableA.isDisposed()) {
|
||||||
disposableA.dispose();
|
disposableA.dispose();
|
||||||
}
|
}
|
||||||
if (disposableB != null && !disposableB.isDisposed()){
|
if (disposableB != null && !disposableB.isDisposed()) {
|
||||||
disposableB.dispose();
|
disposableB.dispose();
|
||||||
}
|
}
|
||||||
if (disposableC != null && !disposableC.isDisposed()){
|
if (disposableC != null && !disposableC.isDisposed()) {
|
||||||
disposableC.dispose();
|
disposableC.dispose();
|
||||||
}
|
}
|
||||||
// 关闭线程池
|
// 关闭线程池
|
||||||
if (executorService != null && !executorService.isShutdown()) {
|
if (executorService != null && !executorService.isShutdown()) {
|
||||||
@@ -412,7 +430,7 @@ public class AgoraManager {
|
|||||||
@Override
|
@Override
|
||||||
public void onRemoteAudioStateChanged(int uid, int state, int reason, int elapsed) {
|
public void onRemoteAudioStateChanged(int uid, int state, int reason, int elapsed) {
|
||||||
super.onRemoteAudioStateChanged(uid, state, reason, elapsed);
|
super.onRemoteAudioStateChanged(uid, state, reason, elapsed);
|
||||||
if (state == 0){
|
if (state == 0) {
|
||||||
// LogUtils.e("onRemoteAudioStateChanged", "uid------>" + uid, "state------>" + state, "reason------>" + reason, "elapsed------>" + elapsed);
|
// LogUtils.e("onRemoteAudioStateChanged", "uid------>" + uid, "state------>" + state, "reason------>" + reason, "elapsed------>" + elapsed);
|
||||||
for (SoundLevelUpdateListener listener : soundLevelUpdateListeners) {
|
for (SoundLevelUpdateListener listener : soundLevelUpdateListeners) {
|
||||||
if (listener != null) {
|
if (listener != null) {
|
||||||
@@ -485,7 +503,7 @@ public class AgoraManager {
|
|||||||
@Override
|
@Override
|
||||||
public void onLyricResult(String requestId, long songCode, String lyricUrl, int reason) {
|
public void onLyricResult(String requestId, long songCode, String lyricUrl, int reason) {
|
||||||
if (lyricUrl != null) {
|
if (lyricUrl != null) {
|
||||||
LogUtils.e("roomInfoEvent",lyricUrl);
|
LogUtils.e("roomInfoEvent", lyricUrl);
|
||||||
getLyricsInstance(lyricUrl);
|
getLyricsInstance(lyricUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -563,7 +581,7 @@ public class AgoraManager {
|
|||||||
Map<String, Integer> localMap = new HashMap<>();
|
Map<String, Integer> localMap = new HashMap<>();
|
||||||
for (AudioVolumeInfo info : speakers) {
|
for (AudioVolumeInfo info : speakers) {
|
||||||
String userId = (info.uid == 0)
|
String userId = (info.uid == 0)
|
||||||
? SpUtil.getUserId()+""
|
? SpUtil.getUserId() + ""
|
||||||
: String.valueOf(info.uid);
|
: String.valueOf(info.uid);
|
||||||
localMap.put(userId, info.volume);
|
localMap.put(userId, info.volume);
|
||||||
}
|
}
|
||||||
@@ -575,6 +593,7 @@ public class AgoraManager {
|
|||||||
// 2️⃣ 只把“不可变快照”丢给 UI
|
// 2️⃣ 只把“不可变快照”丢给 UI
|
||||||
uiHandler.post(() -> dispatchVolume(localMap));
|
uiHandler.post(() -> dispatchVolume(localMap));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void dispatchVolume(Map<String, Integer> volumeSnapshot) {
|
private void dispatchVolume(Map<String, Integer> volumeSnapshot) {
|
||||||
if (soundLevelUpdateListeners.isEmpty()) return;
|
if (soundLevelUpdateListeners.isEmpty()) return;
|
||||||
|
|
||||||
@@ -587,6 +606,7 @@ public class AgoraManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLocalVideoStateChanged(Constants.VideoSourceType source, int state, int reason) {
|
public void onLocalVideoStateChanged(Constants.VideoSourceType source, int state, int reason) {
|
||||||
super.onLocalVideoStateChanged(source, state, reason);
|
super.onLocalVideoStateChanged(source, state, reason);
|
||||||
@@ -658,6 +678,7 @@ public class AgoraManager {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建并返回 IMediaPlayerObserver 实例
|
* 创建并返回 IMediaPlayerObserver 实例
|
||||||
*/
|
*/
|
||||||
@@ -755,6 +776,7 @@ public class AgoraManager {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public void potexao(String page) {
|
public void potexao(String page) {
|
||||||
ClientRole(true);
|
ClientRole(true);
|
||||||
rtcEngine.playEffect(1, page, 0, 1, 0, 100, true);
|
rtcEngine.playEffect(1, page, 0, 1, 0, 100, true);
|
||||||
@@ -770,7 +792,7 @@ public class AgoraManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void joinChannelEx(String token, String channelId, int uid,String pkUserIds) {
|
public void joinChannelEx(String token, String channelId, int uid, String pkUserIds) {
|
||||||
if (rtcEngine == null) {
|
if (rtcEngine == null) {
|
||||||
init(CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId());
|
init(CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId());
|
||||||
}
|
}
|
||||||
@@ -810,17 +832,17 @@ public class AgoraManager {
|
|||||||
WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
|
WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
|
||||||
Display display = manager.getDefaultDisplay();
|
Display display = manager.getDefaultDisplay();
|
||||||
|
|
||||||
DisplayMetrics outMetrics=new DisplayMetrics();
|
DisplayMetrics outMetrics = new DisplayMetrics();
|
||||||
display.getMetrics(outMetrics);
|
display.getMetrics(outMetrics);
|
||||||
|
|
||||||
// // 设置屏幕采集的参数
|
// // 设置屏幕采集的参数
|
||||||
screenCaptureParameters.captureVideo = true;
|
screenCaptureParameters.captureVideo = true;
|
||||||
screenCaptureParameters.videoCaptureParameters.width = outMetrics.widthPixels;
|
screenCaptureParameters.videoCaptureParameters.width = outMetrics.widthPixels;
|
||||||
screenCaptureParameters.videoCaptureParameters.height = outMetrics.heightPixels;
|
screenCaptureParameters.videoCaptureParameters.height = outMetrics.heightPixels;
|
||||||
screenCaptureParameters.videoCaptureParameters.framerate = 15;
|
screenCaptureParameters.videoCaptureParameters.framerate = 15;
|
||||||
screenCaptureParameters.captureAudio = true;
|
screenCaptureParameters.captureAudio = true;
|
||||||
screenCaptureParameters.audioCaptureParameters.captureSignalVolume =50;
|
screenCaptureParameters.audioCaptureParameters.captureSignalVolume = 50;
|
||||||
screenCaptureParameters.videoCaptureParameters.contentHint=1 ;
|
screenCaptureParameters.videoCaptureParameters.contentHint = 1;
|
||||||
rtcEngine.setVideoEncoderConfiguration(new VideoEncoderConfiguration(
|
rtcEngine.setVideoEncoderConfiguration(new VideoEncoderConfiguration(
|
||||||
VD_1280x720,
|
VD_1280x720,
|
||||||
FRAME_RATE_FPS_15,
|
FRAME_RATE_FPS_15,
|
||||||
@@ -833,12 +855,12 @@ public class AgoraManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setExternalMediaProjection(MediaProjection[] mediaProjection){
|
public void setExternalMediaProjection(MediaProjection[] mediaProjection) {
|
||||||
rtcEngine.setExternalMediaProjection(mediaProjection[0]);
|
rtcEngine.setExternalMediaProjection(mediaProjection[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void isPost(){
|
public void isPost() {
|
||||||
if (rtcEngine != null){
|
if (rtcEngine != null) {
|
||||||
ScreenCaptureParameters screenCaptureParameters = new ScreenCaptureParameters();
|
ScreenCaptureParameters screenCaptureParameters = new ScreenCaptureParameters();
|
||||||
|
|
||||||
// 设置新的屏幕共享参数
|
// 设置新的屏幕共享参数
|
||||||
@@ -917,6 +939,7 @@ public class AgoraManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//关闭对方的所有推流
|
//关闭对方的所有推流
|
||||||
public void muteAllRemoteAudioStreamsEx(boolean enabled) {
|
public void muteAllRemoteAudioStreamsEx(boolean enabled) {
|
||||||
if (rtcEngine == null) {
|
if (rtcEngine == null) {
|
||||||
@@ -932,10 +955,11 @@ public class AgoraManager {
|
|||||||
// rtcEngine.muteAllRemoteAudioStreamsEx(enabled, connection);
|
// rtcEngine.muteAllRemoteAudioStreamsEx(enabled, connection);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//打开对方支持的推流
|
//打开对方支持的推流
|
||||||
public void muteAllRemoteAudioStreamsExUserId(boolean enabled){
|
public void muteAllRemoteAudioStreamsExUserId(boolean enabled) {
|
||||||
if (rtcEngine != null){
|
if (rtcEngine != null) {
|
||||||
rtcEngine.muteRemoteAudioStreamEx(pkUserId,enabled,connection);
|
rtcEngine.muteRemoteAudioStreamEx(pkUserId, enabled, connection);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1011,7 +1035,7 @@ public class AgoraManager {
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
public void addSoundLevelListener(SoundLevelUpdateListener listener) {
|
public void addSoundLevelListener(SoundLevelUpdateListener listener) {
|
||||||
LogUtils.e("AgoraManager", "addSoundLevelListener: " + listener +"============"+soundLevelUpdateListeners.size());
|
LogUtils.e("AgoraManager", "addSoundLevelListener: " + listener + "============" + soundLevelUpdateListeners.size());
|
||||||
if (soundLevelUpdateListeners != null) {
|
if (soundLevelUpdateListeners != null) {
|
||||||
soundLevelUpdateListeners.add(listener);
|
soundLevelUpdateListeners.add(listener);
|
||||||
}
|
}
|
||||||
@@ -1028,19 +1052,19 @@ public class AgoraManager {
|
|||||||
soundLevelUpdateListeners.clear();
|
soundLevelUpdateListeners.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method searches for music based on a given keyword and page number.
|
* This method searches for music based on a given keyword and page number.
|
||||||
* It initializes the music content center if it's not already created.
|
* It initializes the music content center if it's not already created.
|
||||||
*
|
*
|
||||||
* @param keyword The keyword to search for music
|
* @param keyword The keyword to search for music
|
||||||
* @param page The page number of the search results
|
* @param page The page number of the search results
|
||||||
*/
|
*/
|
||||||
public void searchMusic(String keyword, int page) {
|
public void searchMusic(String keyword, int page) {
|
||||||
// Check if musicContentCenter is initialized, if not create it
|
// Check if musicContentCenter is initialized, if not create it
|
||||||
if (musicContentCenter == null) {
|
if (musicContentCenter == null) {
|
||||||
musicContentCenter = IAgoraMusicContentCenter.create(rtcEngine);
|
musicContentCenter = IAgoraMusicContentCenter.create(rtcEngine);
|
||||||
}
|
}
|
||||||
// Perform the music search with the keyword, page number and page size (20)
|
// Perform the music search with the keyword, page number and page size (20)
|
||||||
musicContentCenter.searchMusic(keyword, page, 20);
|
musicContentCenter.searchMusic(keyword, page, 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1112,8 +1136,8 @@ public class AgoraManager {
|
|||||||
String result = musicContentCenter.preload(mSongCode);
|
String result = musicContentCenter.preload(mSongCode);
|
||||||
// 使用后台线程池处理预加载检查,避免阻塞UI线程
|
// 使用后台线程池处理预加载检查,避免阻塞UI线程
|
||||||
disposableC = Observable.timer(3000, TimeUnit.MILLISECONDS).observeOn(AndroidSchedulers.mainThread()).subscribe(aLong -> {
|
disposableC = Observable.timer(3000, TimeUnit.MILLISECONDS).observeOn(AndroidSchedulers.mainThread()).subscribe(aLong -> {
|
||||||
isPreload(mSongCode, type);
|
isPreload(mSongCode, type);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
musicPlayer.open(mSongCode, 0);
|
musicPlayer.open(mSongCode, 0);
|
||||||
@@ -1262,15 +1286,17 @@ public class AgoraManager {
|
|||||||
public void setPlayoutVolume(int volume) {
|
public void setPlayoutVolume(int volume) {
|
||||||
if (musicPlayer != null) {
|
if (musicPlayer != null) {
|
||||||
musicPlayer.adjustPlayoutVolume(volume);//调节本地播放音量。 参数是0-100
|
musicPlayer.adjustPlayoutVolume(volume);//调节本地播放音量。 参数是0-100
|
||||||
musicPlayer.adjustPublishSignalVolume(volume*2);//调节远端用户听到的音量。 参数是0-400
|
musicPlayer.adjustPublishSignalVolume(volume * 2);//调节远端用户听到的音量。 参数是0-400
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 伴奏音量
|
* 伴奏音量
|
||||||
|
*
|
||||||
* @param volume
|
* @param volume
|
||||||
*/
|
*/
|
||||||
public void setAdjustPublishSignalVolume(int volume){
|
public void setAdjustPublishSignalVolume(int volume) {
|
||||||
musicPlayer.adjustPublishSignalVolume(volume);//调节远端用户听到的音量。 参数是0-400
|
musicPlayer.adjustPublishSignalVolume(volume);//调节远端用户听到的音量。 参数是0-400
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1362,7 +1388,7 @@ public class AgoraManager {
|
|||||||
.build();
|
.build();
|
||||||
if (StatusUtil.isCompleted(task)) {
|
if (StatusUtil.isCompleted(task)) {
|
||||||
MusicFileBean musicFileBean = new MusicFileBean();
|
MusicFileBean musicFileBean = new MusicFileBean();
|
||||||
LogUtils.e("roomInfoEvent",convertFileToByteArray(task.getFile()));
|
LogUtils.e("roomInfoEvent", convertFileToByteArray(task.getFile()));
|
||||||
musicFileBean.setFileData(convertFileToByteArray(task.getFile()));
|
musicFileBean.setFileData(convertFileToByteArray(task.getFile()));
|
||||||
EventBus.getDefault().post(musicFileBean);
|
EventBus.getDefault().post(musicFileBean);
|
||||||
} else {
|
} else {
|
||||||
@@ -1391,7 +1417,7 @@ public class AgoraManager {
|
|||||||
@Override
|
@Override
|
||||||
public void taskEnd(@NonNull DownloadTask task, @NonNull EndCause cause, @Nullable Exception realCause, @NonNull Listener1Assist.Listener1Model model) {
|
public void taskEnd(@NonNull DownloadTask task, @NonNull EndCause cause, @Nullable Exception realCause, @NonNull Listener1Assist.Listener1Model model) {
|
||||||
Logger.e("taskEnd", model);
|
Logger.e("taskEnd", model);
|
||||||
LogUtils.e("roomInfoEvent",convertFileToByteArray(task.getFile()));
|
LogUtils.e("roomInfoEvent", convertFileToByteArray(task.getFile()));
|
||||||
MusicFileBean musicFileBean = new MusicFileBean();
|
MusicFileBean musicFileBean = new MusicFileBean();
|
||||||
musicFileBean.setFileData(convertFileToByteArray(task.getFile()));
|
musicFileBean.setFileData(convertFileToByteArray(task.getFile()));
|
||||||
EventBus.getDefault().post(musicFileBean);
|
EventBus.getDefault().post(musicFileBean);
|
||||||
|
|||||||
@@ -354,6 +354,15 @@ public class SpUtil {
|
|||||||
return SPUtils.getInstance(SPConstants.PREFERENCE_NAME).getInt(SPConstants.TASK_SERVICE);
|
return SPUtils.getInstance(SPConstants.PREFERENCE_NAME).getInt(SPConstants.TASK_SERVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int setSkService(int taskService){
|
||||||
|
SPUtils.getInstance(SPConstants.PREFERENCE_NAME).put("skService", taskService);
|
||||||
|
return taskService;
|
||||||
|
}
|
||||||
|
public static int getSkService(){
|
||||||
|
return SPUtils.getInstance(SPConstants.PREFERENCE_NAME).getInt("skService");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//获取SharedPreferences音乐轮播方式
|
//获取SharedPreferences音乐轮播方式
|
||||||
public static int getPlayPattern() {
|
public static int getPlayPattern() {
|
||||||
return SPUtils.getInstance(SPConstants.PREFERENCE_NAME).getInt(SPConstants.PLAY_MODE, 1);
|
return SPUtils.getInstance(SPConstants.PREFERENCE_NAME).getInt(SPConstants.PLAY_MODE, 1);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import android.content.Context;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
|
||||||
import com.blankj.utilcode.util.AppUtils;
|
import com.blankj.utilcode.util.AppUtils;
|
||||||
|
import com.blankj.utilcode.util.DeviceUtils;
|
||||||
import com.blankj.utilcode.util.MetaDataUtils;
|
import com.blankj.utilcode.util.MetaDataUtils;
|
||||||
import com.xscm.moduleutil.base.CommonAppContext;
|
import com.xscm.moduleutil.base.CommonAppContext;
|
||||||
import com.xscm.moduleutil.utils.config.ConfigUtils;
|
import com.xscm.moduleutil.utils.config.ConfigUtils;
|
||||||
@@ -77,7 +78,8 @@ public class SystemUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static String getShortClientID(Context context) {
|
public static String getShortClientID(Context context) {
|
||||||
String cid = getClientID("xqipaoandroid");
|
// String cid = getClientID("xqipaoandroid");
|
||||||
|
String cid = DeviceUtils.getUniqueDeviceId();
|
||||||
return Md5Utils.get(cid + getUUID(context));
|
return Md5Utils.get(cid + getUUID(context));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -317,6 +317,7 @@ public class Constants {
|
|||||||
public static final String POST_APPLY_SONG = "/api/RoomSong/apply_song";//申请点歌
|
public static final String POST_APPLY_SONG = "/api/RoomSong/apply_song";//申请点歌
|
||||||
public static final String POST_AGREE_SONG = "/api/RoomSong/agree_song";//同意、拒绝点歌
|
public static final String POST_AGREE_SONG = "/api/RoomSong/agree_song";//同意、拒绝点歌
|
||||||
public static final String GET_BLIND_BOX_STATUS = "/api/BlindBoxTurntable/blind_box_status";//盲盒转盘状态
|
public static final String GET_BLIND_BOX_STATUS = "/api/BlindBoxTurntable/blind_box_status";//盲盒转盘状态
|
||||||
|
public static final String SET_ROOM_BUSINESS_TIME = "/api/Room/set_room_business_time";//设置房间的营业时间
|
||||||
public static final String POST_SONG_LIST = "/api/RoomSong/song_list";//获取已点歌曲
|
public static final String POST_SONG_LIST = "/api/RoomSong/song_list";//获取已点歌曲
|
||||||
public static final String POST_SONG = "/api/RoomSong/song";//点歌
|
public static final String POST_SONG = "/api/RoomSong/song";//点歌
|
||||||
public static final String POST_UP_SONG = "/api/RoomSong/up_song";//移动歌曲
|
public static final String POST_UP_SONG = "/api/RoomSong/up_song";//移动歌曲
|
||||||
@@ -411,6 +412,7 @@ public class Constants {
|
|||||||
public static final String GET_INDEX_RECOMMEND_ROOM = "/api/Index/index_recommend_room";//首页弹窗推荐房间
|
public static final String GET_INDEX_RECOMMEND_ROOM = "/api/Index/index_recommend_room";//首页弹窗推荐房间
|
||||||
public static final String GET_DAY_DROP_GIFT = "/api/Activities/day_drop_gift";//天降好礼列表接口(弹框)
|
public static final String GET_DAY_DROP_GIFT = "/api/Activities/day_drop_gift";//天降好礼列表接口(弹框)
|
||||||
public static final String postRoomSwToken = "/api/Room/update_user_sw_token";//获取用户声网token
|
public static final String postRoomSwToken = "/api/Room/update_user_sw_token";//获取用户声网token
|
||||||
|
public static final String POST_CLOSE_PK_MIC = "/api/RoomPk/close_pk_mic";//PK闭麦
|
||||||
public static final String POST_CANCEL_USER_DECORATE = "/api/Decorate/cancel_user_decorate";//取消装扮
|
public static final String POST_CANCEL_USER_DECORATE = "/api/Decorate/cancel_user_decorate";//取消装扮
|
||||||
public static final String GET_THEME_DATA = "/api/Theme/get_theme_data";//主题接口
|
public static final String GET_THEME_DATA = "/api/Theme/get_theme_data";//主题接口
|
||||||
public static final String START_FRIEND = "/api/Friend/start_friend";//点击开始按钮 交友房
|
public static final String START_FRIEND = "/api/Friend/start_friend";//点击开始按钮 交友房
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ import java.util.Date;
|
|||||||
public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment {
|
public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment {
|
||||||
|
|
||||||
private OnTimeRangeSelectedListener listener;
|
private OnTimeRangeSelectedListener listener;
|
||||||
|
private boolean showTime = true; // 默认显示时分秒
|
||||||
|
private boolean showDate = true; // 默认显示日期
|
||||||
|
private boolean showSeconds = true; // 默认显示秒
|
||||||
|
|
||||||
public interface OnTimeRangeSelectedListener {
|
public interface OnTimeRangeSelectedListener {
|
||||||
void onTimeRangeSelected(Date startDate, Date endDate);
|
void onTimeRangeSelected(Date startDate, Date endDate);
|
||||||
@@ -28,6 +31,54 @@ public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment {
|
|||||||
public void setOnTimeRangeSelectedListener(OnTimeRangeSelectedListener listener) {
|
public void setOnTimeRangeSelectedListener(OnTimeRangeSelectedListener listener) {
|
||||||
this.listener = listener;
|
this.listener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置是否显示时分秒
|
||||||
|
* @param showTime true显示年月日时分秒,false只显示年月日
|
||||||
|
*/
|
||||||
|
public void setShowTime(boolean showTime) {
|
||||||
|
this.showTime = showTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置是否显示日期
|
||||||
|
* @param showDate true显示日期,false只显示时间
|
||||||
|
*/
|
||||||
|
public void setShowDate(boolean showDate) {
|
||||||
|
this.showDate = showDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置是否显示秒
|
||||||
|
* @param showSeconds true显示秒,false不显示秒
|
||||||
|
*/
|
||||||
|
public void setShowSeconds(boolean showSeconds) {
|
||||||
|
this.showSeconds = showSeconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建实例
|
||||||
|
* @param showTime true显示年月日时分秒,false只显示年月日
|
||||||
|
* @return DoubleTimePickerBottomSheet实例
|
||||||
|
*/
|
||||||
|
public static DoubleTimePickerBottomSheet newInstance(boolean showTime) {
|
||||||
|
DoubleTimePickerBottomSheet fragment = new DoubleTimePickerBottomSheet();
|
||||||
|
fragment.setShowTime(showTime);
|
||||||
|
return fragment;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建实例
|
||||||
|
* @param showTime true显示年月日时分秒,false只显示年月日
|
||||||
|
* @param showDate true显示日期,false只显示时间
|
||||||
|
* @return DoubleTimePickerBottomSheet实例
|
||||||
|
*/
|
||||||
|
public static DoubleTimePickerBottomSheet newInstance(boolean showTime, boolean showDate) {
|
||||||
|
DoubleTimePickerBottomSheet fragment = new DoubleTimePickerBottomSheet();
|
||||||
|
fragment.setShowTime(showTime);
|
||||||
|
fragment.setShowDate(showDate);
|
||||||
|
return fragment;
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
@@ -52,17 +103,77 @@ public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment {
|
|||||||
WheelTimePicker wheelStartTime = view.findViewById(R.id.wheel_start_time);
|
WheelTimePicker wheelStartTime = view.findViewById(R.id.wheel_start_time);
|
||||||
WheelDatePicker wheelEndDate = view.findViewById(R.id.wheel_end_date);
|
WheelDatePicker wheelEndDate = view.findViewById(R.id.wheel_end_date);
|
||||||
WheelTimePicker wheelEndTime = view.findViewById(R.id.wheel_end_time);
|
WheelTimePicker wheelEndTime = view.findViewById(R.id.wheel_end_time);
|
||||||
|
|
||||||
|
// 根据showDate和showTime参数控制日期和时间选择器的显示和布局
|
||||||
|
if (showDate && showTime) {
|
||||||
|
// 显示日期和时间时,使用默认布局
|
||||||
|
wheelStartDate.setVisibility(View.VISIBLE);
|
||||||
|
wheelStartTime.setVisibility(View.VISIBLE);
|
||||||
|
wheelEndDate.setVisibility(View.VISIBLE);
|
||||||
|
wheelEndTime.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
|
// 重置日期选择器的布局参数为默认值
|
||||||
|
ViewGroup.LayoutParams startDateParams = wheelStartDate.getLayoutParams();
|
||||||
|
startDateParams.width = ViewGroup.LayoutParams.WRAP_CONTENT;
|
||||||
|
wheelStartDate.setLayoutParams(startDateParams);
|
||||||
|
|
||||||
|
ViewGroup.LayoutParams endDateParams = wheelEndDate.getLayoutParams();
|
||||||
|
endDateParams.width = ViewGroup.LayoutParams.WRAP_CONTENT;
|
||||||
|
wheelEndDate.setLayoutParams(endDateParams);
|
||||||
|
} else if (showDate && !showTime) {
|
||||||
|
// 只显示日期时,隐藏时间选择器并让日期选择器铺满宽度
|
||||||
|
wheelStartTime.setVisibility(View.GONE);
|
||||||
|
wheelEndTime.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
// 设置日期选择器铺满宽度
|
||||||
|
ViewGroup.LayoutParams startDateParams = wheelStartDate.getLayoutParams();
|
||||||
|
startDateParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||||
|
wheelStartDate.setLayoutParams(startDateParams);
|
||||||
|
|
||||||
|
ViewGroup.LayoutParams endDateParams = wheelEndDate.getLayoutParams();
|
||||||
|
endDateParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||||
|
wheelEndDate.setLayoutParams(endDateParams);
|
||||||
|
} else if (!showDate && showTime) {
|
||||||
|
// 只显示时间时,隐藏日期选择器并让时间选择器铺满宽度
|
||||||
|
wheelStartDate.setVisibility(View.GONE);
|
||||||
|
wheelStartTime.setVisibility(View.VISIBLE);
|
||||||
|
wheelEndDate.setVisibility(View.GONE);
|
||||||
|
wheelEndTime.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
|
// 设置时间选择器铺满宽度
|
||||||
|
ViewGroup.LayoutParams startTimeParams = wheelStartTime.getLayoutParams();
|
||||||
|
startTimeParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||||
|
wheelStartTime.setLayoutParams(startTimeParams);
|
||||||
|
|
||||||
|
ViewGroup.LayoutParams endTimeParams = wheelEndTime.getLayoutParams();
|
||||||
|
endTimeParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||||
|
wheelEndTime.setLayoutParams(endTimeParams);
|
||||||
|
}
|
||||||
|
|
||||||
// 默认设置当前时间
|
// 默认设置当前时间
|
||||||
Calendar startCal = Calendar.getInstance();
|
Calendar startCal = Calendar.getInstance();
|
||||||
wheelStartDate.init(startCal.get(Calendar.YEAR), startCal.get(Calendar.MONTH), startCal.get(Calendar.DAY_OF_MONTH));
|
if (showDate) {
|
||||||
wheelStartTime.init(startCal.get(Calendar.HOUR_OF_DAY), startCal.get(Calendar.MINUTE),startCal.get(Calendar.SECOND));
|
wheelStartDate.init(startCal.get(Calendar.YEAR), startCal.get(Calendar.MONTH), startCal.get(Calendar.DAY_OF_MONTH));
|
||||||
|
}
|
||||||
|
if (showTime) {
|
||||||
|
wheelStartTime.init(startCal.get(Calendar.HOUR_OF_DAY), startCal.get(Calendar.MINUTE), showSeconds ? startCal.get(Calendar.SECOND) : 0);
|
||||||
|
wheelStartTime.setShowSeconds(showSeconds);
|
||||||
|
}
|
||||||
|
|
||||||
// 设置默认结束时间略晚于开始时间
|
// 设置默认结束时间略晚于开始时间
|
||||||
Calendar endCal = (Calendar) startCal.clone();
|
Calendar endCal = (Calendar) startCal.clone();
|
||||||
endCal.add(Calendar.HOUR, 1);
|
if (showTime) {
|
||||||
wheelEndDate.init(endCal.get(Calendar.YEAR), endCal.get(Calendar.MONTH), endCal.get(Calendar.DAY_OF_MONTH));
|
endCal.add(Calendar.HOUR, 1);
|
||||||
wheelEndTime.init(endCal.get(Calendar.HOUR_OF_DAY), endCal.get(Calendar.MINUTE),endCal.get(Calendar.SECOND));
|
} else {
|
||||||
|
endCal.add(Calendar.DAY_OF_MONTH, 1);
|
||||||
|
}
|
||||||
|
if (showDate) {
|
||||||
|
wheelEndDate.init(endCal.get(Calendar.YEAR), endCal.get(Calendar.MONTH), endCal.get(Calendar.DAY_OF_MONTH));
|
||||||
|
}
|
||||||
|
if (showTime) {
|
||||||
|
wheelEndTime.init(endCal.get(Calendar.HOUR_OF_DAY), endCal.get(Calendar.MINUTE), showSeconds ? endCal.get(Calendar.SECOND) : 0);
|
||||||
|
wheelEndTime.setShowSeconds(showSeconds);
|
||||||
|
}
|
||||||
|
|
||||||
// 取消按钮
|
// 取消按钮
|
||||||
view.findViewById(R.id.btn_cancel).setOnClickListener(v -> dismiss());
|
view.findViewById(R.id.btn_cancel).setOnClickListener(v -> dismiss());
|
||||||
@@ -70,16 +181,36 @@ public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment {
|
|||||||
// 确定按钮
|
// 确定按钮
|
||||||
view.findViewById(R.id.btn_sure).setOnClickListener(v -> {
|
view.findViewById(R.id.btn_sure).setOnClickListener(v -> {
|
||||||
Calendar start = Calendar.getInstance();
|
Calendar start = Calendar.getInstance();
|
||||||
start.set(wheelStartDate.getYear(), wheelStartDate.getMonth(), wheelStartDate.getDay(),
|
|
||||||
wheelStartTime.getHour(), wheelStartTime.getMinute(), wheelStartTime.getSecond());
|
|
||||||
|
|
||||||
Calendar end = Calendar.getInstance();
|
Calendar end = Calendar.getInstance();
|
||||||
end.set(wheelEndDate.getYear(), wheelEndDate.getMonth(), wheelEndDate.getDay(),
|
|
||||||
wheelEndTime.getHour(), wheelEndTime.getMinute(), wheelEndTime.getSecond());
|
if (showDate && showTime) {
|
||||||
|
// 显示日期和时间
|
||||||
if (end.getTime().before(start.getTime())) {
|
start.set(wheelStartDate.getYear(), wheelStartDate.getMonth(), wheelStartDate.getDay(),
|
||||||
Toast.makeText(requireContext(), "结束时间不能早于开始时间", Toast.LENGTH_SHORT).show();
|
wheelStartTime.getHour(), wheelStartTime.getMinute(), wheelStartTime.getSecond());
|
||||||
return;
|
end.set(wheelEndDate.getYear(), wheelEndDate.getMonth(), wheelEndDate.getDay(),
|
||||||
|
wheelEndTime.getHour(), wheelEndTime.getMinute(), wheelEndTime.getSecond());
|
||||||
|
} else if (showDate && !showTime) {
|
||||||
|
// 只显示日期
|
||||||
|
start.set(wheelStartDate.getYear(), wheelStartDate.getMonth(), wheelStartDate.getDay(),
|
||||||
|
0, 0, 0);
|
||||||
|
end.set(wheelEndDate.getYear(), wheelEndDate.getMonth(), wheelEndDate.getDay(),
|
||||||
|
23, 59, 59);
|
||||||
|
} else if (!showDate && showTime) {
|
||||||
|
// 只显示时间,使用当前日期
|
||||||
|
int currentYear = start.get(Calendar.YEAR);
|
||||||
|
int currentMonth = start.get(Calendar.MONTH);
|
||||||
|
int currentDay = start.get(Calendar.DAY_OF_MONTH);
|
||||||
|
|
||||||
|
start.set(currentYear, currentMonth, currentDay,
|
||||||
|
wheelStartTime.getHour(), wheelStartTime.getMinute(), wheelStartTime.getSecond());
|
||||||
|
end.set(currentYear, currentMonth, currentDay,
|
||||||
|
wheelEndTime.getHour(), wheelEndTime.getMinute(), wheelEndTime.getSecond());
|
||||||
|
}
|
||||||
|
if ((showDate && showTime) || (showDate && !showTime) ) {
|
||||||
|
if (end.getTime().before(start.getTime())) {
|
||||||
|
Toast.makeText(requireContext(), "结束时间不能早于开始时间", Toast.LENGTH_SHORT).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (listener != null) {
|
if (listener != null) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import android.widget.NumberPicker;
|
|||||||
public class WheelTimePicker extends LinearLayout {
|
public class WheelTimePicker extends LinearLayout {
|
||||||
|
|
||||||
private NumberPicker hourPicker, minutePicker, secondPicker;
|
private NumberPicker hourPicker, minutePicker, secondPicker;
|
||||||
|
private boolean showSeconds = true; // 默认显示秒
|
||||||
|
|
||||||
public WheelTimePicker(Context context) {
|
public WheelTimePicker(Context context) {
|
||||||
this(context, null);
|
this(context, null);
|
||||||
@@ -33,6 +34,9 @@ public class WheelTimePicker extends LinearLayout {
|
|||||||
addView(hourPicker);
|
addView(hourPicker);
|
||||||
addView(minutePicker);
|
addView(minutePicker);
|
||||||
addView(secondPicker);
|
addView(secondPicker);
|
||||||
|
|
||||||
|
// 根据showSeconds参数决定是否显示秒选择器
|
||||||
|
secondPicker.setVisibility(showSeconds ? VISIBLE : GONE);
|
||||||
|
|
||||||
// 设置小时范围
|
// 设置小时范围
|
||||||
hourPicker.setMinValue(0);
|
hourPicker.setMinValue(0);
|
||||||
@@ -64,4 +68,15 @@ public class WheelTimePicker extends LinearLayout {
|
|||||||
public int getSecond() {
|
public int getSecond() {
|
||||||
return secondPicker.getValue();
|
return secondPicker.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置是否显示秒
|
||||||
|
* @param showSeconds true显示秒,false不显示秒
|
||||||
|
*/
|
||||||
|
public void setShowSeconds(boolean showSeconds) {
|
||||||
|
this.showSeconds = showSeconds;
|
||||||
|
if (secondPicker != null) {
|
||||||
|
secondPicker.setVisibility(showSeconds ? VISIBLE : GONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ public class RewardGiftDialogFragment extends BaseMvpDialogFragment<RewardGiftPr
|
|||||||
mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), giftLabelBeans, fragmentList, ""));
|
mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), giftLabelBeans, fragmentList, ""));
|
||||||
mBinding.slidingTabLayout.setViewPager(mBinding.viewPager);
|
mBinding.slidingTabLayout.setViewPager(mBinding.viewPager);
|
||||||
mBinding.slidingTabLayout.setCurrentTab(0);
|
mBinding.slidingTabLayout.setCurrentTab(0);
|
||||||
refreshCurrentGiftFragment(giftLabelBeans.get(0).getId(), 2, "");
|
refreshCurrentGiftFragment(giftLabelBeans.get(0).getId(), 2, "5");
|
||||||
mBinding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
mBinding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||||
@@ -226,7 +226,7 @@ public class RewardGiftDialogFragment extends BaseMvpDialogFragment<RewardGiftPr
|
|||||||
@Override
|
@Override
|
||||||
public void onPageSelected(int position) {
|
public void onPageSelected(int position) {
|
||||||
// 当页面切换时,控制 tv_bb_qs 按钮的显示
|
// 当页面切换时,控制 tv_bb_qs 按钮的显示
|
||||||
refreshCurrentGiftFragment(giftLabelBeans.get(position).getId(), 2, "");
|
refreshCurrentGiftFragment(giftLabelBeans.get(position).getId(), 2, "5");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -236,9 +236,9 @@ public class RewardGiftDialogFragment extends BaseMvpDialogFragment<RewardGiftPr
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshCurrentGiftFragment(String id, int type, String roomId) {
|
private void refreshCurrentGiftFragment(String id, int status, String type) {
|
||||||
if (getCurrentGiftFragment() != null) {
|
if (getCurrentGiftFragment() != null) {
|
||||||
getCurrentGiftFragment().loadDataIfNeeded(id, type, roomId);
|
getCurrentGiftFragment().loadDataIfNeeded(id, status, type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,16 @@ package com.xscm.modulemain.activity
|
|||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.CompoundButton
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
|
import com.blankj.utilcode.util.LogUtils
|
||||||
import com.blankj.utilcode.util.ToastUtils
|
import com.blankj.utilcode.util.ToastUtils
|
||||||
import com.tencent.imsdk.v2.V2TIMCallback
|
import com.tencent.imsdk.v2.V2TIMCallback
|
||||||
|
import com.tencent.imsdk.v2.V2TIMConversation
|
||||||
|
import com.tencent.imsdk.v2.V2TIMGroupInfoResult
|
||||||
import com.tencent.imsdk.v2.V2TIMGroupManager
|
import com.tencent.imsdk.v2.V2TIMGroupManager
|
||||||
import com.tencent.imsdk.v2.V2TIMManager
|
import com.tencent.imsdk.v2.V2TIMManager
|
||||||
|
import com.tencent.imsdk.v2.V2TIMMessage
|
||||||
|
import com.tencent.imsdk.v2.V2TIMValueCallback
|
||||||
import com.xscm.modulemain.BaseMvpActivity
|
import com.xscm.modulemain.BaseMvpActivity
|
||||||
import com.xscm.modulemain.R
|
import com.xscm.modulemain.R
|
||||||
import com.xscm.modulemain.activity.msg.NewsContacts
|
import com.xscm.modulemain.activity.msg.NewsContacts
|
||||||
@@ -19,6 +23,7 @@ import com.xscm.moduleutil.bean.GroupUserListBean
|
|||||||
import com.xscm.moduleutil.bean.NewsMessageList
|
import com.xscm.moduleutil.bean.NewsMessageList
|
||||||
import com.xscm.moduleutil.utils.ImageUtils
|
import com.xscm.moduleutil.utils.ImageUtils
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author
|
* @Author
|
||||||
* @Time 2026/1/2 14:57
|
* @Time 2026/1/2 14:57
|
||||||
@@ -31,7 +36,7 @@ class GroupChatSettingsActivity :
|
|||||||
var groupAdapter: GroupAdapter? = GroupAdapter()
|
var groupAdapter: GroupAdapter? = GroupAdapter()
|
||||||
val v2TIMGroupManager: V2TIMGroupManager?= V2TIMManager.getGroupManager()
|
val v2TIMGroupManager: V2TIMGroupManager?= V2TIMManager.getGroupManager()
|
||||||
var groupId: String = ""
|
var groupId: String = ""
|
||||||
var isOwner : Boolean = false
|
var isOwner : Int = 0
|
||||||
|
|
||||||
var groupBean : GroupBean= GroupBean()
|
var groupBean : GroupBean= GroupBean()
|
||||||
|
|
||||||
@@ -88,6 +93,45 @@ class GroupChatSettingsActivity :
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mBinding?.switDoNotDisturb?.setOnCheckedChangeListener { compoundButton, b ->
|
||||||
|
V2TIMManager.getMessageManager().setGroupReceiveMessageOpt(
|
||||||
|
groupId,
|
||||||
|
if (b) V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE else V2TIMMessage.V2TIM_RECEIVE_MESSAGE,
|
||||||
|
object : V2TIMCallback {
|
||||||
|
override fun onSuccess() {
|
||||||
|
// 修改群消息接收选项成功
|
||||||
|
ToastUtils.showLong(if (b) "已开启消息免打扰" else "已关闭消息免打扰")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onError(code: Int, desc: String?) {
|
||||||
|
// 修改群消息接收选项失败
|
||||||
|
ToastUtils.showLong("免打扰功能开启失败",code,desc)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
val groupIDs: MutableList<String?> = ArrayList<String?>()
|
||||||
|
groupIDs.add(groupId)
|
||||||
|
V2TIMManager.getGroupManager().getGroupsInfo(
|
||||||
|
groupIDs,
|
||||||
|
object : V2TIMValueCallback<MutableList<V2TIMGroupInfoResult?>?> {
|
||||||
|
|
||||||
|
override fun onSuccess(t: MutableList<V2TIMGroupInfoResult?>?) {
|
||||||
|
|
||||||
|
if (t != null && !t.isEmpty()) {
|
||||||
|
val result = t[0]
|
||||||
|
if (result?.resultCode == 0) {
|
||||||
|
val groupInfo = result.groupInfo
|
||||||
|
mBinding?.switDoNotDisturb?.isChecked = groupInfo.recvOpt == V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onError(code: Int, desc: String?) {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getLayoutId(): Int {
|
override fun getLayoutId(): Int {
|
||||||
@@ -111,18 +155,18 @@ class GroupChatSettingsActivity :
|
|||||||
this.groupBean=groupBean
|
this.groupBean=groupBean
|
||||||
mBinding?.groupName?.text = groupBean.name
|
mBinding?.groupName?.text = groupBean.name
|
||||||
ImageUtils.loadHead(groupBean.guild_cover, mBinding?.imGroup)
|
ImageUtils.loadHead(groupBean.guild_cover, mBinding?.imGroup)
|
||||||
if (groupBean.is_deacon == 1) {
|
if (groupBean.is_deacon == 1 || groupBean.is_deacon == 2) {
|
||||||
isOwner=true
|
|
||||||
mBinding?.llGroup?.visibility = View.VISIBLE
|
mBinding?.llGroup?.visibility = View.VISIBLE
|
||||||
mBinding?.switJy?.isChecked = groupBean.mute_all_member == 1
|
mBinding?.switJy?.isChecked = groupBean.mute_all_member == 1
|
||||||
mBinding?.etG?.isEnabled = true
|
mBinding?.etG?.isEnabled = true
|
||||||
mBinding?.evGroupName?.isEnabled = true
|
mBinding?.evGroupName?.isEnabled = true
|
||||||
} else {
|
}
|
||||||
isOwner=false
|
else {
|
||||||
mBinding?.llGroup?.visibility = View.GONE
|
mBinding?.llGroup?.visibility = View.GONE
|
||||||
mBinding?.etG?.isEnabled = false
|
mBinding?.etG?.isEnabled = false
|
||||||
mBinding?.evGroupName?.isEnabled = false
|
mBinding?.evGroupName?.isEnabled = false
|
||||||
}
|
}
|
||||||
|
isOwner=groupBean.is_deacon
|
||||||
mBinding?.etG?.text?.append(groupBean.notification)
|
mBinding?.etG?.text?.append(groupBean.notification)
|
||||||
mBinding?.evGroupName?.text?.append(groupBean.name)
|
mBinding?.evGroupName?.text?.append(groupBean.name)
|
||||||
|
|
||||||
@@ -143,4 +187,5 @@ class GroupChatSettingsActivity :
|
|||||||
super.doDone()
|
super.doDone()
|
||||||
groupId = intent.getStringExtra("groupId").toString()
|
groupId = intent.getStringExtra("groupId").toString()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,14 @@ import android.view.ViewGroup
|
|||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
import com.blankj.utilcode.util.LogUtils
|
||||||
import com.blankj.utilcode.util.ToastUtils
|
import com.blankj.utilcode.util.ToastUtils
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import com.scwang.smartrefresh.layout.api.RefreshLayout
|
import com.scwang.smartrefresh.layout.api.RefreshLayout
|
||||||
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener
|
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener
|
||||||
import com.tencent.imsdk.v2.V2TIMCallback
|
import com.tencent.imsdk.v2.V2TIMCallback
|
||||||
import com.tencent.imsdk.v2.V2TIMGroupManager
|
import com.tencent.imsdk.v2.V2TIMGroupManager
|
||||||
|
import com.tencent.imsdk.v2.V2TIMGroupMemberFullInfo
|
||||||
import com.tencent.imsdk.v2.V2TIMManager
|
import com.tencent.imsdk.v2.V2TIMManager
|
||||||
import com.xscm.modulemain.BaseMvpActivity
|
import com.xscm.modulemain.BaseMvpActivity
|
||||||
import com.xscm.modulemain.R
|
import com.xscm.modulemain.R
|
||||||
@@ -37,7 +39,7 @@ class GroupUserListActivity : BaseMvpActivity<NewsPresenter, ActivityGroupUserLi
|
|||||||
val v2TIMGroupManager: V2TIMGroupManager? = V2TIMManager.getGroupManager()
|
val v2TIMGroupManager: V2TIMGroupManager? = V2TIMManager.getGroupManager()
|
||||||
|
|
||||||
var groupId: String? = null
|
var groupId: String? = null
|
||||||
var isOwner: Boolean = false
|
var isOwner: Int = 0
|
||||||
var page: Int = 1
|
var page: Int = 1
|
||||||
var search: String = ""
|
var search: String = ""
|
||||||
var groupUserBean: List<GroupBean.GroupUserBean> = ArrayList()
|
var groupUserBean: List<GroupBean.GroupUserBean> = ArrayList()
|
||||||
@@ -50,7 +52,7 @@ class GroupUserListActivity : BaseMvpActivity<NewsPresenter, ActivityGroupUserLi
|
|||||||
override fun doDone() {
|
override fun doDone() {
|
||||||
super.doDone()
|
super.doDone()
|
||||||
groupId = intent.getStringExtra("groupId").toString()
|
groupId = intent.getStringExtra("groupId").toString()
|
||||||
isOwner = intent.getBooleanExtra("isOwner", false)
|
isOwner = intent.getIntExtra("isOwner", 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun initData() {
|
override fun initData() {
|
||||||
@@ -76,16 +78,46 @@ class GroupUserListActivity : BaseMvpActivity<NewsPresenter, ActivityGroupUserLi
|
|||||||
item?.is_mute = 1
|
item?.is_mute = 1
|
||||||
}
|
}
|
||||||
groupUserListAdapter.notifyDataSetChanged()
|
groupUserListAdapter.notifyDataSetChanged()
|
||||||
|
ToastUtils.showLong("操作成功")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onError(code: Int, desc: String?) {
|
override fun onError(code: Int, desc: String?) {
|
||||||
ToastUtils.showLong(desc)
|
LogUtils.e("禁言失败:$code $desc")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
onCommentLongClick(item)
|
onCommentLongClick(item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onItemGroupMemberClick(
|
||||||
|
item: GroupBean.GroupUserBean?,
|
||||||
|
b: Boolean
|
||||||
|
) {
|
||||||
|
if (item?.group_role == 4){
|
||||||
|
ToastUtils.showLong("当前用户数据错误,请联系管理员")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
v2TIMGroupManager?.setGroupMemberRole(
|
||||||
|
groupId,
|
||||||
|
"u" + item?.user_id.toString(),
|
||||||
|
if (b) V2TIMGroupMemberFullInfo.V2TIM_GROUP_MEMBER_ROLE_MEMBER else V2TIMGroupMemberFullInfo.V2TIM_GROUP_MEMBER_ROLE_ADMIN,
|
||||||
|
object : V2TIMCallback {
|
||||||
|
override fun onSuccess() {
|
||||||
|
if (b) {
|
||||||
|
item?.group_role = 2 //管理员
|
||||||
|
} else {
|
||||||
|
item?.group_role = 3 //普通成员
|
||||||
|
}
|
||||||
|
groupUserListAdapter.notifyDataSetChanged()
|
||||||
|
LogUtils.e("群成员设置角色成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onError(code: Int, desc: String?) {
|
||||||
|
LogUtils.e("群成员设置角色失败:$code $desc")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
mBinding.tvCancel.setOnClickListener { view ->
|
mBinding.tvCancel.setOnClickListener { view ->
|
||||||
@@ -107,7 +139,7 @@ class GroupUserListActivity : BaseMvpActivity<NewsPresenter, ActivityGroupUserLi
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
if (isOwner) {
|
if (isOwner == 1 || isOwner == 2) {
|
||||||
mBinding.llSearch.visibility = View.VISIBLE
|
mBinding.llSearch.visibility = View.VISIBLE
|
||||||
} else {
|
} else {
|
||||||
mBinding.llSearch.visibility = View.GONE
|
mBinding.llSearch.visibility = View.GONE
|
||||||
@@ -218,10 +250,11 @@ class GroupUserListActivity : BaseMvpActivity<NewsPresenter, ActivityGroupUserLi
|
|||||||
item?.is_mute = 1
|
item?.is_mute = 1
|
||||||
}
|
}
|
||||||
groupUserListAdapter.notifyDataSetChanged()
|
groupUserListAdapter.notifyDataSetChanged()
|
||||||
|
ToastUtils.showLong("操作成功")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onError(code: Int, desc: String?) {
|
override fun onError(code: Int, desc: String?) {
|
||||||
ToastUtils.showLong(desc)
|
LogUtils.e("muteGroupMember", "muteGroupMember code=$code desc=$desc")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -631,7 +631,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
|||||||
mBinding!!.roomTop.root.isClickable = false
|
mBinding!!.roomTop.root.isClickable = false
|
||||||
setView(mRoomInfoResp)
|
setView(mRoomInfoResp)
|
||||||
|
|
||||||
MvpPre?.getRoomOnline(roomId, "1", "10")
|
// MvpPre?.getRoomOnline(roomId, "1", "10")
|
||||||
}
|
}
|
||||||
|
|
||||||
private var bgEffectView: View? = null
|
private var bgEffectView: View? = null
|
||||||
@@ -3076,6 +3076,21 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
|||||||
AgoraManager.getInstance().muteLocalAudioStream(false)
|
AgoraManager.getInstance().muteLocalAudioStream(false)
|
||||||
AgoraManager.getInstance().ClientRole(true)
|
AgoraManager.getInstance().ClientRole(true)
|
||||||
CommonAppContext.getInstance().isMai = true
|
CommonAppContext.getInstance().isMai = true
|
||||||
|
var userId : String =""
|
||||||
|
mRoomInfoResp?.room_info?.pit_list?.size?.let {
|
||||||
|
if (it < 9) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
userId = mRoomInfoResp?.room_info?.pit_list!![8].user_id
|
||||||
|
}
|
||||||
|
// 方案1:使用安全调用和let操作符
|
||||||
|
mRoomInfoResp?.pk_info?.close_users?.let { users ->
|
||||||
|
if (users.contains(userId)) {
|
||||||
|
AgoraManagerEx.getInstance().muteLocalAudioStreamEx(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
mBinding!!.ivMic.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off)
|
mBinding!!.ivMic.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off)
|
||||||
AgoraManager.getInstance()
|
AgoraManager.getInstance()
|
||||||
|
|||||||
@@ -29,5 +29,7 @@ public class RoomSettingContacts {
|
|||||||
void agreeSong(String roomId, String type);
|
void agreeSong(String roomId, String type);
|
||||||
|
|
||||||
void blindBoxStatus();
|
void blindBoxStatus();
|
||||||
|
|
||||||
|
void setRoomBusinessTime(String roomId,String startTime,String endTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ public class SingSongContacts {
|
|||||||
void userOnlineStatus(List<UserOnlineStatusBean> list);
|
void userOnlineStatus(List<UserOnlineStatusBean> list);
|
||||||
|
|
||||||
void postAgora(PkSwTokenBean pkSwTokenBean);
|
void postAgora(PkSwTokenBean pkSwTokenBean);
|
||||||
|
|
||||||
|
void closePkMic();
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface IEmotionRoomPre extends IPresenter {
|
public interface IEmotionRoomPre extends IPresenter {
|
||||||
@@ -39,5 +41,7 @@ public class SingSongContacts {
|
|||||||
void endPk(String pk_id,String type,String user_id);
|
void endPk(String pk_id,String type,String user_id);
|
||||||
void userOnlineStatus(String userId, String roomid);
|
void userOnlineStatus(String userId, String roomid);
|
||||||
|
|
||||||
|
void closePkMic(String pk_id,String type,String user_id);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -281,12 +281,12 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userIds.length() > 0 && roomId != null) {
|
// if (userIds.length() > 0 && roomId != null) {
|
||||||
if (MvpPre == null) {
|
// if (MvpPre == null) {
|
||||||
MvpPre = new FriendshipRoomPresenter(this, getActivity());
|
// MvpPre = new FriendshipRoomPresenter(this, getActivity());
|
||||||
}
|
// }
|
||||||
MvpPre.userOnlineStatus(userIds.toString(), roomId);
|
// MvpPre.userOnlineStatus(userIds.toString(), roomId);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -286,9 +286,9 @@ public class RoomAuctionFragment extends BaseMvpFragment<RoomAuctionPresenterTow
|
|||||||
userIds.append(auctionUserBean.getUser_id());
|
userIds.append(auctionUserBean.getUser_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userIds.length() > 0 && roomInfoResp.getRoom_info().getRoom_id() != null) {
|
// if (userIds.length() > 0 && roomInfoResp.getRoom_info().getRoom_id() != null) {
|
||||||
MvpPre.userOnlineStatus(userIds.toString(), roomInfoResp.getRoom_info().getRoom_id());
|
// MvpPre.userOnlineStatus(userIds.toString(), roomInfoResp.getRoom_info().getRoom_id());
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -267,9 +267,9 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
|
|||||||
userIds.append(roomPitBean.getUser_id());
|
userIds.append(roomPitBean.getUser_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userIds.length() > 0 && roomInfoResp.getRoom_info().getRoom_id() != null) {
|
// if (userIds.length() > 0 && roomInfoResp.getRoom_info().getRoom_id() != null) {
|
||||||
MvpPre.userOnlineStatus(userIds.toString(), roomInfoResp.getRoom_info().getRoom_id());
|
// MvpPre.userOnlineStatus(userIds.toString(), roomInfoResp.getRoom_info().getRoom_id());
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -191,6 +191,7 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
|
|||||||
|
|
||||||
if (mRoomInfoResp?.sign_info?.sign_id != "-1") {
|
if (mRoomInfoResp?.sign_info?.sign_id != "-1") {
|
||||||
mSignId = mRoomInfoResp?.sign_info?.sign_id
|
mSignId = mRoomInfoResp?.sign_info?.sign_id
|
||||||
|
LogUtils.e("初始的时候,mSignId = $mSignId")
|
||||||
if (mRoomInfoResp?.sign_info?.sign_status == 1) {
|
if (mRoomInfoResp?.sign_info?.sign_status == 1) {
|
||||||
startTimer(mRoomInfoResp?.sign_info?.end_time!!)
|
startTimer(mRoomInfoResp?.sign_info?.end_time!!)
|
||||||
if (mUserInfo?.user_id?.toString().equals(mSignPitBean?.user_id)) {
|
if (mUserInfo?.user_id?.toString().equals(mSignPitBean?.user_id)) {
|
||||||
@@ -396,6 +397,7 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
|
|||||||
mBinding.ivApplyForMai.isClickable = true
|
mBinding.ivApplyForMai.isClickable = true
|
||||||
|
|
||||||
mSignId = messageEvent?.text?.sign_id
|
mSignId = messageEvent?.text?.sign_id
|
||||||
|
LogUtils.e("场次开始的时候,mSignId = $mSignId")
|
||||||
val endTime = messageEvent?.text?.end_time
|
val endTime = messageEvent?.text?.end_time
|
||||||
val signDay = messageEvent?.text?.sign_day
|
val signDay = messageEvent?.text?.sign_day
|
||||||
val currBodyValue = messageEvent?.text?.current_body_value
|
val currBodyValue = messageEvent?.text?.current_body_value
|
||||||
@@ -423,6 +425,7 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
|
|||||||
fun event1091(messageEvent: RoomMessageEvent?) {
|
fun event1091(messageEvent: RoomMessageEvent?) {
|
||||||
val fromUserInfo = messageEvent?.text?.fromUserInfo
|
val fromUserInfo = messageEvent?.text?.fromUserInfo
|
||||||
val signId = messageEvent?.text?.sign_id
|
val signId = messageEvent?.text?.sign_id
|
||||||
|
LogUtils.e("出价后的场次,mSignId = $mSignId")
|
||||||
if (fromUserInfo != null && mSignId == signId) {
|
if (fromUserInfo != null && mSignId == signId) {
|
||||||
val pitBean = RoomPitBean()
|
val pitBean = RoomPitBean()
|
||||||
pitBean.pit_number = indexList[2]
|
pitBean.pit_number = indexList[2]
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
this.roomInfoResp = roomInfoResp;
|
this.roomInfoResp = roomInfoResp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void upRoomInfo(RoomInfoResp roomInfoResp){
|
public void upRoomInfo(RoomInfoResp roomInfoResp) {
|
||||||
this.roomInfoResp = roomInfoResp;
|
this.roomInfoResp = roomInfoResp;
|
||||||
upDataView();
|
upDataView();
|
||||||
}
|
}
|
||||||
@@ -158,7 +158,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onMeilingClick(@NonNull RoomSingSongWheatView view, int pitNumber) {
|
public void onMeilingClick(@NonNull RoomSingSongWheatView view, int pitNumber) {
|
||||||
if (ClickUtils.isFastDoubleClick(view)){
|
if (ClickUtils.isFastDoubleClick(view)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (view.pitBean != null && !view.pitBean.getUser_id().isEmpty() && !view.pitBean.getUser_id().equals("0")) {
|
if (view.pitBean != null && !view.pitBean.getUser_id().isEmpty() && !view.pitBean.getUser_id().equals("0")) {
|
||||||
@@ -174,7 +174,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
@Override
|
@Override
|
||||||
public void onWheatClick(@NonNull RoomSingSongWheatView view, int pitNumber1) {
|
public void onWheatClick(@NonNull RoomSingSongWheatView view, int pitNumber1) {
|
||||||
|
|
||||||
if (ClickUtils.isFastDoubleClick(view)){
|
if (ClickUtils.isFastDoubleClick(view)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,16 +188,16 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
pitNumber = pitBean.getPit_number();
|
pitNumber = pitBean.getPit_number();
|
||||||
roomPitBean = pitBean;
|
roomPitBean = pitBean;
|
||||||
// showPopupMenu(view); // v 是点击的按钮视图
|
// showPopupMenu(view); // v 是点击的按钮视图
|
||||||
if(getActivity() != null && getActivity() instanceof RoomActivity) {
|
if (getActivity() != null && getActivity() instanceof RoomActivity) {
|
||||||
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
||||||
}
|
}
|
||||||
} else if (pitNumber1 == 10) {
|
} else if (pitNumber1 == 10) {
|
||||||
if (getActivity() != null && getActivity() instanceof RoomActivity){
|
if (getActivity() != null && getActivity() instanceof RoomActivity) {
|
||||||
if (getActivity() != null && ((RoomActivity) getActivity()).getHostUser() < 4){
|
if (getActivity() != null && ((RoomActivity) getActivity()).getHostUser() < 4) {
|
||||||
if (!isFastDoubleClick("online_dialog", pitNumber1 + "")) {
|
if (!isFastDoubleClick("online_dialog", pitNumber1 + "")) {
|
||||||
((RoomActivity)getActivity()).showUserListDialog(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
com.hjq.toast.ToastUtils.show("请等待主持抱麦");
|
com.hjq.toast.ToastUtils.show("请等待主持抱麦");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -346,7 +346,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
|
|
||||||
tvHugMic.setOnClickListener(v -> {
|
tvHugMic.setOnClickListener(v -> {
|
||||||
// 处理抱麦逻辑
|
// 处理抱麦逻辑
|
||||||
if(getActivity() != null && getActivity() instanceof RoomActivity) {
|
if (getActivity() != null && getActivity() instanceof RoomActivity) {
|
||||||
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
||||||
}
|
}
|
||||||
popupWindow.dismiss();
|
popupWindow.dismiss();
|
||||||
@@ -416,7 +416,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
if (MvpPre == null) {
|
if (MvpPre == null) {
|
||||||
MvpPre = new SingSongPresenter(this, getContext());
|
MvpPre = new SingSongPresenter(this, getContext());
|
||||||
}
|
}
|
||||||
MvpPre.userOnlineStatus(userIds.toString(), roomId);
|
// MvpPre.userOnlineStatus(userIds.toString(), roomId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -576,35 +576,8 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
} else {
|
} else {
|
||||||
MvpPre.endPk(roomInfoRespPk.getPk_info().getPk_id(), "3", SpUtil.getUserId() + "");
|
MvpPre.endPk(roomInfoRespPk.getPk_info().getPk_id(), "3", SpUtil.getUserId() + "");
|
||||||
}
|
}
|
||||||
} else if (id == R.id.im_mkf) {
|
} else if (id == R.id.im_mkf) {//关闭、打开对方麦克风
|
||||||
if (pkMicIsOn) {
|
MvpPre.closePkMic(roomInfoRespPk.getPk_info().getPk_id(), pkMicIsOn ? "2" : "1", roomInfoRespPk.getRoom_info().getPit_list().get(8).getUser_id() + "");
|
||||||
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone);
|
|
||||||
is_mute = 0;
|
|
||||||
pkMicIsOn = false;
|
|
||||||
AgoraManagerEx.getInstance().muteAllRemoteAudioStreamsEx(false);
|
|
||||||
} else {
|
|
||||||
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off);
|
|
||||||
is_mute = 1;
|
|
||||||
pkMicIsOn = true;
|
|
||||||
AgoraManagerEx.getInstance().muteAllRemoteAudioStreamsEx(true);
|
|
||||||
}
|
|
||||||
RoomMessageEvent.text text = new RoomMessageEvent.text();
|
|
||||||
text.setIs_mute(is_mute);
|
|
||||||
String s = com.blankj.utilcode.util.GsonUtils.toJson(text);
|
|
||||||
RoomMessageEvent.T t = new RoomMessageEvent.T();
|
|
||||||
t.setText(s);
|
|
||||||
if (roomInfoRespPk != null && roomInfoRespPk.getPk_info() != null) {
|
|
||||||
RoomMessageEvent roomMessageEvent = new RoomMessageEvent(125, roomInfoResp.getRoom_info().getRoom_id(), t);
|
|
||||||
String json = com.blankj.utilcode.util.GsonUtils.toJson(roomMessageEvent);
|
|
||||||
// 转换为 byte[]
|
|
||||||
byte[] binaryData = json.getBytes(StandardCharsets.UTF_8);
|
|
||||||
// 创建自定义消息
|
|
||||||
MessageListenerSingleton.getInstance().sendCustomC2CMessage125(
|
|
||||||
roomInfoRespPk.getRoom_info().getPit_list().get(8).getUser_id(),
|
|
||||||
binaryData
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -693,6 +666,37 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
.joinChannelEx(pkSwTokenBean.getAgora_token(), roomInfoRespPk.getRoom_info().getRoom_id(), pkUserId);
|
.joinChannelEx(pkSwTokenBean.getAgora_token(), roomInfoRespPk.getRoom_info().getRoom_id(), pkUserId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void closePkMic() {
|
||||||
|
if (pkMicIsOn) {
|
||||||
|
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone);
|
||||||
|
is_mute = 0;
|
||||||
|
pkMicIsOn = false;
|
||||||
|
AgoraManagerEx.getInstance().muteAllRemoteAudioStreamsEx(false);
|
||||||
|
} else {
|
||||||
|
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off);
|
||||||
|
is_mute = 1;
|
||||||
|
pkMicIsOn = true;
|
||||||
|
AgoraManagerEx.getInstance().muteAllRemoteAudioStreamsEx(true);
|
||||||
|
}
|
||||||
|
RoomMessageEvent.text text = new RoomMessageEvent.text();
|
||||||
|
text.setIs_mute(is_mute);
|
||||||
|
String s = com.blankj.utilcode.util.GsonUtils.toJson(text);
|
||||||
|
RoomMessageEvent.T t = new RoomMessageEvent.T();
|
||||||
|
t.setText(s);
|
||||||
|
if (roomInfoRespPk != null && roomInfoRespPk.getPk_info() != null) {
|
||||||
|
RoomMessageEvent roomMessageEvent = new RoomMessageEvent(125, roomInfoResp.getRoom_info().getRoom_id(), t);
|
||||||
|
String json = com.blankj.utilcode.util.GsonUtils.toJson(roomMessageEvent);
|
||||||
|
// 转换为 byte[]
|
||||||
|
byte[] binaryData = json.getBytes(StandardCharsets.UTF_8);
|
||||||
|
// 创建自定义消息
|
||||||
|
MessageListenerSingleton.getInstance().sendCustomC2CMessage125(
|
||||||
|
roomInfoRespPk.getRoom_info().getPit_list().get(8).getUser_id(),
|
||||||
|
binaryData
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void pkView() {
|
private void pkView() {
|
||||||
flexboxLayout.setVisibility(View.GONE);
|
flexboxLayout.setVisibility(View.GONE);
|
||||||
mBinding.cl.setVisibility(VISIBLE);
|
mBinding.cl.setVisibility(VISIBLE);
|
||||||
@@ -720,7 +724,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
pitNumber = pitBean.getPit_number();
|
pitNumber = pitBean.getPit_number();
|
||||||
roomPitBean = pitBean;
|
roomPitBean = pitBean;
|
||||||
// showPopupMenu(view); // v 是点击的按钮视图
|
// showPopupMenu(view); // v 是点击的按钮视图
|
||||||
if(getActivity() != null && getActivity() instanceof RoomActivity) {
|
if (getActivity() != null && getActivity() instanceof RoomActivity) {
|
||||||
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
||||||
}
|
}
|
||||||
} else if (pitNumber1 == 10) {
|
} else if (pitNumber1 == 10) {
|
||||||
@@ -763,6 +767,22 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
mBinding.imMkf.setVisibility(GONE);
|
mBinding.imMkf.setVisibility(GONE);
|
||||||
} else {
|
} else {
|
||||||
mBinding.imMkf.setVisibility(VISIBLE);
|
mBinding.imMkf.setVisibility(VISIBLE);
|
||||||
|
if (roomInfoResp.getPk_info()!=null && roomInfoResp.getPk_info().getClose_users()!=null) {
|
||||||
|
if (roomInfoResp.getPk_info().getClose_users().contains(roomInfoResp.getRoom_info().getPit_list().get(8).getUser_id())) {
|
||||||
|
is_mute = 1;
|
||||||
|
pkMicIsOn = true;
|
||||||
|
AgoraManagerEx.getInstance().muteAllRemoteAudioStreamsEx(true);
|
||||||
|
} else {
|
||||||
|
is_mute = 0;
|
||||||
|
pkMicIsOn = false;
|
||||||
|
AgoraManagerEx.getInstance().muteAllRemoteAudioStreamsEx(false);
|
||||||
|
}
|
||||||
|
if (roomInfoResp.getPk_info().getClose_users().contains(roomInfoRespPk.getRoom_info().getPit_list().get(8).getUser_id())) {
|
||||||
|
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off);
|
||||||
|
} else {
|
||||||
|
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FlexboxLayout flexboxLayout2 = mBinding.flexboxLayout2;
|
FlexboxLayout flexboxLayout2 = mBinding.flexboxLayout2;
|
||||||
@@ -794,7 +814,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
pitNumber = pitBean.getPit_number();
|
pitNumber = pitBean.getPit_number();
|
||||||
roomPitBean = pitBean;
|
roomPitBean = pitBean;
|
||||||
// showPopupMenu(view); // v 是点击的按钮视图
|
// showPopupMenu(view); // v 是点击的按钮视图
|
||||||
if(getActivity() != null && getActivity() instanceof RoomActivity) {
|
if (getActivity() != null && getActivity() instanceof RoomActivity) {
|
||||||
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
||||||
}
|
}
|
||||||
} else if (pitNumber1 == 10) {
|
} else if (pitNumber1 == 10) {
|
||||||
@@ -926,7 +946,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
countDownTime(Long.parseLong(roomInfoRespPk.getPk_info().getPk_end_times() != null ? roomInfoRespPk.getPk_info().getPk_end_times() : "0"), 2);
|
countDownTime(Long.parseLong(roomInfoRespPk.getPk_info().getPk_end_times() != null ? roomInfoRespPk.getPk_info().getPk_end_times() : "0"), 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone);
|
// mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1028,13 +1048,13 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
|
|
||||||
public void event1021(RoomMessageEvent message) {
|
public void event1021(RoomMessageEvent message) {
|
||||||
if (roomInfoRespPk != null && roomInfoRespPk.getPk_info() != null) {
|
if (roomInfoRespPk != null && roomInfoRespPk.getPk_info() != null) {
|
||||||
for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()){
|
for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()) {
|
||||||
pitBean.setCharm("0");
|
pitBean.setCharm("0");
|
||||||
if (pitBean.getUser_id()!=null && !pitBean.getUser_id().isEmpty() && !pitBean.getUser_id().equals("0")) {
|
if (pitBean.getUser_id() != null && !pitBean.getUser_id().isEmpty() && !pitBean.getUser_id().equals("0")) {
|
||||||
wheatLayoutManager1.updateSingleCharm(pitBean, Integer.parseInt(pitBean.getPit_number()), 1);
|
wheatLayoutManager1.updateSingleCharm(pitBean, Integer.parseInt(pitBean.getPit_number()), 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()) {
|
for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()) {
|
||||||
pitBean.setCharm("0");
|
pitBean.setCharm("0");
|
||||||
wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
|
wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
|
||||||
@@ -1104,13 +1124,13 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
|
|
||||||
/// 推送的下麦1003
|
/// 推送的下麦1003
|
||||||
public void event1003(RoomMessageEvent message) {
|
public void event1003(RoomMessageEvent message) {
|
||||||
int pitNumber = Integer.parseInt(message.getText().getPit_number()) ;
|
int pitNumber = Integer.parseInt(message.getText().getPit_number());
|
||||||
RoomPitBean pitBean = roomInfoResp.getRoom_info().getPit_list().get(pitNumber- 1);
|
RoomPitBean pitBean = roomInfoResp.getRoom_info().getPit_list().get(pitNumber - 1);
|
||||||
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
|
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
|
||||||
wheatLayoutSingManager.updateSingleWheat(pitBean, pitNumber);
|
wheatLayoutSingManager.updateSingleWheat(pitBean, pitNumber);
|
||||||
} else {
|
} else {
|
||||||
if (message.getText().getIs_pk() == null) {
|
if (message.getText().getIs_pk() == null) {
|
||||||
wheatLayoutManager1.updateSingleWheat(pitBean,pitNumber, 1);
|
wheatLayoutManager1.updateSingleWheat(pitBean, pitNumber, 1);
|
||||||
} else {
|
} else {
|
||||||
wheatLayoutManager2.updateSingleWheat(pitBean, pitNumber, 2);
|
wheatLayoutManager2.updateSingleWheat(pitBean, pitNumber, 2);
|
||||||
}
|
}
|
||||||
@@ -1123,8 +1143,8 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
|||||||
|
|
||||||
/// 1004
|
/// 1004
|
||||||
public void event1004(RoomMessageEvent message) {
|
public void event1004(RoomMessageEvent message) {
|
||||||
int pitNumber = Integer.parseInt(message.getText().getPit_number()) ;
|
int pitNumber = Integer.parseInt(message.getText().getPit_number());
|
||||||
RoomPitBean pitBean = roomInfoResp.getRoom_info().getPit_list().get(pitNumber- 1);
|
RoomPitBean pitBean = roomInfoResp.getRoom_info().getPit_list().get(pitNumber - 1);
|
||||||
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
|
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
|
||||||
wheatLayoutSingManager.updateSingleWheat(pitBean, pitNumber);
|
wheatLayoutSingManager.updateSingleWheat(pitBean, pitNumber);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -113,4 +113,19 @@ public class RoomSettingPresenter extends BasePresenter<RoomSettingContacts.View
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setRoomBusinessTime(String roomId, String startTime, String endTime) {
|
||||||
|
api.setRoomBusinessTime(roomId, startTime, endTime, new BaseObserver<String>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(Disposable d) {
|
||||||
|
addDisposable(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNext(String s) {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -160,6 +160,24 @@ public class SingSongPresenter extends BaseRoomPresenter<SingSongContacts.View>
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void closePkMic(String pk_id, String type, String user_id) {
|
||||||
|
RetrofitClient.getInstance().closePkMic(pk_id, type, user_id, new BaseObserver<String>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(Disposable d) {
|
||||||
|
addDisposable(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNext(String s) {
|
||||||
|
if (MvpRef==null)
|
||||||
|
MvpRef=new WeakReference<>(mView);
|
||||||
|
MvpRef.get().closePkMic();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void postRoomSwToken(String roomId,int uid,int invite_pk_user_id) {
|
public void postRoomSwToken(String roomId,int uid,int invite_pk_user_id) {
|
||||||
RetrofitClient.getInstance().postRoomSwToken(roomId, new BaseObserver<PkSwTokenBean>() {
|
RetrofitClient.getInstance().postRoomSwToken(roomId, new BaseObserver<PkSwTokenBean>() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
package com.xscm.modulemain.activity.user.activity;
|
package com.xscm.modulemain.activity.user.activity;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
@@ -10,12 +14,19 @@ import android.text.TextWatcher;
|
|||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
|
||||||
import androidx.activity.OnBackPressedCallback;
|
import androidx.activity.OnBackPressedCallback;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
import com.alibaba.android.arouter.facade.annotation.Autowired;
|
import com.alibaba.android.arouter.facade.annotation.Autowired;
|
||||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||||
|
import com.bumptech.glide.Glide;
|
||||||
|
import com.bumptech.glide.request.target.CustomTarget;
|
||||||
|
import com.bumptech.glide.request.transition.Transition;
|
||||||
|
import com.luck.picture.lib.engine.CropFileEngine;
|
||||||
import com.xscm.modulemain.R;
|
import com.xscm.modulemain.R;
|
||||||
import com.xscm.modulemain.databinding.ActivityCreatedRoomBinding;
|
import com.xscm.modulemain.databinding.ActivityCreatedRoomBinding;
|
||||||
import com.example.zhouwei.library.CustomPopWindow;
|
import com.example.zhouwei.library.CustomPopWindow;
|
||||||
@@ -34,8 +45,12 @@ import com.xscm.moduleutil.utils.GlideEngine;
|
|||||||
import com.xscm.moduleutil.utils.ImageUtils;
|
import com.xscm.moduleutil.utils.ImageUtils;
|
||||||
import com.xscm.moduleutil.utils.PermissionDescriptionHelper;
|
import com.xscm.moduleutil.utils.PermissionDescriptionHelper;
|
||||||
import com.xscm.moduleutil.widget.Constants;
|
import com.xscm.moduleutil.widget.Constants;
|
||||||
|
import com.xscm.moduleutil.widget.picker.PictureSelectorUtil;
|
||||||
|
import com.yalantis.ucrop.UCrop;
|
||||||
|
import com.yalantis.ucrop.UCropImageEngine;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -256,17 +271,65 @@ public class CreatedRoomActivity extends BaseMvpActivity<CreatedRoomPresenter, A
|
|||||||
// .setPictureStyle(MyPictureParameterStyle.Companion.selectPicture())
|
// .setPictureStyle(MyPictureParameterStyle.Companion.selectPicture())
|
||||||
// .forResult(requestCode); //结果回调onActivityResult code
|
// .forResult(requestCode); //结果回调onActivityResult code
|
||||||
|
|
||||||
|
// TODO: 2026/1/20 不带裁剪的方法
|
||||||
|
|
||||||
|
// PictureSelector.create(this)
|
||||||
|
// .openGallery(mimeType)
|
||||||
|
// .isGif(false)
|
||||||
|
// .setImageEngine(GlideEngine.createGlideEngine())
|
||||||
|
// .setPermissionDescriptionListener(PermissionDescriptionHelper.createListener())
|
||||||
|
// .setMaxSelectNum(1)
|
||||||
|
// .isPreviewImage(true)
|
||||||
|
// .isDisplayCamera(false)
|
||||||
|
// .setOutputCameraDir(Constants.FILE_PATH)
|
||||||
|
// .isOriginalSkipCompress(true)
|
||||||
|
// .forResult(requestCode); //结果回调onActivityResult code
|
||||||
|
|
||||||
|
PictureSelectorUtil pictureSelectorUtil = new PictureSelectorUtil();
|
||||||
|
|
||||||
PictureSelector.create(this)
|
PictureSelector.create(this)
|
||||||
.openGallery(mimeType)
|
.openGallery(mimeType)
|
||||||
.isGif(false)
|
.isGif(false)
|
||||||
.setImageEngine(GlideEngine.createGlideEngine())
|
|
||||||
.setPermissionDescriptionListener(PermissionDescriptionHelper.createListener())
|
|
||||||
.setMaxSelectNum(1)
|
.setMaxSelectNum(1)
|
||||||
.isPreviewImage(true)
|
.isPreviewImage(false)
|
||||||
.isDisplayCamera(false)
|
.isDisplayCamera(false)
|
||||||
.setOutputCameraDir(Constants.FILE_PATH)
|
.setImageEngine(GlideEngine.createGlideEngine()) // 选择器展示不出图片则添加
|
||||||
.isOriginalSkipCompress(true)
|
.setPermissionDescriptionListener(PermissionDescriptionHelper.createListener())
|
||||||
.forResult(requestCode); //结果回调onActivityResult code
|
.setCropEngine(new CropFileEngine() {
|
||||||
|
@Override
|
||||||
|
public void onStartCrop(Fragment fragment, Uri srcUri, Uri destinationUri, ArrayList<String> dataSource, int requestCode) {
|
||||||
|
UCrop.Options options = pictureSelectorUtil.buildOptions();
|
||||||
|
UCrop uCrop = UCrop.of(srcUri, destinationUri, dataSource);
|
||||||
|
uCrop.withOptions(options);
|
||||||
|
uCrop.setImageEngine(new UCropImageEngine() {
|
||||||
|
@Override
|
||||||
|
public void loadImage(Context context, String url, ImageView imageView) {
|
||||||
|
Glide.with(context).load(url).override(180, 180).into(imageView);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void loadImage(Context context, Uri url, int maxWidth, int maxHeight, OnCallbackListener<Bitmap> call) {
|
||||||
|
Glide.with(context).asBitmap().load(url).override(maxWidth, maxHeight).into(new CustomTarget<Bitmap>() {
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Bitmap resource, @org.jetbrains.annotations.Nullable Transition<? super Bitmap> transition) {
|
||||||
|
if (call != null) {
|
||||||
|
call.onCall(resource);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@org.jetbrains.annotations.Nullable Drawable placeholder) {
|
||||||
|
if (call != null) {
|
||||||
|
call.onCall(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
uCrop.start(fragment.requireActivity(), fragment, requestCode);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.forResult(requestCode);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ public class RoomDetailsActivity extends BaseMvpActivity<RoomDetailsPresenter, A
|
|||||||
|
|
||||||
MvpPre.getCharmList(roomId, stime, etime, currentPage + "", type);
|
MvpPre.getCharmList(roomId, stime, etime, currentPage + "", type);
|
||||||
});
|
});
|
||||||
|
dialog.setShowTime(false);
|
||||||
dialog.show(getSupportFragmentManager(), "DoubleTimePicker");
|
dialog.show(getSupportFragmentManager(), "DoubleTimePicker");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import com.xscm.moduleutil.base.CommonAppContext;
|
|||||||
import com.xscm.moduleutil.bean.UserInfo;
|
import com.xscm.moduleutil.bean.UserInfo;
|
||||||
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
|
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
|
||||||
import com.xscm.moduleutil.dialog.RealNameDialog;
|
import com.xscm.moduleutil.dialog.RealNameDialog;
|
||||||
|
import com.xscm.moduleutil.rtc.AgoraManager;
|
||||||
import com.xscm.moduleutil.utils.ARouteConstants;
|
import com.xscm.moduleutil.utils.ARouteConstants;
|
||||||
import com.xscm.moduleutil.utils.ColorManager;
|
import com.xscm.moduleutil.utils.ColorManager;
|
||||||
import com.xscm.moduleutil.utils.SpUtil;
|
import com.xscm.moduleutil.utils.SpUtil;
|
||||||
@@ -98,6 +99,7 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
|
|||||||
mBinding.llQh.setVisibility(View.VISIBLE);
|
mBinding.llQh.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
mBinding.switQh.setChecked(SpUtil.getTaskService()==1);
|
mBinding.switQh.setChecked(SpUtil.getTaskService()==1);
|
||||||
|
mBinding.switSk.setChecked(SpUtil.getSkService()==1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -124,6 +126,7 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
|
|||||||
mBinding.tvShare.setOnClickListener(this::onClick);
|
mBinding.tvShare.setOnClickListener(this::onClick);
|
||||||
mBinding.llSendLog.setOnClickListener(this::onClick);
|
mBinding.llSendLog.setOnClickListener(this::onClick);
|
||||||
mBinding.switQh.setOnClickListener(this::onClick);
|
mBinding.switQh.setOnClickListener(this::onClick);
|
||||||
|
mBinding.switSk.setOnClickListener(this::onClick);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("CheckResult")
|
@SuppressLint("CheckResult")
|
||||||
@@ -309,7 +312,15 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MvpPre.clearLoginInfo();
|
// MvpPre.clearLoginInfo();
|
||||||
|
}else if (id == R.id.swit_sk){
|
||||||
|
if (mBinding.switSk.isChecked()) {
|
||||||
|
SpUtil.setSkService(1);
|
||||||
|
} else {
|
||||||
|
SpUtil.setSkService(0);
|
||||||
|
}
|
||||||
|
AgoraManager.getInstance().setEnable();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 通过 ID 获取资源名称
|
// 通过 ID 获取资源名称
|
||||||
String viewName = "";
|
String viewName = "";
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ class TotalRevenueActivity : BaseMvpActivity<UserFamilyPresenter, ActivityTotalR
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
val fragmentManager = supportFragmentManager
|
val fragmentManager = supportFragmentManager
|
||||||
|
dialog.setShowTime(false)
|
||||||
dialog.show(fragmentManager, "DoubleTimePickerBottomSheet")
|
dialog.show(fragmentManager, "DoubleTimePickerBottomSheet")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -11,9 +11,14 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
|
|
||||||
|
import com.xscm.modulemain.R;
|
||||||
import com.xscm.modulemain.activity.user.PageViewModel;
|
import com.xscm.modulemain.activity.user.PageViewModel;
|
||||||
|
import com.xscm.modulemain.activity.user.conacts.GiftWallConacts;
|
||||||
|
import com.xscm.modulemain.activity.user.presenter.GiftWallPresenter;
|
||||||
import com.xscm.modulemain.adapter.GiftWallAdapter;
|
import com.xscm.modulemain.adapter.GiftWallAdapter;
|
||||||
|
import com.xscm.modulemain.databinding.DialogPlaceholderBinding;
|
||||||
import com.xscm.modulemain.databinding.FragmentGiftWallBinding;
|
import com.xscm.modulemain.databinding.FragmentGiftWallBinding;
|
||||||
|
import com.xscm.moduleutil.base.BaseMvpDialogFragment;
|
||||||
import com.xscm.moduleutil.bean.GiftUserWallBean;
|
import com.xscm.moduleutil.bean.GiftUserWallBean;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -22,16 +27,14 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A placeholder fragment containing a simple view.
|
* @Author qx
|
||||||
*/
|
* @Time 2026/1/20 9:53
|
||||||
public class PlaceholderFragment extends Fragment {
|
* @Description 礼物墙展示用户送礼的dialog
|
||||||
|
*/
|
||||||
private static final String ARG_SECTION_NUMBER = "section_number";
|
public class PlaceholderFragment extends BaseMvpDialogFragment<GiftWallPresenter, DialogPlaceholderBinding> implements GiftWallConacts.View{
|
||||||
|
|
||||||
private PageViewModel pageViewModel;
|
private PageViewModel pageViewModel;
|
||||||
private FragmentGiftWallBinding binding;
|
|
||||||
|
|
||||||
private GiftWallAdapter mGiftWallAdapter;
|
|
||||||
|
|
||||||
public static PlaceholderFragment newInstance(int index) {
|
public static PlaceholderFragment newInstance(int index) {
|
||||||
PlaceholderFragment fragment = new PlaceholderFragment();
|
PlaceholderFragment fragment = new PlaceholderFragment();
|
||||||
@@ -47,7 +50,6 @@ public class PlaceholderFragment extends Fragment {
|
|||||||
pageViewModel = new ViewModelProvider(this).get(PageViewModel.class);
|
pageViewModel = new ViewModelProvider(this).get(PageViewModel.class);
|
||||||
int index = 1;
|
int index = 1;
|
||||||
if (getArguments() != null) {
|
if (getArguments() != null) {
|
||||||
index = getArguments().getInt(ARG_SECTION_NUMBER);
|
|
||||||
|
|
||||||
// 获取传递的礼物列表数据
|
// 获取传递的礼物列表数据
|
||||||
List<GiftUserWallBean.GiftWallBean> giftList =
|
List<GiftUserWallBean.GiftWallBean> giftList =
|
||||||
@@ -64,37 +66,37 @@ public class PlaceholderFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
pageViewModel.setIndex(index);
|
pageViewModel.setIndex(index);
|
||||||
|
|
||||||
mGiftWallAdapter= new GiftWallAdapter(new ArrayList<>());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
protected GiftWallPresenter bindPresenter() {
|
||||||
super.onCreate(savedInstanceState);
|
return new GiftWallPresenter(this,getActivity());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initData() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(
|
protected void initView() {
|
||||||
@NonNull LayoutInflater inflater, ViewGroup container,
|
|
||||||
Bundle savedInstanceState) {
|
|
||||||
|
|
||||||
binding = FragmentGiftWallBinding.inflate(inflater, container, false);
|
}
|
||||||
View root = binding.getRoot();
|
|
||||||
// 设置 GridView
|
@Override
|
||||||
GridView gridView = binding.gridView;
|
protected int getLayoutId() {
|
||||||
gridView.setAdapter(mGiftWallAdapter);
|
return R.layout.dialog_placeholder;
|
||||||
// 观察数据变化并更新 GridView
|
|
||||||
pageViewModel.getDataList().observe(getViewLifecycleOwner(), dataList -> {
|
|
||||||
if (dataList != null) {
|
|
||||||
mGiftWallAdapter.updateData(dataList);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return root;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroyView() {
|
public void onDestroyView() {
|
||||||
super.onDestroyView();
|
super.onDestroyView();
|
||||||
binding = null;
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setGiftWall(GiftUserWallBean data) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -22,8 +22,10 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A placeholder fragment containing a simple view.
|
* @Author qx
|
||||||
*/
|
* @Time 2026/1/20 9:53
|
||||||
|
* @Description 礼物墙展示的fragment
|
||||||
|
*/
|
||||||
public class PlaceholderGiftFragment extends Fragment {
|
public class PlaceholderGiftFragment extends Fragment {
|
||||||
|
|
||||||
private static final String ARG_SECTION_NUMBER = "section_number";
|
private static final String ARG_SECTION_NUMBER = "section_number";
|
||||||
@@ -65,6 +67,14 @@ public class PlaceholderGiftFragment extends Fragment {
|
|||||||
pageViewModel.setIndex(index);
|
pageViewModel.setIndex(index);
|
||||||
|
|
||||||
mGiftWallAdapter= new GiftWallAdapter(new ArrayList<>());
|
mGiftWallAdapter= new GiftWallAdapter(new ArrayList<>());
|
||||||
|
|
||||||
|
mGiftWallAdapter.setOnUserClickListener(new GiftWallAdapter.OnUserClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUserClick(GiftUserWallBean.GiftWallBean emotion) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
import com.xscm.modulemain.R;
|
import com.xscm.modulemain.R;
|
||||||
import com.xscm.moduleutil.bean.CombinedGiftBean;
|
import com.xscm.moduleutil.bean.CombinedGiftBean;
|
||||||
import com.xscm.moduleutil.bean.GiftUserWallBean;
|
import com.xscm.moduleutil.bean.GiftUserWallBean;
|
||||||
|
import com.xscm.moduleutil.bean.room.EmotionDeatils;
|
||||||
import com.xscm.moduleutil.utils.ImageLoader;
|
import com.xscm.moduleutil.utils.ImageLoader;
|
||||||
import com.xscm.moduleutil.utils.ImageUtils;
|
import com.xscm.moduleutil.utils.ImageUtils;
|
||||||
|
|
||||||
@@ -28,6 +29,17 @@ import java.util.List;
|
|||||||
public class GiftWallAdapter extends BaseAdapter {
|
public class GiftWallAdapter extends BaseAdapter {
|
||||||
private List<GiftUserWallBean.GiftWallBean> mDataList;
|
private List<GiftUserWallBean.GiftWallBean> mDataList;
|
||||||
|
|
||||||
|
private OnUserClickListener mOnUserClickListener;
|
||||||
|
// 定义接口
|
||||||
|
public interface OnUserClickListener {
|
||||||
|
void onUserClick(GiftUserWallBean.GiftWallBean emotion);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 转换后的 Java 代码
|
||||||
|
public void setOnUserClickListener(OnUserClickListener listener) {
|
||||||
|
this.mOnUserClickListener= listener;
|
||||||
|
}
|
||||||
|
|
||||||
public GiftWallAdapter(List<GiftUserWallBean.GiftWallBean> dataList) {
|
public GiftWallAdapter(List<GiftUserWallBean.GiftWallBean> dataList) {
|
||||||
this.mDataList = dataList;
|
this.mDataList = dataList;
|
||||||
}
|
}
|
||||||
@@ -77,6 +89,18 @@ public class GiftWallAdapter extends BaseAdapter {
|
|||||||
holder.textView.setText(item.getGift_name());
|
holder.textView.setText(item.getGift_name());
|
||||||
// ImageUtils.loadHeadCC(item.getBase_image(), holder.iv_gift_image);
|
// ImageUtils.loadHeadCC(item.getBase_image(), holder.iv_gift_image);
|
||||||
holder.tv_price33.setText(item.getGift_price());
|
holder.tv_price33.setText(item.getGift_price());
|
||||||
|
|
||||||
|
// 为整个礼物项添加点击事件
|
||||||
|
holder.cl_gift_item.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
if (item.is_liang()) {
|
||||||
|
if (mOnUserClickListener != null) {
|
||||||
|
mOnUserClickListener.onUserClick(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
TextView tv_number = holder.gift_num;
|
TextView tv_number = holder.gift_num;
|
||||||
@@ -113,8 +137,8 @@ public class GiftWallAdapter extends BaseAdapter {
|
|||||||
TopUsersAdapter topUsersAdapter = new TopUsersAdapter(displayUsers);
|
TopUsersAdapter topUsersAdapter = new TopUsersAdapter(displayUsers);
|
||||||
recyclerView.setAdapter(topUsersAdapter);
|
recyclerView.setAdapter(topUsersAdapter);
|
||||||
holder.tv_gift_values.setText("等" + item.getTop_users().size() + "人");
|
holder.tv_gift_values.setText("等" + item.getTop_users().size() + "人");
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,25 +1,25 @@
|
|||||||
package com.xscm.modulemain.adapter
|
package com.xscm.modulemain.adapter
|
||||||
|
|
||||||
import android.graphics.Color
|
import android.app.AlertDialog
|
||||||
import android.widget.TextView
|
import android.content.DialogInterface
|
||||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||||
import com.chad.library.adapter.base.BaseViewHolder
|
import com.chad.library.adapter.base.BaseViewHolder
|
||||||
import com.xscm.modulemain.R
|
import com.xscm.modulemain.R
|
||||||
import com.xscm.moduleutil.bean.BlackUserBean
|
|
||||||
import com.xscm.moduleutil.bean.GroupBean
|
import com.xscm.moduleutil.bean.GroupBean
|
||||||
import com.xscm.moduleutil.color.ThemeableDrawableUtils
|
|
||||||
import com.xscm.moduleutil.utils.MeHeadView
|
import com.xscm.moduleutil.utils.MeHeadView
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目名称:羽声语音
|
* 项目名称:羽声语音
|
||||||
* 时间:2026/1/3 14:17
|
* 时间:2026/1/3 14:17
|
||||||
* 用途:
|
* 用途:群成员列表 长按根据角色不同展示不同的权限
|
||||||
*/
|
*/
|
||||||
class GroupUserListAdapter : BaseQuickAdapter<GroupBean.GroupUserBean, BaseViewHolder>(R.layout.item_group_user) {
|
class GroupUserListAdapter :
|
||||||
|
BaseQuickAdapter<GroupBean.GroupUserBean, BaseViewHolder>(R.layout.item_group_user) {
|
||||||
interface OnItemClickListener {
|
interface OnItemClickListener {
|
||||||
fun onItemClick(ismute: Int, item: GroupBean.GroupUserBean?)
|
fun onItemClick(ismute: Int, item: GroupBean.GroupUserBean?)
|
||||||
}
|
|
||||||
|
|
||||||
|
fun onItemGroupMemberClick(item: GroupBean.GroupUserBean?, b: Boolean)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private var onItemClickListener: OnItemClickListener? = null
|
private var onItemClickListener: OnItemClickListener? = null
|
||||||
@@ -27,11 +27,12 @@ class GroupUserListAdapter : BaseQuickAdapter<GroupBean.GroupUserBean, BaseViewH
|
|||||||
fun setOnItemClickListener(listener: OnItemClickListener?) {
|
fun setOnItemClickListener(listener: OnItemClickListener?) {
|
||||||
this.onItemClickListener = listener
|
this.onItemClickListener = listener
|
||||||
}
|
}
|
||||||
var isOwner = false
|
|
||||||
|
var isOwner = 0
|
||||||
var ismute: Int = 0
|
var ismute: Int = 0
|
||||||
|
|
||||||
// 在适配器中添加设置方法
|
// 在适配器中添加设置方法
|
||||||
fun updateOwnerStatus(isOwner: Boolean) {
|
fun updateOwnerStatus(isOwner: Int) {
|
||||||
this.isOwner = isOwner
|
this.isOwner = isOwner
|
||||||
notifyDataSetChanged() // 如果需要刷新视图
|
notifyDataSetChanged() // 如果需要刷新视图
|
||||||
}
|
}
|
||||||
@@ -41,31 +42,65 @@ class GroupUserListAdapter : BaseQuickAdapter<GroupBean.GroupUserBean, BaseViewH
|
|||||||
helper: BaseViewHolder,
|
helper: BaseViewHolder,
|
||||||
item: GroupBean.GroupUserBean?
|
item: GroupBean.GroupUserBean?
|
||||||
) {
|
) {
|
||||||
helper.getView<MeHeadView>(R.id.im_user).setData(item?.avatar, "","")
|
helper.getView<MeHeadView>(R.id.im_user).setData(item?.avatar, "", "")
|
||||||
helper.setText(R.id.tv_nick_name, item?.nickname)
|
helper.setText(R.id.tv_nick_name, item?.nickname)
|
||||||
|
if (isOwner == 1 || isOwner == 2) {
|
||||||
|
helper.setVisible(R.id.im_g, false)
|
||||||
|
// ThemeableDrawableUtils.setThemeableRoundedBackground(
|
||||||
|
// helper.getView<TextView>(R.id.im_g),
|
||||||
|
// Color.parseColor("#333333"),
|
||||||
|
// 34
|
||||||
|
// )
|
||||||
|
// helper.getView<TextView>(R.id.im_g).setTextColor(Color.WHITE)
|
||||||
|
// if (item?.is_mute == 1) {
|
||||||
|
// helper.getView<TextView>(R.id.im_g).text = "解禁"
|
||||||
|
// ismute = 1
|
||||||
|
// } else {
|
||||||
|
// helper.getView<TextView>(R.id.im_g).text = "禁言"
|
||||||
|
// ismute = 0
|
||||||
|
// }
|
||||||
|
// helper.getView<TextView>(R.id.im_g).setOnClickListener {
|
||||||
|
// if (onItemClickListener != null) {
|
||||||
|
// onItemClickListener?.onItemClick(ismute, item)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
if (isOwner){
|
|
||||||
helper.setVisible(R.id.im_g, true)
|
helper.itemView.setOnLongClickListener {
|
||||||
ThemeableDrawableUtils.setThemeableRoundedBackground(
|
showOptionsDialog(
|
||||||
helper.getView<TextView>(R.id.im_g),
|
item?.is_mute!!,
|
||||||
Color.parseColor("#333333"),
|
item,
|
||||||
34
|
if (item.group_role == 2) true else false
|
||||||
)
|
)
|
||||||
helper.getView<TextView>(R.id.im_g).setTextColor(Color.WHITE)
|
return@setOnLongClickListener true
|
||||||
if (item?.is_mute==1){
|
|
||||||
helper.getView<TextView>(R.id.im_g).text = "解禁"
|
|
||||||
ismute=1
|
|
||||||
}else{
|
|
||||||
helper.getView<TextView>(R.id.im_g).text = "禁言"
|
|
||||||
ismute=0
|
|
||||||
}
|
}
|
||||||
helper.getView<TextView>(R.id.im_g).setOnClickListener {
|
} else {
|
||||||
if (onItemClickListener != null) {
|
|
||||||
onItemClickListener?.onItemClick(ismute,item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
helper.setVisible(R.id.im_g, false)
|
helper.setVisible(R.id.im_g, false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 显示选项对话框
|
||||||
|
*/
|
||||||
|
private fun showOptionsDialog(ismute: Int, item: GroupBean.GroupUserBean?, b: Boolean) {
|
||||||
|
val options = arrayOf<String?>(
|
||||||
|
if (ismute == 1) "解禁" else "禁言",
|
||||||
|
if (b) "设置成普通成员" else "设置成管理员"
|
||||||
|
)
|
||||||
|
if (isOwner != 1){
|
||||||
|
options[1] = ""
|
||||||
|
}
|
||||||
|
val builder = AlertDialog.Builder(mContext)
|
||||||
|
builder.setTitle("选择操作")
|
||||||
|
.setItems(
|
||||||
|
options,
|
||||||
|
DialogInterface.OnClickListener { dialog: DialogInterface?, which: Int ->
|
||||||
|
when (which) {
|
||||||
|
0 -> onItemClickListener?.onItemClick(ismute, item)
|
||||||
|
|
||||||
|
1 -> onItemClickListener?.onItemGroupMemberClick(item, b)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.show()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -19,7 +19,7 @@ public class HorizontalListAdapter extends RecyclerView.Adapter<HorizontalListAd
|
|||||||
private OnItemClickListener mListener;
|
private OnItemClickListener mListener;
|
||||||
|
|
||||||
public interface OnItemClickListener {
|
public interface OnItemClickListener {
|
||||||
void onItemClick(int itemPos,RoomSettingBean item,HorizontalListAdapter itemAdapter);
|
void onItemClick(int itemPos, RoomSettingBean item, HorizontalListAdapter itemAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
public HorizontalListAdapter(List<RoomSettingBean> data) {
|
public HorizontalListAdapter(List<RoomSettingBean> data) {
|
||||||
@@ -43,7 +43,7 @@ public class HorizontalListAdapter extends RecyclerView.Adapter<HorizontalListAd
|
|||||||
super.onBindViewHolder(holder, position, payloads);
|
super.onBindViewHolder(holder, position, payloads);
|
||||||
if (payloads.isEmpty()) {
|
if (payloads.isEmpty()) {
|
||||||
for (Object payload : payloads) {
|
for (Object payload : payloads) {
|
||||||
if(((Integer)payload) == 1){
|
if (((Integer) payload) == 1) {
|
||||||
RoomSettingBean item = mData.get(position);
|
RoomSettingBean item = mData.get(position);
|
||||||
if (item.isStatus()) {
|
if (item.isStatus()) {
|
||||||
holder.tvName.setText(getName(item.getType(), item.isSelect(), item.getName()));
|
holder.tvName.setText(getName(item.getType(), item.isSelect(), item.getName()));
|
||||||
@@ -63,7 +63,7 @@ public class HorizontalListAdapter extends RecyclerView.Adapter<HorizontalListAd
|
|||||||
}
|
}
|
||||||
holder.itemView.setOnClickListener(v -> {
|
holder.itemView.setOnClickListener(v -> {
|
||||||
if (mListener != null) {
|
if (mListener != null) {
|
||||||
mListener.onItemClick(position,item,HorizontalListAdapter.this);
|
mListener.onItemClick(position, item, HorizontalListAdapter.this);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -135,6 +135,9 @@ public class HorizontalListAdapter extends RecyclerView.Adapter<HorizontalListAd
|
|||||||
return com.xscm.moduleutil.R.mipmap.ic_bg_music;
|
return com.xscm.moduleutil.R.mipmap.ic_bg_music;
|
||||||
case RoomSettingBean.QXRoomSettingTypeRoomBgImage:
|
case RoomSettingBean.QXRoomSettingTypeRoomBgImage:
|
||||||
return com.xscm.moduleutil.R.mipmap.ic_bg_image;
|
return com.xscm.moduleutil.R.mipmap.ic_bg_image;
|
||||||
|
|
||||||
|
case RoomSettingBean.QXRoomSettingTypeRoomBusinessTime: // 营业时间
|
||||||
|
return com.xscm.moduleutil.R.mipmap.icon_room_time;
|
||||||
// 更多操作
|
// 更多操作
|
||||||
case RoomSettingBean.QXRoomSettingTypeRoomShare:
|
case RoomSettingBean.QXRoomSettingTypeRoomShare:
|
||||||
return com.xscm.moduleutil.R.mipmap.ic_share;
|
return com.xscm.moduleutil.R.mipmap.ic_share;
|
||||||
|
|||||||
@@ -120,7 +120,6 @@ public class PkTimeDialogFragment extends BaseMvpDialogFragment<PkTimePresenter,
|
|||||||
|
|
||||||
public static List<RoomAutionTimeBean> getDefaultTimeOptions() {
|
public static List<RoomAutionTimeBean> getDefaultTimeOptions() {
|
||||||
List<RoomAutionTimeBean> list = new ArrayList<>();
|
List<RoomAutionTimeBean> list = new ArrayList<>();
|
||||||
list.add(new RoomAutionTimeBean(1));
|
|
||||||
list.add(new RoomAutionTimeBean(5));
|
list.add(new RoomAutionTimeBean(5));
|
||||||
list.add(new RoomAutionTimeBean(10));
|
list.add(new RoomAutionTimeBean(10));
|
||||||
list.add(new RoomAutionTimeBean(15));
|
list.add(new RoomAutionTimeBean(15));
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ public class RoomConcernDialogFragment extends BaseMvpDialogFragment<RoomClosePr
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initData() {
|
public void initData() {
|
||||||
MvpPre.roomRelationList("2");
|
MvpPre.roomRelationList("3");
|
||||||
// MvpPre.getConcernList();
|
// MvpPre.getConcernList();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -775,7 +775,7 @@ public class RoomGiftDialogFragment extends BaseMvpDialogFragment<RewardGiftPres
|
|||||||
mBinding.viewPager.setOffscreenPageLimit(0);
|
mBinding.viewPager.setOffscreenPageLimit(0);
|
||||||
mBinding.slidingTabLayout.setViewPager(mBinding.viewPager);
|
mBinding.slidingTabLayout.setViewPager(mBinding.viewPager);
|
||||||
mBinding.slidingTabLayout.setCurrentTab(1);
|
mBinding.slidingTabLayout.setCurrentTab(1);
|
||||||
refreshCurrentGiftFragment(giftLabelBeans.get(1).getId(), 1, roomId);
|
refreshCurrentGiftFragment(giftLabelBeans.get(1).getId(), 1, "1");
|
||||||
mBinding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
mBinding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||||
@@ -786,7 +786,7 @@ public class RoomGiftDialogFragment extends BaseMvpDialogFragment<RewardGiftPres
|
|||||||
public void onPageSelected(int position) {
|
public void onPageSelected(int position) {
|
||||||
// 当页面切换时,控制 tv_bb_qs 按钮的显示
|
// 当页面切换时,控制 tv_bb_qs 按钮的显示
|
||||||
updateTvBbQsVisibility(position);
|
updateTvBbQsVisibility(position);
|
||||||
refreshCurrentGiftFragment(giftLabelBeans.get(position).getId(), 1, roomId);
|
refreshCurrentGiftFragment(giftLabelBeans.get(position).getId(), 1, "1");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -799,9 +799,9 @@ public class RoomGiftDialogFragment extends BaseMvpDialogFragment<RewardGiftPres
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 调用示例
|
// 调用示例
|
||||||
private void refreshCurrentGiftFragment(String id, int type, String roomId) {
|
private void refreshCurrentGiftFragment(String id, int status, String type) {
|
||||||
if (getCurrentGiftFragment() != null) {
|
if (getCurrentGiftFragment() != null) {
|
||||||
getCurrentGiftFragment().loadDataIfNeeded(id, type, roomId);
|
getCurrentGiftFragment().loadDataIfNeeded(id, status, type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.xscm.modulemain.dialog;
|
package com.xscm.modulemain.dialog;
|
||||||
|
|
||||||
|
import static com.xscm.moduleutil.bean.room.RoomSettingBean.QXRoomSettingTypeRoomBusinessTime;
|
||||||
import static com.xscm.moduleutil.bean.room.RoomSettingBean.QXRoomSettingTypeRoomOrderMic;
|
import static com.xscm.moduleutil.bean.room.RoomSettingBean.QXRoomSettingTypeRoomOrderMic;
|
||||||
import static com.xscm.moduleutil.bean.room.RoomSettingBean.QXRoomSettingTypeRoomTimeRedSound;
|
import static com.xscm.moduleutil.bean.room.RoomSettingBean.QXRoomSettingTypeRoomTimeRedSound;
|
||||||
import static com.xscm.moduleutil.bean.room.RoomSettingBean.QXRoomSettingTypeRoomTimeSpace;
|
import static com.xscm.moduleutil.bean.room.RoomSettingBean.QXRoomSettingTypeRoomTimeSpace;
|
||||||
@@ -44,14 +45,18 @@ import com.xscm.moduleutil.bean.room.RoomInfoResp;
|
|||||||
import com.xscm.moduleutil.bean.room.RoomSettingBean;
|
import com.xscm.moduleutil.bean.room.RoomSettingBean;
|
||||||
import com.xscm.moduleutil.utils.ARouteConstants;
|
import com.xscm.moduleutil.utils.ARouteConstants;
|
||||||
import com.xscm.moduleutil.utils.SpUtil;
|
import com.xscm.moduleutil.utils.SpUtil;
|
||||||
|
import com.xscm.moduleutil.widget.DoubleTimePickerBottomSheet;
|
||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
import org.greenrobot.eventbus.ThreadMode;
|
import org.greenrobot.eventbus.ThreadMode;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -174,6 +179,7 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
|
|||||||
toolsChildren.add(new RoomSettingBean("排麦模式", "ic_order_mic", null, null, QXRoomSettingTypeRoomOrderMic, read, isSelected, false, roomInfoResp.getRoom_info().getRoom_up_pit_type().equals("1")));
|
toolsChildren.add(new RoomSettingBean("排麦模式", "ic_order_mic", null, null, QXRoomSettingTypeRoomOrderMic, read, isSelected, false, roomInfoResp.getRoom_info().getRoom_up_pit_type().equals("1")));
|
||||||
toolsChildren.add(new RoomSettingBean("背景音乐", "ic_bg_music", null, null, RoomSettingBean.QXRoomSettingTypeRoomBgMusic, read, isSelected, false, false));
|
toolsChildren.add(new RoomSettingBean("背景音乐", "ic_bg_music", null, null, RoomSettingBean.QXRoomSettingTypeRoomBgMusic, read, isSelected, false, false));
|
||||||
toolsChildren.add(new RoomSettingBean("背景图片", "ic_bg_image", null, null, RoomSettingBean.QXRoomSettingTypeRoomBgImage, read, isSelected, false, false));
|
toolsChildren.add(new RoomSettingBean("背景图片", "ic_bg_image", null, null, RoomSettingBean.QXRoomSettingTypeRoomBgImage, read, isSelected, false, false));
|
||||||
|
toolsChildren.add(new RoomSettingBean("营业时间", "ic_bg_image", null, null, QXRoomSettingTypeRoomBusinessTime, read, isSelected, false, false));
|
||||||
toolsParent.setChildren(toolsChildren);
|
toolsParent.setChildren(toolsChildren);
|
||||||
parentList.add(toolsParent);
|
parentList.add(toolsParent);
|
||||||
|
|
||||||
@@ -397,10 +403,9 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
|
|||||||
// }
|
// }
|
||||||
else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomTypeSIGNCONTRACT) {
|
else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomTypeSIGNCONTRACT) {
|
||||||
queren("10");
|
queren("10");
|
||||||
}else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomTypePUBROOM) {
|
} else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomTypePUBROOM) {
|
||||||
queren("11");
|
queren("11");
|
||||||
}
|
} else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomSetting) {
|
||||||
else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomSetting) {
|
|
||||||
if (roomInfoResp != null) {
|
if (roomInfoResp != null) {
|
||||||
ARouter.getInstance().build(ARouteConstants.CREATED_ROOM).withSerializable("roomInfoResp", roomInfoResp).navigation();
|
ARouter.getInstance().build(ARouteConstants.CREATED_ROOM).withSerializable("roomInfoResp", roomInfoResp).navigation();
|
||||||
} else {
|
} else {
|
||||||
@@ -486,6 +491,36 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
|
|||||||
bean.setSelect(true);
|
bean.setSelect(true);
|
||||||
}
|
}
|
||||||
itemAdapter.notifyItemChanged(itemPos);
|
itemAdapter.notifyItemChanged(itemPos);
|
||||||
|
} else if (bean.getType() == QXRoomSettingTypeRoomBusinessTime) {//营业时间
|
||||||
|
DoubleTimePickerBottomSheet dialog = new DoubleTimePickerBottomSheet();
|
||||||
|
dialog.setOnTimeRangeSelectedListener((startDate, endDate) -> {
|
||||||
|
// 处理选择的时间范围
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss", Locale.getDefault());
|
||||||
|
// 获取开始时间的Calendar实例
|
||||||
|
Calendar startCalendar = Calendar.getInstance();
|
||||||
|
startCalendar.setTime(startDate);
|
||||||
|
// 将秒设置为00
|
||||||
|
startCalendar.set(Calendar.SECOND, 0);
|
||||||
|
|
||||||
|
// 获取结束时间的Calendar实例
|
||||||
|
Calendar endCalendar = Calendar.getInstance();
|
||||||
|
endCalendar.setTime(endDate);
|
||||||
|
// 将秒设置为59
|
||||||
|
endCalendar.set(Calendar.SECOND, 59);
|
||||||
|
|
||||||
|
// 格式化时间
|
||||||
|
String startTime = sdf.format(startCalendar.getTime());
|
||||||
|
String endTime = sdf.format(endCalendar.getTime());
|
||||||
|
|
||||||
|
Log.d("SelectedTime", "开始时间:" + startTime);
|
||||||
|
Log.d("SelectedTime", "结束时间:" + endTime);
|
||||||
|
MvpPre.setRoomBusinessTime(roomId, startTime, endTime);
|
||||||
|
// MvpPre.getCharmList(roomId, stime, etime, currentPage + "", type);
|
||||||
|
});
|
||||||
|
dialog.setShowDate(false);
|
||||||
|
dialog.setShowTime(true);
|
||||||
|
dialog.setShowSeconds(false);
|
||||||
|
dialog.show(getChildFragmentManager(), "DoubleTimePicker");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -725,7 +760,7 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
|
|||||||
type == RoomSettingBean.QXRoomSettingTypeRoomTypeJiaoy || type == RoomSettingBean.QXRoomSettingTypeRoomSetting ||
|
type == RoomSettingBean.QXRoomSettingTypeRoomTypeJiaoy || type == RoomSettingBean.QXRoomSettingTypeRoomSetting ||
|
||||||
type == RoomSettingBean.QXRoomSettingTypeRoomSubsidy || type == RoomSettingBean.QXRoomSettingTypeRoomMyDress ||
|
type == RoomSettingBean.QXRoomSettingTypeRoomSubsidy || type == RoomSettingBean.QXRoomSettingTypeRoomMyDress ||
|
||||||
type == RoomSettingBean.QXRoomSettingTypeRoomTypeLianG || type == RoomSettingBean.QXRoomSettingTypeRoomTypeSIGNCONTRACT ||
|
type == RoomSettingBean.QXRoomSettingTypeRoomTypeLianG || type == RoomSettingBean.QXRoomSettingTypeRoomTypeSIGNCONTRACT ||
|
||||||
type == RoomSettingBean.QXRoomSettingTypeRoomTypePUBROOM ||
|
type == RoomSettingBean.QXRoomSettingTypeRoomTypePUBROOM || type == QXRoomSettingTypeRoomBusinessTime ||
|
||||||
type == RoomSettingBean.QXRoomSettingTypeRoomClearMessage || type == QXRoomSettingTypeRoomOrderMic || type == RoomSettingBean.QXRoomSettingTypeRoomFloatingScreen
|
type == RoomSettingBean.QXRoomSettingTypeRoomClearMessage || type == QXRoomSettingTypeRoomOrderMic || type == RoomSettingBean.QXRoomSettingTypeRoomFloatingScreen
|
||||||
|| type == RoomSettingBean.QXRoomSettingTypeRoomBgMusic || type == RoomSettingBean.QXRoomSettingTypeRoomBgImage || type == -1) {
|
|| type == RoomSettingBean.QXRoomSettingTypeRoomBgMusic || type == RoomSettingBean.QXRoomSettingTypeRoomBgImage || type == -1) {
|
||||||
|
|
||||||
|
|||||||
@@ -123,14 +123,41 @@
|
|||||||
android:textSize="@dimen/sp_15" />
|
android:textSize="@dimen/sp_15" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/rl_do_not_disturb"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/dp_15"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/rl_group_announcement">
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_do_not_disturb"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentStart="true"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_marginTop="@dimen/dp_15"
|
||||||
|
android:text="消息免打扰"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="@dimen/sp_15"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<Switch
|
||||||
|
android:id="@+id/swit_do_not_disturb"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
tools:ignore="UseSwitchCompatOrMaterialXml" />
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/ll_group"
|
android:id="@+id/ll_group"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/dp_15"
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/rl_group_announcement">
|
app:layout_constraintTop_toBottomOf="@+id/rl_do_not_disturb">
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|||||||
@@ -15,68 +15,67 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/ll_search"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="@dimen/dp_44"
|
|
||||||
android:layout_marginTop="@dimen/dp_10"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/top_bar">
|
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="@dimen/dp_0"
|
|
||||||
android:layout_height="@dimen/dp_32"
|
|
||||||
android:layout_marginLeft="@dimen/dp_20"
|
|
||||||
android:layout_marginTop="@dimen/dp_6"
|
|
||||||
android:layout_marginRight="@dimen/dp_20"
|
|
||||||
android:layout_marginBottom="@dimen/dp_6"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="@drawable/shape_search_in"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/iv_close"
|
|
||||||
android:layout_width="@dimen/dp_18"
|
|
||||||
android:layout_height="@dimen/dp_18"
|
|
||||||
android:layout_marginLeft="@dimen/dp_11"
|
|
||||||
android:layout_marginRight="@dimen/dp_7"
|
|
||||||
android:src="@drawable/index_level_search" />
|
|
||||||
|
|
||||||
<EditText
|
|
||||||
android:id="@+id/edit_query"
|
|
||||||
android:layout_width="@dimen/dp_0"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="@android:color/transparent"
|
|
||||||
android:hint="请输入ID/用户搜索"
|
|
||||||
android:maxLength="10"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:textColor="#333333"
|
|
||||||
android:textColorHint="@color/color_FF999999"
|
|
||||||
android:textSize="@dimen/sp_12" />
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tv_cancel"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:paddingRight="@dimen/dp_20"
|
|
||||||
android:text="搜索"
|
|
||||||
android:textColor="@color/color_FF333333"
|
|
||||||
android:textSize="@dimen/sp_14" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
app:layout_constraintTop_toBottomOf="@id/ll_search">
|
app:layout_constraintTop_toBottomOf="@id/top_bar">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/ll_search"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/dp_44"
|
||||||
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="@dimen/dp_0"
|
||||||
|
android:layout_height="@dimen/dp_32"
|
||||||
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
|
android:layout_marginTop="@dimen/dp_6"
|
||||||
|
android:layout_marginRight="@dimen/dp_20"
|
||||||
|
android:layout_marginBottom="@dimen/dp_6"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:background="@drawable/shape_search_in"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/iv_close"
|
||||||
|
android:layout_width="@dimen/dp_18"
|
||||||
|
android:layout_height="@dimen/dp_18"
|
||||||
|
android:layout_marginLeft="@dimen/dp_11"
|
||||||
|
android:layout_marginRight="@dimen/dp_7"
|
||||||
|
android:src="@drawable/index_level_search" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/edit_query"
|
||||||
|
android:layout_width="@dimen/dp_0"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
|
android:hint="请输入ID/用户搜索"
|
||||||
|
android:maxLength="10"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textColor="#333333"
|
||||||
|
android:textColorHint="@color/color_FF999999"
|
||||||
|
android:textSize="@dimen/sp_12" />
|
||||||
|
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_cancel"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingRight="@dimen/dp_20"
|
||||||
|
android:text="搜索"
|
||||||
|
android:textColor="@color/color_FF333333"
|
||||||
|
android:textSize="@dimen/sp_14" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<com.scwang.smartrefresh.layout.SmartRefreshLayout
|
<com.scwang.smartrefresh.layout.SmartRefreshLayout
|
||||||
android:id="@+id/smart_refresh_layout"
|
android:id="@+id/smart_refresh_layout"
|
||||||
@@ -90,8 +89,8 @@
|
|||||||
android:id="@+id/recycle_view"
|
android:id="@+id/recycle_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:paddingBottom="@dimen/dp_40"
|
android:clipToPadding="false"
|
||||||
android:clipToPadding="false"/>
|
android:paddingBottom="@dimen/dp_40" />
|
||||||
|
|
||||||
|
|
||||||
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
|
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
|
||||||
|
|||||||
@@ -307,6 +307,31 @@
|
|||||||
<ImageView style="@style/My_Info_Item_Arrow_Style" />
|
<ImageView style="@style/My_Info_Item_Arrow_Style" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0.5dp"
|
||||||
|
android:layout_alignParentBottom="true"
|
||||||
|
android:background="@color/color_e2e2e2" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/ll_sk"
|
||||||
|
style="@style/My_Info_Item_LL_Style"
|
||||||
|
android:background="@drawable/bg_r15_white"
|
||||||
|
android:visibility="visible">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/My_Info_Item_Title_Style"
|
||||||
|
android:text="是否使用声卡" />
|
||||||
|
|
||||||
|
<Switch
|
||||||
|
android:id="@+id/swit_sk"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="right|center"
|
||||||
|
android:gravity="right"
|
||||||
|
tools:ignore="UseSwitchCompatOrMaterialXml" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0.5dp"
|
android:layout_height="0.5dp"
|
||||||
|
|||||||
Reference in New Issue
Block a user