CALLING,//有人向你发起音视频聊天(服务器下发)
RCALLING,//拒绝对方的发起的通话请求
TALK,//向对方发起音视频聊天
+ AGTALK,//向对方发起音视频聊天 声网
UNKNOWN_CMD,
MESSAGE/*文字消息*/,
profile,//情景模式
cmdMap.put(CMD_TYPE.RTALK, "RTALK");
cmdMap.put(CMD_TYPE.RCALLING, "RCALLING");
cmdMap.put(CMD_TYPE.TALK, "TALK");
+ cmdMap.put(CMD_TYPE.AGTALK, "AGTALK");
cmdMap.put(CMD_TYPE.CALLING, "CALLING");
}
ICLogger.i("handleCmd " + type.name() + " strLen=" + data.length());
if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " + cmd + " " + data);
switch (type) {
-// case BRREG:
-// ICLogger.i("收到本设备的佰锐Id == > " + data);
-// //保存一份到sp里
-// //通知一callback
-// handleBRREG(mRuntime, data);
-// mConnection.DeliverCMDMessageToSystem(cmdMap.get(CMD_TYPE.BRREG), cmd);
-// break;
-// case MEMBERS:
-// ICLogger.i("收到群成员数据 ==> " + data);
-// //处理一下数据
-// handleMEMBERS(mRuntime, data);
-// mConnection.DeliverCMDMessageToSystem(cmdMap.get(CMD_TYPE.MEMBERS), cmd);
-// break;
+ case BRREG:
+ ICLogger.i("收到本设备的声网或佰锐Id == > " + data);
+ //保存一份到sp里
+ //通知一callback
+ handleBRREG(mRuntime, data);
+ mConnection.DeliverCMDMessageToSystem(cmdMap.get(CMD_TYPE.BRREG), cmd);
+ break;
+ case MEMBERS:
+ ICLogger.i("收到群成员数据 ==> " + data);
+ //处理一下数据
+ handleMEMBERS(mRuntime, data);
+ mConnection.DeliverCMDMessageToSystem(cmdMap.get(CMD_TYPE.MEMBERS), cmd);
+ break;
case RTALK:
//拒绝通话请求,当我们通过TALK向对方发起通话请求的时候,如果对方拒绝,则会收到此指令
//此指令由平台发送。
case TALK:
//0 表示可正常通话,-1 表示余额不足,不能通话,1 表示对方不在线或未登陆成功
ICLogger.i("收到向对方请求音视频通话的结果 ==> " + data);
- handlerTalkRequestResult(mConnection, mRuntime, data);
+ handlerAGTalkRequestResult(mConnection, mRuntime, data);
mConnection.DeliverCMDMessageToSystem(cmdMap.get(CMD_TYPE.TALK), cmd);
break;
+ case AGTALK:
+ //0 表示可正常通话,-1 表示余额不足,不能通话,1 表示对方不在线或未登陆成功
+ ICLogger.i("声网 收到向对方请求音视频通话的结果 ==> " + data);
+ handlerAGTalkRequestResult(mConnection, mRuntime, data);
+ mConnection.DeliverCMDMessageToSystem(cmdMap.get(CMD_TYPE.AGTALK), cmd);
+ break;
case CALLING:
//有音视频聊天请求,此指令由平台发送,也就是被动通知
ICLogger.i("收到平台发送的音视频聊天请求 == > " + data);
while (i > 0) {
i--;
if (split.length == 3) {
- fzdCallback.getBroadcastItem(i).onRemoteReject(split[0], Integer.parseInt(split[1]));
+ fzdCallback.getBroadcastItem(i).onRemoteReject(split[0], Integer.parseInt(split[2]));
}
}
} catch (Exception e) {
return genFZDCMD(cmdMap.get(CMD_TYPE.TALK), data);
}
+ /**
+ * 向对方发起音视频通话
+ *
+ * @param type 通话类型 1 表示语音通话,2 表示视频通话
+ * @param remoteAccount 对方账号
+ * @return
+ */
+ public static StringMessage AGTALK(int type, int remoteAccount) {
+ //准备数据
+ String data = type + CMD_SPLIT + remoteAccount + CMD_SPLIT;
+ ICLogger.d("request AGtalk == > " + data);
+ return genFZDCMD(cmdMap.get(CMD_TYPE.AGTALK), data);
+ }
+
public static StringMessage TKQ() {
return genFZDCMD(cmdMap.get(CMD_TYPE.TKQ));
}
}
}
+ /**
+ * 声网 当向对方发起通话请求的时候,结果会从此方法回来。
+ * <p>
+ * 0 表示可正常通话,-1 表示余额不足,不能通话,1 表示对方不在线或未登陆成功
+ * @param mConnection
+ * @param mRuntime
+ * @param data
+ */
+ private void handlerAGTalkRequestResult(Connection mConnection, Runtime mRuntime, String data) {
+ ICLogger.d("handlerAGTalkRequestResult == > " + data);
+ //可以正常通话,可以不处理
+ //如果不能正常通话,则要提示用户了
+ RemoteCallbackList<IFZDCallback> fzdCallback = mRuntime.getFZDCallback();
+ int i = fzdCallback.beginBroadcast();
+ try {
+ while (i > 0) {
+ i--;
+ if (fzdCallback != null) {
+ String[] str = data.split(",");
+ int result = Integer.parseInt(str[0]);
+ String token = str[1];
+ String roomName = str[2];
+ ICLogger.i("0 表示可正常通话,-1 表示余额不足,不能通话,1 表示对方不在线或未登陆成功 === > " + data);
+ ICLogger.i("result = "+result+", token = "+token+", roomName = "+roomName);
+ fzdCallback.getBroadcastItem(i).onAGCallRequestResult(result,token,roomName);
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ fzdCallback.finishBroadcast();
+ }
+ }
+
/**
* 处理联系人列表
* 文档说明: