package safeluck.drive.evaluation; import android.app.Application; import android.widget.Toast; import androidx.annotation.NonNull; import com.anyun.exam.lib.AYSdk; import com.anyun.exam.lib.IAYExamListener; import me.yokeyword.fragmentation.Fragmentation; import me.yokeyword.fragmentation.helper.ExceptionHandler; import com.anyun.exam.lib.MyLog; import com.anyun.exam.lib.crash.CrashHandler; import com.facebook.stetho.Stetho; import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; import java.util.Random; import safeluck.drive.evaluation.DB.failitems.FailedProj; import safeluck.drive.evaluation.DB.failitems.FailedProjRepository; import safeluck.drive.evaluation.DB.rtktb.RTKConfig; import safeluck.drive.evaluation.DB.rtktb.RTKWorkRepository; import safeluck.drive.evaluation.util.SystemUtil; /** * MyApplication2 * Created by lzw on 2019/3/15. 10:53:52 * 邮箱:632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class app extends Application implements IAYExamListener { private static final String TAG = "app"; private Gson gson; RTKConfig rtkConfig; FailedProjRepository failedProjRepository;//失败项目表数据库 RTKWorkRepository rtkWorkRepository;//保存RTK配置表 Random random = new Random(); @Override public void onCreate() { super.onCreate(); //初始化Fragment 建议在Application onCreate里面初始化 if (SystemUtil.compareProcessName(this)) { Fragmentation.builder().stackViewMode(Fragmentation.BUBBLE).debug(false) .handleException(new ExceptionHandler() { @Override public void onException(@NonNull Exception e) { MyLog.i(TAG, "onException: " + e.getMessage()); } }) .install(); CrashHandler crashHandler = CrashHandler.getInstance(); crashHandler.init(getApplicationContext()); AYSdk.getInstance().init(getApplicationContext()); AYSdk.getInstance().registListener(this); MyLog.createIfNotExist(); Stetho.initializeWithDefaults(this); //RTK配置信息 // rtkConfig = new RTKConfig(); // rtkConfig.setCity(12); // rtkConfig.setImei("460123874561"); // rtkConfig.setInterval(1); // rtkConfig.setIp("47.93.80.84"); // rtkConfig.setModel("123"); // rtkConfig.setPhone("2019101500000001"); // rtkConfig.setPort(12125); // rtkConfig.setProvince(23); // rtkConfig.setSn("2019101500000001"); //数据库操作 MyLog.i(TAG, "onCreate111"); failedProjRepository = new FailedProjRepository(this); rtkWorkRepository = new RTKWorkRepository(this); } } @Override public void onTerminate() { super.onTerminate(); MyLog.e(TAG, "OnTerminate()"); AYSdk.getInstance().uninit(); } @Override public void onLowMemory() { super.onLowMemory(); MyLog.e(TAG, "OnTerminate()"); } @Override public void callBackMsg(final int cmd, String json) { MyLog.d(TAG, String.format("收到命令[%d],Json内容为%s", cmd, json)); switch (cmd) { case Constant.NDK_START: Toast.makeText(this, "NDK start", Toast.LENGTH_SHORT).show(); break; case Constant.RTK_PLATFORM_REGISTER_STATUS: failedProjRepository.insert(new FailedProj(Constant.SUBJECT_I, cmd + random.nextInt(26), Constant.TEST_STU_ID)); rtkConfig = rtkWorkRepository.getRTKConfigNoLive(); try { JSONObject jsonObject = new JSONObject(json); String rtkLoginPwd = jsonObject.getString("password"); int reg_code = jsonObject.getInt("register_code"); rtkConfig.setPassword(rtkLoginPwd); rtkConfig.setRegistered(reg_code); } catch (JSONException e) { e.printStackTrace(); } rtkWorkRepository.insertRTKConfig(rtkConfig); break; case Constant.RTK_PLATFORM_REGISTER_RESULT: failedProjRepository.insert(new FailedProj(Constant.SUBJECT_I, cmd + random.nextInt(26), Constant.TEST_STU_ID)); try { JSONObject jsonObject = new JSONObject(json); int rtklogincode = jsonObject.getInt("login_code"); rtkConfig.setRegistered(rtklogincode); } catch (JSONException e) { e.printStackTrace(); } break; case Constant.FETCH_RTK_PLATFORM_INFO: rtkConfig = rtkWorkRepository.getRTKConfigNoLive(); if (gson == null) { gson = new Gson(); } if (rtkConfig==null){ rtkConfig = rtkWorkRepository.getRTKConfigNoLive(); } if (rtkConfig != null){ String rtkjson = gson.toJson(rtkConfig); MyLog.i(TAG, "RTK配置信息:" + rtkjson); //去除id字段 JSONObject jsonObject = null; try { jsonObject = new JSONObject(rtkjson); } catch (JSONException e) { e.printStackTrace(); } jsonObject.remove("_id"); rtkjson = null; rtkjson = jsonObject.toString(); MyLog.i(TAG, "RTK配置信息:" + rtkjson); AYSdk.getInstance().sendCmd(Constant.PUSH_RTK_PLATFORM_INFO, rtkjson); } break; case Constant.JUDGE_INFO: failedProjRepository.insert(new FailedProj(Constant.SUBJECT_I, cmd, Constant.TEST_STU_ID)); break; case Constant.EXAM_STATUS_REPLY: MyLog.d(TAG, "考试开始,需要删除上一个考试学员的数据库失败项目表"); failedProjRepository.deleteAll(); break; case Constant.RTK_PLATFORM_CONNECT_STATUS: rtkConfig = rtkWorkRepository.getRTKConfigNoLive(); try { JSONObject jsonObject3 = new JSONObject(json); String ip = jsonObject3.getString("ip"); int port = jsonObject3.getInt("port"); int reg_code = jsonObject3.getInt("connected"); rtkConfig.setRegistered(reg_code); rtkConfig.setIp(ip); rtkConfig.setPort(port); } catch (JSONException e) { e.printStackTrace(); } rtkWorkRepository.insertRTKConfig(rtkConfig); break; } } }