From 0dcf7a67fec9cb98e3246951f3b10f51a31a84c9 Mon Sep 17 00:00:00 2001
From: lizhanwei <Dana_Lee1016@126.com>
Date: 星期三, 19 二月 2020 11:39:28 +0800
Subject: [PATCH] app添加获取Context方法;修改学员信息数据库表;增加修改学员信息表的Work方法;收到服务器发回来的学员信息更新数据库表;注册成功之后的密码进行sp保存;tcp连接成功后,根据sp是否有密码来判断是进行注册还是鉴权
---
app/src/main/java/safeluck/drive/evaluation/Constant.java | 1
app/src/main/java/safeluck/drive/evaluation/DB/StudentInfoUpdateWork.java | 47 +++++++++++++++
app/src/main/java/safeluck/drive/evaluation/app.java | 9 ++
app/src/main/assets/students_file.json | 4 +
app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java | 1
app/src/main/java/safeluck/drive/evaluation/DB/StudentDao.java | 2
app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage8201.java | 2
app/src/main/res/layout/layout_tcpclient.xml | 6 ++
app/src/main/java/safeluck/drive/evaluation/DB/Student.java | 11 +++
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java | 51 ++++++++++++----
app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java | 30 +++++++++
11 files changed, 145 insertions(+), 19 deletions(-)
diff --git a/app/src/main/assets/students_file.json b/app/src/main/assets/students_file.json
index d04d564..a0c4f94 100644
--- a/app/src/main/assets/students_file.json
+++ b/app/src/main/assets/students_file.json
@@ -4,6 +4,8 @@
"stu_id":1001,
"ID": "410923198910162545",
"name": "鏉庡洓",
- "sex":2
+ "sex":2,
+ "head_url":""
+
}
]
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/Constant.java b/app/src/main/java/safeluck/drive/evaluation/Constant.java
index cfd1242..149ae93 100644
--- a/app/src/main/java/safeluck/drive/evaluation/Constant.java
+++ b/app/src/main/java/safeluck/drive/evaluation/Constant.java
@@ -75,5 +75,6 @@
public static final String MCU_FILE_NAME = "dfu.bin";
public static final int MCU_SN = 8;
public static final int SEND_CONFIG_SIGNAL = 0x8008;
+ public static final String STU_INFO_PLATFORM = "STU_INFO_PLATFORM";
public static String exam_enter_exitdata="exam_enter_exitdata";
}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/Student.java b/app/src/main/java/safeluck/drive/evaluation/DB/Student.java
index f44e818..9d17de7 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/Student.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/Student.java
@@ -29,6 +29,17 @@
//鎬у埆 0-鐢� 1-濂�
@ColumnInfo(name = "sex")
private int sex;
+ //鎬у埆 0-鐢� 1-濂�
+ @ColumnInfo(name = "head_url")
+ private String head_url;
+
+ public String getHead_url() {
+ return head_url;
+ }
+
+ public void setHead_url(String head_url) {
+ this.head_url = head_url;
+ }
public long getBegin_time() {
return begin_time;
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/StudentDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/StudentDao.java
index 6d32c75..0750bf4 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/StudentDao.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/StudentDao.java
@@ -17,7 +17,7 @@
*/
@Dao
public interface StudentDao {
- @Insert(onConflict = OnConflictStrategy.IGNORE)
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
void insert(Student student);
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/StudentInfoUpdateWork.java b/app/src/main/java/safeluck/drive/evaluation/DB/StudentInfoUpdateWork.java
new file mode 100644
index 0000000..44d415d
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/StudentInfoUpdateWork.java
@@ -0,0 +1,47 @@
+package safeluck.drive.evaluation.DB;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import safeluck.drive.evaluation.Constant;
+
+public class StudentInfoUpdateWork extends Worker {
+
+ private static final String TAG = "StudentInfoUpdateWork";
+ public StudentInfoUpdateWork(@NonNull Context context, @NonNull WorkerParameters workerParams) {
+ super(context, workerParams);
+ }
+
+ @NonNull
+ @Override
+ public Result doWork() {
+ String str = getInputData().getString(Constant.STU_INFO_PLATFORM);
+ if (!TextUtils.isEmpty(str)){
+ Log.i(TAG, "doWork: "+str);
+ JSONObject jsonObject = null;
+
+ try {
+ jsonObject = new JSONObject(str);
+ String headUrl = jsonObject.getString("head_url");
+ String id = jsonObject.getString("ID");
+ String name = jsonObject.getString("name");
+ Student student =new Student(1001,name,id,2);
+ student.setHead_url(headUrl);
+ WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getstudentDao().insert(student);
+ return Result.success();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ return Result.failure();
+ }
+ }
+ return Result.success();
+ }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index b1c19f2..f347e2c 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -1,6 +1,7 @@
package safeluck.drive.evaluation;
import android.app.Application;
+import android.content.Context;
import android.os.Environment;
import android.text.TextUtils;
import android.util.Log;
@@ -61,7 +62,7 @@
FailedProjRepository failedProjRepository;//澶辫触椤圭洰琛ㄦ暟鎹簱
RTKWorkRepository rtkWorkRepository;//淇濆瓨RTK閰嶇疆琛�
Random random = new Random();
-
+ private static Context appContext=null;
@Override
public void onCreate() {
super.onCreate();
@@ -84,7 +85,7 @@
MyLog.createIfNotExist();
Stetho.initializeWithDefaults(this);
-
+ appContext = this;
//鏁版嵁搴撴搷浣�
MyLog.i(TAG, "onCreate111");
@@ -105,6 +106,10 @@
}
+ public static Context getAppContext(){
+ return appContext;
+ }
+
@Override
public void onTerminate() {
super.onTerminate();
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
index 278ca81..b5009a7 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -5,6 +5,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -22,6 +23,9 @@
import java.io.UnsupportedEncodingException;
import java.util.Date;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.DB.criterias.CriteriaForI;
@@ -29,6 +33,7 @@
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.im.MessageProcessor;
import safeluck.drive.evaluation.platformMessage.JKMessage0001;
+import safeluck.drive.evaluation.platformMessage.JKMessage0002;
import safeluck.drive.evaluation.platformMessage.JKMessage0100;
import safeluck.drive.evaluation.platformMessage.JKMessage0101;
import safeluck.drive.evaluation.platformMessage.JKMessage0201;
@@ -36,6 +41,7 @@
import safeluck.drive.evaluation.platformMessage.JKMessage0203;
import safeluck.drive.evaluation.platformMessage.JKMessage0204;
import safeluck.drive.evaluation.im.IMSClientBootstrap;
+import safeluck.drive.evaluation.util.SPUtils;
/**
* MyApplication2
@@ -51,6 +57,7 @@
private TextInputEditText port;
private TextView tv_content;
private Button btn_connect;
+ private Button btn_auth;
private Button btn_send;
private AppCompatEditText sendEditText;
private CriteriaIViewModel workViewModel;
@@ -81,12 +88,14 @@
btn_connect = view.findViewById(R.id.btn_connect);
btn_send = view.findViewById(R.id.btn_send);
view.findViewById(R.id.btn_register).setOnClickListener(this);
- view.findViewById(R.id.btn_auth).setOnClickListener(this);
+ btn_auth = view.findViewById(R.id.btn_auth);
+ btn_auth.setOnClickListener(this);
view.findViewById(R.id.btn_gain).setOnClickListener(this);
view.findViewById(R.id.btn_start_exam).setOnClickListener(this);
view.findViewById(R.id.btn_stop_exam).setOnClickListener(this);
view.findViewById(R.id.btn_fail).setOnClickListener(this);
view.findViewById(R.id.btn_gps).setOnClickListener(this);
+ view.findViewById(R.id.btn_keepalive).setOnClickListener(this);
btn_send.setOnClickListener(this);
btn_connect.setOnClickListener(this);
@@ -123,8 +132,8 @@
String userId = "100002";
String token = "token_" + userId;
// String hosts = "[{\"host\":\"47.93.80.84\", \"port\":12125}]";
-// String hosts = "[{\"host\":\"47.93.157.103\", \"port\":2020}]";
- String hosts = "[{\"host\":\"192.168.31.77\", \"port\":12125}]";
+ String hosts = "[{\"host\":\"47.93.157.103\", \"port\":2020}]";
+// String hosts = "[{\"host\":\"192.168.31.77\", \"port\":12125}]";
IMSClientBootstrap.getInstance().init(userId,token,hosts,1);
break;
@@ -159,18 +168,24 @@
Log.i(TAG, "onClick: string="+string);
break;
case R.id.btn_register:
+ String hexPwd = (String) SPUtils.get(getActivity(),SPUtils.DES_HEX_PWD,"");
+ if (TextUtils.isEmpty(hexPwd)){
- JKMessage0100 jkRegisterMessage = new JKMessage0100();
- jkRegisterMessage.proviceid = 23;
- jkRegisterMessage.cityid = 1;
- jkRegisterMessage.imei = "460123874561";
- jkRegisterMessage.model = "123";
- jkRegisterMessage.sn = "0314200100000004";
+ JKMessage0100 jkRegisterMessage = new JKMessage0100();
+ jkRegisterMessage.proviceid = 23;
+ jkRegisterMessage.cityid = 1;
+ jkRegisterMessage.imei = "460123874561";
+ jkRegisterMessage.model = "123";
+ jkRegisterMessage.sn = "0314200100000004";
- Log.i(TAG, "onClick: msg len "+jkRegisterMessage.getMessageLen()+" "+ jkRegisterMessage.props.value);
- byte[] str = jkRegisterMessage.toBytes();
- MessageProcessor.getInstance().sendMessage(jkRegisterMessage);
- Log.i(TAG, "onClick: "+ BytesUtils.bytesToHexString(str)+" ============");
+ Log.i(TAG, "onClick: msg len "+jkRegisterMessage.getMessageLen()+" "+ jkRegisterMessage.props.value);
+ byte[] str = jkRegisterMessage.toBytes();
+ MessageProcessor.getInstance().sendMessage(jkRegisterMessage);
+ Log.i(TAG, "onClick: "+ BytesUtils.bytesToHexString(str)+" ============");
+ }else{
+ Log.i(TAG, "onClick: 瀵嗙爜="+hexPwd);
+ btn_auth.performClick();
+ }
break;
case R.id.btn_auth:
JKMessage0101 jkMessage0101 = new JKMessage0101();
@@ -216,6 +231,16 @@
jkMessage0204.exam_id = 123456;
MessageProcessor.getInstance().sendMessage(jkMessage0204);
break;
+ case R.id.btn_keepalive:
+ ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
+ scheduledExecutorService.scheduleAtFixedRate(new Runnable() {
+ @Override
+ public void run() {
+ MessageProcessor.getInstance().sendMessage(new JKMessage0002());
+ }
+ },1000,1000, TimeUnit.MICROSECONDS);
+
+ break;
}
}
diff --git a/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java b/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java
index d2dc784..84272be 100644
--- a/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java
+++ b/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java
@@ -1,18 +1,29 @@
package safeluck.drive.evaluation.im;
+import android.app.Application;
import android.util.Log;
+
+import androidx.work.Data;
+import androidx.work.OneTimeWorkRequest;
+import androidx.work.WorkManager;
import com.anyun.exam.lib.MyLog;
import com.anyun.im_lib.util.ByteUtil;
+import com.google.gson.Gson;
import com.safeluck.aykj.utils.BytesUtils;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import safeluck.drive.evaluation.Constant;
+import safeluck.drive.evaluation.DB.StudentInfoUpdateWork;
+import safeluck.drive.evaluation.app;
import safeluck.drive.evaluation.platformMessage.JK2019MessageBase;
import safeluck.drive.evaluation.platformMessage.JKMessage0001;
import safeluck.drive.evaluation.platformMessage.JKMessage0100;
+import safeluck.drive.evaluation.platformMessage.JKMessage8001;
import safeluck.drive.evaluation.platformMessage.JKMessage8100;
+import safeluck.drive.evaluation.platformMessage.JKMessage8201;
import safeluck.drive.evaluation.platformMessage.PlatFormConstant;
import safeluck.drive.evaluation.platformMessage.utils.MessageEscaper;
import safeluck.drive.evaluation.platformMessage.utils.MessageManager;
@@ -29,9 +40,11 @@
private static final String TAG = MessageProcessor.class.getSimpleName();
private Map<Integer, JK2019MessageBase> mMsgTimeoutMap = new ConcurrentHashMap<>();
+ private Gson gson;
private MessageProcessor(){
messageEscaper = new MessageEscaper();
+ gson = new Gson();
}
private static class MessageProcessorInstance{
@@ -52,8 +65,22 @@
MyLog.i(PlatFormConstant.TAG,"杞箟杩囧悗鐨勬湇鍔℃秷鎭細"+ BytesUtils.bytesToHexString(datas));
JK2019MessageBase jk2019MessageBase = MessageManager.get(BytesUtils.bytesToHexString(datas));
if (jk2019MessageBase instanceof JKMessage8100){
+ if (((JKMessage8100) jk2019MessageBase).result == JKMessage8100.SUCCESS){
- Log.i(TAG, "receiveMsg: "+jk2019MessageBase.messageId);
+ SPUtils.put(app.getAppContext(),SPUtils.DES_HEX_PWD,((JKMessage8100) jk2019MessageBase).des);
+ }
+ }else if (jk2019MessageBase instanceof JKMessage8001){
+ JKMessage8001 jkMessage8001 = (JKMessage8001) jk2019MessageBase;
+ String hexMessageId = jkMessage8001.respMessageId;
+ if (hexMessageId.equalsIgnoreCase("0101")){
+ MyLog.i(PlatFormConstant.TAG,"閴存潈鎴愬姛");
+ }
+ }else if (jk2019MessageBase instanceof JKMessage8201){
+ JKMessage8201 jkMessage8201 = (JKMessage8201) jk2019MessageBase;
+ Data data = new Data.Builder().putString(Constant.STU_INFO_PLATFORM,gson.toJson(jkMessage8201)).build();
+ OneTimeWorkRequest stuInfoUpdateWork = new OneTimeWorkRequest.Builder(StudentInfoUpdateWork.class)
+ .setInputData(data).build();
+ WorkManager.getInstance(app.getAppContext()).enqueue(stuInfoUpdateWork);
}
}
@@ -65,6 +92,7 @@
CThreadPoolExecutor.runInBackground(new Runnable() {
@Override
public void run() {
+
if (IMSClientBootstrap.getInstance().isActive()){
IMSClientBootstrap.getInstance().sendMessage(msg.toBytes());
}else{
diff --git a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage8201.java b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage8201.java
index 82363a3..3b4c3d8 100644
--- a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage8201.java
+++ b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage8201.java
@@ -19,5 +19,5 @@
@Order(4)
@Length(0)
@Ascii
- public String url;
+ public String head_url;
}
diff --git a/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java b/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java
index 128f312..05fd2a1 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java
+++ b/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java
@@ -15,6 +15,7 @@
* 淇濆瓨鍦ㄦ墜鏈洪噷闈㈢殑鏂囦欢鍚�
*/
public static final String FILE_NAME = "share_data";
+ public static final String DES_HEX_PWD = "des_pwd";
/**
* 淇濆瓨鏁版嵁鐨勬柟娉曪紝鎴戜滑闇�瑕佹嬁鍒颁繚瀛樻暟鎹殑鍏蜂綋绫诲瀷锛岀劧鍚庢牴鎹被鍨嬭皟鐢ㄤ笉鍚岀殑淇濆瓨鏂规硶
diff --git a/app/src/main/res/layout/layout_tcpclient.xml b/app/src/main/res/layout/layout_tcpclient.xml
index d5c882a..f46c2d6 100644
--- a/app/src/main/res/layout/layout_tcpclient.xml
+++ b/app/src/main/res/layout/layout_tcpclient.xml
@@ -103,6 +103,12 @@
android:layout_marginEnd="10dp"
android:id="@+id/btn_stop_exam"
android:text="缁撴潫鑰冭瘯"/>
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="10dp"
+ android:id="@+id/btn_keepalive"
+ android:text="蹇冭烦"/>
</TableRow>
</TableLayout>
--
Gitblit v1.8.0