From: TrillGates Date: Mon, 12 Apr 2021 08:59:52 +0000 (+0800) Subject: completed make friends by location info. X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=aa50db860f51613ce4e50a9ecd0162f1f10fc7d4;p=protocol_srv.git completed make friends by location info. --- diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index 85cb973a..3e27034c 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -1771,11 +1771,15 @@ public class CoreService extends Service { @Override public void makeFriends() { - + //交朋友的话是根据配置去走蓝牙交友 + //还是位置交友 + //目前先实现位置交友的功能 + protocol_fzd.makeFriendsByPosition(runtime); } @Override public void unbindFriends(String remoteFriendId) { + ICLogger.d("unbindFriends == > " + remoteFriendId); StringMessage ppr = protocol_fzd.PPR(remoteFriendId); //解除朋友 Deliver.sendLocationMSG(ppr); 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 0cbfeb85..2c9be5b5 100644 --- a/app/src/main/java/com/ic/protocols/protocol_fzd.java +++ b/app/src/main/java/com/ic/protocols/protocol_fzd.java @@ -41,6 +41,7 @@ import com.enqualcomm.support.provider.FZDFollowProvider; import com.enqualcomm.support.provider.FZDMembersProvider; import com.enqualcomm.support.provider.FZDMessageProvider; import com.enqualcomm.support.provider.FZDSettingsProvider; +import com.enqualcomm.support.service.Deliver; import com.enqualcomm.support.service.HeartRateManager; import com.enqualcomm.support.utils.AlarmHelper; import com.enqualcomm.support.utils.CameraUtil; @@ -412,6 +413,7 @@ public class protocol_fzd { TKOne,//一对一微聊 TKIMG,//聊天图片 PHL,//设置电话本+白名单(最多 50 条) + PP,//交友 wdstart,//远程测温 bldstart,//远程测血压 hrtstart,//远程测量心率 @@ -448,6 +450,7 @@ public class protocol_fzd { cmdMap.put(CMD_TYPE.RECORD, "RECORD"); cmdMap.put(CMD_TYPE.INFO, "INFO"); cmdMap.put(CMD_TYPE.WIFISET, "WIFISET"); + cmdMap.put(CMD_TYPE.PP, "PP"); cmdMap.put(CMD_TYPE.BLE, "BLE"); cmdMap.put(CMD_TYPE.PING, "PING"); cmdMap.put(CMD_TYPE.rcapture, "rcapture"); @@ -1373,6 +1376,21 @@ public class protocol_fzd { return genFZDCMD(cmdMap.get(CMD_TYPE.PHL)); } + public static StringMessage PP(Runtime runtime) { + //地理位置数据 + String locationData = getLocationData(runtime); + return genFZDCMD(cmdMap.get(CMD_TYPE.PP), locationData); + } + + + /** + * 根据位置交朋友 + */ + public static void makeFriendsByPosition(Runtime runtime) { + StringMessage pp = PP(runtime); + Deliver.sendLocationMSG(pp); + } + /*** * [IC*334588000000156*len*PHL,号码,名字,号码,名字,号码,名字,号码,名字,号码,名字] len:发送长度 16 进制表示 占用 2 个字节 * 号码:ascii 字符 名字:Unicode 编码 @@ -1703,11 +1721,75 @@ public class protocol_fzd { handleFriendUnbindResult(mRuntime, data); ICLogger.d("解除好友的指令..." + data); break; + case PP: + //交友结果处理 + ICLogger.d("收到交友的结果指令."); + handlePP(mRuntime, data); + break; } return ret; } + /** + * 平台回复: 情况一:交友成功 [XT*8800000015*LEN*PP*ID,昵称,手机号] + * 实例: [XT*8800000015*000A*8800000015, 5F204E0,555] + * 5F204E09--->张三,是使用 unicode 编码 如果手机号为空, + * 则为[XT*8800000015*000A*e476005866e8a2a6407502b3, 5F204E09,] 如果手机号昵称都为空, + * 则为[XT*8800000015*000A*e476005866e8a2a6407502b3,,] + * 情况二:交友失败 [XT*8800000015*LEN*X] X 的值为 1 表示没收到相应 PP 指令,为 2 表示超过好友上限。 + * 如果服务端一直没返回 PP 指令,默认也是交友失败,终端可设三十秒的超时时间。 + * 实例: [XT*8800000015*0001*PP,1] [XT*8800000015*0002*PP,2] + * 注:碰碰交友后,双向可互相打电话,另外可相互微聊对讲,微聊接口为 TK2(具体参见以 下接口)。 + * 如果交友成功,但终端未收到 PP 确认指令,则终端可调用 PPQ 指令(文档最后 面),同步所有好友数据。 + * + * @param mRuntime + */ + private void handlePP(Runtime mRuntime, String data) { + ICLogger.d("交友结果--> " + data); + //第一种情况[XT*8800000015*000A*PP, 5F204E0,555] + //另外一种情况 情况[XT*8800000015*0001*PP,1]/[XT*8800000015*0002*PP,2] + // + boolean contains = data.contains(CMDSPLIT); + int result = 0; + if (contains) { + result = 0; + //成功的结果 + String[] split = data.split(CMDSPLIT); + String friendName = Util.decodeUnicode2Utf8(split[0]); + String friendId = split[1]; + ICLogger.d("friend name is == > " + friendName); + ICLogger.d("friend id is == > " + friendId); + + } else { + //失败,具体拿出值 + try { + result = Integer.parseInt(data); + } catch (Exception e) { + e.printStackTrace(); + } + } + //处理结果 + RemoteCallbackList fzdCallback = mRuntime.getFZDCallback(); + try { + if (fzdCallback == null) { + ICLogger.d("fzdCallback -- > null"); + return; + } + int i = fzdCallback.beginBroadcast(); + while (i > 0) { + //TODO: + IFZDCallback broadcastItem = fzdCallback.getBroadcastItem(i); + broadcastItem.onFriendsMakeResult(result); + i--; + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + fzdCallback.finishBroadcast(); + } + } + private void handleFriendUnbindResult(Runtime mRuntime, String data) { //解除有结果了,然去拉取一下新的用户列表吧 RemoteCallbackList fzdCallback = mRuntime.getFZDCallback();