From 5f41a352c2bc933b3595a5c7c63f7f67c8ee5280 Mon Sep 17 00:00:00 2001
From: endian11 <Dana_Lee1016@126.com>
Date: 星期三, 25 十一月 2020 15:42:46 +0800
Subject: [PATCH] 修改app类,把发送规则参数改为权限允许之后(7.0);获取地图先要获取sn改到mainActvity里面,蓝牙连接且sn不为空,权限允许

---
 app/src/main/java/safeluck/drive/evaluation/Constant.java                   |    1 
 app/src/main/java/safeluck/drive/evaluation/app.java                        |   16 ++++-
 app/src/main/java/safeluck/drive/evaluation/MainActivity.java               |   71 ++++++++++++++++++++++-
 app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java      |   18 ++++++
 app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java               |    1 
 app/src/main/java/safeluck/drive/evaluation/viewmodels/AuthMapViewmodel.kt  |   35 +++++++++++
 app/src/main/java/safeluck/drive/evaluation/fragment/shop/ShopFragment.java |    7 ++
 app/src/main/java/safeluck/drive/evaluation/fragment/BleScanFragment.java   |    7 -
 8 files changed, 143 insertions(+), 13 deletions(-)

diff --git a/app/src/main/java/safeluck/drive/evaluation/Constant.java b/app/src/main/java/safeluck/drive/evaluation/Constant.java
index d466a8c..55d6c82 100644
--- a/app/src/main/java/safeluck/drive/evaluation/Constant.java
+++ b/app/src/main/java/safeluck/drive/evaluation/Constant.java
@@ -107,6 +107,7 @@
     public static final int ENTER_OR_EXIT_ROADCROSS_ID = 0x0016;
     //鐢ㄤ簬鎺ュ彈浜ф祴鏁版嵁
     public static final int ID_SM_CAN_BRIEF = 0x0021;
+    public static final Integer BLUETOOTH_CONNECT = 3;
     public static String exam_enter_exitdata="exam_enter_exitdata";
     public static int Chang_di = 2;
     public static int DaoLu_night = 3;
diff --git a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
index 109b774..5e5bc31 100644
--- a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
+++ b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -9,6 +9,7 @@
 import android.os.Build;
 import android.os.Bundle;
 
+import android.os.Environment;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
@@ -24,12 +25,16 @@
 import androidx.annotation.Nullable;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProviders;
+import androidx.work.Data;
+import androidx.work.OneTimeWorkRequest;
+import androidx.work.WorkManager;
 
 
 import me.yokeyword.fragmentation.SupportActivity;
 import safeluck.drive.evaluation.DB.appstatusdb.AppStatus;
 import safeluck.drive.evaluation.DB.appstatusdb.AppStatusViewModel;
 import safeluck.drive.evaluation.DB.rtktb.RTKConfig;
+import safeluck.drive.evaluation.DB.rtktb.RTKConfigUpdateWorker;
 import safeluck.drive.evaluation.DB.rtktb.RTKConfigViewModel;
 import safeluck.drive.evaluation.DB.signalConfigdb.SignalConfigViewModel;
 import safeluck.drive.evaluation.bean.ExamPlatformData;
@@ -38,6 +43,7 @@
 import safeluck.drive.evaluation.cEventCenter.ICEventListener;
 import safeluck.drive.evaluation.fragment.HomeFragment;
 
+import com.anyun.exam.lib.AYSdk;
 import com.anyun.im_lib.listener.IMSConnectStatusCallback;
 import com.google.gson.Gson;
 import com.safeluck.aykj.utils.BytesUtils;
@@ -45,6 +51,7 @@
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.Executors;
@@ -61,6 +68,7 @@
 import safeluck.drive.evaluation.util.PermissionManager;
 import safeluck.drive.evaluation.util.SPUtils;
 import safeluck.drive.evaluation.util.Utils;
