From: TrillGates Date: Tue, 23 Feb 2021 12:46:32 +0000 (+0800) Subject: adjust service. X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=36c19183c5dcad137a1a3830dcc874b22238354c;p=protocol_srv.git adjust service. --- diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index 191dcf21..43d4afd2 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -1639,6 +1639,11 @@ public class CoreService extends Service { //判断来源,如果是ICVideoCall的则返回对应的 String action = intent.getAction(); if ("com.ic.action.VIDEO_CALL".equals(action)) { + try { + mFZDService.getBRId(); + } catch (Exception e) { + e.printStackTrace(); + } return mFZDService; } return null; @@ -1699,7 +1704,6 @@ public class CoreService extends Service { public void test() { //触发测试 StringMessage MEMBERS = protocol_fzd.MEMBERS(); - //获取佰锐ID Deliver.sendLocationMSG(MEMBERS); } diff --git a/app/src/main/java/com/enqualcomm/support/bean/Runtime.java b/app/src/main/java/com/enqualcomm/support/bean/Runtime.java index 1d419f14..b7b0f6dd 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/Runtime.java +++ b/app/src/main/java/com/enqualcomm/support/bean/Runtime.java @@ -2,6 +2,7 @@ package com.enqualcomm.support.bean; import android.content.Context; +import android.os.RemoteCallbackList; import com.enqualcomm.support.Config; import com.enqualcomm.support.IFZDCallback; @@ -178,12 +179,13 @@ public class Runtime { public int Anti_off_flag = 0; public int Cut_off_flag = 0; - private IFZDCallback mFZDCallback = null; - public IFZDCallback getFZDCallback() { - return mFZDCallback; + public RemoteCallbackList getFZDCallback() { + return fzdCallbackList; } + private final RemoteCallbackList fzdCallbackList = new RemoteCallbackList<>(); + /** * 这个通知远程UI更新的callback,主要是负责音视频通讯相关的功能 * 防走丢的协议。 @@ -191,7 +193,7 @@ public class Runtime { * @param callback */ public void setFZDRemoteCallback(IFZDCallback callback) { - this.mFZDCallback = callback; + fzdCallbackList.register(callback); } /** @@ -201,8 +203,7 @@ public class Runtime { * @param callback */ public void removeFZDRemoteCallback(IFZDCallback callback) { - //如果以后有多个界面需要,可以通过集合的方式管理这些回调 - this.mFZDCallback = null; + fzdCallbackList.unregister(callback); } public enum AlarmType { diff --git a/app/src/main/java/com/enqualcomm/support/service/Deliver.java b/app/src/main/java/com/enqualcomm/support/service/Deliver.java index 3f650743..bbbb2b03 100644 --- a/app/src/main/java/com/enqualcomm/support/service/Deliver.java +++ b/app/src/main/java/com/enqualcomm/support/service/Deliver.java @@ -181,8 +181,7 @@ public class Deliver extends AbstractConnectionService { .append("\ntopic ").append(msg.cmd()) .append("\ncmd ").append(msg.isFromCache()).append("\n"); } -// ICLogger.i(sb.toString()); - + ICLogger.i(sb.toString()); } public static boolean getAndSendMsgFromQueue() { @@ -196,12 +195,9 @@ public class Deliver extends AbstractConnectionService { try { String str; //如果没有数据从缓存中尝试读取 - //检查刚刚发送出去的包是否需要检查server response - StringMessage msgWait = mRuntime.getDbHelper().queryWaitCMDRecord(); dumpMessage(msgWait); - if (msgWait != null) { //如果需要,且没有服务器反馈 //刚刚发送的包不为空,且检测次数小于3,则保留数据,进行下一次重试。 diff --git a/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java b/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java index e6a2b181..22fb2bd9 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java +++ b/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java @@ -161,7 +161,7 @@ public class NettyConnection implements Connection { if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " skiped " + cmd); return false; } else { - log("send " + cmd); + log("send ===> " + cmd); if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " sent " + cmd); //向RxSocket写数据 //示例数据:IWAP00867155030001063# diff --git a/app/src/main/java/com/ic/protocols/protocol_fzd.java b/app/src/main/java/com/ic/protocols/protocol_fzd.java index 996360f2..eecf4633 100644 --- a/app/src/main/java/com/ic/protocols/protocol_fzd.java +++ b/app/src/main/java/com/ic/protocols/protocol_fzd.java @@ -5,6 +5,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.os.RemoteCallbackList; import android.text.TextUtils; import com.enqualcomm.support.Config; @@ -43,7 +44,7 @@ public class protocol_fzd { private static final String CMDHEADERSPLIT = "*"; private static final String CMDSPLIT = ","; private static final boolean doEncryption = Util.getSystemProperties("persist.sys.encrypt_fzd", "true").equals("true"); - public static final String defaultServerIP = "api.xcloudtech.com"; + public static final String defaultServerIP = "fzd.xcloudtech.com"; public static final int defaultServerPort = 9000; private final SharedPreferences sharedPreferences; @@ -107,11 +108,6 @@ public class protocol_fzd { static { cmdMap = new HashMap<>(); cmdMap.put(CMD_TYPE.LK, "LK"); - cmdMap.put(CMD_TYPE.MEMBERS, "MEMBERS"); - cmdMap.put(CMD_TYPE.RTALK, "RTALK"); - cmdMap.put(CMD_TYPE.RCALLING, "RCALLING"); - cmdMap.put(CMD_TYPE.TALK, "TALK"); - cmdMap.put(CMD_TYPE.CALLING, "CALLING"); cmdMap.put(CMD_TYPE.PING, "PING"); cmdMap.put(CMD_TYPE.KA, "KA"); cmdMap.put(CMD_TYPE.UD, "UD"); @@ -154,7 +150,11 @@ public class protocol_fzd { cmdMap.put(CMD_TYPE.heart, "heart"); cmdMap.put(CMD_TYPE.PRACTICE, "PRACTICE"); cmdMap.put(CMD_TYPE.BRREG, "BRREG"); - + cmdMap.put(CMD_TYPE.MEMBERS, "MEMBERS"); + cmdMap.put(CMD_TYPE.RTALK, "RTALK"); + cmdMap.put(CMD_TYPE.RCALLING, "RCALLING"); + cmdMap.put(CMD_TYPE.TALK, "TALK"); + cmdMap.put(CMD_TYPE.CALLING, "CALLING"); } private Connection mConnection = null; @@ -762,11 +762,13 @@ public class protocol_fzd { //保存一份到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向对方发起通话请求的时候,如果对方拒绝,则会收到此指令 @@ -777,7 +779,8 @@ public class protocol_fzd { case TALK: //0 表示可正常通话,-1 表示余额不足,不能通话,1 表示对方不在线或未登陆成功 ICLogger.i("收到向对方请求音视频通话的结果 ==> " + data); - handlerTalkRequestResult(mRuntime, data); + handlerTalkRequestResult(mConnection, mRuntime, data); + mConnection.DeliverCMDMessageToSystem(cmdMap.get(CMD_TYPE.TALK), cmd); break; case CALLING: //有音视频聊天请求,此指令由平台发送,也就是被动通知 @@ -786,6 +789,7 @@ public class protocol_fzd { break; case RCALLING: ICLogger.i("服务器收到了我拒绝音视频通话的消息"); + mConnection.DeliverCMDMessageToSystem(cmdMap.get(CMD_TYPE.RCALLING), cmd); break; case LK: //登录包 ICLogger.i("服务器收到登录包LK"); @@ -898,17 +902,23 @@ public class protocol_fzd { * @param data */ private void handleBRREG(Runtime runtime, String data) { - IFZDCallback fzdCallback = runtime.getFZDCallback(); + RemoteCallbackList fzdCallback = runtime.getFZDCallback(); if (fzdCallback == null) { return; } try { - if (TextUtils.isEmpty(data)) { - ICLogger.i("佰锐ID为空..."); - fzdCallback.onBRIdEmpty(); - } else { - fzdCallback.onBRIdLoaded(data); + int i = fzdCallback.beginBroadcast(); + while (i > 0) { + i--; + IFZDCallback broadcastItem = fzdCallback.getBroadcastItem(i); + if (TextUtils.isEmpty(data)) { + ICLogger.i("佰锐ID为空..."); + broadcastItem.onBRIdEmpty(); + } else { + broadcastItem.onBRIdLoaded(data); + } } + fzdCallback.finishBroadcast(); //保存到sp里面 sharedPreferences.edit().putString(BRREG_ID, data).apply(); } catch (Exception e) { @@ -986,13 +996,18 @@ public class protocol_fzd { */ private void handleRTalk(Connection mConnection, Runtime mRuntime, String data) { try { - IFZDCallback fzdCallback = mRuntime.getFZDCallback(); + RemoteCallbackList fzdCallback = mRuntime.getFZDCallback(); if (fzdCallback != null && !TextUtils.isEmpty(data)) { + int i = fzdCallback.beginBroadcast(); ICLogger.d("data == > " + data); String[] split = data.split(CMDSPLIT); - if (split.length == 3) { - fzdCallback.onRemoteReject(split[0], Integer.parseInt(split[1])); + while (i > 0) { + i--; + if (split.length == 3) { + fzdCallback.getBroadcastItem(i).onRemoteReject(split[0], Integer.parseInt(split[1])); + } } + fzdCallback.finishBroadcast(); } } catch (Exception e) { e.printStackTrace(); @@ -1011,9 +1026,9 @@ public class protocol_fzd { */ public static StringMessage TALK(int type, String remoteAccount) { //准备数据 - String data = type + CMDSPLIT + remoteAccount; + String data = type + CMDSPLIT + remoteAccount + CMDSPLIT; ICLogger.d("request talk == > " + data); - return genFZDCMD(cmdMap.get(CMD_TYPE.MEMBERS), data); + return genFZDCMD(cmdMap.get(CMD_TYPE.TALK), data); } @@ -1043,21 +1058,26 @@ public class protocol_fzd { *

* 0 表示可正常通话,-1 表示余额不足,不能通话,1 表示对方不在线或未登陆成功 * + * @param mConnection * @param mRuntime * @param data */ - private void handlerTalkRequestResult(Runtime mRuntime, String data) { + private void handlerTalkRequestResult(Connection mConnection, Runtime mRuntime, String data) { ICLogger.d("handlerTalkRequestResult == > " + data); //可以正常通话,可以不处理 //如果不能正常通话,则要提示用户了 try { - - IFZDCallback fzdCallback = mRuntime.getFZDCallback(); - if (fzdCallback != null) { - int result = Integer.parseInt(data); - ICLogger.d("0 表示可正常通话,-1 表示余额不足,不能通话,1 表示对方不在线或未登陆成功 === > " + data); - fzdCallback.onCallRequestResult(result); + RemoteCallbackList fzdCallback = mRuntime.getFZDCallback(); + int i = fzdCallback.beginBroadcast(); + while (i > 0) { + i--; + if (fzdCallback != null) { + int result = Integer.parseInt(data); + ICLogger.d("0 表示可正常通话,-1 表示余额不足,不能通话,1 表示对方不在线或未登陆成功 === > " + data); + fzdCallback.getBroadcastItem(i).onCallRequestResult(result); + } } + fzdCallback.finishBroadcast(); } catch (Exception e) { e.printStackTrace(); } @@ -1087,7 +1107,8 @@ public class protocol_fzd { ICLogger.d("members data == > " + data); String s = Util.decodeUnicode2Utf8(data); ICLogger.d("members result == > " + s); - //TODO: + //对数据进行切割 + String[] split = data.split(CMDSPLIT); } }