RTK平台连接状态、登录结果保存到数据库;所有连接状态显示在RTK配置页面
8个文件已修改
6个文件已添加
329 ■■■■ 已修改文件
app/src/main/assets/rtk_config.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/Constant.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatus.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusDao.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusInitWork.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusViewModel.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorkRepository.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/MainActivity.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/app.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/GpsInfoFragment.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/RTKConfigFragment.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/assets/rtk_config.json
@@ -9,7 +9,7 @@
    "imei":"460123874561",
    "phone":"2019101500000001",
    "password":"123456789",
    "registered":0,
    "registered":1,
    "interval":1
  }
app/src/main/java/safeluck/drive/evaluation/Constant.java
@@ -56,4 +56,8 @@
    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";
}
app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java
@@ -15,6 +15,9 @@
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;
@@ -37,7 +40,7 @@
 * 邮箱: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();
@@ -78,12 +81,14 @@
                                    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
@@ -103,4 +108,6 @@
    public abstract RTKConfigDao getRTKConfigDao();
    public abstract GpsInfoDao getGpsInoDao();
    public abstract AppStatusDao getAppStatusDao();
}
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatus.java
New file
@@ -0,0 +1,71 @@
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;
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusDao.java
New file
@@ -0,0 +1,25 @@
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);
}
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusInitWork.java
New file
@@ -0,0 +1,22 @@
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();
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusViewModel.java
New file
@@ -0,0 +1,22 @@
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);
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorkRepository.java
New file
@@ -0,0 +1,30 @@
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);
            }
        });
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java
New file
@@ -0,0 +1,62 @@
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();
        }
    }
}
app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -48,8 +48,6 @@
    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() {
@@ -74,32 +72,6 @@
                } 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 {
@@ -149,8 +121,6 @@
            }
        });
        rtkConnAndLoginViewModel = ViewModelProviders.of(this).get(RTKConnAndLoginViewModel.class);
        rtkConnAndLogin = new RTKConnAndLogin();
        mPermissionsManager = new PermissionManager(this) {
app/src/main/java/safeluck/drive/evaluation/app.java
@@ -31,6 +31,8 @@
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;
@@ -109,15 +111,19 @@
                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:
@@ -141,8 +147,13 @@
                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:
app/src/main/java/safeluck/drive/evaluation/fragment/GpsInfoFragment.java
@@ -16,6 +16,7 @@
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;
app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java
@@ -13,15 +13,12 @@
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;
/**
 * 首页
@@ -32,6 +29,7 @@
 */
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();
@@ -43,6 +41,7 @@
        View view = inflater.inflate(R.layout.layout_home_fragment, container, false);
        initView(view);
        return view;
    }
app/src/main/java/safeluck/drive/evaluation/fragment/RTKConfigFragment.java
@@ -19,6 +19,8 @@
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;
@@ -42,6 +44,7 @@
    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();
@@ -58,6 +61,7 @@
        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());
@@ -69,21 +73,24 @@
                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;
    }