直播间参数的回传

This commit is contained in:
18401019693
2022-08-23 10:21:34 +08:00
parent 6250e1d012
commit ad0282b066
9 changed files with 141 additions and 33 deletions

View File

@@ -29,8 +29,7 @@ import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.dialog.EffectsSettingsDialog;
import com.yunbao.common.dialog.LiveChargeDialogFragment;
import com.yunbao.common.dialog.LiveTotalDialog;
import com.yunbao.common.event.LiveAudienceEvent;
import com.yunbao.live.dialog.LiveTotalDialog;
import com.yunbao.common.http.CommonHttpConsts;
import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.HttpCallback;
@@ -56,6 +55,7 @@ import com.yunbao.live.dialog.LiveMicUserDialogFragment;
import com.yunbao.live.dialog.LiveWishListDialogFragment4Audience;
import com.yunbao.live.dialog.SidebarLiveAudience;
import com.yunbao.live.event.LinkMicTxAccEvent;
import com.yunbao.live.event.LiveAudienceEvent;
import com.yunbao.live.event.LiveRoomChangeEvent;
import com.yunbao.live.http.LiveHttpConsts;
import com.yunbao.live.http.LiveHttpUtil;
@@ -794,6 +794,22 @@ public class LiveAudienceActivity extends LiveActivity {
fragment4Audience.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveWishListDialogFragmentAudience");
}
break;
case OPEN_PARAMETERS:
mDanmuPrice = TextUtils.equals(event.getParametersModel().getmDanmuPrice(), mDanmuPrice) ?
mDanmuPrice : event.getParametersModel().getmDanmuPrice();
mSocketUserType = TextUtils.equals(String.valueOf(mSocketUserType), String.valueOf(event.getParametersModel().getmSocketUserType())) ?
mSocketUserType : event.getParametersModel().getmSocketUserType();
mChatLevel = TextUtils.equals(String.valueOf(mChatLevel), String.valueOf(event.getParametersModel().getmChatLevel())) ?
mChatLevel : event.getParametersModel().getmChatLevel();
mDanMuLevel = TextUtils.equals(String.valueOf(mDanMuLevel), String.valueOf(event.getParametersModel().getmDanMuLevel())) ?
mDanMuLevel : event.getParametersModel().getmDanMuLevel();
mLiveType = TextUtils.equals(String.valueOf(mLiveType), String.valueOf(event.getParametersModel().getmLiveType())) ?
mLiveType : event.getParametersModel().getmLiveType();
mLiveTypeVal = TextUtils.equals(String.valueOf(mLiveTypeVal), String.valueOf(event.getParametersModel().getmLiveTypeVal())) ?
mLiveTypeVal : event.getParametersModel().getmLiveTypeVal();
mLiveGuardInfo = event.getParametersModel().getmLiveGuardInfo() == null ?
mLiveGuardInfo : event.getParametersModel().getmLiveGuardInfo();
break;
}

View File

@@ -0,0 +1,51 @@
package com.yunbao.live.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.bean.ActiveModel;
import com.yunbao.live.views.FunGamesViewHolder;
import java.util.ArrayList;
import java.util.List;
public class FunGamesAdapter extends RecyclerView.Adapter {
private List<ActiveModel> activeModels = new ArrayList<>();
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View funGameView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_fun_games, parent, false);
return new FunGamesViewHolder(funGameView);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if (holder instanceof FunGamesViewHolder) {
FunGamesViewHolder funGamesViewHolder = (FunGamesViewHolder) holder;
funGamesViewHolder.showView(activeModels.get(position));
}
}
@Override
public int getItemCount() {
return activeModels.size();
}
/**
* 设置数据源
*
* @param mActiveModels
*/
public void addData(List<ActiveModel> mActiveModels) {
activeModels.clear();
activeModels.addAll(mActiveModels);
notifyDataSetChanged();
}
}

View File

