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