+import safeluck.drive.evaluation.viewmodels.AuthMapViewmodel;
 import safeluck.drive.evaluation.viewmodels.ExamPlatformModel;
 import safeluck.drive.evaluation.viewmodels.TimeViewModel;
 
@@ -84,7 +92,7 @@
     public View viewtitle;
 
     private ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
-
+   private AuthMapViewmodel authMapViewmodel;
     private ICEventListener icEventListener = new ICEventListener() {
         @Override
         public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
@@ -111,6 +119,7 @@
                     try {
                         JSONObject jsonObject = new JSONObject((String) obj);
                         int bleStatus = jsonObject.getInt("bluetooth_stauts");
+                        String mac = jsonObject.getString("bluetooth_addr");
                         String des ="钃濈墮鍏抽棴";
                         switch (bleStatus){
                             case 0:
@@ -123,7 +132,9 @@
                                 des ="钃濈墮鏈繛鎺�";
                                 break;
                             case 3:
+                                authMapViewmodel.setAuthValue(3);
                                 des ="钃濈墮杩炴帴";
+                                SPUtils.put(getApplicationContext(),SPUtils.BLUETOOTH_MAC,mac);
                                 break;
                         }
                         tv_ble_status.setText(des);
@@ -138,8 +149,7 @@
         }
     };
     private List<SignalConfigRemote> signalConfiglist = new ArrayList<>();
-
-
+    private int permissionCount = 0;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -194,7 +204,21 @@
             }
         });
 
-
+        authMapViewmodel = ViewModelProviders.of(this).get(AuthMapViewmodel.class);
+        authMapViewmodel.getAuthValue().observe(this, new Observer<Integer>() {
+            @Override
+            public void onChanged(Integer integer) {
+                Log.i(TAG,"AuthMapViewmodel auth="+integer);
+                if (integer.intValue() == Constant.BLUETOOTH_CONNECT){
+                    MyLog.i(TAG,"Bluetooth connected锛宎uth permission and sn != null");
+                    String sn = ExamPlatformData.getInstance().getMcuSN();
+                    MyLog.i(TAG,"鏉冮檺鍏佽锛岃幏寰楀埌鐨剆n="+sn);
+                    Data data = new Data.Builder().putString(safeluck.drive.evaluation.DB.Constant.RTK_CONFIG_UPDATE_JSON,sn).build();
+                    OneTimeWorkRequest rtkConfigUpdateWorker= new OneTimeWorkRequest.Builder(RTKConfigUpdateWorker.class).setInputData(data).build();
+                    WorkManager.getInstance(getApplicationContext()).enqueue(rtkConfigUpdateWorker);
+                }
+            }
+        });
         // TODO
         //  杩涜tcp杩炴帴
         final String userId = "100002";
@@ -254,6 +278,16 @@
             @Override
             public void authorized(int requestCode) {
                 Log.d(TAG, "requestCode = " + requestCode);
+                permissionCount++;
+                if (permissionCount == PERMISSIONS.length){
+                    ExamPlatformData.getInstance().setCanWriteSD(true);
+                    //鍙app涓嶉攢姣侊紙閲嶅惎锛夊彧浼氳姹備竴娆★紝浣嗘槸纭繚PERMISSIONS鏈�鍚庝竴涓厓绱犳槸writeSD
+                    CThreadPoolExecutor.runInBackground(()->{
+                        MyLog.i(TAG,"鏉冮檺鍏佽锛屽紑濮嬪彂閫侀厤缃弬鏁�");
+                        sendJudgeArgs();
+                    });
+                }
+
             }
 
             @Override
@@ -288,7 +322,36 @@
 
     }
 
+    private void sendJudgeArgs() {
+        FileUtil.createdirs(getApplicationContext());
+        File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+getPackageName());
 