@@ -0,0 +1,81 @@
package com.yunbao.live.bean;
import com.yunbao.common.bean.BaseModel;
/**
* 直播间基类的参数回传
*/
public class OpenParametersModel extends BaseModel {
private String mDanmuPrice;//弹幕价格
private int mSocketUserType;//socket用户类型 30 普通用户 40 管理员 50 主播 60超管
private int mChatLevel;//发言等级限制
private int mDanMuLevel;//弹幕等级限制
//直播间的类型 普通 密码 门票 计时等
private int mLiveType = 0;
//收费价格,计时收费每次扣费的值
private int mLiveTypeVal = 0;
private LiveGuardInfo mLiveGuardInfo = null;
public int getmLiveType() {
return mLiveType;
}
public OpenParametersModel setmLiveType(int mLiveType) {
this.mLiveType = mLiveType;
return this;
}
public int getmLiveTypeVal() {
return mLiveTypeVal;
}
public OpenParametersModel setmLiveTypeVal(int mLiveTypeVal) {
this.mLiveTypeVal = mLiveTypeVal;
return this;
}
public LiveGuardInfo getmLiveGuardInfo() {
return mLiveGuardInfo;
}
public OpenParametersModel setmLiveGuardInfo(LiveGuardInfo mLiveGuardInfo) {
this.mLiveGuardInfo = mLiveGuardInfo;
return this;
}
public String getmDanmuPrice() {
return mDanmuPrice;
}
public OpenParametersModel setmDanmuPrice(String mDanmuPrice) {
this.mDanmuPrice = mDanmuPrice;
return this;
}
public int getmSocketUserType() {
return mSocketUserType;
}
public OpenParametersModel setmSocketUserType(int mSocketUserType) {
this.mSocketUserType = mSocketUserType;
return this;
}
public int getmChatLevel() {
return mChatLevel;
}
public OpenParametersModel setmChatLevel(int mChatLevel) {
this.mChatLevel = mChatLevel;
return this;
}
public int getmDanMuLevel() {
return mDanMuLevel;
}
public OpenParametersModel setmDanMuLevel(int mDanMuLevel) {
this.mDanMuLevel = mDanMuLevel;
return this;
}
}

View File

