686 lines
29 KiB
Java
686 lines
29 KiB
Java
package com.yunbao.live.views;
|
||
|
||
import static com.yunbao.live.activity.LiveActivity.mLiveSwLinkMicPkPresenter;
|
||
import static com.yunbao.live.event.LiveAudienceEvent.LiveAudienceType.LIVE_PK_END;
|
||
import static com.yunbao.live.event.LiveAudienceEvent.LiveAudienceType.LIVE_PK_ING;
|
||
import static com.yunbao.live.presenter.LiveSwLinkMicPkPresenter.inputStreamList;
|
||
import static com.yunbao.live.presenter.LiveSwLinkMicPkPresenter.inputStreamList1;
|
||
import static com.yunbao.live.presenter.LiveSwLinkMicPkPresenter.mPkUid;
|
||
|
||
import android.app.Activity;
|
||
import android.app.Dialog;
|
||
import android.content.Context;
|
||
import android.content.res.Resources;
|
||
import android.graphics.Bitmap;
|
||
import android.graphics.BitmapFactory;
|
||
import android.os.Bundle;
|
||
import android.os.Handler;
|
||
import android.os.Looper;
|
||
import android.util.Log;
|
||
import android.util.TypedValue;
|
||
import android.view.View;
|
||
import android.view.ViewGroup;
|
||
import android.widget.FrameLayout;
|
||
import android.widget.ImageView;
|
||
import android.widget.LinearLayout;
|
||
import android.widget.TextView;
|
||
|
||
import com.alibaba.fastjson.JSONObject;
|
||
import com.google.gson.Gson;
|
||
import com.tencent.rtmp.ITXLivePushListener;
|
||
import com.tencent.rtmp.TXLiveConstants;
|
||
import com.yunbao.common.CommonAppConfig;
|
||
import com.yunbao.common.Constants;
|
||
import com.yunbao.common.bean.UserBean;
|
||
import com.yunbao.common.event.AnchorInfoEvent;
|
||
import com.yunbao.common.event.LivePushRyEvent;
|
||
import com.yunbao.common.glide.ImgLoader;
|
||
import com.yunbao.common.http.HttpCallback;
|
||
import com.yunbao.common.http.HttpClient;
|
||
import com.yunbao.common.manager.IMLoginManager;
|
||
import com.yunbao.common.utils.Bus;
|
||
import com.yunbao.common.utils.DialogUitl;
|
||
import com.yunbao.common.utils.DpUtil;
|
||
import com.yunbao.common.utils.L;
|
||
import com.yunbao.common.utils.StringUtil;
|
||
import com.yunbao.common.utils.ToastUtil;
|
||
import com.yunbao.common.utils.WordUtil;
|
||
import com.yunbao.live.R;
|
||
import com.yunbao.live.activity.LiveActivity;
|
||
import com.yunbao.live.activity.LiveSwAnchorActivity;
|
||
import com.yunbao.live.bean.DrPkbean;
|
||
import com.yunbao.live.event.LiveAudienceEvent;
|
||
import com.yunbao.common.http.LiveHttpConsts;
|
||
import com.yunbao.common.http.LiveHttpUtil;
|
||
import com.yunbao.live.presenter.LiveSwLinkMicPkPresenter;
|
||
import com.yunbao.live.socket.SocketSendBean;
|
||
|
||
import org.greenrobot.eventbus.EventBus;
|
||
import org.greenrobot.eventbus.Subscribe;
|
||
import org.greenrobot.eventbus.ThreadMode;
|
||
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
|
||
import cn.rongcloud.rtc.api.RCRTCEngine;
|
||
import cn.rongcloud.rtc.api.RCRTCMixConfig;
|
||
import cn.rongcloud.rtc.api.RCRTCRoom;
|
||
import cn.rongcloud.rtc.api.callback.IRCRTCResultCallback;
|
||
import cn.rongcloud.rtc.api.callback.IRCRTCResultDataCallback;
|
||
import cn.rongcloud.rtc.api.stream.RCRTCLiveInfo;
|
||
import cn.rongcloud.rtc.base.RCRTCParamsType;
|
||
import cn.rongcloud.rtc.base.RTCErrorCode;
|
||
import io.agora.beautyapi.faceunity.agora.SWAuManager;
|
||
import io.agora.beautyapi.faceunity.agora.SWManager;
|
||
import io.rong.imlib.IRongCallback;
|
||
import io.rong.imlib.RongIMClient;
|
||
import io.rong.imlib.model.Conversation;
|
||
import io.rong.imlib.model.Message;
|
||
import io.rong.message.TextMessage;
|
||
|
||
/**
|
||
* Created by cxf on 2018/10/7.
|
||
* 腾讯云直播推流
|
||
*/
|
||
|
||
public class LivePushSwViewHolder extends AbsRyLivePushViewHolder implements ITXLivePushListener {
|
||
private int mMeiBaiVal;//基础美颜 美白
|
||
private int mMoPiVal;//基础美颜 磨皮
|
||
private int mHongRunVal;//基础美颜 红润
|
||
private String mBgmPath;//背景音乐路径
|
||
private Bitmap mFilterBmp;
|
||
private Handler mMainHandler;
|
||
public static Context contexts;
|
||
public static TextView btn_close;
|
||
public LinearLayout dr_pk_view;
|
||
public static RCRTCRoom rtcRoom;
|
||
public static RCRTCLiveInfo rcrtcLiveInfo;
|
||
private ViewGroup liveActivityContainer;
|
||
public FrameLayout timeTitle;
|
||
public TextView textTime;
|
||
private TextView tv_avatarOther_name;
|
||
private ImageView avatarOther;
|
||
private LinearLayout goto_room_view;
|
||
private boolean isPk = false;
|
||
private boolean isNeedOpenCamera = false;
|
||
private SWManager swManager;
|
||
private String pkUid1; //单人PK 对方主播 uid
|
||
|
||
//修改上面主播的头像
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void onUPAnchorInfo(AnchorInfoEvent e) {
|
||
Log.i(TAG, "onUPAnchorInfo: " + e);
|
||
if (e != null) {
|
||
if (!e.isClear()) {
|
||
tv_avatarOther_name.setText(e.getUserNiceName());
|
||
tv_avatarOther_name.setTag(e.getUserNiceName());
|
||
ImgLoader.displayAvatar(mContext, e.getAvatar(), avatarOther);
|
||
goto_room_view.setVisibility(View.VISIBLE);
|
||
} else {
|
||
goto_room_view.setVisibility(View.GONE);
|
||
}
|
||
}
|
||
}
|
||
|
||
public onDrPkJoinSuccessListener onDrPkJoinSuccessListener;
|
||
|
||
public void setOnDrPkJoinSuccessListener(LivePushSwViewHolder.onDrPkJoinSuccessListener onDrPkJoinSuccessListener) {
|
||
this.onDrPkJoinSuccessListener = onDrPkJoinSuccessListener;
|
||
}
|
||
|
||
public LivePushSwViewHolder(Context context, ViewGroup parentView) {
|
||
super(context, parentView);
|
||
this.contexts = context;
|
||
EventBus.getDefault().register(this);
|
||
}
|
||
|
||
@Override
|
||
protected int getLayoutId() {
|
||
return R.layout.view_live_push_sw;
|
||
}
|
||
|
||
public void setLiveActivityContainer(ViewGroup liveActivityContainer) {
|
||
this.liveActivityContainer = liveActivityContainer;
|
||
}
|
||
|
||
@Override
|
||
public void init() {
|
||
super.init();
|
||
Bus.getOn(this);
|
||
mPreView = (FrameLayout) findViewById(R.id.camera_preview);
|
||
camera = (LinearLayout) findViewById(R.id.camera);
|
||
mPreView1 = (FrameLayout) findViewById(R.id.camera_preview1);
|
||
cameraPreview3 = (FrameLayout) findViewById(R.id.camera_preview3);
|
||
dr1_preview = (FrameLayout) findViewById(R.id.dr1_preview);
|
||
dr2_preview = (FrameLayout) findViewById(R.id.dr2_preview);
|
||
dr3_preview = (FrameLayout) findViewById(R.id.dr3_preview);
|
||
dr4_preview = (FrameLayout) findViewById(R.id.dr4_preview);
|
||
leave = (ImageView) findViewById(R.id.leave);
|
||
dr_pk_view = (LinearLayout) findViewById(R.id.dr_pk_view);
|
||
timeTitle = (FrameLayout) findViewById(R.id.time_title);
|
||
textTime = (TextView) findViewById(R.id.text_time);
|
||
dr_pk_view.setVisibility(View.GONE);
|
||
cameraPreview3.setVisibility(View.GONE);
|
||
btn_close = (TextView) findViewById(R.id.btn_close);
|
||
tv_avatarOther_name = (TextView) findViewById(R.id.tv_avatarOther_name);
|
||
avatarOther = (ImageView) findViewById(R.id.avatarOther);
|
||
goto_room_view = (LinearLayout) findViewById(R.id.goto_room_view);
|
||
goto_room_view.setVisibility(View.GONE);
|
||
mMainHandler = new Handler(Looper.getMainLooper());
|
||
btn_close.setOnClickListener(new View.OnClickListener() {
|
||
@Override
|
||
public void onClick(View view) {
|
||
DialogUitl.showSimpleDialog(mContext, WordUtil.isNewZh() ? "是否要斷開連麥?" : "Do you want to disconnect Link?", new DialogUitl.SimpleCallback() {
|
||
@Override
|
||
public void onConfirmClick(Dialog dialog, String content) {
|
||
Log.i("PK----->", "updateSub: " + isPk + "|");
|
||
aheadOfScheduleEndPK(mPkUid, CommonAppConfig.getInstance().getUserBean().getUserNiceName(), (String) tv_avatarOther_name.getTag());
|
||
//断开连麦
|
||
LiveSwAnchorActivity.isDRPK = 0;
|
||
HttpClient.getInstance().post("livepk.setliveuserout", "livepk.setliveuserout").execute(new HttpCallback() {
|
||
@Override
|
||
public void onSuccess(int code, String msg, String[] info) {
|
||
}
|
||
});
|
||
|
||
HttpClient.getInstance().get("jieshupk", "jieshupk").params("uid", CommonAppConfig.getInstance().getUid()).params("addtime", "1").params("type", "1").params("sign", "1").execute(new HttpCallback() {
|
||
@Override
|
||
public void onSuccess(int code, String msg, String[] info) {
|
||
if (code == 0) {
|
||
JSONObject datas = JSONObject.parseObject(info[0]);
|
||
String pkUid = datas.getString("pkuid");
|
||
|
||
//退出副房间
|
||
// TODO: 2024/4/13 退出对方主播直播间
|
||
SWManager.get().exitChannelToUid(Integer.parseInt(CommonAppConfig.getInstance().getUid()), pkUid1);
|
||
SWManager.get().updateMyChannelView((FrameLayout) mBigContainer);
|
||
btn_close.setVisibility(View.GONE);//隐藏连麦按钮
|
||
EventBus.getDefault().post(new AnchorInfoEvent(true, "", "", ""));
|
||
closeButtonGone();
|
||
L.eSw("ac333333333333333333333");
|
||
SocketSendBean seed_msg = new SocketSendBean().param("_method_", Constants.SOCKET_LINK_MIC_PK).param("action", 9).param("msgtype", 10).param("win_uid", datas.getString("win_uid")).param("uid", CommonAppConfig.getInstance().getUid());
|
||
seed_msg.create();
|
||
Log.i("seed", seed_msg.mResult.toString());
|
||
HttpClient.getInstance().get("fasongxiaoxiv2", "fasongxiaoxiv2").params("GroupId", "g" + pkUid).params("jsonstr", seed_msg.mResult.toString()).execute(new HttpCallback() {
|
||
@Override
|
||
public void onSuccess(int code, String msg, String[] info) {
|
||
|
||
HttpClient.getInstance().get("fasongxiaoxiv2", "fasongxiaoxiv2").params("GroupId", "g" + CommonAppConfig.getInstance().getUid()).params("jsonstr", seed_msg.mResult.toString()).execute(new HttpCallback() {
|
||
@Override
|
||
public void onSuccess(int code, String msg, String[] info) {
|
||
|
||
SocketSendBean seed_msgs = new SocketSendBean().param("_method_", Constants.SOCKET_LINK_MIC_PK).param("action", 5).param("msgtype", 10).param("uname", "1").param("uimg", "1").param("pkuid", LiveSwLinkMicPkPresenter.oldmPkUid).param("uid", CommonAppConfig.getInstance().getUid());
|
||
seed_msgs.create();
|
||
Log.i("seed", seed_msgs.mResult.toString());
|
||
|
||
HttpClient.getInstance().get("fasongxiaoxiv2", "fasongxiaoxiv2").params("GroupId", "g" + LiveSwLinkMicPkPresenter.oldmPkUid).params("jsonstr", seed_msgs.mResult.toString()).execute(new HttpCallback() {
|
||
@Override
|
||
public void onSuccess(int code, String msg, String[] info) {
|
||
HttpClient.getInstance().get("fasongxiaoxiv2", "fasongxiaoxiv2").params("GroupId", "g" + CommonAppConfig.getInstance().getUid()).params("jsonstr", seed_msgs.mResult.toString()).execute(new HttpCallback() {
|
||
@Override
|
||
public void onSuccess(int code, String msg, String[] info) {
|
||
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
});
|
||
|
||
}
|
||
|
||
}
|
||
});
|
||
|
||
|
||
}
|
||
});
|
||
}
|
||
});
|
||
initRtcEngine();
|
||
}
|
||
|
||
/**
|
||
* 初始化声网SDK
|
||
*/
|
||
private void initRtcEngine() {
|
||
swManager = SWManager.get();
|
||
swManager.setAnchorContainer((FrameLayout) mBigContainer);
|
||
swManager.initRtcEngine((Activity) mContext, CommonAppConfig.getInstance().getUid());
|
||
swManager.setOnRtcEngineListener(new SWManager.onRtcEngineListener() {
|
||
@Override
|
||
public void onOpenSuccess(String channel, int uid) {
|
||
//开播成功
|
||
L.eSw("开播成功");
|
||
}
|
||
|
||
@Override
|
||
public void onUserOffline(int uid) {
|
||
|
||
}
|
||
});
|
||
}
|
||
|
||
public void exitChannelDrPk(List<DrPkbean> drPkbeanList) {
|
||
for (int i = 0; i < drPkbeanList.size(); i++) {
|
||
if (!CommonAppConfig.getInstance().getUid().equals(String.valueOf(drPkbeanList.get(i).getId()))) {
|
||
SWManager.get().exitChannelToUid(Integer.parseInt(CommonAppConfig.getInstance().getUid()), String.valueOf(drPkbeanList.get(i).getId()));
|
||
}
|
||
}
|
||
SWManager.get().updateMyChannelView((FrameLayout) mBigContainer);
|
||
currentPosition = 0;
|
||
drpkUid3 = "";
|
||
}
|
||
|
||
public void setAnPkRtc(UserBean u) {
|
||
EventBus.getDefault().post(new AnchorInfoEvent(false, u.getId(), u.getUserNiceName(), u.getAvatar()));
|
||
if (swManager != null && u != null) {
|
||
//将多人pk画面屏蔽
|
||
dr_pk_view.setVisibility(View.GONE);
|
||
L.eSw("设置对方主播的视图setAnPkRtc" + u);
|
||
pkUid1 = u.getId();
|
||
mPkContainer.setVisibility(View.VISIBLE);
|
||
//将自己的渲染视图设置到 leftContainer
|
||
swManager.updateMyChannelView((FrameLayout) mLeftContainer);
|
||
//清除 mBigContainer 中的渲染
|
||
mBigContainer.removeAllViews();
|
||
showButtonGone();
|
||
//设置对方主播的渲染视图 设置到 rightContainer
|
||
swManager.setPkContainer(mRightContainer);
|
||
swManager.joinChannelEx(CommonAppConfig.getInstance().getUid(), CommonAppConfig.SWToken, u.getId(), SWAuManager.getChannelName(u.getId()));
|
||
}
|
||
|
||
HttpClient.getInstance().get("xiugaizhiboxinxi", "xiugaizhiboxinxi")
|
||
.params("uid", CommonAppConfig.getInstance().getUid())
|
||
.params("pkuid", u.getId())
|
||
.params("type", "1")
|
||
.params("sign", "1")
|
||
.execute(new HttpCallback() {
|
||
@Override
|
||
public void onSuccess(int code, String msgs, String[] info) {
|
||
if (code == 0) {
|
||
HttpClient.getInstance().get("kaishipk", "kaishipk")
|
||
.params("uid", CommonAppConfig.getInstance().getUid())
|
||
.params("pkuid", u.getId())
|
||
.params("type", "1")
|
||
.params("sign", "1")
|
||
.execute(new HttpCallback() {
|
||
@Override
|
||
public void onSuccess(int code, String msgs, String[] info) {
|
||
if (code == 0) {
|
||
L.eSw("555555555555555555555555555555555555");
|
||
final SocketSendBean msg1 = new SocketSendBean()
|
||
.param("_method_", Constants.SOCKET_LINK_MIC_PK)
|
||
.param("action", 4)
|
||
.param("pkname", u.getUserNiceName())
|
||
.param("pkuid", u.getId())
|
||
.param("pkhead", u.getAvatar())
|
||
.param("uname", u.getUserNiceName())
|
||
.param("uhead", u.getAvatar())
|
||
.param("uid", CommonAppConfig.getInstance().getUid());
|
||
msg1.create();
|
||
|
||
Conversation.ConversationType conversationType = Conversation.ConversationType.CHATROOM;
|
||
TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString());
|
||
Message message1 = Message.obtain("g" + CommonAppConfig.getInstance().getUid(), conversationType, messageContent);
|
||
|
||
RongIMClient.getInstance().sendMessage(message1, null, null, new IRongCallback.ISendMessageCallback() {
|
||
@Override
|
||
public void onAttached(Message message) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onSuccess(Message message) {
|
||
Log.i("tx", "发送成功");
|
||
}
|
||
|
||
@Override
|
||
public void onError(Message message, RongIMClient.ErrorCode errorCode) {
|
||
|
||
}
|
||
});
|
||
}
|
||
|
||
}
|
||
});
|
||
}
|
||
}
|
||
});
|
||
}
|
||
|
||
private int currentPosition = 0;
|
||
|
||
private String drpkUid3 = "";
|
||
|
||
public int setAnDrPkRtc(String uid, int position) {
|
||
L.eSw("setAnDrPkRtc uid:" + uid + " position" + position);
|
||
int temp = -1;
|
||
if (swManager != null && !StringUtil.isEmpty(uid)) {
|
||
L.eSw("设置对方主播的视图 setAnDrPkRtc" + uid + "position:" + position);
|
||
if (currentPosition == 0) {
|
||
position = 2;
|
||
}
|
||
if (position == -1) {
|
||
temp = currentPosition + 1;
|
||
} else {
|
||
temp = position;
|
||
}
|
||
switch (temp) {
|
||
case 2:
|
||
swManager.joinChannelDrEx(dr2_preview, CommonAppConfig.getInstance().getUid(), CommonAppConfig.SWToken, uid, SWAuManager.getChannelName(uid),temp);
|
||
swManager.updateMyChannelView(dr1_preview);
|
||
mBigContainer.removeAllViews();
|
||
|
||
dr3_preview.setVisibility(View.GONE);
|
||
dr4_preview.setVisibility(View.GONE);
|
||
break;
|
||
case 3:
|
||
drpkUid3 = uid;
|
||
swManager.joinChannelDrEx(dr4_preview, CommonAppConfig.getInstance().getUid(), CommonAppConfig.SWToken, uid, SWAuManager.getChannelName(uid),temp);
|
||
dr3_preview.setVisibility(View.GONE);
|
||
dr4_preview.setVisibility(View.VISIBLE);
|
||
break;
|
||
case 4:
|
||
dr3_preview.setVisibility(View.VISIBLE);
|
||
//先退出这个主播的直播间,在进入该直播间,(视图问题暂时這樣處理)
|
||
swManager.exitChannelToUid(Integer.parseInt(CommonAppConfig.getInstance().getUid()), drpkUid3);
|
||
swManager.joinChannelDrEx(dr3_preview, CommonAppConfig.getInstance().getUid(), CommonAppConfig.SWToken, drpkUid3, SWAuManager.getChannelName(drpkUid3),temp);
|
||
|
||
swManager.joinChannelDrEx(dr4_preview, CommonAppConfig.getInstance().getUid(), CommonAppConfig.SWToken, uid, SWAuManager.getChannelName(uid),temp);
|
||
break;
|
||
}
|
||
dr_pk_view.setVisibility(View.VISIBLE);
|
||
currentPosition = temp;
|
||
}
|
||
return currentPosition;
|
||
}
|
||
|
||
public void anchorClose() {
|
||
swManager.exitChannelToUid(Integer.parseInt(CommonAppConfig.getInstance().getUid()),pkUid1);
|
||
swManager.updateMyChannelView((FrameLayout) mBigContainer); //用户主动断开连麦再退出画面
|
||
mPkContainer.setVisibility(View.GONE);
|
||
pkUid1 = null;
|
||
}
|
||
|
||
public void onLinkMicAnchorClose() {
|
||
//swManager.updateMyChannelView((FrameLayout) mBigContainer); 用户主动断开连麦再退出画面
|
||
//LivePushRyViewHolder.btn_close.setVisibility(View.GONE);
|
||
}
|
||
|
||
|
||
public void onLinkDRMicPkApply(UserBean userBean) {
|
||
if (mLiveSwLinkMicPkPresenter != null) {
|
||
mLiveSwLinkMicPkPresenter.onLinkDRMicPkApply(userBean);
|
||
}
|
||
}
|
||
|
||
|
||
@Override
|
||
public void changeToLeft() {
|
||
if (mPreView != null) {
|
||
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mPreView.getLayoutParams();
|
||
params.width = mPreView.getWidth() / 2;
|
||
params.height = DpUtil.dp2px(mPreView.getHeight());
|
||
params.topMargin = DpUtil.dp2px(130);
|
||
camera.setLayoutParams(params);
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void changeToBig() {
|
||
if (camera != null) {
|
||
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) camera.getLayoutParams();
|
||
params.width = ViewGroup.LayoutParams.MATCH_PARENT;
|
||
params.height = ViewGroup.LayoutParams.MATCH_PARENT;
|
||
params.topMargin = 0;
|
||
camera.setLayoutParams(params);
|
||
}
|
||
if (mPreView1.getVisibility() == View.VISIBLE) {
|
||
mPreView1.removeAllViews();
|
||
mPreView1.setVisibility(View.GONE);
|
||
inputStreamList.clear();
|
||
inputStreamList1.clear();
|
||
}
|
||
}
|
||
|
||
public void closeButtonGone() {
|
||
btn_close.setVisibility(View.GONE);
|
||
}
|
||
|
||
public void showButtonGone() {
|
||
btn_close.setVisibility(View.VISIBLE);
|
||
}
|
||
|
||
@Override
|
||
public void toggleCamera() {
|
||
if (mCameraFront) {
|
||
mCameraFront = false;
|
||
} else {
|
||
mCameraFront = true;
|
||
}
|
||
swManager.switchCamera();
|
||
}
|
||
|
||
/**
|
||
* 打开关闭闪光灯
|
||
*/
|
||
@Override
|
||
public void toggleFlash() {
|
||
if (mCameraFront) {
|
||
ToastUtil.show(mContext.getString(R.string.live_open_flash));
|
||
return;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 开始推流
|
||
*
|
||
* @param pushUrl 推流地址
|
||
*/
|
||
@Override
|
||
public void startPush(String pushUrl) {
|
||
//开播成功,创建频道
|
||
if (swManager != null) {
|
||
swManager.createChannel(CommonAppConfig.SWToken, CommonAppConfig.getChannelName());
|
||
}
|
||
}
|
||
|
||
public boolean isPking() {
|
||
if (btn_close != null) {
|
||
return btn_close.getVisibility() == View.VISIBLE;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
@Override
|
||
public void onPause() {
|
||
mPaused = true;
|
||
}
|
||
|
||
@Override
|
||
public void onResume() {
|
||
mPaused = false;
|
||
Log.i("摄像头", "onResume: " + isNeedOpenCamera);
|
||
if (isNeedOpenCamera) {
|
||
RCRTCEngine.getInstance().getDefaultVideoStream().startCamera(new IRCRTCResultDataCallback<Boolean>() {
|
||
@Override
|
||
public void onSuccess(Boolean data) {
|
||
//设置摄像头最大缩放比例
|
||
boolean zoom = RCRTCEngine.getInstance().getDefaultVideoStream().setCameraZoomFactor(1.0f);
|
||
// ToastUtil.show("设置比例="+zoom);
|
||
Log.i("摄像头", "onSuccess: 打开摄像头");
|
||
isNeedOpenCamera = false;
|
||
}
|
||
|
||
@Override
|
||
public void onFailed(RTCErrorCode errorCode) {
|
||
Log.i("摄像头", "onFailed: 打开摄像头失败 " + errorCode);
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void startBgm(String path) {
|
||
mBgmPath = path;
|
||
|
||
}
|
||
|
||
@Override
|
||
public void pauseBgm() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void resumeBgm() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void stopBgm() {
|
||
mBgmPath = null;
|
||
}
|
||
|
||
|
||
@Override
|
||
public void release() {
|
||
super.release();
|
||
Bus.getOff(this);
|
||
onDestroy();
|
||
LiveHttpUtil.cancel(LiveHttpConsts.LINK_MIC_TX_MIX_STREAM);
|
||
rtcRoom = null;
|
||
}
|
||
|
||
@Override
|
||
public void onPushEvent(int e, Bundle bundle) {
|
||
if (e == TXLiveConstants.PUSH_ERR_OPEN_CAMERA_FAIL) {
|
||
ToastUtil.show(mContext.getString(R.string.live_push_failed_1));
|
||
|
||
} else if (e == TXLiveConstants.PUSH_ERR_OPEN_MIC_FAIL) {
|
||
ToastUtil.show(mContext.getString(R.string.live_push_failed_2));
|
||
|
||
} else if (e == TXLiveConstants.PUSH_ERR_NET_DISCONNECT || e == TXLiveConstants.PUSH_ERR_INVALID_ADDRESS) {
|
||
L.e(TAG, "网络断开,推流失败------>");
|
||
|
||
} else if (e == TXLiveConstants.PUSH_WARNING_HW_ACCELERATION_FAIL) {
|
||
L.e(TAG, "不支持硬件加速------>");
|
||
|
||
} else if (e == TXLiveConstants.PUSH_EVT_FIRST_FRAME_AVAILABLE) {//预览成功
|
||
L.e(TAG, "mStearm--->初始化完毕");
|
||
if (mLivePushListener != null) {
|
||
mLivePushListener.onPreviewStart();
|
||
}
|
||
} else if (e == TXLiveConstants.PUSH_EVT_PUSH_BEGIN) {//推流成功
|
||
L.e(TAG, "mStearm--->推流成功");
|
||
if (!mStartPush) {
|
||
mStartPush = true;
|
||
if (mLivePushListener != null) {
|
||
mLivePushListener.onPushStart();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void onNetStatus(Bundle bundle) {
|
||
|
||
}
|
||
|
||
private void aheadOfScheduleEndPK(String pkUid, String uname, String pkname) {
|
||
if (!isPk) {
|
||
return;
|
||
}
|
||
String ct = "由於 " + uname + " 退出比賽," + pkname + " 獲得勝利";
|
||
|
||
SocketSendBean seed_msg = new SocketSendBean().param("_method_", Constants.SOCKET_SYSTEM).param("action", 1).param("ct", ct);
|
||
seed_msg.create();
|
||
|
||
HttpClient.getInstance().get("fasongxiaoxiv2", "fasongxiaoxiv2").params("GroupId", "g" + pkUid).params("jsonstr", seed_msg.mResult.toString()).execute(new HttpCallback() {
|
||
@Override
|
||
public void onSuccess(int code, String msg, String[] info) {
|
||
HttpClient.getInstance().post("fasongxiaoxiv2", "fasongxiaoxiv2").params("GroupId", "g" + CommonAppConfig.getInstance().getUid()).params("jsonstr", seed_msg.mResult.toString()).execute(new HttpCallback() {
|
||
@Override
|
||
public void onSuccess(int code, String msg, String[] info) {
|
||
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
|
||
private Bitmap decodeResource(Resources resources, int id) {
|
||
TypedValue value = new TypedValue();
|
||
resources.openRawResource(id, value);
|
||
BitmapFactory.Options opts = new BitmapFactory.Options();
|
||
opts.inTargetDensity = value.density;
|
||
return BitmapFactory.decodeResource(resources, id, opts);
|
||
}
|
||
|
||
public static String getLiveStream() {
|
||
return ((LiveActivity) contexts).getStream();
|
||
}
|
||
|
||
private String getTxAppId() {
|
||
return ((LiveActivity) mContext).getTxAppId();
|
||
}
|
||
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void setSelectClarity(LivePushRyEvent event) {
|
||
if (rtcRoom != null)
|
||
rtcRoom.getLocalUser().publishDefaultLiveStreams(new IRCRTCResultDataCallback<RCRTCLiveInfo>() {
|
||
@Override
|
||
public void onSuccess(RCRTCLiveInfo rcrtcLiveInfo1) {
|
||
rcrtcLiveInfo = rcrtcLiveInfo1;
|
||
}
|
||
|
||
@Override
|
||
public void onFailed(RTCErrorCode rtcErrorCode) {
|
||
Log.e("ry", "rtcErrorCode" + rtcErrorCode);
|
||
}
|
||
});
|
||
}
|
||
|
||
public void setEnableBeauty(boolean flag) {
|
||
if (swManager != null) {
|
||
swManager.setEnableBeauty(flag);
|
||
}
|
||
}
|
||
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void updateSub(LiveAudienceEvent event) {
|
||
if (event.getType() == LIVE_PK_END) {
|
||
isPk = false;
|
||
} else if (event.getType() == LIVE_PK_ING) {
|
||
isPk = true;
|
||
}
|
||
Log.i("PK----->", "updateSub: " + isPk + "|" + event.getType());
|
||
}
|
||
|
||
@Override
|
||
public void onDestroy() {
|
||
super.onDestroy();
|
||
if (swManager != null) {
|
||
swManager.exitChannelAll();
|
||
}
|
||
}
|
||
|
||
public void closeLive(){
|
||
if (swManager != null) {
|
||
swManager.exitChannelAll();
|
||
}
|
||
}
|
||
|
||
|
||
public interface onDrPkJoinSuccessListener{
|
||
void joinSuccess1();
|
||
void joinSuccess2();
|
||
void joinSuccess3();
|
||
void joinSuccess4();
|
||
|
||
}
|
||
|
||
}
|