lizhanwei
2020-03-16 60256c53ae45de03d522befe3958913f6bbf3095
解决初次安装(卸载后安装)不发送rtk配置的bug
5个文件已修改
132 ■■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/MainActivity.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/app.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java
@@ -29,7 +29,7 @@
    public AppStatusWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
        super(context, workerParams);
        MyLog.d(TAG,"初始化AppStatusDao");
        MyLog.d(TAG,"初始化AppStatusWorker");
        appStatusDao = WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getAppStatusDao();
    }
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt
@@ -8,6 +8,8 @@
import com.anyun.exam.lib.AYSdk
import com.anyun.exam.lib.MyLog
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.google.gson.stream.JsonReader
import org.json.JSONException
import org.json.JSONObject
import safeluck.drive.evaluation.DB.Constant
@@ -15,6 +17,8 @@
import safeluck.drive.evaluation.DB.rtktb.RTKConfig
import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig
import safeluck.drive.evaluation.bean.SignalConfigRemote
import java.io.IOException
import java.io.InputStreamReader
class ExamStatusOutWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) {
    val TAG:String = "ExamStatusOutWorker"
@@ -23,18 +27,9 @@
    private var singalConfigs :List<SingalConfig> = ArrayList()
    override fun doWork(): Result {
        val examType =WorkRoomDataBase.getWorkRoomDataBase(applicationContext).examStatusDao.startExamInt;
        singalConfigs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao._getSignalConfigs()
        sendRtkConfigInfo(WorkRoomDataBase.getWorkRoomDataBase(applicationContext).rtkConfigDao._getRtkConfig())
        for (i in singalConfigs.indices) {
            val signalConfigRemote = SignalConfigRemote()
            signalConfigRemote.func_id = i
            signalConfigRemote.gpio_num = singalConfigs.get(i).getIndex()
            signalConfigRemote.level = singalConfigs.get(i).getHighLevel()
            signalConfiglist.add(signalConfigRemote)
        }
        var indexs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao.allIndexs
        sendSignalConfigsToRemote(indexs)
        MyLog.i(TAG,"查到的考试type="+examType)
        val data = Data.Builder().putInt(Constant.EXAM_STATUS_TYPE,examType).build()
        if (examType != safeluck.drive.evaluation.Constant.NONE_BEEN_START_EXAM) {
@@ -48,6 +43,55 @@
                e.printStackTrace()
            }
        }
        var rtk =  WorkRoomDataBase.getWorkRoomDataBase(applicationContext).rtkConfigDao._getRtkConfig()
        if (rtk == null){
            try {
                MyLog.i("读文件发送RTK配置")
                val inputStream = applicationContext.assets.open(safeluck.drive.evaluation.Constant.RTK_CONFIG_JSON)
                val inputStreamReader = InputStreamReader(inputStream)
                val jsonReader = JsonReader(inputStreamReader)
                val gson = Gson()
                val type = object : TypeToken<RTKConfig?>() {}.type
                val mstus = gson.fromJson<RTKConfig>(jsonReader, type)
                rtk = mstus
            } catch (e: IOException) {
                e.printStackTrace()
            }
        }else{
        }
        sendRtkConfigInfo(rtk)
        singalConfigs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao._getSignalConfigs()
        if (singalConfigs ==null){
            MyLog.i("读文件发送信号配置")
            try {
                val inputStream = applicationContext.assets.open("signal_config_file.json")
                val inputStreamReader = InputStreamReader(inputStream)
                val jsonReader = JsonReader(inputStreamReader)
                val gson = Gson()
                val type = object : TypeToken<List<SingalConfig?>?>() {}.type
                val mstus = gson.fromJson<List<SingalConfig>>(jsonReader, type)
                singalConfigs = mstus
            } catch (e: IOException) {
                e.printStackTrace()
            }
        }else{
        }
        for (i in singalConfigs.indices) {
            val signalConfigRemote = SignalConfigRemote()
            signalConfigRemote.func_id = i
            signalConfigRemote.gpio_num = singalConfigs.get(i).getIndex()
            signalConfigRemote.level = singalConfigs.get(i).getHighLevel()
            signalConfiglist.add(signalConfigRemote)
        }
        var indexs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao.allIndexs
        sendSignalConfigsToRemote(indexs)
        return Result.success(data)
    }