+        List<String> names = ExamPlatformData.getRulesettingFilesName();
+        for (int i = 0; i < names.size(); i++) {
+            File settFile = new File(dir,names.get(i));
+            if (settFile.exists() ){
+                Log.i(TAG,settFile.getName()+"瀛樺湪涓嶅鍒�");
+            }else{
+                Log.i(TAG,settFile.getName()+"涓嶅瓨鍦紝澶嶅埗...");
+                FileUtil.copyAssertFileToSD(getApplicationContext(),names.get(i));
+            }
+        }
+
+        if (dir.exists()){
+            File[] files = dir.listFiles();
+            for (int i = 0; i < files.length; i++) {
+                Log.i(TAG,files[i].getName());
+                if (names.contains(files[i].getName())){
+
+
+                    byte[] buffer = FileUtil.readFile(files[i].getAbsolutePath());
+                    AYSdk.getInstance().sendCmd(Constant.ID_judge_args,new String(buffer).trim());
+                }else{
+
+                }
+            }
+        }
+    }
     @Override
     protected void onDestroy() {
         super.onDestroy();
diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index cb30234..787ad71 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -68,6 +68,7 @@
 import safeluck.drive.evaluation.util.CThreadPoolExecutor;
 import safeluck.drive.evaluation.util.DataInitKt;
 import safeluck.drive.evaluation.util.FileUtil;
+import safeluck.drive.evaluation.util.SPUtils;
 import safeluck.drive.evaluation.util.SystemUtil;
 import safeluck.drive.evaluation.util.Utils;
 
@@ -134,7 +135,13 @@
 //            OneTimeWorkRequest mcuUpgradeWorker = OneTimeWorkRequest.from(MCUUpgradeWorker.class);
 //            WorkManager.getInstance(getApplicationContext()).beginWith(examStatausOutWorker).then(mcuUpgradeWorker).enqueue();
 
-            sendJudgeArgs();
+            //鍙戦�佽摑鐗欓厤缃秷鎭�
+            String mac= (String) SPUtils.get(getAppContext(),SPUtils.BLUETOOTH_MAC,"");
+            if (!TextUtils.isEmpty(mac)){
+
+                AYSdk.getInstance().sendCmd(Constant.ID_MS_BLUETOOTH_NAME,mac);
+            }
+
 
 
         });
@@ -524,9 +531,10 @@
                         return;
                     }
                     lastSn = sn;
-                    Data data = new Data.Builder().putString(safeluck.drive.evaluation.DB.Constant.RTK_CONFIG_UPDATE_JSON,sn).build();
-                    OneTimeWorkRequest rtkConfigUpdateWorker= new OneTimeWorkRequest.Builder(RTKConfigUpdateWorker.class).setInputData(data).build();
-                    WorkManager.getInstance(getAppContext()).enqueue(rtkConfigUpdateWorker);
+                    ExamPlatformData.getInstance().setMcuSN(sn);
+//                    Data data = new Data.Builder().putString(safeluck.drive.evaluation.DB.Constant.RTK_CONFIG_UPDATE_JSON,sn).build();
+//                    OneTimeWorkRequest rtkConfigUpdateWorker= new OneTimeWorkRequest.Builder(RTKConfigUpdateWorker.class).setInputData(data).build();
+//                    WorkManager.getInstance(getAppContext()).enqueue(rtkConfigUpdateWorker);
                 }
                 CEventCenter.dispatchEvent(Constant.BIND_MCUINFO_TOPIC,cmd,0,json);
                 break;
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java b/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
index 04d65c3..eefdab1 100644
--- a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
@@ -93,6 +93,8 @@
     private static List<SimulateNightBean.QuestionBean> simulate_light_tips = new ArrayList<>();
 
     private static List<String> RulesettingFilesName = new ArrayList<>();
