From 4230457ee9edca6af738ec3f832ed0f49d0d99c3 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期三, 04 十二月 2024 18:10:30 +0800
Subject: [PATCH] 1.下载地图瓦片判断是否有网。 2.没有上传成功的巡检坐标有网时重新上传。 3.添加网络判断的工具类
---
app/src/main/java/com/dayu/pipirrapp/dao/InspectionLocationDao.java | 11 +
app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java | 2
app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java | 90 +++-------
app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java | 2
app/src/main/assets/js/map.js | 69 +++++--
app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java | 109 +++++++++++
app/src/main/java/com/dayu/pipirrapp/net/MyIntercepterApplication.java | 12
app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionLocationBean.java | 9
app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java | 12
app/src/main/res/layout/activity_login.xml | 4
app/src/main/java/com/dayu/pipirrapp/dao/InspectionDao.java | 2
app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java | 80 ++++++++
app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java | 55 +++++
app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionBean.java | 25 ++
app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java | 42 +++-
app/src/main/java/com/dayu/pipirrapp/utils/MyLog.java | 4
16 files changed, 400 insertions(+), 128 deletions(-)
diff --git a/app/src/main/assets/js/map.js b/app/src/main/assets/js/map.js
index a3f9e30..367686b 100644
--- a/app/src/main/assets/js/map.js
+++ b/app/src/main/assets/js/map.js
@@ -48,7 +48,7 @@
// 鍦板浘鐐瑰嚮鍚庤幏鍙栫粡绾害
function getLngLat(lnglat) {
console.log(lnglat.lng.toFixed(6) + "," + lnglat.lat.toFixed(6));
- addClickOverLay(lnglat);
+ // addClickOverLay(lnglat);
}
// 鐐瑰嚮鍚庢坊鍔犲潗鏍囩偣
@@ -169,6 +169,10 @@
window.setCenterAndZoom = setCenterAndZoom;
window.updateLocation = updateLocation;
window.aginShowLocation = aginShowLocation;
+ window.cleanLocationLay = cleanLocationLay;
+ window.updateInspectionLocation=updateInspectionLocation;
+ window.cleanLoclLay=cleanLoclLay;
+
}
// 璋冪敤鍘熺敓瀹夊崜鏂规硶鏄剧ず鍙栨按鍙h鎯�
@@ -271,18 +275,8 @@
});
return "addMarker鍔犺浇鎴愬姛"
}
- //淇濆瓨瀹氫綅鍧愭爣鐢熸垚杞ㄨ抗
- var path = [];
- var lineLayer = new T.Polyline([], { color: '#ff4500', weight: 3, opacity: 0.8 });
- let locationMarker;
+ //鏇存柊瀹氫綅鍧愭爣
function updateLocation(log, lat) {
- var lastLat = lat;
- // const intervalId = setInterval(() => {
- // lastLat=lastLat+0.0001;
- var newPoint = new T.LngLat(log, lastLat);
- path.push(newPoint);
- lineLayer.setLngLats(path);
- map.addOverLay(lineLayer);
let icon = new T.Icon({
iconUrl: locationIMGPath,
iconSize: new T.Point(20, 20),
@@ -291,21 +285,58 @@
if (locationMarker) {
map.removeOverLay(locationMarker);
}
- locationMarker = new T.Marker(new T.LngLat(log, lastLat), { icon: icon });
+ var newPoint = new T.LngLat(log, lat);
+ locationMarker = new T.Marker(newPoint, { icon: icon });
map.addOverLay(locationMarker);
- // 绉诲姩鍦板浘瑙嗚鍒版渶鍚庝竴涓綅缃�
map.panTo(newPoint);
- // }, 500);
-
}
+ //淇濆瓨瀹氫綅鍧愭爣鐢熸垚杞ㄨ抗
+ var path = [];
+ var lineLayer = new T.Polyline([], { color: '#ff4500', weight: 3, opacity: 0.8 });
+ let locationMarker;
+ function updateInspectionLocation(log, lat) {
+ var lastLat = lat;
+ // const intervalId = setInterval(() => {
+ // lastLat=lastLat+0.0001;
+ var newPoint = new T.LngLat(log, lastLat);
+ path.push(newPoint);
+ lineLayer.setLngLats(path);
+ map.addOverLay(lineLayer);
+ // 绉诲姩鍦板浘瑙嗚鍒版渶鍚庝竴涓綅缃�
+
+ // }, 500);
+ }
+
var aginPath = [];
+ var oldLineLayer = new T.Polyline([], { color: '#ff4500', weight: 3, opacity: 0.8 });
+ //鏄剧ず鍥犲紓甯稿叧闂殑宸℃璁板綍
function aginShowLocation(lng, lat) {
// 璋冪敤 Android 鎻愪緵鐨勬帴鍙o紝鑾峰彇鏁版嵁
- console.log("aginShowLocation>>lng:"+lng+">>>lat:"+lat);
+ console.log("aginShowLocation>>lng:" + lng + ">>>lat:" + lat);
var newPoint = new T.LngLat(lng, lat);
aginPath.push(newPoint);
- lineLayer.setLngLats(aginPath);
- map.addOverLay(lineLayer);
+ oldLineLayer.setLngLats(aginPath);
+ map.addOverLay(oldLineLayer);
+ }
+ //娓呴櫎宸℃璁板綍杞ㄨ抗
+ function cleanLocationLay() {
+ if (lineLayer) {
+ map.removeOverLay(lineLayer);
+ path=[]
+ }
+ if (locationMarker) {
+ map.removeOverLay(locationMarker);
+ }
+ if (oldLineLayer) {
+ aginPath=[]
+ map.removeOverLay(oldLineLayer);
+ }
+ }
+ //娓呴櫎鏈湴瀹氫綅鍧愭爣浣嶇疆
+ function cleanLoclLay(){
+ if (locationMarker) {
+ map.removeOverLay(locationMarker);
+ }
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java
index 2976fb0..e394ea6 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java
@@ -1,10 +1,13 @@
package com.dayu.pipirrapp.activity;
+import android.net.ConnectivityManager;
+import android.net.Network;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.widget.Toast;
+import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
@@ -19,6 +22,9 @@
import com.dayu.pipirrapp.fragment.MapFragment;
import com.dayu.pipirrapp.fragment.MyFragment;
import com.dayu.pipirrapp.net.MqttManager;
+import com.dayu.pipirrapp.tool.InspectionUtils;
+import com.dayu.pipirrapp.utils.MyLog;
+import com.dayu.pipirrapp.utils.NetUtils;
import java.util.ArrayList;
import java.util.List;
@@ -41,13 +47,17 @@
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(LayoutInflater.from(this));
setContentView(binding.getRoot());
-
+ registNetCallBack();
setupFragments();
initView();
initTab();
- TagBean tagBean = DaoSingleton.getInstance(this).tagDao().findFirst();
- MyApplication.myApplication.myTag = tagBean.getTag();
+ try {
+ TagBean tagBean = DaoSingleton.getInstance(this).tagDao().findFirst();
+ MyApplication.myApplication.myTag = tagBean.getTag();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
mqttManager = new MqttManager(this);
mqttManager.connect();
}
@@ -90,7 +100,12 @@
protected void onDestroy() {
super.onDestroy();
//鍏抽棴MQ
- mqttManager.disconnect();
+ try {
+ mqttManager.disconnect();
+ unregisterNetworkCallback();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
/**
@@ -145,4 +160,36 @@
binding.myImg.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.bottom_my_black));
binding.myText.setTextColor(ContextCompat.getColor(this, R.color.black));
}
+
+ // 娉ㄥ唽缃戠粶鐩戞帶
+ private void registNetCallBack() {
+ NetUtils.registerNetCallBack(this, networkCallback);
+ }
+
+ private void unregisterNetworkCallback() {
+ NetUtils.unregisterReceiver(this, networkCallback);
+ }
+
+ //缃戠粶鐩戞帶
+ ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
+ @Override
+ public void onAvailable(@NonNull Network network) {
+ super.onAvailable(network);
+ // 杩欓噷鍙互鎵ц缃戠粶鍙敤鍚庣殑閫昏緫锛屾瘮濡傝繘琛屾暟鎹姹傜瓑
+ MyLog.d("onAvailable");
+ InspectionUtils.aginPutInspectionData(MainActivity.this);
+ }
+
+ @Override
+ public void onLost(@NonNull Network network) {
+ super.onLost(network);
+ // 杩欓噷鍙互鎵ц缃戠粶涓㈠け鍚庣殑閫昏緫锛屾瘮濡傚仠姝㈡暟鎹姹傜瓑
+ MyLog.d("onLost");
+ }
+ };
+
+
+
+
+
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionBean.java b/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionBean.java
index d370968..55838f4 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionBean.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionBean.java
@@ -1,5 +1,6 @@
package com.dayu.pipirrapp.bean.db;
+import androidx.annotation.NonNull;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@@ -12,12 +13,32 @@
*/
@Entity
public class InspectionBean {
- @PrimaryKey(autoGenerate = true)
- public long id;
+ @PrimaryKey()
+ @NonNull
+ public String id;
public String inspectId;//宸℃ID
public String mInspectId;//鏈湴鏁版嵁搴撳贰妫�ID
public String startTime;//寮�濮嬪贰妫�鏃堕棿
public String stopTime;//鍋滄宸℃鏃堕棿
+ public String inspectorId;//宸℃鍛業D
+
+
+ public String getInspectorId() {
+ return inspectorId;
+ }
+
+ public void setInspectorId(String inspectorId) {
+ this.inspectorId = inspectorId;
+ }
+
+ @NonNull
+ public String getId() {
+ return id;
+ }
+
+ public void setId(@NonNull String id) {
+ this.id = id;
+ }
public String getmInspectId() {
return mInspectId;
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionLocationBean.java b/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionLocationBean.java
index 521044c..16739fc 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionLocationBean.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionLocationBean.java
@@ -16,7 +16,7 @@
@PrimaryKey()
@NonNull
public String id;
- public String inspectorId;//宸℃鍛業D
+
public String inspectId;//宸℃ID
public String mInspectId;//鏈湴鏁版嵁搴撳贰妫�ID
public String lng;//缁忓害
@@ -40,13 +40,6 @@
this.mInspectId = mInspectId;
}
- public String getInspectorId() {
- return inspectorId;
- }
-
- public void setInspectorId(String inspectorId) {
- this.inspectorId = inspectorId;
- }
public String getInspectId() {
return inspectId;
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java
index a7f834e..a509e35 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java
@@ -10,22 +10,22 @@
public class InsectionResult {
- String inspectId;//宸℃id
- String inspectorId;//宸℃鍛榠d
+ long inspectId;//宸℃id
+ long inspectorId;//宸℃鍛榠d
- public String getInspectId() {
+ public long getInspectId() {
return inspectId;
}
- public void setInspectId(String inspectId) {
+ public void setInspectId(long inspectId) {
this.inspectId = inspectId;
}
- public String getInspectorId() {
+ public long getInspectorId() {
return inspectorId;
}
- public void setInspectorId(String inspectorId) {
+ public void setInspectorId(long inspectorId) {
this.inspectorId = inspectorId;
}
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/InspectionDao.java b/app/src/main/java/com/dayu/pipirrapp/dao/InspectionDao.java
index 72bd3c5..8903dff 100644
--- a/app/src/main/java/com/dayu/pipirrapp/dao/InspectionDao.java
+++ b/app/src/main/java/com/dayu/pipirrapp/dao/InspectionDao.java
@@ -19,7 +19,7 @@
Completable insert(InspectionBean inspectionBean);
@Update
- void update(InspectionBean inspectionBean);
+ Completable update(InspectionBean inspectionBean);
@Delete
void delete(InspectionBean inspectionBean);
diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/InspectionLocationDao.java b/app/src/main/java/com/dayu/pipirrapp/dao/InspectionLocationDao.java
index 801797c..efb9a3a 100644
--- a/app/src/main/java/com/dayu/pipirrapp/dao/InspectionLocationDao.java
+++ b/app/src/main/java/com/dayu/pipirrapp/dao/InspectionLocationDao.java
@@ -32,12 +32,19 @@
InspectionLocationBean findFirst();
//鏌ヨ鎵�鏈夋病鏈変笂浼犵殑鍧愭爣
- @Query("select * from InspectionLocationBean where isPost=false")
- List<InspectionLocationBean> findByNoPost();
+ @Query("select * from InspectionLocationBean where isPost=false AND mInspectId=:mInspectId ORDER BY locateTime ASC")
+ Single<List<InspectionLocationBean>> findByNoPostAndInspectId(String mInspectId);
//鏌ヨ鎵�鏈夎宸℃id鐨勫潗鏍�
@Query("select * from InspectionLocationBean where mInspectId=:mInspectId ORDER BY locateTime ASC")
Single<List<InspectionLocationBean>> findByInspectId(String mInspectId);
+ //鏌ヨ鎵�鏈夋湭涓婁紶鐨刴InspectId
+ @Query("SELECT DISTINCT mInspectId FROM InspectionLocationBean WHERE isPost = false")
+ Single<List<String>> getUnpostedMInspectIds();
+
+ //鏇存柊鎵�鏈塵InspectId涓嬬殑宸蹭笂浼犵姸鎬�
+ @Query("UPDATE InspectionLocationBean SET isPost = true WHERE mInspectId = :mInspectId")
+ Completable updataByInspectIdSetIsPost(String mInspectId);
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
index b4d3094..ac24cfa 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
@@ -8,6 +8,7 @@
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;
@@ -45,6 +46,7 @@
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;
@@ -278,14 +280,14 @@
@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)) {
@@ -298,9 +300,9 @@
// }
} else {
//涓嬭浇鐡︾墖
- ApiManager.getInstance().donwLoadTile(androidUrl);
+ ApiManager.getInstance().donwLoadTile(MapFragment.this.getContext(),androidUrl);
}
- Log.i(TAG, "鍦ㄧ嚎鍔犺浇>>>" + url);
+// Log.d(TAG, "鍦ㄧ嚎鍔犺浇>>>" + url);
}
@@ -398,10 +400,12 @@
*/
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());
@@ -415,7 +419,8 @@
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);
@@ -454,6 +459,8 @@
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 -> {
});
//涓婁紶鍧愭爣
@@ -476,7 +483,7 @@
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("宸�");
@@ -493,7 +500,7 @@
startLocation(location);
break;
- case 2://鏆傚仠
+ case InspectionUtils.PAUSE_INSPECTION://鏆傚仠
try {
//鍏抽棴瀹氫綅
this.getActivity().stopService(location);
@@ -501,17 +508,32 @@
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);
+ //鏇存柊鏈湴鏁版嵁搴撶粨鏉熸椂闂�
+ 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();
diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java
index 046e695..4f5be47 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java
@@ -22,8 +22,6 @@
import com.dayu.pipirrapp.utils.SharedPreferencesHelper;
import com.dayu.pipirrapp.utils.ToastUtil;
import com.dayu.pipirrapp.view.ConfirmDialog;
-import com.dayu.pipirrapp.view.TagDialog;
-import com.dayu.pipirrapp.view.TipDialog;
import com.dayu.pipirrapp.view.TipUtil;
/**
diff --git a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
index 8e03e6f..dc7a736 100644
--- a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
+++ b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
@@ -1,10 +1,6 @@
package com.dayu.pipirrapp.net;
import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.NetworkCapabilities;
-import android.net.NetworkInfo;
-import android.os.Build;
import android.util.Log;
import com.dayu.pipirrapp.MyApplication;
@@ -18,6 +14,7 @@
import com.dayu.pipirrapp.net.upload.UploadFileListener;
import com.dayu.pipirrapp.utils.MapJpgUtils;
import com.dayu.pipirrapp.utils.MyJsonParser;
+import com.dayu.pipirrapp.utils.NetUtils;
import java.util.HashMap;
import java.util.List;
@@ -88,6 +85,7 @@
public <T> void requestGet(final Context context, final String path, final Class<T> tClass, final Map<String, Object> params, final SubscriberListener listener) {
request(context, false, path, true, tClass, params, listener);
}
+
public <T> void requestGetHideLoading(final Context context, final String path, final Class<T> tClass, final Map<String, Object> params, final SubscriberListener listener) {
request(context, true, path, true, tClass, params, listener);
}
@@ -201,7 +199,7 @@
* @param <T>
*/
public <T> void getCode(Map<String, Object> params, CodeListener listener) {
- if (isNetworkAvailable(MyApplication.myApplication)) {
+ if (NetUtils.isNetworkAvailable(MyApplication.myApplication)) {
Observable observable;
observable = apiService.getCode(params);
observable.subscribeOn(Schedulers.io())
@@ -224,33 +222,31 @@
*
* @param urlPath
*/
- public void donwLoadTile(String urlPath) {
- Observable<ResponseBody> observable;
- observable = apiService.downloadTile(urlPath);
+ public void donwLoadTile(Context context, String urlPath) {
+ if (NetUtils.isNetworkAvailable(context)) {
+ Observable<ResponseBody> observable;
+ observable = apiService.downloadTile(urlPath);
+ observable
+ .subscribeOn(Schedulers.io()) // 缃戠粶璇锋眰鍦� I/O 绾跨▼涓繘琛�
+ .observeOn(Schedulers.io()) // 鍥炶皟澶勭悊涔熷湪 I/O 绾跨▼
+ .subscribe(
+ responseBody -> {
-
-// compositeDisposable.add(
- observable
- .subscribeOn(Schedulers.io()) // 缃戠粶璇锋眰鍦� I/O 绾跨▼涓繘琛�
- .observeOn(Schedulers.io()) // 鍥炶皟澶勭悊涔熷湪 I/O 绾跨▼
- .subscribe(
- responseBody -> {
-
- boolean success = false;
- if (!MapJpgUtils.getInsatance().isHasFiles(urlPath)) {
- success = MapJpgUtils.getInsatance().saveTileToCache(urlPath, responseBody);
- }
- if (success) {
- Log.d(TAG, "Download success for tile: " + urlPath);
- } else {
- Log.e(TAG, "Failed to save tile to disk: " + urlPath);
- }
- },
- throwable -> Log.e(TAG, "Download failed for tile: " + urlPath)
- );
-// );
-
-
+ boolean success = false;
+ if (!MapJpgUtils.getInsatance().isHasFiles(urlPath)) {
+ success = MapJpgUtils.getInsatance().saveTileToCache(urlPath, responseBody);
+ }
+ if (success) {
+ Log.d(TAG, "Download success for tile: " + urlPath);
+ } else {
+ Log.e(TAG, "Failed to save tile to disk: " + urlPath);
+ }
+ },
+ throwable -> Log.e(TAG, "Download failed for tile: " + urlPath)
+ );
+ } else {
+ Log.e(TAG, "娌℃湁缃戠粶涓嶄笅杞�: " + urlPath);
+ }
}
// 鍋滄绾跨▼姹狅紝閲婃斁璧勬簮
@@ -260,36 +256,6 @@
}
}
- /**
- * 鍒ゆ柇褰撳墠鏄惁鏈夌綉缁�
- *
- * @param context
- * @return
- */
- public boolean isNetworkAvailable(Context context) {
- ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
-
- if (connectivityManager != null) {
- // 瀵逛簬 Android 鐗堟湰澶т簬绛変簬 Android Q (API level 29)
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
- NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
- if (capabilities != null) {
- // 妫�鏌ョ綉缁滄槸鍚︽湁浼犺緭鑳藉姏锛堝寘鎷� Wi-Fi 鍜岀Щ鍔ㄦ暟鎹級
- if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
- return true;
- }
- }
- } else {
- // 瀵逛簬 Android Q 浠ヤ笅鐗堟湰
- NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
- if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
- return true;
- }
- }
- }
-
- return false; // 鏃犵綉缁滆繛鎺�
- }
/**
* 涓婁紶鏂囦欢
@@ -340,8 +306,6 @@
}
});
}
-
-
}
\ No newline at end of file
diff --git a/app/src/main/java/com/dayu/pipirrapp/net/MyIntercepterApplication.java b/app/src/main/java/com/dayu/pipirrapp/net/MyIntercepterApplication.java
index 8da13e0..32f133b 100644
--- a/app/src/main/java/com/dayu/pipirrapp/net/MyIntercepterApplication.java
+++ b/app/src/main/java/com/dayu/pipirrapp/net/MyIntercepterApplication.java
@@ -3,7 +3,7 @@
import android.text.TextUtils;
import com.dayu.pipirrapp.MyApplication;
-import com.dayu.pipirrapp.utils.ToastUtil;
+import com.dayu.pipirrapp.utils.NetUtils;
import com.tencent.bugly.crashreport.CrashReport;
import java.io.IOException;
@@ -30,9 +30,8 @@
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
try {
-
- Request myRequest = createRequest(chain.request());
- if (myRequest != null) {
+ if (NetUtils.isNetworkAvailable(MyApplication.myApplication)) {
+ Request myRequest = createRequest(chain.request());
Response response = null;
try {
response = chain.proceed(myRequest);
@@ -42,7 +41,8 @@
}
return response;
} else {
- ToastUtil.showToastLong(MyApplication.myApplication, "璇锋鏌ョ綉缁滆繛鎺�!!");
+ return getNullResponse(request);
+
}
} catch (Exception e) {
e.printStackTrace();
@@ -91,7 +91,7 @@
public Response getNullResponse(Request request) {
int code = 20010;
String message = "鍜︼紝璇锋鏌ョ綉缁�";
- String errJson = "{\"code\":" + code + ",\"message\":\"" + message + "\"}";
+ String errJson = "{\"code\":" + code + ",\"msg\":\"" + message + "\"}";
Response.Builder builder = new Response.Builder().body(ResponseBody.create(MediaType.parse("application/json"), errJson));
builder.request(request);
builder.protocol(Protocol.HTTP_1_1);
diff --git a/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java b/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java
index 00c7aea..3b17e9c 100644
--- a/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java
+++ b/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java
@@ -219,7 +219,7 @@
String longitude = "Longitude:" + location.getLongitude();
String latitude = "Latitude:" + location.getLatitude();
- MyLog.i("鍘熺敓瀹氫綅onLocationChanged: Latitude锛�" + latitude + " Longitude锛�" + longitude);
+ MyLog.d("鍘熺敓瀹氫綅onLocationChanged: Latitude锛�" + latitude + " Longitude锛�" + longitude);
postPosition(location.getLatitude(), location.getLongitude());
// 鏄惁涓�娆℃�у畾浣�
if (isSingle) {
diff --git a/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java b/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
index b14376b..add7b6f 100644
--- a/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
+++ b/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
@@ -1,7 +1,10 @@
package com.dayu.pipirrapp.tool;
+import static com.dayu.pipirrapp.net.Constants.BASE_URL;
+
import android.content.Context;
import android.location.Location;
+import android.text.TextUtils;
import android.util.Log;
import androidx.room.Transaction;
@@ -10,13 +13,22 @@
import com.dayu.pipirrapp.bean.db.InspectionBean;
import com.dayu.pipirrapp.bean.db.InspectionLocationBean;
import com.dayu.pipirrapp.bean.db.LatLonBean;
+import com.dayu.pipirrapp.bean.net.InsectionResult;
+import com.dayu.pipirrapp.bean.net.InspectionRequest;
import com.dayu.pipirrapp.dao.DaoSingleton;
import com.dayu.pipirrapp.fragment.MapFragment;
+import com.dayu.pipirrapp.net.ApiManager;
+import com.dayu.pipirrapp.net.BaseResponse;
+import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
import com.dayu.pipirrapp.utils.DateUtils;
+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;
/**
@@ -80,6 +92,8 @@
InspectionBean inspectionBean = new InspectionBean();
inspectionBean.setmInspectId(UUID.randomUUID().toString());
inspectionBean.setStartTime(DateUtils.getNowDateStr());
+ inspectionBean.setId(UUID.randomUUID().toString());
+ inspectionBean.setInspectorId(MyApplication.myApplication.userId);
// inspectionBean.
// 寮傛鎻掑叆鍒版暟鎹簱
DaoSingleton.getAsynchInstance(context)
@@ -90,7 +104,7 @@
.subscribe(() -> {
Log.i(TAG, "Inspection started and inserted successfully.");
}, throwable -> {
- Log.e(TAG, "Error inserting inspection data: "+throwable);
+ Log.e(TAG, "Error inserting inspection data: " + throwable);
});
// 鑾峰彇Dao骞舵墽琛屾彃鍏ユ搷浣�
return inspectionBean; // 鎻掑叆瀹屾垚鍚庡垏鎹㈠埌涓荤嚎绋�
@@ -115,6 +129,82 @@
;
}
+
+ //涓婁紶鍥犵綉缁滈棶棰樹骇鐢熺殑鏈笂浼犳暟鎹�
+ public static void aginPutInspectionData(Context context) {
+ //鏌ヨ娌℃湁涓婁紶鐨勬墍鏈夋湰鍦版暟鎹簱鐨勫贰妫�id
+ DaoSingleton.getAsynchInstance(context).inspectionLocationDao().getUnpostedMInspectIds()
+ .subscribeOn(Schedulers.io())
+ .observeOn(Schedulers.io())
+ .subscribe(strings -> {
+ //寰幆鏌ヨ鎵�鏈塱d
+ for (String data : strings) {
+ DaoSingleton.getAsynchInstance(context).inspectionDao().findBymInspectId(data)
+ .subscribeOn(Schedulers.io())
+ .observeOn(Schedulers.io())
+ .subscribe(inspectionBeans -> {
+ DaoSingleton.getAsynchInstance(context).inspectionLocationDao().findByNoPostAndInspectId(data)
+ .subscribeOn(Schedulers.io())
+ .observeOn(Schedulers.io())
+ .subscribe(inspectionLocationBeans -> {
+ postInspectionData(context, inspectionBeans, inspectionLocationBeans);
+ });
+ });
+ }
+
+ });
+ }
+
+
+ /**
+ * 涓婁紶鏈笂浼犳垚鍔熺殑鍧愭爣
+ *
+ * @param inspectionBean
+ * @param inspectionLocationBeans
+ */
+ private static void postInspectionData(Context context, InspectionBean inspectionBean, List<InspectionLocationBean> inspectionLocationBeans) {
+ InspectionRequest inspectionRequest = new InspectionRequest();
+ inspectionRequest.setInspectId(inspectionBean.getInspectId());
+ inspectionRequest.setInspectorId(inspectionBean.getInspectorId());
+ inspectionRequest.setStartTime(inspectionBean.getStartTime());
+ if (!TextUtils.isEmpty(inspectionBean.getStopTime())) {
+ inspectionRequest.setStopTime(inspectionBean.getStopTime());
+ }
+ for (InspectionLocationBean inspectionLocationBean : inspectionLocationBeans) {
+ InspectionRequest.Track track = new InspectionRequest.Track();
+ track.setLat(inspectionLocationBean.getLat());
+ track.setLng(inspectionLocationBean.getLng());
+ track.setLocateTime(inspectionLocationBean.getLocateTime());
+ inspectionRequest.addTracks(track);
+ }
+ ApiManager.getInstance().requestPostHideLoading(context, BASE_URL + "/app/inspect/save", InsectionResult.class, inspectionRequest.toMap(inspectionRequest), new SubscriberListener<BaseResponse<List<InsectionResult>>>() {
+ @Override
+ public void onNext(BaseResponse<List<InsectionResult>> t) {
+ try {
+ if (t.isSuccess()) {
+ 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鏁版嵁鎻掑叆鎴愬姛");
+ }, throwable -> {
+ // 澶勭悊閿欒
+ Log.e(TAG, "addInspectionLocationData鏁版嵁鎻掑叆澶辫触", throwable);
+ });
+ } else {
+
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ CrashReport.postCatchedException(e);
+ }
+
+ }
+ });
+ }
+
/**
* 淇敼宸℃璁板綍鍧愭爣
*
@@ -132,6 +222,21 @@
Log.e(TAG, "updateInspectionLocationData鏁版嵁鎻掑叆澶辫触", throwable);
});
;
+ }
+
+ /**
+ * 淇敼宸℃淇℃伅
+ *
+ * @param context
+ * @param inspectionBean
+ */
+ public static void upataInspectionData(Context context, InspectionBean inspectionBean) {
+ DaoSingleton.getAsynchInstance(context).inspectionDao().update(inspectionBean).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(() -> {
+ // 鎻掑叆鎴愬姛鐨勫洖璋�
+ Log.d(TAG, "uupataInspectionData鏁版嵁鎻掑叆鎴愬姛");
+ }, throwable -> {
+ Log.e(TAG, "upataInspectionData鏁版嵁鎻掑叆澶辫触", throwable);
+ });
}
/**
@@ -167,7 +272,7 @@
inspectionLocationBean.setmInspectId(mInspectionBean.getmInspectId());
inspectionLocationBean.setLocateTime(DateUtils.getNowDateStr());
inspectionLocationBean.setPost(false);
- inspectionLocationBean.setInspectorId(MyApplication.myApplication.userId);
+
inspectionLocationBean.setLng(String.valueOf(latLonBean.getLongitude()));
inspectionLocationBean.setLat(String.valueOf(latLonBean.getLatitude()));
return inspectionLocationBean;
diff --git a/app/src/main/java/com/dayu/pipirrapp/utils/MyLog.java b/app/src/main/java/com/dayu/pipirrapp/utils/MyLog.java
index bb34e84..265e172 100644
--- a/app/src/main/java/com/dayu/pipirrapp/utils/MyLog.java
+++ b/app/src/main/java/com/dayu/pipirrapp/utils/MyLog.java
@@ -15,5 +15,9 @@
Log.i(TAG, data);
}
+ public static void d(String data) {
+ Log.d(TAG, data);
+ }
+
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java b/app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java
new file mode 100644
index 0000000..cbb1d8a
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java
@@ -0,0 +1,80 @@
+package com.dayu.pipirrapp.utils;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkCapabilities;
+import android.net.NetworkInfo;
+import android.net.NetworkRequest;
+import android.os.Build;
+
+/**
+ * NetUtils - 缃戠粶鐩稿叧鍏叡鏂规硶
+ *
+ * @author zuoxiao
+ * @version 1.0
+ * @since 2024-12-04
+ */
+public class NetUtils {
+ public static final String TAG = "NetUtils";
+
+ /**
+ * 鍒ゆ柇褰撳墠鏄惁鏈夌綉缁�
+ *
+ * @param context
+ * @return
+ */
+ public static boolean isNetworkAvailable(Context context) {
+ ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+
+ if (connectivityManager != null) {
+ // 瀵逛簬 Android 鐗堟湰澶т簬绛変簬 Android Q (API level 29)
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+ NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
+ if (capabilities != null) {
+ // 妫�鏌ョ綉缁滄槸鍚︽湁浼犺緭鑳藉姏锛堝寘鎷� Wi-Fi 鍜岀Щ鍔ㄦ暟鎹級
+ if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
+ return true;
+ }
+ }
+ } else {
+ // 瀵逛簬 Android Q 浠ヤ笅鐗堟湰
+ NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
+ if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
+ return true;
+ }
+ }
+ }
+
+ return false; // 鏃犵綉缁滆繛鎺�
+ }
+
+
+ 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);
+ } else {
+ // 瀵逛簬杈冭�佺増鏈紝鍙互浣跨敤鏃х殑鏂规硶娉ㄥ唽缃戠粶鐘舵�佺洃鍚�
+ // ConnectivityManager.setNetworkCallback() 鏃犳硶鍦� API 绾у埆 24 浠ヤ笅浣跨敤
+ }
+ }
+
+ // 娉ㄩ攢骞挎挱鎺ユ敹鍣�
+ public static void unregisterReceiver(Context context,ConnectivityManager.NetworkCallback networkCallback) {
+ ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ cm.unregisterNetworkCallback(networkCallback);
+ }
+
+}
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 20ac86a..e81a015 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -18,7 +18,7 @@
android:background="@drawable/ic_edt_gray_bg"
android:hint="璇疯緭鍏ヨ处鍙�"
android:maxLines="1"
- android:text="admin"
+ android:text="15802220723"
android:paddingLeft="15dp"
android:singleLine="true" />
@@ -45,7 +45,7 @@
android:hint="璇疯緭鍏ュ瘑鐮�"
android:inputType="textPassword"
android:maxLines="1"
- android:text="dyyjy"
+ android:text="abc_123"
android:paddingLeft="10dp"
android:singleLine="true" />
--
Gitblit v1.8.0