RTK平台连接状态、登录结果保存到数据库;所有连接状态显示在RTK配置页面
| | |
| | | "imei":"460123874561", |
| | | "phone":"2019101500000001", |
| | | "password":"123456789", |
| | | "registered":0, |
| | | "registered":1, |
| | | "interval":1 |
| | | } |
| | | |
| | |
| | | |
| | | public static final String BIND_CONNECT_RTK_TOPIC = "rtk_connect_login_topic"; |
| | | public static final String GPS_INFO_DATA = "gps_info_data"; |
| | | public static final String APP_STATUS = "app_status_db_input"; |
| | | public static final String RTK_LOGIN_CODE_COLUMN = "RTK_LOGIN_CODE_COLUMN"; |
| | | public static final String RTK_CONN_STATUS_COLUMN = "RTK_CONN_STATUS_COLUMN"; |
| | | public static final String WORK_PLATFORM_STATUS_COLUMN = "WORK_PLATFORM_STATUS_COLUMN"; |
| | | } |
| | |
| | | import java.util.concurrent.ExecutorService; |
| | | import java.util.concurrent.Executors; |
| | | |
| | | import safeluck.drive.evaluation.DB.appstatusdb.AppStatus; |
| | | import safeluck.drive.evaluation.DB.appstatusdb.AppStatusDao; |
| | | import safeluck.drive.evaluation.DB.appstatusdb.AppStatusInitWork; |
| | | import safeluck.drive.evaluation.DB.criterias.CriteriaForI; |
| | | import safeluck.drive.evaluation.DB.criterias.CriteriaForII; |
| | | import safeluck.drive.evaluation.DB.criterias.CriteriaForIIWorker; |
| | |
| | | * 邮箱:632393724@qq.com |
| | | * All Rights Saved! Chongqing AnYun Tech co. LTD |
| | | */ |
| | | @Database(entities = {Student.class, CriteriaForI.class, FailedProj.class, CriteriaForII.class, RTKConfig.class, GPSInfo.class},version = 1,exportSchema = false) |
| | | @Database(entities = {Student.class, CriteriaForI.class, FailedProj.class, CriteriaForII.class, RTKConfig.class, GPSInfo.class, AppStatus.class},version = 1,exportSchema = false) |
| | | public abstract class WorkRoomDataBase extends RoomDatabase { |
| | | private static final String TAG = "WorkRoomDataBase"; |
| | | public abstract StudentDao getstudentDao(); |
| | |
| | | OneTimeWorkRequest oneTimeWorkRequest3 = OneTimeWorkRequest.from(CriteriaForIIWorker.class); |
| | | OneTimeWorkRequest oneTimeWorkRequest2 = OneTimeWorkRequest.from(FailedProjWorker.class); |
| | | OneTimeWorkRequest RTKConfigWorkRequest = OneTimeWorkRequest.from(RTKConfigWork.class); |
| | | OneTimeWorkRequest appStatusInitWork = OneTimeWorkRequest.from(AppStatusInitWork.class); |
| | | Log.i(TAG, "onCreate: 创建数据库后建立数据表插入数据"); |
| | | WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest); |
| | | WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest1); |
| | | WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest2); |
| | | WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest3); |
| | | WorkManager.getInstance(mContext).enqueue(RTKConfigWorkRequest); |
| | | WorkManager.getInstance(mContext).enqueue(appStatusInitWork); |
| | | } |
| | | |
| | | @Override |
| | |
| | | public abstract RTKConfigDao getRTKConfigDao(); |
| | | |
| | | public abstract GpsInfoDao getGpsInoDao(); |
| | | |
| | | public abstract AppStatusDao getAppStatusDao(); |
| | | } |
New file |
| | |
| | | package safeluck.drive.evaluation.DB.appstatusdb; |
| | | |
| | | import androidx.room.Entity; |
| | | import androidx.room.PrimaryKey; |
| | | @Entity(tableName = "app_status") |
| | | public class AppStatus { |
| | | public AppStatus(int rtk_login_code, int rtk_connect_status, int id, int work_platform, int default_observe1, int default_boserve2) { |
| | | this.rtk_login_code = rtk_login_code; |
| | | this.rtk_connect_status = rtk_connect_status; |
| | | this.id = id; |
| | | this.work_platform = work_platform; |
| | | this.default_observe1 = default_observe1; |
| | | this.default_boserve2 = default_boserve2; |
| | | } |
| | | |
| | | private int rtk_login_code = 1;//RTK平台登录结果 0-成功 其他失败 |
| | | private int rtk_connect_status;//RTK平台连接状态 |
| | | @PrimaryKey |
| | | private int id; |
| | | private int work_platform;//业务平台连接状态 |
| | | private int default_observe1;//保留1 为以后扩展 |
| | | private int default_boserve2;//保留2 |
| | | |
| | | public int getRtk_login_code() { |
| | | return rtk_login_code; |
| | | } |
| | | |
| | | public void setRtk_login_code(int rtk_login_code) { |
| | | this.rtk_login_code = rtk_login_code; |
| | | } |
| | | |
| | | public int getRtk_connect_status() { |
| | | return rtk_connect_status; |
| | | } |
| | | |
| | | public void setRtk_connect_status(int rtk_connect_status) { |
| | | this.rtk_connect_status = rtk_connect_status; |
| | | } |
| | | |
| | | public int getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(int id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public int getWork_platform() { |
| | | return work_platform; |
| | | } |
| | | |
| | | public void setWork_platform(int work_platform) { |
| | | this.work_platform = work_platform; |
| | | } |
| | | |
| | | public int getDefault_observe1() { |
| | | return default_observe1; |
| | | } |
| | | |
| | | public void setDefault_observe1(int default_observe1) { |
| | | this.default_observe1 = default_observe1; |
| | | } |
| | | |
| | | public int getDefault_boserve2() { |
| | | return default_boserve2; |
| | | } |
| | | |
| | | public void setDefault_boserve2(int default_boserve2) { |
| | | this.default_boserve2 = default_boserve2; |
| | | } |
| | | } |
New file |
| | |
| | | package safeluck.drive.evaluation.DB.appstatusdb; |
| | | |
| | | import androidx.lifecycle.LiveData; |
| | | import androidx.room.Dao; |
| | | import androidx.room.Insert; |
| | | import androidx.room.OnConflictStrategy; |
| | | import androidx.room.Query; |
| | | import androidx.room.Update; |
| | | |
| | | @Dao |
| | | public interface AppStatusDao { |
| | | @Insert(onConflict = OnConflictStrategy.REPLACE) |
| | | void insert(AppStatus appStatus); |
| | | |
| | | @Query("select * from app_status") |
| | | LiveData<AppStatus> getAppStatus(); |
| | | |
| | | @Query("update app_status set rtk_login_code=:rtklogin_code where id=0") |
| | | void updateRTKLoginCode(int rtklogin_code); |
| | | @Query("update app_status set rtk_connect_status=:connStatus where id=0") |
| | | void updateRTKConnectStatus(int connStatus); |
| | | //更新业务平台连接状态 |
| | | @Query("update app_status set work_platform=:connStatus where id=0") |
| | | void updatework_platformStatus(int connStatus); |
| | | } |
New file |
| | |
| | | package safeluck.drive.evaluation.DB.appstatusdb; |
| | | |
| | | import android.content.Context; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.work.Worker; |
| | | import androidx.work.WorkerParameters; |
| | | |
| | | import safeluck.drive.evaluation.DB.WorkRoomDataBase; |
| | | |
| | | public class AppStatusInitWork extends Worker { |
| | | public AppStatusInitWork(@NonNull Context context, @NonNull WorkerParameters workerParams) { |
| | | super(context, workerParams); |
| | | } |
| | | |
| | | @NonNull |
| | | @Override |
| | | public Result doWork() { |
| | | WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getAppStatusDao().insert(new AppStatus(1,0,0,0,0,0)); |
| | | return Result.success(); |
| | | } |
| | | } |
New file |
| | |
| | | package safeluck.drive.evaluation.DB.appstatusdb; |
| | | |
| | | import android.app.Application; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.lifecycle.AndroidViewModel; |
| | | import androidx.lifecycle.LiveData; |
| | | |
| | | public class AppStatusViewModel extends AndroidViewModel { |
| | | |
| | | private AppStatusWorkRepository appStatusWorkRepository; |
| | | public AppStatusViewModel(@NonNull Application application) { |
| | | super(application); |
| | | appStatusWorkRepository = new AppStatusWorkRepository(application); |
| | | } |
| | | public LiveData<AppStatus> getAppStatus(){ |
| | | return appStatusWorkRepository.getAppStatus(); |
| | | } |
| | | public void insertAppStatus(AppStatus appStatus){ |
| | | appStatusWorkRepository.insertAppstatus(appStatus); |
| | | } |
| | | } |
New file |
| | |
| | | package safeluck.drive.evaluation.DB.appstatusdb; |
| | | |
| | | import android.app.Application; |
| | | |
| | | import androidx.lifecycle.LiveData; |
| | | |
| | | import safeluck.drive.evaluation.DB.WorkRoomDataBase; |
| | | |
| | | public class AppStatusWorkRepository { |
| | | |
| | | private AppStatusDao appStatusDao; |
| | | private LiveData<AppStatus> appStatus; |
| | | public AppStatusWorkRepository(Application application) { |
| | | this.appStatusDao = WorkRoomDataBase.getWorkRoomDataBase(application).getAppStatusDao(); |
| | | appStatus = appStatusDao.getAppStatus(); |
| | | } |
| | | |
| | | public LiveData<AppStatus> getAppStatus(){ |
| | | return appStatus; |
| | | } |
| | | |
| | | public void insertAppstatus(final AppStatus appStatus){ |
| | | WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | appStatusDao.insert(appStatus); |
| | | } |
| | | }); |
| | | } |
| | | } |
New file |
| | |
| | | package safeluck.drive.evaluation.DB.appstatusdb; |
| | | |
| | | import android.content.Context; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.work.Worker; |
| | | import androidx.work.WorkerParameters; |
| | | |
| | | import com.anyun.exam.lib.MyLog; |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.reflect.TypeToken; |
| | | |
| | | import org.json.JSONException; |
| | | import org.json.JSONObject; |
| | | |
| | | import java.lang.reflect.Type; |
| | | |
| | | import safeluck.drive.evaluation.Constant; |
| | | import safeluck.drive.evaluation.DB.WorkRoomDataBase; |
| | | |
| | | public class AppStatusWorker extends Worker { |
| | | |
| | | private static final String TAG = "AppStatusWorker"; |
| | | private AppStatusDao appStatusDao; |
| | | |
| | | public AppStatusWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { |
| | | super(context, workerParams); |
| | | MyLog.d(TAG,"初始化AppStatusDao"); |
| | | appStatusDao = WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getAppStatusDao(); |
| | | } |
| | | |
| | | @NonNull |
| | | @Override |
| | | public Result doWork() { |
| | | String[] str = getInputData().getStringArray(Constant.APP_STATUS); |
| | | JSONObject jsonObject = null; |
| | | try { |
| | | jsonObject = new JSONObject(str[1]); |
| | | switch (str[0]) { |
| | | case Constant.RTK_LOGIN_CODE_COLUMN: |
| | | int login =jsonObject.getInt("login_code"); |
| | | appStatusDao.updateRTKLoginCode(login); |
| | | break; |
| | | case Constant.RTK_CONN_STATUS_COLUMN: |
| | | int conn =jsonObject.getInt("connected"); |
| | | appStatusDao.updateRTKConnectStatus(conn); |
| | | break; |
| | | case Constant.WORK_PLATFORM_STATUS_COLUMN: |
| | | int workconn =jsonObject.getInt("work_platform"); |
| | | appStatusDao.updatework_platformStatus(workconn); |
| | | break; |
| | | |
| | | } |
| | | |
| | | return Result.success(); |
| | | } catch (JSONException e) { |
| | | e.printStackTrace(); |
| | | return Result.failure(); |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | private RTKConfig mRTKConfig;//RTK配置信息 |
| | | private Gson gson = new Gson(); |
| | | String[] PERMISSIONS = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}; |
| | | RTKConnAndLoginViewModel rtkConnAndLoginViewModel; |
| | | RTKConnAndLogin rtkConnAndLogin; |
| | | RTKConfigViewModel rtkConfigViewModel; |
| | | |
| | | private ICEventListener icEventListener = new ICEventListener() { |
| | |
| | | } else { |
| | | MyLog.d(TAG, "RTKConfig未取到数据"); |
| | | } |
| | | } |
| | | if (msgCode == Constant.RTK_PLATFORM_CONNECT_STATUS || msgCode == Constant.RTK_PLATFORM_REGISTER_RESULT) { |
| | | if (msgCode == Constant.RTK_PLATFORM_REGISTER_RESULT) { |
| | | try { |
| | | JSONObject jsonObject3 = new JSONObject((String) obj); |
| | | int loginCode = jsonObject3.getInt("login_code"); |
| | | MyLog.d(TAG, "RTK平台登录结果:" + loginCode); |
| | | rtkConnAndLogin.setLogin_code(loginCode); |
| | | |
| | | } catch (JSONException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | } else { |
| | | try { |
| | | JSONObject jsonObject3 = new JSONObject((String) obj); |
| | | int connect_status = jsonObject3.getInt("connected"); |
| | | MyLog.i(TAG, "RTK平台连接状态:" + connect_status); |
| | | rtkConnAndLogin.setLogin_code(connect_status); |
| | | |
| | | } catch (JSONException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | } |
| | | rtkConnAndLoginViewModel.getRtkConnAndLogin().postValue(rtkConnAndLogin); |
| | | } |
| | | if (msgCode == Constant.RTK_PLATFORM_REGISTER_STATUS) { |
| | | try { |
| | |
| | | } |
| | | }); |
| | | |
| | | rtkConnAndLoginViewModel = ViewModelProviders.of(this).get(RTKConnAndLoginViewModel.class); |
| | | rtkConnAndLogin = new RTKConnAndLogin(); |
| | | |
| | | |
| | | mPermissionsManager = new PermissionManager(this) { |
| | |
| | | |
| | | import java.util.Random; |
| | | |
| | | import safeluck.drive.evaluation.DB.WorkRoomDataBase; |
| | | import safeluck.drive.evaluation.DB.appstatusdb.AppStatusWorker; |
| | | import safeluck.drive.evaluation.DB.failitems.FailedProj; |
| | | import safeluck.drive.evaluation.DB.failitems.FailedProjRepository; |
| | | import safeluck.drive.evaluation.DB.gps.GpsInfoWorker; |
| | |
| | | |
| | | break; |
| | | case Constant.RTK_PLATFORM_REGISTER_STATUS: |
| | | //RTK平台注册状态,需要保存数据库 |
| | | CEventCenter.dispatchEvent(Constant.BIND_CONNECT_RTK_TOPIC,cmd,0,json); |
| | | |
| | | //RTK平台注册状态,需要保存数据库 |
| | | |
| | | break; |
| | | case Constant.RTK_PLATFORM_REGISTER_RESULT: |
| | | |
| | | String[] strs = new String[2]; |
| | | strs[0] = Constant.RTK_LOGIN_CODE_COLUMN; |
| | | strs[1] = json; |
| | | //RTK平台登录结果 |
| | | CEventCenter.dispatchEvent(Constant.BIND_CONNECT_RTK_TOPIC,cmd,0,json); |
| | | |
| | | Data rtkLoginData = new Data.Builder().putStringArray(Constant.APP_STATUS,strs).build(); |
| | | OneTimeWorkRequest loginWorkRequest = new OneTimeWorkRequest.Builder(AppStatusWorker.class).setInputData(rtkLoginData).build(); |
| | | WorkManager.getInstance(getApplicationContext()).enqueue(loginWorkRequest); |
| | | |
| | | break; |
| | | case Constant.FETCH_RTK_PLATFORM_INFO: |
| | |
| | | failedProjRepository.deleteAll(); |
| | | break; |
| | | case Constant.RTK_PLATFORM_CONNECT_STATUS: |
| | | |
| | | CEventCenter.dispatchEvent(Constant.BIND_CONNECT_RTK_TOPIC,cmd,0,json); |
| | | String[] conn_strs = new String[2]; |
| | | conn_strs[0] = Constant.RTK_CONN_STATUS_COLUMN; |
| | | conn_strs[1] = json; |
| | | //RTK平台连接状态 |
| | | Data connStatusData = new Data.Builder().putStringArray(Constant.APP_STATUS,conn_strs).build(); |
| | | OneTimeWorkRequest oneTimeWorkRequest = new OneTimeWorkRequest.Builder(AppStatusWorker.class).setInputData(connStatusData).build(); |
| | | WorkManager.getInstance(getApplicationContext()).enqueue(oneTimeWorkRequest); |
| | | break; |
| | | case Constant.FETCH_MAP_INFO: |
| | | |
| | |
| | | import androidx.lifecycle.Observer; |
| | | import androidx.lifecycle.ViewModelProviders; |
| | | |
| | | import com.anyun.exam.lib.AYSdk; |
| | | import com.anyun.exam.lib.MyLog; |
| | | |
| | | import java.lang.reflect.Field; |
| | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.annotation.Nullable; |
| | | |
| | | import java.io.File; |
| | | import java.io.FileOutputStream; |
| | | import java.nio.ByteBuffer; |
| | | |
| | | import me.yokeyword.fragmentation.ISupportFragment; |
| | | import me.yokeyword.fragmentation.SupportFragment; |
| | | import safeluck.drive.evaluation.BuildConfig; |
| | | import safeluck.drive.evaluation.R; |
| | | import safeluck.drive.evaluation.util.DimenUtil; |
| | | |
| | | |
| | | /** |
| | | * 首页 |
| | |
| | | */ |
| | | public class HomeFragment extends SupportFragment implements View.OnClickListener { |
| | | |
| | | private static final String TAG = HomeFragment.class.getSimpleName(); |
| | | private TextView tv_app_version; |
| | | public static ISupportFragment newInstance() { |
| | | return new HomeFragment(); |
| | |
| | | |
| | | View view = inflater.inflate(R.layout.layout_home_fragment, container, false); |
| | | initView(view); |
| | | |
| | | return view; |
| | | } |
| | | |
| | |
| | | |
| | | import me.yokeyword.fragmentation.SupportFragment; |
| | | import safeluck.drive.evaluation.Constant; |
| | | import safeluck.drive.evaluation.DB.appstatusdb.AppStatus; |
| | | import safeluck.drive.evaluation.DB.appstatusdb.AppStatusViewModel; |
| | | import safeluck.drive.evaluation.DB.rtktb.RTKConfigViewModel; |
| | | import safeluck.drive.evaluation.R; |
| | | import safeluck.drive.evaluation.DB.rtktb.RTKConfig; |
| | |
| | | private TextView tv_reg,tv_connect,tv_model,tv_sn,tv_imei,tv_login; |
| | | private RTKConfigViewModel rtkConfigViewModel; |
| | | private RTKConfig mRtkConfig; |
| | | private AppStatusViewModel appStatusViewModel; |
| | | |
| | | public static SupportFragment newInstance(){ |
| | | return new RTKConfigFragment(); |
| | |
| | | rtkConfigViewModel.getRTKConfig().observe(this, new Observer<RTKConfig>() { |
| | | @Override |
| | | public void onChanged(RTKConfig rtkConfig) { |
| | | if (rtkConfig != null){ |
| | | Log.i(TAG, "RTKConfig Changed: "+rtkConfig.toString()); |
| | | mRtkConfig = rtkConfig; |
| | | et_ip.setText(rtkConfig.getIp()); |
| | |
| | | tv_model.setText(getResources().getString(R.string.rtk_config_model,rtkConfig.getModel())); |
| | | tv_imei.setText(getResources().getString(R.string.rtk_config_imei,rtkConfig.getImei())); |
| | | tv_reg.setText(getResources().getString(R.string.rtk_register_status,rtkConfig.getRegistered())); |
| | | } |
| | | |
| | | |
| | | } |
| | | }); |
| | | |
| | | |
| | | RTKConnAndLoginViewModel rtkConnAndLoginViewModel = ViewModelProviders.of(this).get(RTKConnAndLoginViewModel.class); |
| | | rtkConnAndLoginViewModel.getRtkConnAndLogin().observe(this, new Observer<RTKConnAndLogin>() { |
| | | appStatusViewModel = ViewModelProviders.of(this).get(AppStatusViewModel.class); |
| | | appStatusViewModel.getAppStatus().observe(this, new Observer<AppStatus>() { |
| | | @Override |
| | | public void onChanged(RTKConnAndLogin rtkConnAndLogin) { |
| | | MyLog.i(TAG,"平台登录结果及连接状态"+rtkConnAndLogin.toString()); |
| | | tv_connect.setText(getResources().getString(R.string.rtk_connect_status,rtkConnAndLogin.getConnect_status())); |
| | | tv_connect.setText(getResources().getString(R.string.rtk_config_login,rtkConnAndLogin.getLogin_code())); |
| | | public void onChanged(AppStatus appStatus) { |
| | | if (appStatus != null){ |
| | | tv_login.setText(getResources().getString(R.string.rtk_config_login,appStatus.getRtk_login_code())); |
| | | tv_connect.setText(getResources().getString(R.string.rtk_connect_status,appStatus.getRtk_connect_status())); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | |
| | | return view; |
| | | } |
| | | |