import com.enqualcomm.support.service.SignFlagObserver;
import com.enqualcomm.support.service.SilentManager;
import com.enqualcomm.support.service.WeTalkMsgObserver;
+import com.enqualcomm.support.service.WebMsgStateObserver;
import com.enqualcomm.support.service.base.AbstractConnectionService;
import com.enqualcomm.support.service.base.AbstractInvokeHandlerService;
import com.enqualcomm.support.utils.APNUtil;
true,
signFlagObserver);
+ WebMsgStateObserver webMsgStateObserver = new WebMsgStateObserver(mHandler, resolver);
+ resolver.registerContentObserver(Uri.parse(SETTINGS + ".web_msg_read_state_flag"),
+ true,
+ webMsgStateObserver);
+
//启动结束设置标志位,让心率和体温检测可以正常执行。
server_starting = false;
package com.enqualcomm.support.service;
import android.content.ContentResolver;
-import android.database.ContentObserver;
-import android.database.Cursor;
-import android.net.Uri;
import android.os.Handler;
-import com.enqualcomm.support.provider.ICGlobalSettingsProvider;
+import com.enqualcomm.support.service.base.BaseSettingsObserver;
import com.ic.protocols.protocolAPIHelper;
-public class AirplaneModeObserver extends ContentObserver {
+public class AirplaneModeObserver extends BaseSettingsObserver {
private final Handler mHandler;
- private final ContentResolver mResolver;
public AirplaneModeObserver(Handler handler, ContentResolver resolver) {
- super(handler);
+ super(handler, resolver);
this.mHandler = handler;
- this.mResolver = resolver;
}
@Override
public void onChange(boolean selfChange) {
//获取值,发起请求
mHandler.post(() -> {
- Cursor query = mResolver.query(Uri.parse(ICGlobalSettingsProvider.SETTINGS),
- new String[]{"s_value"}, "s_value=?",
- new String[]{"fly_mode_action_flag"},
- null);
-
- if (query != null) {
- if (query.moveToNext()) {
- String isFlyMode = query.getString(0);
- if ("true".equals(isFlyMode)) {
- protocolAPIHelper.sendFlyModeMsg();
- }
- }
- query.close();
+ String value = getSettingsValueByKey("fly_mode_action_flag", "");
+ if ("true".equals(value)) {
+ protocolAPIHelper.sendFlyModeMsg();
}
});
}
package com.enqualcomm.support.service;
import android.content.ContentResolver;
-import android.database.ContentObserver;
-import android.database.Cursor;
-import android.net.Uri;
import android.os.Handler;
-import com.enqualcomm.support.provider.ICDatabaseHelper;
-import com.enqualcomm.support.provider.ICGlobalSettingsProvider;
+import com.enqualcomm.support.service.base.BaseSettingsObserver;
import com.ic.protocols.protocolAPIHelper;
-public class ShutdownFlagObserver extends ContentObserver {
+public class ShutdownFlagObserver extends BaseSettingsObserver {
private final Handler mHandler;
- private final ContentResolver mResolver;
public ShutdownFlagObserver(Handler handler, ContentResolver resolver) {
- super(handler);
+ super(handler, resolver);
this.mHandler = handler;
- this.mResolver = resolver;
}
@Override
public void onChange(boolean selfChange) {
//改变以后,查询数据,如果是true的话,就去发送数据
mHandler.post(() -> {
- Cursor query = mResolver.query(Uri.parse(ICGlobalSettingsProvider.SETTINGS),
- new String[]{ICDatabaseHelper.sValue},
- ICDatabaseHelper.sKey + "=?",
- new String[]{"shutdown_action_flag"},
- null);
- if (query != null) {
- if (query.moveToNext()) {
- String isShutDown = query.getString(0);
- if ("true".equals(isShutDown)) {
- protocolAPIHelper.sendShutdownMsg();
- }
- }
- query.close();
+ String value = getSettingsValueByKey("shutdown_action_flag", "");
+ if ("true".equals(value)) {
+ protocolAPIHelper.sendShutdownMsg();
}
});
}
import android.os.Handler;
import com.enqualcomm.support.provider.ICGlobalSettingsProvider;
+import com.enqualcomm.support.service.base.BaseSettingsObserver;
import com.enqualcomm.support.utils.ICLogger;
import com.ic.protocols.protocolAPIHelper;
-public class SignFlagObserver extends ContentObserver {
+public class SignFlagObserver extends BaseSettingsObserver {
private final Handler mHandler;
private final ContentResolver mResolver;
public void onChange(boolean selfChange) {
ICLogger.d("SignFlagObserver on value change...");
mHandler.post(() -> {
- Cursor query = mResolver.query(Uri.parse(ICGlobalSettingsProvider.SETTINGS),
- new String[]{"s_value"}, "s_key=?", new String[]{"sign_action_flag"}, null);
- String value = "-1";
- if (query != null) {
- if (query.moveToNext()) {
- value = query.getString(0);
- //value有none的值,有-1的值,有id的值
- }
- query.close();
- }
+
protocolAPIHelper.sendSignMsg(value);
});
}
--- /dev/null
+package com.enqualcomm.support.service;
+
+import android.content.ContentResolver;
+import android.os.Handler;
+
+import com.enqualcomm.support.service.base.BaseSettingsObserver;
+import com.enqualcomm.support.utils.ICLogger;
+import com.ic.protocols.protocolAPIHelper;
+
+public class WebMsgStateObserver extends BaseSettingsObserver {
+
+ private final Handler mHandler;
+
+ public WebMsgStateObserver(Handler handler, ContentResolver resolver) {
+ super(handler, resolver);
+ this.mHandler = handler;
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ ICLogger.d("on web msg setting change...");
+ mHandler.post(() -> {
+ //查询出设置项
+ String value = getSettingsValueByKey("sign_action_flag", "-1");
+ protocolAPIHelper.responseWebSms(value);
+ });
+ }
+}
--- /dev/null
+package com.enqualcomm.support.service.base;
+
+import android.content.ContentResolver;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Handler;
+
+import com.enqualcomm.support.provider.ICGlobalSettingsProvider;
+
+public class BaseSettingsObserver extends ContentObserver {
+
+ private final ContentResolver mResolver;
+
+ public BaseSettingsObserver(Handler handler, ContentResolver contentResolver) {
+ super(handler);
+ this.mResolver = contentResolver;
+ }
+
+ protected String getSettingsValueByKey(String key, String defaultValue) {
+ Cursor query = mResolver.query(Uri.parse(ICGlobalSettingsProvider.SETTINGS),
+ new String[]{"s_value"}, "s_key=?", new String[]{key}, null);
+ String value = defaultValue;
+ if (query != null) {
+ if (query.moveToNext()) {
+ value = query.getString(0);
+ //value有none的值,有-1的值,有id的值
+ }
+ query.close();
+ }
+ return value;
+ }
+}
}
}
+ public static void responseWebSms(String value) {
+ switch (Config.protocol_no) {
+ case Config.PROTOCOL_JIAI:
+ break;
+ case Config.PROTOCOL_BEEHOME:
+ break;
+ case Config.PROTOCOL_IC:
+ break;
+ case Config.PROTOCOL_FZD:
+ break;
+ case Config.PROTOCOL_MQTT:
+ break;
+ case PROTOCOL_ANAN:
+ break;
+ case Config.PROTOCOL_S123:
+ protocols123_handler.responseWebSms(value);
+ break;
+ case Config.PROTOCOL_GATOR:
+ break;
+ }
+ }
+
/*
返回true 表示 cmd 全部解析成功
返回false表示 cmd至少有一条解析失败,失败的数据归入buffer,下一次识别接着使用
.append(CMDEND).toString());
}
+ //确认文字已读或聊天快捷回复(上行协议号:AP94,响应:BP94)
+ public void responseWebSms(String value) {
+ //IWAP94,123456,1,XXXXXXXXXXXXXXXX
+ //以下这部分内容由UI给到数据库再给过来
+ //123456,1,XXXXXXXXXXXXXXXX
+ //TODO:
+ }
+
public enum CMD_TYPE {
/*终端发起*/
AP00,//登录包
}
- public static StringMessage AP94() {
- /***
- * 15确认已读文字(上行协议号:AP94,响应:BP94)
- * 示例:
- * IWAP94,123456,1#
- * 说明:
- * IWAP94:标识符
- * APHCI: 命令字符
- * 123456: 文字来源系统流水号
- * 1:确认阅读、0:取消阅读
- * 平台响应: IWBP94#
- * 表示平台已接收,可不作响应
- * 说明: 本消息适用所有终端
- */
-
+ /**
+ * IWAP94:标识符
+ * APHCI: 命令字符
+ * 123456: 文字来源系统流水号
+ * 1:文本消息回复类型,1:确认已读,2:web(APP)快捷消息。
+ * IWAP94,123456,1,XXXXXXXXXXXXXXXX#
+ *
+ * @param responseText
+ * @return
+ */
+ public static StringMessage AP94(String responseText) {
+ if (TextUtils.isEmpty(responseText)) {
+ responseText = "";
+ }
//在UI逻辑中,只要有处理就都是已经阅读。所以不存在取消阅读的说法。
return genStringMessage(cmdMap.get(protocol_s123.CMD_TYPE.AP94),
new StringBuffer(CMDHEADER).append(cmdMap.get(protocol_s123.CMD_TYPE.AP94))
.append(CMDSPLIT).append(Runtime.PushtxtMsg_srv_index)
.append(CMDSPLIT).append("1")
+ .append(CMDSPLIT).append(responseText)
.append(CMDEND).toString());
-
}
public static StringMessage APAT(String id, String cmd) {
* @param cmd
*/
public void handleBPAT(Connection connection, Runtime runtime, String cmd) {
-/***
- * IWBPAT,353456789012345,080835,1#
- * 说明:是否提示表带是否连接的开关,即剪断报警开关
- * IW:标识符
- * BPAT : 命令字符
- * 353456789012345:IMEI号,设备唯一ID
- * 080835:指令流水号
- * 1: 表示剪断报警开关,1为开,0 为关
- * 设备响应: IWAPAT,080835, 1#
- * 080835:指令流水号
- * 1: 剪断开关状态(实际上与下行的命令一致)
- */
-
+ /***
+ * IWBPAT,353456789012345,080835,1#
+ * 说明:是否提示表带是否连接的开关,即剪断报警开关
+ * IW:标识符
+ * BPAT : 命令字符
+ * 353456789012345:IMEI号,设备唯一ID
+ * 080835:指令流水号
+ * 1: 表示剪断报警开关,1为开,0 为关
+ * 设备响应: IWAPAT,080835, 1#
+ * 080835:指令流水号
+ * 1: 剪断开关状态(实际上与下行的命令一致)
+ */
log("BPAT " + cmd);
String[] cmdlist = cmd.split(CMDSPLIT);
if (cmdlist.length == 4) {
case AP94:
break;
case BP94:
+ ICLogger.d("服务器收到文字确认/快捷回复");
+ handleBP94();
break;
case AP03:
break;
case APSM:
break;
}
-
return ret;
}
+ /**
+ * 修改库的状态,更新UI
+ */
+ private void handleBP94() {
+ //UI收到以后,设置成none
+ updateSettingValue("web_msg_read_state_flag", "success");
+ }
+
/**
* 修改配置项的值为success,让UI展示Success
*/