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.AirplaneModeObserver;
import com.enqualcomm.support.service.AntiMonitorService;
import com.enqualcomm.support.service.CheckSIM;
import com.enqualcomm.support.service.Deliver;
public static Handler mHandler = null;
// public static Handler mHandler=new Handler();
private static ICSmsManager smsManager = null;
+ private ShutdownFlagObserver shutdownFlagObserver;
+ private WeTalkMsgObserver weTalkMsgObserver;
+ private AirplaneModeObserver airplaneModeObserver;
public String getServerAlive() {
return DeviceInfoUtil.getDeviceInfo(runtime);
//观察微聊消息变化
//有新消息就发送出去
ContentResolver resolver = runtime.getContextProxy().getResolver();
- WeTalkMsgObserver weTalkMsgObserver = new WeTalkMsgObserver(mHandler, resolver);
+ weTalkMsgObserver = new WeTalkMsgObserver(mHandler, resolver);
resolver.registerContentObserver(
Uri.parse(WeTalkMessageProvider.MESSAGES_SEND), true, weTalkMsgObserver
);
- ShutdownFlagObserver shutdownFlagObserver = new ShutdownFlagObserver(mHandler, resolver);
- resolver.registerContentObserver(Uri.parse(ShootTextProvider.SHOOT_TEXT), true,
+ shutdownFlagObserver = new ShutdownFlagObserver(mHandler, resolver);
+ resolver.registerContentObserver(Uri.parse(SETTINGS + ".shutdown_action_flag"),
+ true,
shutdownFlagObserver);
+ airplaneModeObserver = new AirplaneModeObserver(mHandler, resolver);
+ resolver.registerContentObserver(Uri.parse(SETTINGS + ".fly_mode_action_flag"),
+ true,
+ airplaneModeObserver);
+
//启动结束设置标志位,让心率和体温检测可以正常执行。
server_starting = false;
unregisterReceiver(this.screenOnReceiver);
unregisterReceiver(this.AtCallbackBroadcastReceiver);
batteryUtil.unregisterBroadReceiver();
-
+ getContentResolver().unregisterContentObserver(airplaneModeObserver);
+ getContentResolver().unregisterContentObserver(shutdownFlagObserver);
+ getContentResolver().unregisterContentObserver(weTalkMsgObserver);
}
@Nullable
--- /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.ICGlobalSettingsProvider;
+import com.ic.protocols.protocolAPIHelper;
+
+public class AirplaneModeObserver extends ContentObserver {
+
+ private final Handler mHandler;
+ private final ContentResolver mResolver;
+
+ public AirplaneModeObserver(Handler handler, ContentResolver resolver) {
+ super(handler);
+ 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();
+ }
+ });
+ }
+}
}
}
+ public static void sendFlyModeMsg() {
+ 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.sendFlyModeMsg();
+ break;
+ case Config.PROTOCOL_GATOR:
+ break;
+ }
+ }
+
/*
返回true 表示 cmd 全部解析成功
返回false表示 cmd至少有一条解析失败,失败的数据归入buffer,下一次识别接着使用
public static final String defaultServerIP = "watch.jiai.pro";
public static final int defaultServerPort = 8090;
+ /**
+ * 发关飞行模式请求信息
+ */
+ public void sendFlyModeMsg() {
+ mConnection.send(APFX(mRuntime));
+ }
+
public enum CMD_TYPE {
/*终端发起*/
AP00,//登录包
APGJ,//关机前的确定
BPGJ,//关机前的确定
APFX,//飞行模式开关
+ BPFX,//飞行模式开关
BP75,//闹钟,
BPPH,//拨号功能开关
APPH,
cmdMap.put(CMD_TYPE.BPMK, "BPMK");
cmdMap.put(CMD_TYPE.APMK, "APMK");
cmdMap.put(CMD_TYPE.APFX, "APFX");
+ cmdMap.put(CMD_TYPE.BPFX, "BPFX");
cmdMap.put(CMD_TYPE.BPPH, "BPPH");
cmdMap.put(CMD_TYPE.APPH, "APPH");
cmdMap.put(CMD_TYPE.BPSS, "BPSS");
}
}
+
+ /**
+ * 飞行模式打开请求
+ *
+ * @param runtime
+ * @return
+ */
+ public StringMessage APFX(Runtime runtime) {
+ //IW:标识符
+ //APFX:命令字
+ //353456789012345: 设备IMEI号,固定15位
+ //#:结束符
+ return genStringMessage(cmdMap.get(CMD_TYPE.APFX),
+ new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APFX))
+ .append(runtime.IMEI())
+ .append(CMDEND).toString());
+ }
+
/**
* 关机前确认
*
return genStringMessage(cmdMap.get(CMD_TYPE.APGJ),
new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APGJ))
.append(runtime.IMEI())
- .append(CMDSPLIT)
.append(CMDEND).toString());
}
break;
case BP75:
ICLogger.d("收到闹钟设置指令BP75");
- handleBP75(mConnection, mRuntime, cmd);
+ handleBP75(mRuntime, cmd);
break;
case BPDH:
ICLogger.i("聆听");
//去关机
handleBPGJ();
break;
+ case BPFX:
+ ICLogger.d("服务器收到飞行模式打开请求.");
+ handleBPFX();
+ break;
case APTM:
break;
case APCH:
return ret;
}
+ /**
+ * 处理飞行模式打开的结果反馈,修改设置项的值
+ */
+ private void handleBPFX() {
+ updateSettingValue("fly_mode_action_flag", "false");
+ }
+
private void handleBPGJ() {
//修改数据库里的关机值
- ContentResolver resolver = mRuntime.getContextProxy().getResolver();
- ContentValues values = new ContentValues();
- values.put(ICDatabaseHelper.sKey, "shutdown_action_flag");
- values.put(ICDatabaseHelper.sValue, "false");
- resolver.insert(Uri.parse(ICGlobalSettingsProvider.SETTINGS), values);
+ updateSettingValue("shutdown_action_flag", "false");
//执行关机操作
- Intent intent = new Intent();
- intent.setAction("com.ic.system.SHUTDOWN_CMD");
- mRuntime.getContextProxy().context.sendBroadcast(intent);
+ //不管是否收到都执行关机好了,UI上转个圈,延时10秒钟完事
+ //Intent intent = new Intent();
+ //intent.setAction("com.ic.system.SHUTDOWN_CMD");
+ //mRuntime.getContextProxy().context.sendBroadcast(intent);
}
/**
* 闹钟数据
*
- * @param mConnection
* @param mRuntime
* @param cmd
*/
- private void handleBP75(Connection mConnection, Runtime mRuntime, String cmd) {
+ private void handleBP75(Runtime mRuntime, String cmd) {
//解析数据
ICLogger.d("cmd is == > " + cmd);
// IWBP75,