import com.enqualcomm.support.bean.heartRateStatus;
import com.enqualcomm.support.provider.ICContentProvider;
import com.enqualcomm.support.provider.ICDatabaseHelper;
+import com.enqualcomm.support.provider.ShootTextProvider;
import com.enqualcomm.support.provider.WarningItemProvider;
import com.enqualcomm.support.provider.WeTalkMessageProvider;
import com.enqualcomm.support.service.AntiMonitorService;
import com.enqualcomm.support.service.KeepAlive;
import com.enqualcomm.support.service.PhoneCallListener;
import com.enqualcomm.support.service.SendChatMessage;
+import com.enqualcomm.support.service.ShutdownFlagObserver;
import com.enqualcomm.support.service.SilentManager;
import com.enqualcomm.support.service.WeTalkMsgObserver;
import com.enqualcomm.support.service.base.AbstractConnectionService;
resolver.registerContentObserver(
Uri.parse(WeTalkMessageProvider.MESSAGES_SEND), true, weTalkMsgObserver
);
+
+ ShutdownFlagObserver shutdownFlagObserver = new ShutdownFlagObserver(mHandler, resolver);
+ resolver.registerContentObserver(Uri.parse(ShootTextProvider.SHOOT_TEXT), true,
+ shutdownFlagObserver);
+
//启动结束设置标志位,让心率和体温检测可以正常执行。
server_starting = false;
--- /dev/null
+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.ic.protocols.protocolAPIHelper;
+
+public class ShutdownFlagObserver extends ContentObserver {
+
+ private final Handler mHandler;
+ private final ContentResolver mResolver;
+
+ public ShutdownFlagObserver(Handler handler, ContentResolver resolver) {
+ super(handler);
+ 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_flag"},
+ null);
+
+ if (query != null) {
+ if (query.moveToNext()) {
+ String isShutDown = query.getString(0);
+ if ("true".equals(isShutDown)) {
+ protocolAPIHelper.sendShutdownMsg();
+ }
+ }
+ query.close();
+ }
+ });
+ }
+}
//todo:还有类型也要查询出来
int type = query.getInt(query.getColumnIndex("type"));
query.close();
-
if (type == ICDatabaseHelper.MessageType.VOICE) {
protocolAPIHelper.sendVoice(duration, remoteNum, content, lastPathSegment);
} else if (type == ICDatabaseHelper.MessageType.PIC) {
}
}
+ public static void sendShutdownMsg() {
+ 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.sendShutDownMsg();
+ break;
+ case Config.PROTOCOL_GATOR:
+ break;
+ }
+ }
+
/*
返回true 表示 cmd 全部解析成功
返回false表示 cmd至少有一条解析失败,失败的数据归入buffer,下一次识别接着使用
BPMK,//关闭麦克风
APMK,//关闭麦克风
APGJ,//关机前的确定
+ BPGJ,//关机前的确定
APFX,//飞行模式开关
BP75,//闹钟,
BPPH,//拨号功能开关
mRuntime = runtime;
}
+ public void sendShutDownMsg() {
+ if (mConnection != null) {
+ mConnection.send(APGJ(mRuntime));
+ }
+ }
+
+ /**
+ * 关机前确认
+ *
+ * @return
+ */
+ public StringMessage APGJ(Runtime runtime) {
+ //IW:标识符
+ //APGJ:命令字
+ //353456789012345: 设备IMEI号,固定15位
+ //#:结束符
+ //IWAPGJ,353456789012345#
+ //说明:用于表示终端要关机了,收到回复后即可关机。
+ return genStringMessage(cmdMap.get(CMD_TYPE.APGJ),
+ new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APGJ))
+ .append(runtime.IMEI())
+ .append(CMDSPLIT)
+ .append(CMDEND).toString());
+ }
+
public static String getPhoneStatus(Runtime mRuntime) {
TelephonyManager tm = (TelephonyManager) mRuntime
.getContextProxy().context.getSystemService(Context.TELEPHONY_SERVICE);
ICLogger.d("收到服务器设置快捷短语的指令.");
handleBPSM(cmd);
break;
+ case BPGJ:
+ ICLogger.d("服务器收到关机指令");
+ //去关机
+ handleBPGJ();
+ break;
case APTM:
break;
case APCH:
return ret;
}
+ private void handleBPGJ() {
+ //修改数据库里的关机值
+ ContentResolver resolver = mRuntime.getContextProxy().getResolver();
+ ContentValues values = new ContentValues();
+ values.put(ICDatabaseHelper.sKey, "shutdown_flag");
+ values.put(ICDatabaseHelper.sValue, "false");
+ resolver.insert(Uri.parse(ICGlobalSettingsProvider.SETTINGS), values);
+ //执行关机操作
+ Intent intent = new Intent();
+ intent.setAction("com.ic.system.SHUTDOWN_CMD");
+ mRuntime.getContextProxy().context.sendBroadcast(intent);
+ }
+
+
/**
* IWBPSM,353456789012345,080835,1,2,4f60597dff0c8fd991cc6b635e383002@5f0059cb4e0a8bfe3002#
* 快捷指令语设置