@@ -0,0 +1,138 @@
package com.yunbao.live.dialog;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.live.adapter.FunGamesAdapter;
import com.yunbao.common.bean.ActiveModel;
import com.yunbao.common.dialog.AbsDialogFragment;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import com.yunbao.live.event.LiveAudienceEvent;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
/**
* 直播间合计弹窗
*/
public class LiveTotalDialog extends AbsDialogFragment {
private RecyclerView funGamesList;
private FunGamesAdapter gamesAdapter;
@Override
protected int getLayoutId() {
return R.layout.view_live_total;
}
@Override
protected int getDialogStyle() {
return R.style.dialog2;
}
@Override
protected boolean canCancel() {
return true;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Bus.getOn(this);
funGamesList = (RecyclerView) findViewById(R.id.fun_games_list);
gamesAdapter = new FunGamesAdapter();
funGamesList.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false));
funGamesList.setAdapter(gamesAdapter);
LiveNetManager.get(getContext())
.getActiveList(new HttpCallback<List<ActiveModel>>() {
@Override
public void onSuccess(List<ActiveModel> data) {
if (!isDetached())
gamesAdapter.addData(data);
}
@Override
public void onError(String error) {
ToastUtil.show(error);
}
});
//粉丝团
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.fan_club), () -> {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.FAN_CLUB));
dismiss();
}
);
//守护
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.guard_layout), () -> {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.GUARD));
dismiss();
}
);
//周星榜
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.live_wks_layout), () -> {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.LIVE_WKS));
dismiss();
}
);
//贵族
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.noble_layout), () -> {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.NOBLE));
dismiss();
}
);
//连麦
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.live_link_mic), () -> {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.LIAN_MAI));
dismiss();
}
);
//特效设置
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.effects_settings_layout), () -> {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.EFFECTS_SETTINGS));
dismiss();
}
);
}
@Override
protected void setWindowAttributes(Window window) {
window.setWindowAnimations(R.style.bottomToTopAnim);
WindowManager.LayoutParams params = window.getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.BOTTOM;
window.setAttributes(params);
}
@Override
public void onDestroy() {
super.onDestroy();
Bus.getOff(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onOpenDrawer(LiveAudienceEvent event) {
switch (event.getType()) {
case CURRENT_ACTIVITY:
dismiss();
break;
}
}
}

View File

@@ -0,0 +1,73 @@
package com.yunbao.live.event;
import com.yunbao.common.bean.ActiveModel;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.live.bean.OpenParametersModel;
public class LiveAudienceEvent extends BaseModel {
private LiveAudienceType type;
private ActiveModel model = new ActiveModel();
private String avatar = "";
private OpenParametersModel parametersModel = new OpenParametersModel();
public OpenParametersModel getParametersModel() {
return parametersModel;
}
public LiveAudienceEvent setParametersModel(OpenParametersModel parametersModel) {
this.parametersModel = parametersModel;
return this;
}
public String getAvatar() {
return avatar;
}
public LiveAudienceEvent setAvatar(String avatar) {
this.avatar = avatar;
return this;
}
public ActiveModel getModel() {
return model;
}
public LiveAudienceEvent setModel(ActiveModel model) {
this.model = model;
return this;
}
public LiveAudienceType getType() {
return type;
}
public LiveAudienceEvent setType(LiveAudienceType type) {
this.type = type;
return this;
}
public enum LiveAudienceType {
SIDEBAR(1, "侧边栏"),
BOTTOM_COLLECTION(2, "底部合集"),
GIFT_POPUP(3, "礼物弹窗"),
CURRENT_ACTIVITY(4, "当前活动"),
FAN_CLUB(5, "粉絲團"),
GUARD(6, "守護"),
LIVE_WKS(7, "周星榜"),
NOBLE(8, "贵族"),
LIAN_MAI(9, "连麦"),
EFFECTS_SETTINGS(10, "特效設置"),
WISH_LIST(11, "心愿单"),
OPEN_PARAMETERS(12, "开放参数");
private int type;
private String name;
LiveAudienceType(int type, String name) {
this.type = type;
this.name = name;
}
}
}

View File

@@ -0,0 +1,43 @@
package com.yunbao.live.views;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.bean.ActiveModel;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import com.yunbao.live.event.LiveAudienceEvent;
public class FunGamesViewHolder extends RecyclerView.ViewHolder {
private ImageView funGamePic;
private TextView funGameName;
public FunGamesViewHolder(@NonNull View itemView) {
super(itemView);
funGamePic = itemView.findViewById(R.id.fun_game_pic);
funGameName = itemView.findViewById(R.id.fun_game_name);
}
/**
* 设置数据
*
* @param model 数据模型
*/
public void showView(ActiveModel model) {
ImgLoader.display(itemView.getContext(), model.getActiveImg(), funGamePic);
funGameName.setText(model.getActiveName());
ViewClicksAntiShake.clicksAntiShake(itemView, () -> {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.CURRENT_ACTIVITY)
.setModel(model));
});
}
}

View File

@@ -33,7 +33,7 @@ import com.opensource.svgaplayer.SVGAVideoEntity;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.MsgModel;
import com.yunbao.common.event.LiveAudienceEvent;
import com.yunbao.live.event.LiveAudienceEvent;
import com.yunbao.common.event.MessageIMEvent;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.HttpCallback;

View File

@@ -45,7 +45,7 @@ import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.LevelBean;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.event.LiveAudienceEvent;
import com.yunbao.live.event.LiveAudienceEvent;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.CommonHttpConsts;
import com.yunbao.common.http.CommonHttpUtil;

View File

