From: TrillGates Date: Thu, 29 Jul 2021 07:14:13 +0000 (+0800) Subject: fixed gator alarm parse. X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=65e46b530d00fd5f205db5c4c828fe5eaeca9ebe;p=icsupport.git fixed gator alarm parse. --- diff --git a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java index 7ce76e3a..467a7cab 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java +++ b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java @@ -719,6 +719,7 @@ public class DBHelper { contentValues.put("RING", alarm.ring); contentValues.put("STATUS", alarm.status); contentValues.put("NAME", alarm.name); + ICLogger.d("alarm is == > " + alarm); } this.cr.bulkInsert(ICContentProvider.ALARM_URI, arrayOfContentValues); } diff --git a/app/src/main/java/com/ic/protocols/protocol_gator.java b/app/src/main/java/com/ic/protocols/protocol_gator.java index 20f0c0a0..4599ce40 100644 --- a/app/src/main/java/com/ic/protocols/protocol_gator.java +++ b/app/src/main/java/com/ic/protocols/protocol_gator.java @@ -2,6 +2,7 @@ package com.ic.protocols; import android.content.ContentResolver; import android.content.ContentValues; +import android.content.Intent; import android.net.Uri; import android.os.Environment; import android.os.Handler; @@ -93,6 +94,7 @@ public class protocol_gator { AP31,//BP31回复 AP32,//BP32回复 AP34,//BP34回复 + AP50,//app端发起视频通话到手表 /*终端发起*/ BP00,//开机对时 BP01,//AP01返回 @@ -186,6 +188,7 @@ public class protocol_gator { cmdMap.put(CMD_TYPE.BP33, "BP33"); cmdMap.put(CMD_TYPE.BP34, "BP34"); cmdMap.put(CMD_TYPE.BP35, "BP35"); + cmdMap.put(CMD_TYPE.AP50, "AP50"); } @@ -526,26 +529,26 @@ public class protocol_gator { //设置亲情号码 public void handleAP06(Runtime ds, Connection connection, String cmd) { log("AP06 设置亲情号码 " + cmd); -/* -消息内容 Type取值:0-4 -0表示:其他人 -1表示:爸爸 -2表示:妈妈 -3表示:奶奶 -4表示:爷爷 -(013612345678AP06#number1#name1#type1#number2#name2#type2#number3#name3#type3#number4#...)最多不超过13组电话号码 - -示例: -(0094357593060153353AP06#13141516171#father#1#13141516172#mother#2#13141516173#grandma#3#13141516174#grandpa#4#13141516175#uncle#0,0000000000000005) -设置控制号码为: -father:13141516171, -mother:13141516172, -grandma:13141516173, -grandpa:13141516174, -uncle:13141516175 -响应: 失败:(002E0106357593060153353BP0600000000000000050) -成功:(002E0106357593060153353BP0600000000000000051) - */ + /* + 消息内容 Type取值:0-4 + 0表示:其他人 + 1表示:爸爸 + 2表示:妈妈 + 3表示:奶奶 + 4表示:爷爷 + (013612345678AP06#number1#name1#type1#number2#name2#type2#number3#name3#type3#number4#...)最多不超过13组电话号码 + + 示例: + (0094357593060153353AP06#13141516171#father#1#13141516172#mother#2#13141516173#grandma#3#13141516174#grandpa#4#13141516175#uncle#0,0000000000000005) + 设置控制号码为: + father:13141516171, + mother:13141516172, + grandma:13141516173, + grandpa:13141516174, + uncle:13141516175 + 响应: 失败:(002E0106357593060153353BP0600000000000000050) + 成功:(002E0106357593060153353BP0600000000000000051) + */ StringBuffer sb = new StringBuffer(); String cmdlist[] = cmd.split(","); if (cmdlist.length == 2) { @@ -629,33 +632,57 @@ uncle:13141516175 //设置闹钟 public void handleAP09(Runtime runtime, Connection connection, String cmd) { -// AP09,A,B,C,YYMMDD,HHMMSS -//A:表示删除、添加(修改)闹钟功能,分别用0、1表示(类型%d) -//B:闹铃索引(0-4) -//C:表示闹钟类型(0-0x7F),如下: -//0:一次,不重复;0x01:星期日;0x02:星期一;0x04:星期二;0x08:星期三;0x10:星期四;0x20:星期五;0x40星期六 -//如果每天闹钟:0x01|0x02|0x04|0x08|0x10|0x20|0x40=0x7F -// (0040357593060153353AP09,1,0,127,150728,152900,0000000000000008) -//增加(修改)一条索引为0的闹铃,每天15:29:00响铃 -//(002E357593060153353AP09,0,0,0000000000000008) -//删除一条索引为0的闹铃 + // AP09,A,B,C,YYMMDD,HHMMSS + //A:表示删除、添加(修改)闹钟功能,分别用0、1表示(类型%d) + //B:闹铃索引(0-4) + //C:表示闹钟类型(0-0x7F),如下: + //0:一次,不重复;0x01:星期日;0x02:星期一;0x04:星期二;0x08:星期三;0x10:星期四;0x20:星期五;0x40星期六 + //如果每天闹钟:0x01|0x02|0x04|0x08|0x10|0x20|0x40=0x7F + // (0040357593060153353AP09,1,0,127,150728,152900,0000000000000008) + //增加(修改)一条索引为0的闹铃,每天15:29:00响铃 + //(002E357593060153353AP09,0,0,0000000000000008) + //删除一条索引为0的闹铃 String cmdlist[] = cmd.split(CMDSPLIT); if (cmdlist.length == 7) { String cmdindex = cmdlist[6]; try { String do_cmd = ""; int alarmindex = 0 /*alarm索引*/; - int alarmswitch = 0 /*1为开,0 为关*/; + int alarmswitch = 1 /*1为开,0 为关*/; int alarmcount = 0 /*表示闹钟个数*/; String alarmtime = "";//0900表示早上09:00 - int repeat = 0;// //0:一次,不重复;0x01:星期日;0x02:星期一;0x04:星期二;0x08:星期三;0x10:星期四;0x20:星期五;0x40星期六 + StringBuilder repeat = new StringBuilder();// //0:一次,不重复;0x01:星期日;0x02:星期一;0x04:星期二;0x08:星期三;0x10:星期四;0x20:星期五;0x40星期六 // 0x01|0x02|0x04|0x08|0x10|0x20|0x40=0x7F do_cmd = cmdlist[1];//0删除、1添加(修改)闹钟功能 - alarmtime = cmdlist[4] + cmdlist[5]; //YYMMDDHHMMSS + alarmtime = cmdlist[5]; //HHMMSS alarmindex = Integer.parseInt(cmdlist[2]); - + String repeatStr = cmdlist[3]; + //转成int,再转成2进进制,1表示开启,0表示不开启,111111表示7天都开启,0000001表示周一开启 + int repeatInt = Integer.parseInt(repeatStr); + StringBuilder repeatCountStr = new StringBuilder(Integer.toBinaryString(repeatInt)); + int repeatLen = 7 - repeatCountStr.length(); + for (int i = 0; i < repeatLen; i++) { + repeatCountStr.insert(0, "0"); + } + String repeatStrRev = repeatCountStr.reverse().toString(); + char[] chars = repeatStrRev.toCharArray(); + for (int i = 0; i < chars.length; i++) { + // ICLogger.d("item ==> " + chars[i]); + //第一个如果是1,直接插入7 + if (i == 0 && '1' == chars[i]) { + repeat.insert(0, "7"); + } else if ('1' == chars[i]) { + repeat.append(i); + } + } + if (repeat.length() == 0) { + repeat.append("0"); + } + ICLogger.d("repeatCount == > " + repeat.toString()); ArrayList alarmList = new ArrayList<>(); - alarmList.add(new Alarm("ST" + alarmtime.substring(0, 2) + "." + alarmtime.substring(2), "W" + repeat, "CON", alarmswitch == 1 ? "ON" : "OFF", "闹铃")); + if ("1".equals(do_cmd)) { + alarmList.add(new Alarm("ST" + alarmtime.substring(0, 2) + "." + alarmtime.substring(2), "W" + repeat.toString(), "CON", alarmswitch == 1 ? "ON" : "OFF", "闹铃")); + } //do clean and set alarm things runtime.getDbHelper().saveAlarm(alarmList); connection.send(BPXX_REPLY(runtime, CMD_TYPE.BP09, cmdindex, true)); @@ -674,6 +701,7 @@ uncle:13141516175 } else { ICLogger.e("AP09 format error!"); } + } //静音设置 @@ -1475,6 +1503,10 @@ SOS报警上行WIFI、LBS混合定位数据,步数为255步,电量等级5,数 case AP34://服务器回复语音接收 handleAP34(mRuntime, mConnection, cmd); break; + case AP50://收到服务器视频请求 + ICLogger.d("app端发起视频通话到手表..."); + handleAP50(mRuntime, mConnection, cmd); + break; // case AP14:// wifi定位包 // handleBP02(cmd); // ICLogger.i("服务器收到定位AP02"); @@ -1695,9 +1727,38 @@ SOS报警上行WIFI、LBS混合定位数据,步数为255步,电量等级5,数 } + /** + * 处理视频通话 + * 00DA357593061269893AP50, + * 17688768961,亲情号 + * tanmingxia0755@gmail.com;357593061269893,频道号 + * 0065ad4f9aed8cf411aaef2e9a5fe4e2b7fIABuMKChZsPEdWZ+5Au/cONiTs7Vd6IoIjqOhXa9yA8Ng5r8vd0NvtUaIgCWg34FMhsCYQQAAQDuyQBhAgDuyQBhAwDuyQBhBADuyQBh + * + * @param mRuntime + * @param mConnection + * @param cmd + */ + private void handleAP50(Runtime mRuntime, Connection mConnection, String cmd) { + ICLogger.d("handleAP50 ==> " + cmd); + String[] split = cmd.split(CMDSPLIT); + if (split.length == 4) { + //开启拨号UI + Intent intent = new Intent(); + //在VideoCall里有个接收者,收到了消息会拉起视频通话 + intent.setAction("com.ic.video_call.action.DO_CALL"); + //调用声网SDK 加入频道的uid参数 手表端暂时固定为2 + intent.putExtra("targetId", split[1]); + intent.putExtra("selfId", 2); + intent.putExtra("channel", split[2]); + intent.putExtra("token", split[3]); + mRuntime.getContextProxy().context.sendBroadcast(intent); + } else { + ICLogger.d("parse cmd error == > " + split.length); + } + } + public boolean handleCmd(CMD_TYPE type, String cmd, byte[] bytes) { - //只有需要传递二进制数据的才需要这个函数,目前只有BP28需要 boolean ret = true; ICLogger.i("handleCmd " + type.name() + " " + cmd + " bytelen=" + bytes.length); diff --git a/local.properties b/local.properties index 6594581d..8bb06342 100644 --- a/local.properties +++ b/local.properties @@ -5,4 +5,4 @@ # For customization when using a Version Control System, please read the # header note. #Fri Jul 02 14:52:39 CST 2021 -sdk.dir=D\:\\android\\Android\\sdk +sdk.dir=E\:\\Android\\Sdk