+    private String mcuSN;
+    private  boolean canWriteSD;
 
     public static List<String> getRulesettingFilesName() {
         return RulesettingFilesName;
@@ -237,6 +239,14 @@
     public int getPlatformPort(){
         port = (int) SPUtils.get(app.getAppContext(),SPUtils.PLATFORM_PORT,12125);
         return port;
+    }
+
+    public boolean isCanWriteSD() {
+        return canWriteSD;
+    }
+
+    public void setCanWriteSD(boolean canWriteSD) {
+        this.canWriteSD = canWriteSD;
     }
 
     /**
@@ -581,4 +591,12 @@
     public String getSMCanBrief(){
         return smCanBriefString;
     }
+
+    public void setMcuSN(String sn) {
+        this.mcuSN = sn;
+    }
+
+    public String getMcuSN(){
+        return mcuSN;
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/BleScanFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/BleScanFragment.java
index de2ec2e..53cf2a7 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/BleScanFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/BleScanFragment.java
@@ -150,13 +150,10 @@
          if (by != null){
              BluetoothDevice ble = by.getBleDevice();
              if (ble!=null ){
-                 String name = ble.getName();
-                 if (TextUtils.isEmpty(name)){
-                     name = "鏈煡";
-                 }
+
                  JSONObject jsonObject = new JSONObject();
                  try {
-                     jsonObject.put("bluetooth_name",name);
+
                      jsonObject.put("bluetooth_addr",ble.getAddress());
                  } catch (JSONException e) {
                      e.printStackTrace();
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/shop/ShopFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/shop/ShopFragment.java
index 7cd4550..6a54709 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/shop/ShopFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/shop/ShopFragment.java
@@ -93,4 +93,11 @@
             }
         });
     }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        ((MainActivity)_mActivity).viewtitle.setVisibility(View.VISIBLE);
+        ((MainActivity)_mActivity).btn_return.setVisibility(View.VISIBLE);
+    }
 }
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 ca3de39..0472083 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java
+++ b/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java
@@ -36,6 +36,7 @@
     public static final String SIGN_MODE = "sign_mode";
     public static final String EXAM_ID = "exam_id";
     public static final String EXAM_ROUTE_ID = "exam_route_id";//璁粌/鑰冭瘯鐢ㄧ殑 绾胯矾id锛屾湰鍦板寲瀛樺偍锛宎pp閲嶇疆涔嬪悗鏍规嵁瀹冩绱㈡暟鎹簱
+    public static final String BLUETOOTH_MAC = "bluetooth_mac";
 
     //灏� HashMap 鐢╯p瀛樺偍璧锋潵
     public static void saveHashMap(HashMap<BaseDataUIBean.TYPE_,MapInfoHead> map, Context context){
diff --git a/app/src/main/java/safeluck/drive/evaluation/viewmodels/AuthMapViewmodel.kt b/app/src/main/java/safeluck/drive/evaluation/viewmodels/AuthMapViewmodel.kt
new file mode 100644
index 0000000..3f46cfb
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/viewmodels/AuthMapViewmodel.kt
@@ -0,0 +1,35 @@
+package safeluck.drive.evaluation.viewmodels
+
+import android.util.Log
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+import safeluck.drive.evaluation.bean.ExamPlatformData
+
+/**DriveJudge
+ *
+ *
+ * 钃濈墮杩炴帴涓� 鏃讹紝涓旀潈闄愰�氳繃鍜宻n涓嶄负绌猴紝鍐嶈缃產uth鍊�
+ * Created by lzw on 2020/11/25. 14:53:48
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class AuthMapViewmodel :ViewModel(){
+    private val TAG= "AuthMapViewmodel"
+    private var auth:MutableLiveData<Int> = MutableLiveData<Int>()
+    private var flag:Boolean = false;
+    fun getAuthValue():LiveData<Int>{
+        return auth
+    }
+
+    fun setAuthValue(vale:Int){
+        Log.i(TAG,"璁剧疆鍊�"+vale)
+        if (ExamPlatformData.getInstance().mcuSN !=null
+                && ExamPlatformData.getInstance().isCanWriteSD){
+            if (!flag){
+                flag = true
+            auth.postValue(vale)
+            }
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0