@@ -4,22 +4,17 @@ import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Outline;
import android.os.CountDownTimer;
import android.text.TextUtils;
import android.util.Log;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewOutlineProvider;
import android.widget.FrameLayout;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.viewpager.widget.PagerAdapter;
import com.adjust.sdk.Adjust;
@@ -27,37 +22,28 @@ import com.adjust.sdk.AdjustEvent;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.GsonUtils;
import com.ms.banner.Banner;
import com.tencent.imsdk.v2.V2TIMCallback;
import com.tencent.imsdk.v2.V2TIMManager;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.Constants;
import com.yunbao.common.activity.WebViewActivity;
import com.yunbao.common.bean.AnchorRecommendModel;
import com.yunbao.common.bean.SlideInfoModel;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.custom.CommonRefreshView;
import com.yunbao.common.custom.ItemDecoration;
import com.yunbao.common.custom.MyViewPager;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.CommonHttpConsts;
import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.main.MainNetManager;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.DeviceUtils;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.RandomUtil;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.utils.formatBigNum;
import com.yunbao.common.views.SlideInBannerViewHolder;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveActivity;
import com.yunbao.live.activity.LiveAudienceActivity;
import com.yunbao.live.adapter.SidebarAdapter;
import com.yunbao.live.bean.LiveBean;
import com.yunbao.live.bean.LiveBuyGuardMsgBean;
import com.yunbao.live.bean.LiveChatBean;
@@ -69,16 +55,17 @@ import com.yunbao.live.bean.LiveLuckGiftWinBean;
import com.yunbao.live.bean.LivePKUserListBean;
import com.yunbao.live.bean.LiveReceiveGiftBean;
import com.yunbao.live.bean.LiveUserGiftBean;
import com.yunbao.live.bean.OpenParametersModel;
import com.yunbao.live.bean.WishlistModel;
import com.yunbao.live.dialog.BlowkissDialog;
import com.yunbao.live.dialog.NewUserDialog;
import com.yunbao.live.event.LinkMicTxAccEvent;
import com.yunbao.live.event.LiveAudienceEvent;
import com.yunbao.live.http.LiveHttpConsts;
import com.yunbao.live.http.LiveHttpUtil;
import com.yunbao.live.presenter.LiveLinkMicAnchorPresenter;
import com.yunbao.live.presenter.LiveLinkMicPkPresenter;
import com.yunbao.live.presenter.LiveLinkMicPresenter;
import com.yunbao.live.presenter.LiveRoomCheckLivePresenter;
import com.yunbao.live.presenter.LiveRyLinkMicPkPresenter;
import com.yunbao.live.socket.SocketChatUtil;
import com.yunbao.live.socket.SocketClient;
@@ -209,6 +196,11 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
mLiveType = liveType;
mLiveTypeVal = liveTypeVal;
liveID = data.getUid();
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.OPEN_PARAMETERS)
.setParametersModel(new OpenParametersModel()
.setmLiveType(mLiveType)
.setmLiveTypeVal(mLiveTypeVal)));
if (mIntent.getIntExtra("isry", 0) == 1) {
mLivePlayViewHolder = new LivePlayRyViewHolder(mContext, playContainer, mIntent.getIntExtra("landscape", 0));
} else {
@@ -841,7 +833,13 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
mSocketUserType = obj.getIntValue("usertype");
mChatLevel = obj.getIntValue("speak_limit");
mDanMuLevel = obj.getIntValue("barrage_limit");
//回传参数
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.OPEN_PARAMETERS)
.setParametersModel(new OpenParametersModel().setmDanmuPrice(mDanmuPrice)
.setmSocketUserType(mSocketUserType)
.setmChatLevel(mChatLevel)
.setmDanMuLevel(mDanMuLevel)));
EventBus.getDefault().post("close_login");
EventBus.getDefault().post("oneUesrOver");
@@ -1028,6 +1026,9 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
mLiveGuardInfo.setMyGuardType(guardObj.getIntValue("type"));
mLiveGuardInfo.setMyGuardEndTime(guardObj.getString("endtime"));
}
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.OPEN_PARAMETERS)
.setParametersModel(new OpenParametersModel().setmLiveGuardInfo(mLiveGuardInfo)));
if (mLiveRoomViewHolder != null) {
mLiveRoomViewHolder.setGuardNum(guardNum);
mLiveRoomViewHolder.setFansNum(fansNum);
@@ -1098,9 +1099,6 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
}
/**
* 暂停播放
*/