@@ -89,7 +133,7 @@
            jsonObject!!.remove("_id")
            rtkjson = null
            rtkjson = jsonObject.toString()
            MyLog.i(TAG, "RTK配置信息:$rtkjson")
            MyLog.i(TAG, "NDK_start RTK配置信息")
            AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_RTK_PLATFORM_INFO, rtkjson)
        } else {
            MyLog.d(TAG, "RTKConfig未取到数据")
app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java
@@ -1,11 +1,13 @@
package safeluck.drive.evaluation.DB.signalConfigdb;
import android.content.Context;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.work.Worker;
import androidx.work.WorkerParameters;
import com.anyun.exam.lib.AYSdk;
import com.anyun.exam.lib.MyLog;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
@@ -15,20 +17,25 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import safeluck.drive.evaluation.DB.WorkRoomDataBase;
import safeluck.drive.evaluation.bean.SignalConfigRemote;
public class SignalConfigInitWorker extends Worker {
    private static final String TAG = "SignalConfigInitWorker";
    private List<SignalConfigRemote> signalConfiglist = new ArrayList<>();
    private Gson gson;
    public SignalConfigInitWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
        super(context, workerParams);
        gson = new Gson();
    }
    @NonNull
    @Override
    public Result doWork() {
        MyLog.i(TAG,"信号配置表初始化");
        MyLog.i("信号配置表初始化");
        try {
            InputStream inputStream = getApplicationContext().getAssets().open("signal_config_file.json");
@@ -46,4 +53,29 @@
        }
        return Result.success();
    }
    private void sendSignalConfigsToRemote(List<Integer> indexs) {
        if (signalConfiglist.size() > 0) {
            if (listContainsSameValue(indexs)) {
                Log.i(TAG, "sendSignalConfigsToRemote: 有相同的index,不能发送" + gson.toJson(signalConfiglist));
            } else {
                AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.SEND_CONFIG_SIGNAL, gson.toJson(signalConfiglist));
            }
        }
    }
    private boolean listContainsSameValue(List<Integer> indexs) {
        for (int i=0;i<indexs.size();i++) { //可以默认是0  0不判断是否有相同的index
            if (indexs.get(i) == 0) {
                continue;
            }
            for (int j =i + 1 ;j<indexs.size();j++) {
                if (indexs.get(i) == indexs.get(j)) {
                    return true;
                }
            }
        }
        return false;
    }
}
app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -105,29 +105,6 @@
    };
    private List<SignalConfigRemote> signalConfiglist = new ArrayList<>();
    private void sendMcuUprgrade() {
        CThreadPoolExecutor.runInBackground(new Runnable() {
            @Override
            public void run() {
                try {
                    byte[] datas = FileUtil.readLocalFile(MainActivity.this,Constant.MCU_FILE_NAME);
                    if (datas != null){
                        Log.i(TAG, ByteUtil.byte2hex(datas));
                        String strs = new String(datas, Charset.forName("ISO-8859-1"));
                        MyLog.i(TAG, "mcu upgrade datas.legnth=="+strs.getBytes("ISO-8859-1").length);
                        AYSdk.getInstance().sendCmd(Constant.UPGRADE_MCU_CONTENT_FILE, strs);
//                        FileUtil.deleteFile("",Constant.MCU_FILE_NAME);
                    }else{
                        MyLog.i(TAG,"mcu升级文件不存在");
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    }
public ExamPlatformModel examPlatformModel;
    @Override
app/src/main/java/safeluck/drive/evaluation/app.java
@@ -78,7 +78,6 @@
    private Gson gson;
    RTKConfig rtkConfig;
    FailedProjRepository failedProjRepository;//失败项目表数据库
    RTKWorkRepository rtkWorkRepository;//保存RTK配置表
    Random random = new Random();
    private static Context appContext=null;
    @Override
@@ -109,7 +108,6 @@
            MyLog.i(TAG, "onCreate111");
            FileUtil.createdirs(getApplicationContext());
            failedProjRepository = new FailedProjRepository(this);
            rtkWorkRepository = new RTKWorkRepository(this);
            MyLog.i(TAG,"拷贝assert目录下的map" +
                    "和vechile json到包目录下");
            new Thread(new Runnable() {
@@ -165,7 +163,6 @@
//                CEventCenter.dispatchEvent(Constant.BIND_CONNECT_RTK_TOPIC,cmd,0,json);
                break;
            case Constant.RTK_PLATFORM_REGISTER_STATUS:
                CEventCenter.dispatchEvent(Constant.BIND_CONNECT_RTK_TOPIC,cmd,0,json);
@@ -297,7 +294,7 @@
                }else{
                    if (TextUtils.isEmpty(lastSn)){
                        lastSn =sn;
                        lastSn ="123";
                        return;
                    }
                    lastSn = sn;