app/src/main/AndroidManifest.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/pipirrapp/observer/LoginObserver.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/AndroidManifest.xml
@@ -26,7 +26,6 @@ <!--如果您的应用需要后台定位权限,且有可能运行在Android Q设备上,并且设置了target>28,必须增加这个权限声明--> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
@@ -53,6 +53,10 @@ import com.dayu.pipirrapp.utils.ToastUtil; import com.dayu.pipirrapp.utils.WebViewUtils; import com.dayu.pipirrapp.view.ConfirmDialog; import com.dayu.pipirrapp.view.TipUtil; import com.hjq.permissions.OnPermissionCallback; import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; import com.jeremyliao.liveeventbus.LiveEventBus; import com.tencent.bugly.crashreport.CrashReport; @@ -300,7 +304,7 @@ // } } else { //下载瓦片 ApiManager.getInstance().donwLoadTile(MapFragment.this.getContext(),androidUrl); ApiManager.getInstance().donwLoadTile(MapFragment.this.getContext(), androidUrl); } // Log.d(TAG, "在线加载>>>" + url); } @@ -343,7 +347,17 @@ }); //巡检按钮 binding.inspectButton.setOnClickListener(v -> { chageInspecState(InspectionUtils.STAT_INSPECTION_ONCLICK); if (XXPermissions.isGranted(MapFragment.this.getContext(), Permission.ACCESS_BACKGROUND_LOCATION)) { chageInspecState(InspectionUtils.STAT_INSPECTION_ONCLICK); } else { TipUtil.show(MapFragment.this.getActivity(), "巡检定位需要您选择\"始终允许\"定位信息,否则无法巡检。", new TipUtil.TipListener() { @Override public void onCancle() { getPermissions(); } }); } }); //暂停巡检 binding.inspectPause.setOnClickListener(v -> { @@ -522,18 +536,21 @@ confirmDialog.dismiss(); chageInspecState(InspectionUtils.NO_INSPECTION); SharedPreferencesHelper.getInstance(MapFragment.this.getContext()).put(CommonKeyName.inspectionState, InspectionUtils.NO_INSPECTION); //更新本地数据库结束时间 mInspectionBean.setStopTime(DateUtils.getNowDateStr()); InspectionUtils.upataInspectionData(MapFragment.this.getContext(), mInspectionBean); //上报结束时间 InspectionLocationBean inspectionLocationBean = InspectionUtils.createInspectionLocation(lastLatLonBean, mInspectionBean); InspectionUtils.addInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean); pushLocationData(inspectionLocationBean); mInspectionBean = new InspectionBean(); //清除地图巡检轨迹 mWebView.evaluateJavascript("javascript:cleanLocationLay()", value -> { }); lastLatLonBean = null; //有可能还没获取到定位信息就结束巡检了 if (lastLatLonBean != null) { //更新本地数据库结束时间 mInspectionBean.setStopTime(DateUtils.getNowDateStr()); InspectionUtils.upataInspectionData(MapFragment.this.getContext(), mInspectionBean); //上报结束时间 InspectionLocationBean inspectionLocationBean = InspectionUtils.createInspectionLocation(lastLatLonBean, mInspectionBean); InspectionUtils.addInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean); pushLocationData(inspectionLocationBean); mInspectionBean = new InspectionBean(); //清除地图巡检轨迹 mWebView.evaluateJavascript("javascript:cleanLocationLay()", value -> { }); lastLatLonBean = null; } } }); confirmDialog.show(); @@ -590,4 +607,42 @@ SharedPreferencesHelper.getInstance(this.getContext()).put(CommonKeyName.inspectionState, InspectionUtils.STAT_INSPECTION); } /** * 申请后台定位权限 */ private void getPermissions() { try { XXPermissions.with(MapFragment.this.getContext()) // 申请多个权限 .permission(Permission.ACCESS_BACKGROUND_LOCATION) .request(new OnPermissionCallback() { @Override public void onGranted(@NonNull List<String> permissions, boolean allGranted) { if (allGranted) { chageInspecState(InspectionUtils.STAT_INSPECTION_ONCLICK); } } @Override public void onDenied(@NonNull List<String> permissions, boolean doNotAskAgain) { if (doNotAskAgain) { // 如果是被永久拒绝就跳转到应用权限系统设置页面 TipUtil.show(MapFragment.this.getActivity(), "被永久拒绝授权,请手动授予定位始终允许权限!选择“权限”-->“位置信息”-->“始终允许”,然后返回应用。", new TipUtil.TipListener() { @Override public void onCancle() { XXPermissions.startPermissionActivity(MapFragment.this.getContext(), permissions); } }); } else { ToastUtil.showToastLong(MapFragment.this.getContext(), "获取定位始终允许权限失败"); } } }); } catch (Throwable e) { e.printStackTrace(); } } } app/src/main/java/com/dayu/pipirrapp/observer/LoginObserver.java
@@ -30,6 +30,7 @@ Permission.WRITE_EXTERNAL_STORAGE, Permission.READ_EXTERNAL_STORAGE, Permission.READ_PHONE_STATE }; Activity myActivity; @@ -60,7 +61,7 @@ @Override public void onGranted(@NonNull List<String> permissions, boolean allGranted) { if (permissions.contains(Permission.WRITE_EXTERNAL_STORAGE)){ if (permissions.contains(Permission.WRITE_EXTERNAL_STORAGE)) { TagBean tagBean = DaoSingleton.getInstance(myActivity).tagDao().findFirst(); if (tagBean == null || TextUtils.isEmpty(tagBean.getTag())) { choesLibrary(); @@ -68,24 +69,9 @@ MyApplication.myApplication.myTag = tagBean.getTag(); } } if (allGranted) { } if (!allGranted) { // toast("获取部分权限成功,但部分权限未正常授予"); return; } // if (!XXPermissions.isGranted(myActivity, Permission.SYSTEM_ALERT_WINDOW)) { // new TipDialog(MainActivity.this, "请开启悬浮窗权限,允许本应用显示在其他应用的上层", new TipUtil.TipListener() { // @Override // public void onCancle() { // XXPermissions.startPermissionActivity(MainActivity.this, Permission.SYSTEM_ALERT_WINDOW); // } // }).show(); // } // toast("获取录音和日历权限成功"); } @Override @@ -93,8 +79,6 @@ if (doNotAskAgain) { // toast("被永久拒绝授权,请手动授予录音和日历权限"); // 如果是被永久拒绝就跳转到应用权限系统设置页面 } else { // toast("获取录音和日历权限失败"); } app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
@@ -21,14 +21,13 @@ import com.dayu.pipirrapp.net.BaseResponse; import com.dayu.pipirrapp.net.subscribers.SubscriberListener; import com.dayu.pipirrapp.utils.DateUtils; import com.dayu.pipirrapp.utils.MyLog; import com.tencent.bugly.crashreport.CrashReport; import java.util.List; import java.util.UUID; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.functions.Action; import io.reactivex.rxjava3.functions.Consumer; import io.reactivex.rxjava3.schedulers.Schedulers; /** @@ -163,6 +162,7 @@ * @param inspectionLocationBeans */ private static void postInspectionData(Context context, InspectionBean inspectionBean, List<InspectionLocationBean> inspectionLocationBeans) { MyLog.d("postInspectionData>>>上传未上传成功的数据"); InspectionRequest inspectionRequest = new InspectionRequest(); inspectionRequest.setInspectId(inspectionBean.getInspectId()); inspectionRequest.setInspectorId(inspectionBean.getInspectorId()); @@ -182,19 +182,20 @@ public void onNext(BaseResponse<List<InsectionResult>> t) { try { if (t.isSuccess()) { MyLog.d("postInspectionData>>>上传未上传成功的数据》》》》成功"); if (t.getContent() != null) { inspectionBean.setInspectId(String.valueOf(t.getContent().get(0).getInspectId())); InspectionUtils.upataInspectionData(context, inspectionBean); } DaoSingleton.getAsynchInstance(context).inspectionLocationDao().updataByInspectIdSetIsPost(inspectionBean.getmInspectId()).subscribeOn(Schedulers.io()).observeOn(Schedulers.io()).subscribe(() -> { // 插入成功的回调 Log.d(TAG, "addInspectionLocationData数据插入成功"); Log.d(TAG, "updataByInspectIdSetIsPost数据插入成功"); }, throwable -> { // 处理错误 Log.e(TAG, "addInspectionLocationData数据插入失败", throwable); Log.e(TAG, "updataByInspectIdSetIsPost数据插入失败", throwable); }); } else { MyLog.d("postInspectionData>>>上传未上传成功的数据》》》》失败"); } } catch (Exception e) { e.printStackTrace(); @@ -272,7 +273,6 @@ inspectionLocationBean.setmInspectId(mInspectionBean.getmInspectId()); inspectionLocationBean.setLocateTime(DateUtils.getNowDateStr()); inspectionLocationBean.setPost(false); inspectionLocationBean.setLng(String.valueOf(latLonBean.getLongitude())); inspectionLocationBean.setLat(String.valueOf(latLonBean.getLatitude())); return inspectionLocationBean; app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java
@@ -51,17 +51,11 @@ public static void registerNetCallBack(Context context, ConnectivityManager.NetworkCallback networkCallback) { // 注册网络状态监听 ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); // 构建一个 NetworkRequest,指定感兴趣的网络类型 NetworkRequest networkRequest = new NetworkRequest.Builder() .build(); // 网络回调 // 注册网络监听 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { cm.registerNetworkCallback(networkRequest, networkCallback);