|
@@ -1,6 +1,5 @@
|
|
|
package com.yunbao.live.socket;
|
|
package com.yunbao.live.socket;
|
|
|
|
|
|
|
|
-
|
|
|
|
|
import android.graphics.PointF;
|
|
import android.graphics.PointF;
|
|
|
import android.os.Handler;
|
|
import android.os.Handler;
|
|
|
import android.os.Message;
|
|
import android.os.Message;
|
|
@@ -32,6 +31,7 @@ import org.json.JSONException;
|
|
|
|
|
|
|
|
import java.lang.ref.WeakReference;
|
|
import java.lang.ref.WeakReference;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
|
|
|
import io.socket.client.IO;
|
|
import io.socket.client.IO;
|
|
|
import io.socket.client.Socket;
|
|
import io.socket.client.Socket;
|
|
@@ -57,13 +57,13 @@ public class SocketClient {
|
|
|
option.reconnection = true;
|
|
option.reconnection = true;
|
|
|
option.reconnectionDelay = 2000;
|
|
option.reconnectionDelay = 2000;
|
|
|
mSocket = IO.socket(url, option);
|
|
mSocket = IO.socket(url, option);
|
|
|
- mSocket.on(Socket.EVENT_CONNECT, mConnectListener);//连接成功
|
|
|
|
|
- mSocket.on(Socket.EVENT_DISCONNECT, mDisConnectListener);//断开连接
|
|
|
|
|
- mSocket.on(Socket.EVENT_CONNECT_ERROR, mErrorListener);//连接错误
|
|
|
|
|
- mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, mTimeOutListener);//连接超时
|
|
|
|
|
- mSocket.on(Socket.EVENT_RECONNECT, mReConnectListener);//重连
|
|
|
|
|
- mSocket.on(Constants.SOCKET_CONN, onConn);//连接socket消息
|
|
|
|
|
- mSocket.on(Constants.SOCKET_BROADCAST, onBroadcast);//接收服务器广播的具体业务逻辑相关的消息
|
|
|
|
|
|
|
+ mSocket.on(Socket.EVENT_CONNECT, mConnectListener);// 连接成功
|
|
|
|
|
+ mSocket.on(Socket.EVENT_DISCONNECT, mDisConnectListener);// 断开连接
|
|
|
|
|
+ mSocket.on(Socket.EVENT_CONNECT_ERROR, mErrorListener);// 连接错误
|
|
|
|
|
+ mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, mTimeOutListener);// 连接超时
|
|
|
|
|
+ mSocket.on(Socket.EVENT_RECONNECT, mReConnectListener);// 重连
|
|
|
|
|
+ mSocket.on(Constants.SOCKET_CONN, onConn);// 连接socket消息
|
|
|
|
|
+ mSocket.on(Constants.SOCKET_BROADCAST, onBroadcast);// 接收服务器广播的具体业务逻辑相关的消息
|
|
|
mSocketHandler = new SocketHandler(listener);
|
|
mSocketHandler = new SocketHandler(listener);
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
L.e(TAG, "socket url 异常--->" + e.getMessage());
|
|
L.e(TAG, "socket url 异常--->" + e.getMessage());
|
|
@@ -71,7 +71,6 @@ public class SocketClient {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
public void connect(String liveuid, String stream) {
|
|
public void connect(String liveuid, String stream) {
|
|
|
mLiveUid = liveuid;
|
|
mLiveUid = liveuid;
|
|
|
mStream = stream;
|
|
mStream = stream;
|
|
@@ -113,7 +112,6 @@ public class SocketClient {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
private Emitter.Listener mConnectListener = new Emitter.Listener() {
|
|
private Emitter.Listener mConnectListener = new Emitter.Listener() {
|
|
|
@Override
|
|
@Override
|
|
|
public void call(Object... args) {
|
|
public void call(Object... args) {
|
|
@@ -126,7 +124,7 @@ public class SocketClient {
|
|
|
@Override
|
|
@Override
|
|
|
public void call(Object... args) {
|
|
public void call(Object... args) {
|
|
|
L.e(TAG, "--reConnect-->" + args);
|
|
L.e(TAG, "--reConnect-->" + args);
|
|
|
- //conn();
|
|
|
|
|
|
|
+ // conn();
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -193,7 +191,6 @@ public class SocketClient {
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-
|
|
|
|
|
public void send(SocketSendBean bean) {
|
|
public void send(SocketSendBean bean) {
|
|
|
if (mSocket != null) {
|
|
if (mSocket != null) {
|
|
|
mSocket.emit(Constants.SOCKET_SEND, bean.create());
|
|
mSocket.emit(Constants.SOCKET_SEND, bean.create());
|
|
@@ -227,7 +224,6 @@ public class SocketClient {
|
|
|
return ct;
|
|
return ct;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void handleMessage(Message msg) {
|
|
public void handleMessage(Message msg) {
|
|
|
if (mListener == null) {
|
|
if (mListener == null) {
|
|
@@ -246,37 +242,36 @@ public class SocketClient {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
private void processBroadcast(String socketMsg) {
|
|
private void processBroadcast(String socketMsg) {
|
|
|
L.e("收到socket--->" + socketMsg);
|
|
L.e("收到socket--->" + socketMsg);
|
|
|
-// if (Constants.SOCKET_STOP_PLAY.equals(socketMsg)) {
|
|
|
|
|
-// mListener.onSuperCloseLive();//超管关闭房间
|
|
|
|
|
-// return;
|
|
|
|
|
-// }
|
|
|
|
|
|
|
+ // if (Constants.SOCKET_STOP_PLAY.equals(socketMsg)) {
|
|
|
|
|
+ // mListener.onSuperCloseLive();//超管关闭房间
|
|
|
|
|
+ // return;
|
|
|
|
|
+ // }
|
|
|
SocketReceiveBean received = JSON.parseObject(socketMsg, SocketReceiveBean.class);
|
|
SocketReceiveBean received = JSON.parseObject(socketMsg, SocketReceiveBean.class);
|
|
|
JSONObject map = received.getMsg().getJSONObject(0);
|
|
JSONObject map = received.getMsg().getJSONObject(0);
|
|
|
switch (map.getString("_method_")) {
|
|
switch (map.getString("_method_")) {
|
|
|
- case Constants.SOCKET_STOP_LIVE://超管封闭直播间
|
|
|
|
|
|
|
+ case Constants.SOCKET_STOP_LIVE:// 超管封闭直播间
|
|
|
mListener.onSuperCloseLive(map.getString("ct"));
|
|
mListener.onSuperCloseLive(map.getString("ct"));
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_SYSTEM_WARNING://后台警告
|
|
|
|
|
|
|
+ case Constants.SOCKET_SYSTEM_WARNING:// 后台警告
|
|
|
mListener.onSuperWarningLive(getLanguageCt(map));
|
|
mListener.onSuperWarningLive(getLanguageCt(map));
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_SYSTEM://系统消息
|
|
|
|
|
|
|
+ case Constants.SOCKET_SYSTEM:// 系统消息
|
|
|
systemChatMessage(getLanguageCt(map));
|
|
systemChatMessage(getLanguageCt(map));
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_KICK://踢人
|
|
|
|
|
|
|
+ case Constants.SOCKET_KICK:// 踢人
|
|
|
systemChatMessage(getLanguageCt(map));
|
|
systemChatMessage(getLanguageCt(map));
|
|
|
mListener.onKick(map.getString("touid"));
|
|
mListener.onKick(map.getString("touid"));
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_SHUT_UP://禁言
|
|
|
|
|
|
|
+ case Constants.SOCKET_SHUT_UP:// 禁言
|
|
|
String ct = getLanguageCt(map);
|
|
String ct = getLanguageCt(map);
|
|
|
systemChatMessage(ct);
|
|
systemChatMessage(ct);
|
|
|
mListener.onShutUp(map.getString("touid"), ct);
|
|
mListener.onShutUp(map.getString("touid"), ct);
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_SEND_MSG://文字消息,点亮,用户进房间
|
|
|
|
|
|
|
+ case Constants.SOCKET_SEND_MSG:// 文字消息,点亮,用户进房间
|
|
|
String msgtype = map.getString("msgtype");
|
|
String msgtype = map.getString("msgtype");
|
|
|
- if ("2".equals(msgtype)) {//发言,点亮
|
|
|
|
|
|
|
+ if ("2".equals(msgtype)) {// 发言,点亮
|
|
|
if ("409002".equals(received.getRetcode())) {
|
|
if ("409002".equals(received.getRetcode())) {
|
|
|
ToastUtil.show(R.string.live_you_are_shut);
|
|
ToastUtil.show(R.string.live_you_are_shut);
|
|
|
return;
|
|
return;
|
|
@@ -293,50 +288,57 @@ public class SocketClient {
|
|
|
if (heart > 0) {
|
|
if (heart > 0) {
|
|
|
chatBean.setType(LiveChatBean.LIGHT);
|
|
chatBean.setType(LiveChatBean.LIGHT);
|
|
|
}
|
|
}
|
|
|
- /*chatBean.setLiangName(map.getString("liangname"));
|
|
|
|
|
- chatBean.setVipType(map.getIntValue("vip_type"));*/
|
|
|
|
|
|
|
+ /*
|
|
|
|
|
+ * chatBean.setLiangName(map.getString("liangname"));
|
|
|
|
|
+ * chatBean.setVipType(map.getIntValue("vip_type"));
|
|
|
|
|
+ */
|
|
|
chatBean.setGuardType(map.getIntValue("guard_type"));
|
|
chatBean.setGuardType(map.getIntValue("guard_type"));
|
|
|
mListener.onChat(chatBean);
|
|
mListener.onChat(chatBean);
|
|
|
- } else if ("0".equals(msgtype)) {//用户进入房间
|
|
|
|
|
|
|
+ } else if ("0".equals(msgtype)) {// 用户进入房间
|
|
|
JSONObject obj = JSON.parseObject(map.getString("ct"));
|
|
JSONObject obj = JSON.parseObject(map.getString("ct"));
|
|
|
LiveUserGiftBean u = JSON.toJavaObject(obj, LiveUserGiftBean.class);
|
|
LiveUserGiftBean u = JSON.toJavaObject(obj, LiveUserGiftBean.class);
|
|
|
- /*UserBean.Vip vip = new UserBean.Vip();
|
|
|
|
|
- int isvip = obj.getIntValue("isvip");
|
|
|
|
|
- vip.setIsvip(isvip);
|
|
|
|
|
- u.setVipInfo(vip);
|
|
|
|
|
- UserBean.Car car = new UserBean.Car();
|
|
|
|
|
- car.setId(obj.getIntValue("car_id"));
|
|
|
|
|
- car.setSwf(obj.getString("car_swf"));
|
|
|
|
|
- car.setSwftime(obj.getFloatValue("car_swftime"));
|
|
|
|
|
- car.setWords(obj.getString("car_words"));
|
|
|
|
|
- u.setCar(car);
|
|
|
|
|
- UserBean.Liang liang = new UserBean.Liang();
|
|
|
|
|
- String liangName = obj.getString("liangname");
|
|
|
|
|
- liang.setName(liangName);
|
|
|
|
|
- u.setLiang(liang);*/
|
|
|
|
|
|
|
+ /*
|
|
|
|
|
+ * UserBean.Vip vip = new UserBean.Vip();
|
|
|
|
|
+ * int isvip = obj.getIntValue("isvip");
|
|
|
|
|
+ * vip.setIsvip(isvip);
|
|
|
|
|
+ * u.setVipInfo(vip);
|
|
|
|
|
+ * UserBean.Car car = new UserBean.Car();
|
|
|
|
|
+ * car.setId(obj.getIntValue("car_id"));
|
|
|
|
|
+ * car.setSwf(obj.getString("car_swf"));
|
|
|
|
|
+ * car.setSwftime(obj.getFloatValue("car_swftime"));
|
|
|
|
|
+ * car.setWords(obj.getString("car_words"));
|
|
|
|
|
+ * u.setCar(car);
|
|
|
|
|
+ * UserBean.Liang liang = new UserBean.Liang();
|
|
|
|
|
+ * String liangName = obj.getString("liangname");
|
|
|
|
|
+ * liang.setName(liangName);
|
|
|
|
|
+ * u.setLiang(liang);
|
|
|
|
|
+ */
|
|
|
LiveChatBean chatBean = new LiveChatBean();
|
|
LiveChatBean chatBean = new LiveChatBean();
|
|
|
chatBean.setType(LiveChatBean.ENTER_ROOM);
|
|
chatBean.setType(LiveChatBean.ENTER_ROOM);
|
|
|
chatBean.setId(u.getId());
|
|
chatBean.setId(u.getId());
|
|
|
chatBean.setUserNiceName(u.getUserNiceName());
|
|
chatBean.setUserNiceName(u.getUserNiceName());
|
|
|
- //chatBean.setLevel(u.getLevel());
|
|
|
|
|
- /*chatBean.setVipType(isvip);
|
|
|
|
|
- chatBean.setLiangName(liangName);*/
|
|
|
|
|
|
|
+ // chatBean.setLevel(u.getLevel());
|
|
|
|
|
+ /*
|
|
|
|
|
+ * chatBean.setVipType(isvip);
|
|
|
|
|
+ * chatBean.setLiangName(liangName);
|
|
|
|
|
+ */
|
|
|
chatBean.setManager(obj.getIntValue("usertype") == Constants.SOCKET_USER_TYPE_ADMIN);
|
|
chatBean.setManager(obj.getIntValue("usertype") == Constants.SOCKET_USER_TYPE_ADMIN);
|
|
|
chatBean.setContent(WordUtil.getString(R.string.live_enter_room));
|
|
chatBean.setContent(WordUtil.getString(R.string.live_enter_room));
|
|
|
chatBean.setGuardType(obj.getIntValue("guard_type"));
|
|
chatBean.setGuardType(obj.getIntValue("guard_type"));
|
|
|
mListener.onEnterRoom(new LiveEnterRoomBean(u, chatBean));
|
|
mListener.onEnterRoom(new LiveEnterRoomBean(u, chatBean));
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_LIGHT://飘心
|
|
|
|
|
|
|
+ case Constants.SOCKET_LIGHT:// 飘心
|
|
|
mListener.onLight();
|
|
mListener.onLight();
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_SEND_GIFT://送礼物
|
|
|
|
|
- LiveReceiveGiftBean receiveGiftBean = JSON.parseObject(map.getString("ct"), LiveReceiveGiftBean.class);
|
|
|
|
|
|
|
+ case Constants.SOCKET_SEND_GIFT:// 送礼物
|
|
|
|
|
+ LiveReceiveGiftBean receiveGiftBean = JSON.parseObject(map.getString("ct"),
|
|
|
|
|
+ LiveReceiveGiftBean.class);
|
|
|
receiveGiftBean.setAvatar(map.getString("uhead"));
|
|
receiveGiftBean.setAvatar(map.getString("uhead"));
|
|
|
receiveGiftBean.setUserNiceName(map.getString("uname"));
|
|
receiveGiftBean.setUserNiceName(map.getString("uname"));
|
|
|
|
|
|
|
|
- if(receiveGiftBean.getType()==2){
|
|
|
|
|
- List<PointF> list=JSON.parseArray(map.getString("paintedPath"),PointF.class);
|
|
|
|
|
|
|
+ if (receiveGiftBean.getType() == 2) {
|
|
|
|
|
+ List<PointF> list = JSON.parseArray(map.getString("paintedPath"), PointF.class);
|
|
|
receiveGiftBean.setPointList(list);
|
|
receiveGiftBean.setPointList(list);
|
|
|
receiveGiftBean.setDrawWidth(map.getFloat("paintedWidth"));
|
|
receiveGiftBean.setDrawWidth(map.getFloat("paintedWidth"));
|
|
|
receiveGiftBean.setDrawHeight(map.getFloat("paintedHeight"));
|
|
receiveGiftBean.setDrawHeight(map.getFloat("paintedHeight"));
|
|
@@ -355,17 +357,17 @@ public class SocketClient {
|
|
|
mListener.onSendGift(receiveGiftBean);
|
|
mListener.onSendGift(receiveGiftBean);
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_SEND_BARRAGE://发弹幕
|
|
|
|
|
|
|
+ case Constants.SOCKET_SEND_BARRAGE:// 发弹幕
|
|
|
LiveDanMuBean liveDanMuBean = JSON.parseObject(map.getString("ct"), LiveDanMuBean.class);
|
|
LiveDanMuBean liveDanMuBean = JSON.parseObject(map.getString("ct"), LiveDanMuBean.class);
|
|
|
liveDanMuBean.setAvatar(map.getString("uhead"));
|
|
liveDanMuBean.setAvatar(map.getString("uhead"));
|
|
|
liveDanMuBean.setUserNiceName(map.getString("uname"));
|
|
liveDanMuBean.setUserNiceName(map.getString("uname"));
|
|
|
mListener.onSendDanMu(liveDanMuBean);
|
|
mListener.onSendDanMu(liveDanMuBean);
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_LEAVE_ROOM://离开房间
|
|
|
|
|
|
|
+ case Constants.SOCKET_LEAVE_ROOM:// 离开房间
|
|
|
UserBean u = JSON.parseObject(map.getString("ct"), UserBean.class);
|
|
UserBean u = JSON.parseObject(map.getString("ct"), UserBean.class);
|
|
|
mListener.onLeaveRoom(u);
|
|
mListener.onLeaveRoom(u);
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_LIVE_END://主播关闭直播
|
|
|
|
|
|
|
+ case Constants.SOCKET_LIVE_END:// 主播关闭直播
|
|
|
int action = map.getIntValue("action");
|
|
int action = map.getIntValue("action");
|
|
|
if (action == 18) {
|
|
if (action == 18) {
|
|
|
mListener.onLiveEnd();
|
|
mListener.onLiveEnd();
|
|
@@ -373,7 +375,7 @@ public class SocketClient {
|
|
|
mListener.onAnchorInvalid();
|
|
mListener.onAnchorInvalid();
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_CHANGE_LIVE://主播切换计时收费类型
|
|
|
|
|
|
|
+ case Constants.SOCKET_CHANGE_LIVE:// 主播切换计时收费类型
|
|
|
mListener.onChangeTimeCharge(map.getIntValue("type_val"));
|
|
mListener.onChangeTimeCharge(map.getIntValue("type_val"));
|
|
|
break;
|
|
break;
|
|
|
case Constants.SOCKET_UPDATE_VOTES:
|
|
case Constants.SOCKET_UPDATE_VOTES:
|
|
@@ -386,11 +388,11 @@ public class SocketClient {
|
|
|
List<LiveUserGiftBean> list = JSON.parseArray(s, LiveUserGiftBean.class);
|
|
List<LiveUserGiftBean> list = JSON.parseArray(s, LiveUserGiftBean.class);
|
|
|
mListener.addFakeFans(list);
|
|
mListener.addFakeFans(list);
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_SET_ADMIN://设置或取消管理员
|
|
|
|
|
|
|
+ case Constants.SOCKET_SET_ADMIN:// 设置或取消管理员
|
|
|
systemChatMessage(getLanguageCt(map));
|
|
systemChatMessage(getLanguageCt(map));
|
|
|
mListener.onSetAdmin(map.getString("touid"), map.getIntValue("action"));
|
|
mListener.onSetAdmin(map.getString("touid"), map.getIntValue("action"));
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_BUY_GUARD://购买守护
|
|
|
|
|
|
|
+ case Constants.SOCKET_BUY_GUARD:// 购买守护
|
|
|
LiveBuyGuardMsgBean buyGuardMsgBean = new LiveBuyGuardMsgBean();
|
|
LiveBuyGuardMsgBean buyGuardMsgBean = new LiveBuyGuardMsgBean();
|
|
|
buyGuardMsgBean.setUid(map.getString("uid"));
|
|
buyGuardMsgBean.setUid(map.getString("uid"));
|
|
|
buyGuardMsgBean.setUserName(map.getString("uname"));
|
|
buyGuardMsgBean.setUserName(map.getString("uname"));
|
|
@@ -399,16 +401,16 @@ public class SocketClient {
|
|
|
buyGuardMsgBean.setGuardType(map.getIntValue("guard_type"));
|
|
buyGuardMsgBean.setGuardType(map.getIntValue("guard_type"));
|
|
|
mListener.onBuyGuard(buyGuardMsgBean);
|
|
mListener.onBuyGuard(buyGuardMsgBean);
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_LINK_MIC://连麦
|
|
|
|
|
|
|
+ case Constants.SOCKET_LINK_MIC:// 连麦
|
|
|
processLinkMic(map);
|
|
processLinkMic(map);
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_LINK_MIC_ANCHOR://主播连麦
|
|
|
|
|
|
|
+ case Constants.SOCKET_LINK_MIC_ANCHOR:// 主播连麦
|
|
|
processLinkMicAnchor(map);
|
|
processLinkMicAnchor(map);
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_LINK_MIC_PK://主播PK
|
|
|
|
|
|
|
+ case Constants.SOCKET_LINK_MIC_PK:// 主播PK
|
|
|
processAnchorLinkMicPk(map);
|
|
processAnchorLinkMicPk(map);
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_RED_PACK://红包消息
|
|
|
|
|
|
|
+ case Constants.SOCKET_RED_PACK:// 红包消息
|
|
|
String uid = map.getString("uid");
|
|
String uid = map.getString("uid");
|
|
|
if (TextUtils.isEmpty(uid)) {
|
|
if (TextUtils.isEmpty(uid)) {
|
|
|
return;
|
|
return;
|
|
@@ -416,7 +418,8 @@ public class SocketClient {
|
|
|
LiveChatBean liveChatBean = new LiveChatBean();
|
|
LiveChatBean liveChatBean = new LiveChatBean();
|
|
|
liveChatBean.setType(LiveChatBean.RED_PACK);
|
|
liveChatBean.setType(LiveChatBean.RED_PACK);
|
|
|
liveChatBean.setId(uid);
|
|
liveChatBean.setId(uid);
|
|
|
- String name = uid.equals(mLiveUid) ? WordUtil.getString(R.string.live_anchor) : map.getString("uname");
|
|
|
|
|
|
|
+ String name = uid.equals(mLiveUid) ? WordUtil.getString(R.string.live_anchor)
|
|
|
|
|
+ : map.getString("uname");
|
|
|
if (LanguageUtil.isZh()) {
|
|
if (LanguageUtil.isZh()) {
|
|
|
liveChatBean.setContent(StringUtil.contact(name, getLanguageCt(map)));
|
|
liveChatBean.setContent(StringUtil.contact(name, getLanguageCt(map)));
|
|
|
} else {
|
|
} else {
|
|
@@ -425,14 +428,14 @@ public class SocketClient {
|
|
|
mListener.onRedPack(liveChatBean);
|
|
mListener.onRedPack(liveChatBean);
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
- case Constants.SOCKET_LUCK_WIN://幸运礼物中奖
|
|
|
|
|
|
|
+ case Constants.SOCKET_LUCK_WIN:// 幸运礼物中奖
|
|
|
mListener.onLuckGiftWin(map.toJavaObject(LiveLuckGiftWinBean.class));
|
|
mListener.onLuckGiftWin(map.toJavaObject(LiveLuckGiftWinBean.class));
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
- case Constants.SOCKET_PRIZE_POOL_WIN://奖池中奖
|
|
|
|
|
|
|
+ case Constants.SOCKET_PRIZE_POOL_WIN:// 奖池中奖
|
|
|
mListener.onPrizePoolWin(map.toJavaObject(LiveGiftPrizePoolWinBean.class));
|
|
mListener.onPrizePoolWin(map.toJavaObject(LiveGiftPrizePoolWinBean.class));
|
|
|
break;
|
|
break;
|
|
|
- case Constants.SOCKET_PRIZE_POOL_UP://奖池升级
|
|
|
|
|
|
|
+ case Constants.SOCKET_PRIZE_POOL_UP:// 奖池升级
|
|
|
mListener.onPrizePoolUp(map.getString("uplevel"));
|
|
mListener.onPrizePoolUp(map.getString("uplevel"));
|
|
|
break;
|
|
break;
|
|
|
case Constants.SOCKET_LIVE_GOODS_SHOW:
|
|
case Constants.SOCKET_LIVE_GOODS_SHOW:
|
|
@@ -452,7 +455,6 @@ public class SocketClient {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
/**
|
|
/**
|
|
|
* 接收到系统消息,显示在聊天栏中
|
|
* 接收到系统消息,显示在聊天栏中
|
|
|
*/
|
|
*/
|
|
@@ -469,48 +471,48 @@ public class SocketClient {
|
|
|
private void processLinkMic(JSONObject map) {
|
|
private void processLinkMic(JSONObject map) {
|
|
|
int action = map.getIntValue("action");
|
|
int action = map.getIntValue("action");
|
|
|
switch (action) {
|
|
switch (action) {
|
|
|
- case 1://主播收到观众连麦的申请
|
|
|
|
|
|
|
+ case 1:// 主播收到观众连麦的申请
|
|
|
UserBean u = new UserBean();
|
|
UserBean u = new UserBean();
|
|
|
u.setId(map.getString("uid"));
|
|
u.setId(map.getString("uid"));
|
|
|
u.setUserNiceName(map.getString("uname"));
|
|
u.setUserNiceName(map.getString("uname"));
|
|
|
u.setAvatar(map.getString("uhead"));
|
|
u.setAvatar(map.getString("uhead"));
|
|
|
u.setSex(map.getIntValue("sex"));
|
|
u.setSex(map.getIntValue("sex"));
|
|
|
- //u.setLevel(map.getIntValue("level"));
|
|
|
|
|
|
|
+ // u.setLevel(map.getIntValue("level"));
|
|
|
mListener.onAudienceApplyLinkMic(u);
|
|
mListener.onAudienceApplyLinkMic(u);
|
|
|
break;
|
|
break;
|
|
|
- case 2://观众收到主播同意连麦的消息
|
|
|
|
|
|
|
+ case 2:// 观众收到主播同意连麦的消息
|
|
|
if (map.getString("touid").equals(CommonAppConfig.getInstance().getUid())) {
|
|
if (map.getString("touid").equals(CommonAppConfig.getInstance().getUid())) {
|
|
|
mListener.onAnchorAcceptLinkMic();
|
|
mListener.onAnchorAcceptLinkMic();
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
- case 3://观众收到主播拒绝连麦的消息
|
|
|
|
|
|
|
+ case 3:// 观众收到主播拒绝连麦的消息
|
|
|
if (map.getString("touid").equals(CommonAppConfig.getInstance().getUid())) {
|
|
if (map.getString("touid").equals(CommonAppConfig.getInstance().getUid())) {
|
|
|
mListener.onAnchorRefuseLinkMic();
|
|
mListener.onAnchorRefuseLinkMic();
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
- case 4://所有人收到连麦观众发过来的流地址
|
|
|
|
|
|
|
+ case 4:// 所有人收到连麦观众发过来的流地址
|
|
|
String uid = map.getString("uid");
|
|
String uid = map.getString("uid");
|
|
|
if (!TextUtils.isEmpty(uid) && !uid.equals(CommonAppConfig.getInstance().getUid())) {
|
|
if (!TextUtils.isEmpty(uid) && !uid.equals(CommonAppConfig.getInstance().getUid())) {
|
|
|
mListener.onAudienceSendLinkMicUrl(uid, map.getString("uname"), map.getString("playurl"));
|
|
mListener.onAudienceSendLinkMicUrl(uid, map.getString("uname"), map.getString("playurl"));
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
- case 5://连麦观众自己断开连麦
|
|
|
|
|
|
|
+ case 5:// 连麦观众自己断开连麦
|
|
|
mListener.onAudienceCloseLinkMic(map.getString("uid"), map.getString("uname"));
|
|
mListener.onAudienceCloseLinkMic(map.getString("uid"), map.getString("uname"));
|
|
|
break;
|
|
break;
|
|
|
- case 6://主播断开已连麦观众的连麦
|
|
|
|
|
|
|
+ case 6:// 主播断开已连麦观众的连麦
|
|
|
mListener.onAnchorCloseLinkMic(map.getString("touid"), map.getString("uname"));
|
|
mListener.onAnchorCloseLinkMic(map.getString("touid"), map.getString("uname"));
|
|
|
break;
|
|
break;
|
|
|
- case 7://已申请连麦的观众收到主播繁忙的消息
|
|
|
|
|
|
|
+ case 7:// 已申请连麦的观众收到主播繁忙的消息
|
|
|
if (map.getString("touid").equals(CommonAppConfig.getInstance().getUid())) {
|
|
if (map.getString("touid").equals(CommonAppConfig.getInstance().getUid())) {
|
|
|
mListener.onAnchorBusy();
|
|
mListener.onAnchorBusy();
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
- case 8://已申请连麦的观众收到主播无响应的消息
|
|
|
|
|
|
|
+ case 8:// 已申请连麦的观众收到主播无响应的消息
|
|
|
if (map.getString("touid").equals(CommonAppConfig.getInstance().getUid())) {
|
|
if (map.getString("touid").equals(CommonAppConfig.getInstance().getUid())) {
|
|
|
mListener.onAnchorNotResponse();
|
|
mListener.onAnchorNotResponse();
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
- case 9://所有人收到已连麦的观众退出直播间消息
|
|
|
|
|
|
|
+ case 9:// 所有人收到已连麦的观众退出直播间消息
|
|
|
mListener.onAudienceLinkMicExitRoom(map.getString("touid"));
|
|
mListener.onAudienceLinkMicExitRoom(map.getString("touid"));
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
@@ -524,32 +526,51 @@ public class SocketClient {
|
|
|
private void processLinkMicAnchor(JSONObject map) {
|
|
private void processLinkMicAnchor(JSONObject map) {
|
|
|
int action = map.getIntValue("action");
|
|
int action = map.getIntValue("action");
|
|
|
switch (action) {
|
|
switch (action) {
|
|
|
- case 1://收到其他主播连麦的邀请的回调
|
|
|
|
|
|
|
+ case 1:// 收到其他主播连麦的邀请的回调
|
|
|
UserBean u = new UserBean();
|
|
UserBean u = new UserBean();
|
|
|
u.setId(map.getString("uid"));
|
|
u.setId(map.getString("uid"));
|
|
|
u.setUserNiceName(map.getString("uname"));
|
|
u.setUserNiceName(map.getString("uname"));
|
|
|
u.setAvatar(map.getString("uhead"));
|
|
u.setAvatar(map.getString("uhead"));
|
|
|
u.setSex(map.getIntValue("sex"));
|
|
u.setSex(map.getIntValue("sex"));
|
|
|
- //u.setLevel(map.getIntValue("level"));
|
|
|
|
|
- //u.setLevelAnchor(map.getIntValue("level_anchor"));
|
|
|
|
|
|
|
+ // u.setLevel(map.getIntValue("level"));
|
|
|
|
|
+ // u.setLevelAnchor(map.getIntValue("level_anchor"));
|
|
|
mListener.onLinkMicAnchorApply(u, map.getString("stream"));
|
|
mListener.onLinkMicAnchorApply(u, map.getString("stream"));
|
|
|
break;
|
|
break;
|
|
|
- case 3://对方主播拒绝连麦的回调
|
|
|
|
|
|
|
+ case 3:// 对方主播拒绝连麦的回调
|
|
|
mListener.onLinkMicAnchorRefuse();
|
|
mListener.onLinkMicAnchorRefuse();
|
|
|
break;
|
|
break;
|
|
|
- case 4://所有人收到对方主播的播流地址的回调
|
|
|
|
|
- mListener.onLinkMicAnchorPlayUrl(map.getString("pkuid"), map.getString("pkpull"));
|
|
|
|
|
|
|
+ case 4: // 多人连麦通知
|
|
|
|
|
+ //roomMembers中存的是map,进行解析
|
|
|
|
|
+ Map<String, String>[] roomMembers = JSON.parseObject(map.getString("room_members"),
|
|
|
|
|
+ Map[].class);
|
|
|
|
|
+
|
|
|
|
|
+// String[] roomMembers = map.getObject("room_members", String[].class);
|
|
|
|
|
+ if (roomMembers == null || roomMembers.length == 0) {
|
|
|
|
|
+ mListener.onLinkMicAnchorPlayUrl(map.getString("pkuid"), map.getString("pkpull"));
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ L.e(TAG, "--多人连麦通知-->" + roomMembers.length);
|
|
|
|
|
+ for (Map<String, String> roomMember : roomMembers) {
|
|
|
|
|
+ String uid = roomMember.get("uid");
|
|
|
|
|
+ String pull = roomMember.get("pull");
|
|
|
|
|
+ // uid 和当前用户uid进行比较,如果不相等,则是其他主播的播流地址
|
|
|
|
|
+ if (!uid.equals(CommonAppConfig.getInstance().getUid())) {
|
|
|
|
|
+ mListener.onLinkMicAnchorPlayUrl(uid, pull);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
break;
|
|
break;
|
|
|
- case 5://断开连麦的回调
|
|
|
|
|
- mListener.onLinkMicAnchorClose();
|
|
|
|
|
|
|
+ case 5:// 断开连麦的回调
|
|
|
|
|
+// mListener.onLinkMicAnchorClose();
|
|
|
|
|
+ String uid = map.getString("uid");
|
|
|
|
|
+ mListener.onMultiLinkMicAnchorLeave(uid);
|
|
|
break;
|
|
break;
|
|
|
- case 7://对方主播正在忙的回调
|
|
|
|
|
|
|
+ case 7:// 对方主播正在忙的回调
|
|
|
mListener.onLinkMicAnchorBusy();
|
|
mListener.onLinkMicAnchorBusy();
|
|
|
break;
|
|
break;
|
|
|
- case 8://对方主播无响应的回调
|
|
|
|
|
|
|
+ case 8:// 对方主播无响应的回调
|
|
|
mListener.onLinkMicAnchorNotResponse();
|
|
mListener.onLinkMicAnchorNotResponse();
|
|
|
break;
|
|
break;
|
|
|
- case 9://对方主播正在游戏
|
|
|
|
|
|
|
+ case 9:// 对方主播正在游戏
|
|
|
mListener.onlinkMicPlayGaming();
|
|
mListener.onlinkMicPlayGaming();
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
@@ -563,32 +584,32 @@ public class SocketClient {
|
|
|
private void processAnchorLinkMicPk(JSONObject map) {
|
|
private void processAnchorLinkMicPk(JSONObject map) {
|
|
|
int action = map.getIntValue("action");
|
|
int action = map.getIntValue("action");
|
|
|
switch (action) {
|
|
switch (action) {
|
|
|
- case 1://收到对方主播PK回调
|
|
|
|
|
|
|
+ case 1:// 收到对方主播PK回调
|
|
|
UserBean u = new UserBean();
|
|
UserBean u = new UserBean();
|
|
|
u.setId(map.getString("uid"));
|
|
u.setId(map.getString("uid"));
|
|
|
u.setUserNiceName(map.getString("uname"));
|
|
u.setUserNiceName(map.getString("uname"));
|
|
|
u.setAvatar(map.getString("uhead"));
|
|
u.setAvatar(map.getString("uhead"));
|
|
|
u.setSex(map.getIntValue("sex"));
|
|
u.setSex(map.getIntValue("sex"));
|
|
|
- //u.setLevel(map.getIntValue("level"));
|
|
|
|
|
- //u.setLevelAnchor(map.getIntValue("level_anchor"));
|
|
|
|
|
|
|
+ // u.setLevel(map.getIntValue("level"));
|
|
|
|
|
+ // u.setLevelAnchor(map.getIntValue("level_anchor"));
|
|
|
mListener.onLinkMicPkApply(u, map.getString("stream"));
|
|
mListener.onLinkMicPkApply(u, map.getString("stream"));
|
|
|
break;
|
|
break;
|
|
|
- case 3://对方主播拒绝PK的回调
|
|
|
|
|
|
|
+ case 3:// 对方主播拒绝PK的回调
|
|
|
mListener.onLinkMicPkRefuse();
|
|
mListener.onLinkMicPkRefuse();
|
|
|
break;
|
|
break;
|
|
|
- case 4://所有人收到PK开始址的回调
|
|
|
|
|
|
|
+ case 4:// 所有人收到PK开始址的回调
|
|
|
mListener.onLinkMicPkStart(map.getString("pkuid"));
|
|
mListener.onLinkMicPkStart(map.getString("pkuid"));
|
|
|
break;
|
|
break;
|
|
|
- case 5://PK时候断开连麦的回调
|
|
|
|
|
|
|
+ case 5:// PK时候断开连麦的回调
|
|
|
mListener.onLinkMicPkClose();
|
|
mListener.onLinkMicPkClose();
|
|
|
break;
|
|
break;
|
|
|
- case 7://对方主播正在忙的回调
|
|
|
|
|
|
|
+ case 7:// 对方主播正在忙的回调
|
|
|
mListener.onLinkMicPkBusy();
|
|
mListener.onLinkMicPkBusy();
|
|
|
break;
|
|
break;
|
|
|
- case 8://对方主播无响应的回调
|
|
|
|
|
|
|
+ case 8:// 对方主播无响应的回调
|
|
|
mListener.onLinkMicPkNotResponse();
|
|
mListener.onLinkMicPkNotResponse();
|
|
|
break;
|
|
break;
|
|
|
- case 9://pk结束的回调
|
|
|
|
|
|
|
+ case 9:// pk结束的回调
|
|
|
mListener.onLinkMicPkEnd(map.getString("win_uid"));
|
|
mListener.onLinkMicPkEnd(map.getString("win_uid"));
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|