| | |
| | | import android.location.LocationManager; |
| | | import android.os.Build; |
| | | import android.os.Bundle; |
| | | import android.text.TextUtils; |
| | | import android.util.Log; |
| | | import android.view.LayoutInflater; |
| | | import android.view.View; |
| | |
| | | import com.dayu.pipirrapp.tool.InspectionUtils; |
| | | import com.dayu.pipirrapp.utils.CommonData; |
| | | import com.dayu.pipirrapp.utils.CommonKeyName; |
| | | import com.dayu.pipirrapp.utils.DateUtils; |
| | | import com.dayu.pipirrapp.utils.MapJpgUtils; |
| | | import com.dayu.pipirrapp.utils.MyLog; |
| | | import com.dayu.pipirrapp.utils.SharedPreferencesHelper; |
| | | 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; |
| | | |
| | |
| | | @Override |
| | | public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { |
| | | String url = request.getUrl().toString(); |
| | | Log.i(TAG, "加载地址>>>" + url); |
| | | // Log.d(TAG, "加载地址>>>" + url); |
| | | //判断当前是否为加载瓦片 |
| | | if (MapJpgUtils.getInsatance().isTianDiTuTileRequest(url)) { |
| | | String androidUrl = url.replace(CommonData.webKey, CommonData.androidKey); |
| | | // 检查本地缓存 |
| | | File cachedTile = MapJpgUtils.getInsatance().getCachedTile(androidUrl); |
| | | if (cachedTile != null && cachedTile.exists()) { |
| | | Log.i(TAG, "本地缓存>>>" + androidUrl); |
| | | // Log.d(TAG, "本地缓存>>>" + androidUrl); |
| | | // if (MapJpgUtils.getInsatance().validateImageFile(androidUrl,request.)) |
| | | // 判断缓存是否过期 |
| | | // if (!MapJpgUtils.getInsatance(MapFragment.this.getContext()).isCacheExpired(cachedTile)) { |
| | |
| | | // } |
| | | } else { |
| | | //下载瓦片 |
| | | ApiManager.getInstance().donwLoadTile(androidUrl); |
| | | ApiManager.getInstance().donwLoadTile(MapFragment.this.getContext(), androidUrl); |
| | | } |
| | | Log.i(TAG, "在线加载>>>" + url); |
| | | // Log.d(TAG, "在线加载>>>" + url); |
| | | } |
| | | |
| | | |
| | |
| | | }); |
| | | //巡检按钮 |
| | | 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 -> { |
| | |
| | | //停止巡检 |
| | | binding.inspectClose.setOnClickListener(v -> { |
| | | chageInspecState(InspectionUtils.STOP_INSPECTION); |
| | | }); |
| | | //上报问题 |
| | | binding.putButton.setOnClickListener(v->{ |
| | | |
| | | }); |
| | | } |
| | | |
| | |
| | | */ |
| | | private void pushLocationData(InspectionLocationBean inspectionLocationBean) { |
| | | inspectionRequest.setInspectId(inspectionLocationBean.getInspectId()); |
| | | inspectionRequest.setInspectorId(inspectionLocationBean.getInspectorId()); |
| | | inspectionRequest.setInspectorId(mInspectionBean.getInspectorId()); |
| | | if (mInspectionBean != null) { |
| | | inspectionRequest.setStartTime(mInspectionBean.getStartTime()); |
| | | inspectionRequest.setStopTime(mInspectionBean.getStopTime()); |
| | | if (!TextUtils.isEmpty(mInspectionBean.getStopTime())) { |
| | | inspectionRequest.setStopTime(mInspectionBean.getStopTime()); |
| | | } |
| | | } |
| | | InspectionRequest.Track track = new InspectionRequest.Track(); |
| | | track.setLat(inspectionLocationBean.getLat()); |
| | |
| | | try { |
| | | if (t.isSuccess()) { |
| | | if (t.getContent() != null) { |
| | | |
| | | mInspectionBean.setInspectId(String.valueOf(t.getContent().get(0).getInspectId())); |
| | | InspectionUtils.upataInspectionData(MapFragment.this.getContext(), mInspectionBean); |
| | | } |
| | | inspectionLocationBean.setPost(true); |
| | | InspectionUtils.updateInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean); |
| | |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 开始巡检 |
| | | */ |
| | | private void startInspection() { |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | |
| | | InspectionLocationBean inspectionLocationBean = InspectionUtils.createInspectionLocation(latLonBean, mInspectionBean); |
| | | InspectionUtils.addInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean); |
| | | //更新到地图 |
| | | mWebView.evaluateJavascript("javascript:updateInspectionLocation(\"" + latLonBean.getLongitude() + "\",\"" + latLonBean.getLatitude() + "\")", value -> { |
| | | }); |
| | | mWebView.evaluateJavascript("javascript:updateLocation(\"" + latLonBean.getLongitude() + "\",\"" + latLonBean.getLatitude() + "\")", value -> { |
| | | }); |
| | | //上传坐标 |
| | |
| | | location.putExtra("isSingle", false); |
| | | //0没有开始,1开始,2暂停,3关闭 |
| | | switch (inspectionState) { |
| | | case 0: |
| | | case InspectionUtils.NO_INSPECTION: |
| | | binding.inspectButton.setVisibility(View.VISIBLE); |
| | | binding.inspectRL.setVisibility(View.GONE); |
| | | binding.inspectButton.setText("巡"); |
| | |
| | | |
| | | startLocation(location); |
| | | break; |
| | | case 2://暂停 |
| | | case InspectionUtils.PAUSE_INSPECTION://暂停 |
| | | try { |
| | | //关闭定位 |
| | | this.getActivity().stopService(location); |
| | |
| | | binding.inspectPause.setText("继续"); |
| | | binding.inspectRL.setBackgroundColor(this.getContext().getResources().getColor(R.color.inspect_rl_bg_color)); |
| | | SharedPreferencesHelper.getInstance(this.getContext()).put(CommonKeyName.inspectionState, InspectionUtils.PAUSE_INSPECTION); |
| | | //清除地图巡检轨迹 |
| | | mWebView.evaluateJavascript("javascript:cleanLoclLay()", value -> { |
| | | }); |
| | | } catch (Resources.NotFoundException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | break; |
| | | case 3: |
| | | case InspectionUtils.STOP_INSPECTION://关闭 |
| | | ConfirmDialog confirmDialog = new ConfirmDialog(MapFragment.this.getActivity(), "提示", "确认关闭巡检吗?", new ConfirmDialog.ConfirmOnClickListener() { |
| | | @Override |
| | | public void onClick(ConfirmDialog confirmDialog, View v) { |
| | | confirmDialog.dismiss(); |
| | | chageInspecState(InspectionUtils.NO_INSPECTION); |
| | | SharedPreferencesHelper.getInstance(MapFragment.this.getContext()).put(CommonKeyName.inspectionState, InspectionUtils.NO_INSPECTION); |
| | | //有可能还没获取到定位信息就结束巡检了 |
| | | 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(); |
| | |
| | | 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(); |
| | | } |
| | | } |
| | | } |