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