From be9bea2335d4e4617844a1603aa624098c84b2a2 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 15 十月 2024 13:55:00 +0800
Subject: [PATCH] 1、退出登录 2.显示当前版本号 3.删除缓存 4.地图相关

---
 app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java              |   15 
 app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java           |   58 +++
 app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java                |    3 
 app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java     |   68 ++++
 app/src/main/AndroidManifest.xml                                        |   41 +-
 app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java |   54 ++++
 app/src/main/res/layout/activity_splash_screen.xml                      |   29 ++
 app/src/main/java/com/dayu/pipirrapp/dao/LoginDao.java                  |    3 
 app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java             |    1 
 app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java                 |   47 +++
 app/src/main/java/com/dayu/pipirrapp/bean/db/MarkerBean.java            |   15 +
 app/src/main/res/layout/fragment_map.xml                                |   45 ++
 app/src/main/assets/index.html                                          |   44 +-
 app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java        |   68 ++++-
 app/src/main/java/com/dayu/pipirrapp/dao/AppDatabase.java               |    5 
 app/src/main/res/layout/fragment_my.xml                                 |   88 ++++--
 app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java          |  138 ++++++++--
 app/src/main/java/com/dayu/pipirrapp/utils/CleanDataUtils.java          |   33 ++
 18 files changed, 612 insertions(+), 143 deletions(-)

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fa15b03..c02d4b9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,26 +2,22 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     package="com.dayu.pipirrapp">
-    <!--鍏佽璁块棶缃戠粶锛屽繀閫夋潈闄�-->
-    <uses-permission android:name="android.permission.INTERNET" />
-
-
     <!--鐢ㄤ簬杩涜缃戠粶瀹氫綅-->
-    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <!--鐢ㄤ簬璁块棶GPS瀹氫綅-->
-    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <!--鐢ㄤ簬鑾峰彇杩愯惀鍟嗕俊鎭紝鐢ㄤ簬鏀寔鎻愪緵杩愯惀鍟嗕俊鎭浉鍏崇殑鎺ュ彛-->
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <!--鐢ㄤ簬璁块棶wifi缃戠粶淇℃伅锛寃ifi淇℃伅浼氱敤浜庤繘琛岀綉缁滃畾浣�-->
-    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <!--鐢ㄤ簬鑾峰彇wifi鐨勮幏鍙栨潈闄愶紝wifi淇℃伅浼氱敤鏉ヨ繘琛岀綉缁滃畾浣�-->
-    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
     <!--鐢ㄤ簬璁块棶缃戠粶锛岀綉缁滃畾浣嶉渶瑕佷笂缃�-->
-    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
+    <uses-permission android:name="android.permission.INTERNET" />
     <!--鐢ㄤ簬鍐欏叆缂撳瓨鏁版嵁鍒版墿灞曞瓨鍌ㄥ崱-->
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <!--鐢ㄤ簬鐢宠璋冪敤A-GPS妯″潡-->
-    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
+    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
     <!--濡傛灉璁剧疆浜唗arget >= 28 濡傛灉闇�瑕佸惎鍔ㄥ悗鍙板畾浣嶅垯蹇呴』澹版槑杩欎釜鏉冮檺-->
     <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
     <!--濡傛灉鎮ㄧ殑搴旂敤闇�瑕佸悗鍙板畾浣嶆潈闄愶紝涓旀湁鍙兘杩愯鍦ˋndroid Q璁惧涓�,骞朵笖璁剧疆浜唗arget>28锛屽繀椤诲鍔犺繖涓潈闄愬0鏄�-->
@@ -30,8 +26,6 @@
     <uses-permission
         android:name="android.permission.ACCESS_MOCK_LOCATION"
         tools:ignore="MockLocation,ProtectedPermissions" />
-    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
-
 
     <application
         android:name=".MyApplication"
@@ -51,15 +45,9 @@
             android:name="ScopedStorage"
             android:value="true" />
 
-        <activity
-            android:name=".activity.MainActivity"
-            android:exported="true"
-            android:launchMode="singleTop">
 
-        </activity>
-        <activity android:name=".activity.ChangePSActivity" />
         <activity
-            android:name=".activity.LoginActivity"
+            android:name=".activity.SplashScreenActivity"
             android:exported="true"
             android:launchMode="singleTop">
             <intent-filter>
@@ -67,6 +55,17 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+        <activity
+            android:name=".activity.MainActivity"
+            android:exported="true"
+            android:launchMode="singleTop"></activity>
+        <activity android:name=".activity.ChangePSActivity" />
+        <activity
+            android:name=".activity.LoginActivity"
+            android:exported="true"
+            android:launchMode="singleTop">
+
+        </activity>
         <!--        <activity android:name=".activity.MainActivity" />-->
         <!-- Required since 5.2.0 -->
         <!-- 鏂扮殑 tag/alias 鎺ュ彛缁撴灉杩斿洖闇�瑕佸紑鍙戣�呴厤缃竴涓嚜瀹氫箟鐨凷ervice -->
diff --git a/app/src/main/assets/index.html b/app/src/main/assets/index.html
index 69d3cf5..2032c9b 100644
--- a/app/src/main/assets/index.html
+++ b/app/src/main/assets/index.html
@@ -4,32 +4,36 @@
 <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>澶╁湴鍥�</title>
+    <title>Map Example</title>
     <style>
-       /* 纭繚 body 鍜� html 鍏呮弧鏁翠釜瑙嗗彛 */
+        /* 纭繚 body 鍜� html 鍏呮弧鏁翠釜瑙嗗彛 */
         html, body {
-            margin: 0;
-            padding: 0;
-            width: 100%;
-            height: 100%;
-            overflow: hidden; /* 闃叉婊氬姩鏉″嚭鐜� */
-        }
-     /* 纭繚鍦板浘瀹瑰櫒鍏呮弧鏁翠釜瑙嗗彛 */
-        #mapDiv {
-            width: 100%;
-            height: 100%;
-            position: absolute; /* 淇濊瘉鍦板浘鍏ㄥ睆 */
-            top: 0;
-            left: 0;
-        }
+         margin: 0;
+         padding: 0;
+         width: 100%;
+         height: 100%;
+         overflow: hidden; /* 闃叉婊氬姩鏉″嚭鐜� */
+     }
+  /* 纭繚鍦板浘瀹瑰櫒鍏呮弧鏁翠釜瑙嗗彛 */
+     #mapDiv {
+         width: 100%;
+         height: 100%;
+         position: absolute; /* 淇濊瘉鍦板浘鍏ㄥ睆 */
+         top: 0;
+         left: 0;
+     }
     </style>
-    <script src="http://api.tianditu.gov.cn/api?v=4.0&tk=d8beed89b43160a9a185e5aff431f85d"
-        type="text/javascript"></script>
+    <!-- 寮曠敤鏈湴鐨勫ぉ鍦板浘 JS 鏂囦欢 -->
+    <script src="js/tianditu.js"></script>
+    <!-- <script src="http://api.tianditu.gov.cn/api?v=4.0&tk=d8beed89b43160a9a185e5aff431f85d"
+        type="text/javascript"></script> -->
 </head>
 
 <body>
-    <div id="mapDiv"></div>
-    <script src="js/map.js"></script>
+<div id="mapDiv"></div>
+
+<script src="js/map.js"></script>
+
 </body>
 
 </html>
\ No newline at end of file
diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java
index 5adb68e..eea278f 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java
@@ -8,7 +8,6 @@
 import android.os.Bundle;
 import android.os.PersistableBundle;
 import android.text.InputType;
-import android.text.TextUtils;
 import android.util.Base64;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -26,7 +25,6 @@
 import com.dayu.pipirrapp.databinding.ActivityLoginBinding;
 import com.dayu.pipirrapp.net.ApiManager;
 import com.dayu.pipirrapp.net.BaseResponse;
-import com.dayu.pipirrapp.net.subscribers.CodeListener;
 import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
 import com.dayu.pipirrapp.observer.LoginObserver;
 import com.dayu.pipirrapp.utils.CommonData;
@@ -138,13 +136,15 @@
     private void getCode() {
         Map<String, Object> data = new HashMap<>();
         data.put("type", "math");//鍥剧墖绫诲瀷锛歝har-鏂囨湰锛宮ath-涓�浣嶆暟绠楀紡锛宮ath2-涓や綅鏁扮畻寮�
-        ApiManager.getInstance().getCode(data, new CodeListener() {
+
+
+        ApiManager.getInstance().requestGetHideLoading(LoginActivity.this, BASE_URL + ":8088/app/captcha/get", CodeResult.class, data, new SubscriberListener<BaseResponse<CodeResult>>() {
             @Override
-            public void onNext(CodeResult body) {
+            public void onNext(BaseResponse<CodeResult> t) {
                 try {
-                    if (body != null && !TextUtils.isEmpty(body.getBase64())) {
-                        String encodedString = body.getBase64();
-                        codeToken = body.getToken();
+                    if (t.isSuccess()) {
+                        String encodedString = t.getContent().getBase64();
+                        codeToken = t.getContent().getToken();
                         // 绉婚櫎Base64瀛楃涓茬殑澶撮儴淇℃伅
                         encodedString = encodedString.substring("data:image/png;base64,".length());
                         // 瀵笲ase64瀛楃涓茶繘琛岃В鐮�
@@ -159,17 +159,48 @@
                         binding.codeError.setVisibility(View.VISIBLE);
                         ToastUtil.showToast(LoginActivity.this, "楠岃瘉鐮佽幏鍙栧け璐�");
                     }
+
                 } catch (Exception e) {
                     e.printStackTrace();
                     CrashReport.postCatchedException(e);
                 }
-            }
-
-            @Override
-            public void error(Throwable throwable) {
 
             }
         });
+
+
+//        ApiManager.getInstance().getCode(data, new CodeListener() {
+//            @Override
+//            public void onNext(CodeResult body) {
+//                try {
+//                    if (body != null && !TextUtils.isEmpty(body.getBase64())) {
+//                        String encodedString = body.getBase64();
+//                        codeToken = body.getToken();
+//                        // 绉婚櫎Base64瀛楃涓茬殑澶撮儴淇℃伅
+//                        encodedString = encodedString.substring("data:image/png;base64,".length());
+//                        // 瀵笲ase64瀛楃涓茶繘琛岃В鐮�
+//                        byte[] imageAsBytes = Base64.decode(encodedString, Base64.DEFAULT);
+//                        // 浣跨敤BitmapFactory灏嗗瓧鑺傛暟缁勮В鐮佹垚Bitmap瀵硅薄
+//                        Bitmap image = BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length);
+//                        binding.codeImg.setImageBitmap(image);
+//                        binding.codeImg.setVisibility(View.VISIBLE);
+//                        binding.codeError.setVisibility(View.GONE);
+//                    } else {
+//                        binding.codeImg.setVisibility(View.INVISIBLE);
+//                        binding.codeError.setVisibility(View.VISIBLE);
+//                        ToastUtil.showToast(LoginActivity.this, "楠岃瘉鐮佽幏鍙栧け璐�");
+//                    }
+//                } catch (Exception e) {
+//                    e.printStackTrace();
+//                    CrashReport.postCatchedException(e);
+//                }
+//            }
+//
+//            @Override
+//            public void error(Throwable throwable) {
+//
+//            }
+//        });
     }
 
     private void login(String phone, String pw, String token, String code) {
@@ -195,11 +226,9 @@
                         }
                         loginBean.setName(t.getContent().getName());
                         loginBean.setPhone(t.getContent().getPhone());
-                        DaoSingleton.getInstance(LoginActivity.this).loginDao().update(loginBean);
+                        DaoSingleton.getInstance(LoginActivity.this).loginDao().insert(loginBean);
                         SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonData.isShowCode, false);
-                        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
-                        startActivity(intent);
-                        LoginActivity.this.finish();
+                        startMainActivity();
                     } else {
                         ToastUtil.showToast(LoginActivity.this, t.getMsg());
                         loginError++;
@@ -219,6 +248,15 @@
         });
     }
 
+    /**
+     * 鍚姩MainActivity
+     */
+    private void startMainActivity() {
+        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
+        startActivity(intent);
+        LoginActivity.this.finish();
+    }
+
     @Override
     protected void onStart() {
         super.onStart();
diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java
new file mode 100644
index 0000000..a08a729
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java
@@ -0,0 +1,54 @@
+package com.dayu.pipirrapp.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+
+import androidx.annotation.Nullable;
+
+import com.dayu.pipirrapp.MyApplication;
+import com.dayu.pipirrapp.bean.db.LoginBean;
+import com.dayu.pipirrapp.dao.DaoSingleton;
+import com.dayu.pipirrapp.databinding.ActivitySplashScreenBinding;
+import com.dayu.pipirrapp.utils.CommonData;
+import com.dayu.pipirrapp.utils.SharedPreferencesHelper;
+
+/**
+ * author: zuo
+ * Date: 2024-10-09
+ * Time: 15:19
+ * 澶囨敞锛�
+ */
+public class SplashScreenActivity extends BaseActivity {
+    ActivitySplashScreenBinding binding;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        binding = ActivitySplashScreenBinding.inflate(LayoutInflater.from(this));
+        setContentView(binding.getRoot());
+        new Handler().postDelayed(() -> {
+            LoginBean loginBean = DaoSingleton.getInstance(SplashScreenActivity.this).loginDao().findFirst();
+            String token = SharedPreferencesHelper.getInstance(SplashScreenActivity.this).get(CommonData.Token, "");
+            if (loginBean != null && !TextUtils.isEmpty(token)) {
+                startMainActivity();
+                MyApplication.myApplication.token = token;
+            } else {
+                startLoginActivity();
+            }
+            SplashScreenActivity.this.finish();
+        }, 1000);
+    }
+
+    private void startMainActivity() {
+        Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class);
+        startActivity(intent);
+    }
+
+    private void startLoginActivity() {
+        Intent intent = new Intent(SplashScreenActivity.this, LoginActivity.class);
+        startActivity(intent);
+    }
+}
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java b/app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java
index e631c84..3eb21c3 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java
@@ -19,6 +19,7 @@
 
     public String phone;
 
+
     public String getName() {
         return name;
     }
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/db/MarkerBean.java b/app/src/main/java/com/dayu/pipirrapp/bean/db/MarkerBean.java
index e259685..04913c0 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/db/MarkerBean.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/db/MarkerBean.java
@@ -1,5 +1,6 @@
 package com.dayu.pipirrapp.bean.db;
 
+import androidx.annotation.Nullable;
 import androidx.room.Entity;
 import androidx.room.PrimaryKey;
 
@@ -12,19 +13,29 @@
 @Entity
 public class MarkerBean {
     @PrimaryKey(autoGenerate = true)
-    public long id;
-
+    public long localid;
+    @Nullable
     String blockId;
+    @Nullable
     String deleted;//閫昏緫鍒犻櫎鏍囪瘑
+    @Nullable
     String divideId;//string
+
     String lat;//缁忓害
     String lng;//绾害
+    @Nullable
     String name;//鍙栨按鍙e悕绉�
+    @Nullable
     String operateDt;//鎿嶄綔鏃堕棿
+    @Nullable
     String operator;//鎿嶄綔浜虹紪鍙�
+    @Nullable
     String remarks;//澶囨敞
+    @Nullable
     String townId;//鎵�鍦ㄩ晣缂栧彿
+    @Nullable
     String villageId;//鎵�鍦ㄦ潙缂栧彿
+    @Nullable
     String countyId;//鎵�鍦ㄥ幙缂栧彿
 
     public String getBlockId() {
diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/AppDatabase.java b/app/src/main/java/com/dayu/pipirrapp/dao/AppDatabase.java
index 036eb0d..0fabe10 100644
--- a/app/src/main/java/com/dayu/pipirrapp/dao/AppDatabase.java
+++ b/app/src/main/java/com/dayu/pipirrapp/dao/AppDatabase.java
@@ -5,6 +5,7 @@
 
 import com.dayu.pipirrapp.bean.db.CenterPointBean;
 import com.dayu.pipirrapp.bean.db.LoginBean;
+import com.dayu.pipirrapp.bean.db.MarkerBean;
 import com.dayu.pipirrapp.bean.db.TagBean;
 
 
@@ -15,7 +16,7 @@
  * Date: 2023-11-05 16:23
  * Description:
  */
-@Database(entities = {TagBean.class, LoginBean.class, CenterPointBean.class}, version = 1, exportSchema = false)
+@Database(entities = {TagBean.class, LoginBean.class, CenterPointBean.class, MarkerBean.class}, version = 1, exportSchema = false)
 public abstract class AppDatabase extends RoomDatabase {
 
 
@@ -25,4 +26,6 @@
 
     public abstract CenterPointDao centerPointDao();
 
+    public abstract MarkerDao markerDao();
+
 }
diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java b/app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java
index c82de1c..225ea44 100644
--- a/app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java
+++ b/app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java
@@ -3,6 +3,7 @@
 import android.content.Context;
 
 import androidx.room.Room;
+import androidx.room.RoomDatabase;
 
 import java.io.File;
 
@@ -15,17 +16,19 @@
 public class DaoSingleton {
     public static AppDatabase baseDao;
     public static AppDatabase AsynchBaseDao;
-    public static String SqlitePath = File.separator + "dbdata";
+    public static String name = "dayu_data";
 
     //MyFileUtil.SqlitePath +
     public static AppDatabase getInstance(Context context) {
 
         if (baseDao == null) {
             baseDao = Room.databaseBuilder(
-                    context,
-                    AppDatabase.class,
-                     "dayu_data"
-            ).allowMainThreadQueries().build();
+                            context,
+                            AppDatabase.class,
+                            name
+                    ).allowMainThreadQueries()
+                    .setJournalMode(RoomDatabase.JournalMode.TRUNCATE) // 鍙�夛紝璁剧疆鏃ュ織妯″紡
+                    .build();
         }
         return baseDao;
     }
@@ -36,7 +39,7 @@
             AsynchBaseDao = Room.databaseBuilder(
                     context,
                     AppDatabase.class,
-                    "dayu_data"
+                    name
             ).build();
         }
         return AsynchBaseDao;
diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/LoginDao.java b/app/src/main/java/com/dayu/pipirrapp/dao/LoginDao.java
index 4a230fb..1d393e8 100644
--- a/app/src/main/java/com/dayu/pipirrapp/dao/LoginDao.java
+++ b/app/src/main/java/com/dayu/pipirrapp/dao/LoginDao.java
@@ -26,6 +26,9 @@
     @Delete
     void delete(LoginBean loginBean);
 
+    @Query("DELETE FROM LoginBean")
+    void deleteAll();
+
     @Query("select  * from LoginBean limit 1")
     LoginBean findFirst();
 }
diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java b/app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java
new file mode 100644
index 0000000..7bae65a
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java
@@ -0,0 +1,47 @@
+package com.dayu.pipirrapp.dao;
+
+import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
+import androidx.room.Update;
+
+import com.dayu.pipirrapp.bean.db.MarkerBean;
+
+import java.util.List;
+
+import io.reactivex.rxjava3.core.Completable;
+
+/**
+ * author: zuo
+ * Date: 2024-09-30
+ * Time: 14:39
+ * 澶囨敞锛�
+ */
+@Dao
+public interface MarkerDao {
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    void insert(MarkerBean markerBean);
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    Completable insertAll(List<MarkerBean> markerBeans); // 浣跨敤 Completable 杩涜寮傛鎻掑叆
+
+//    @Insert(onConflict = OnConflictStrategy.REPLACE)
+//    void insertAll(List<MarkerBean> markerBeans); // 浣跨敤 Completable 杩涜寮傛鎻掑叆
+
+    @Update
+    void update(MarkerBean markerBean);
+
+    @Delete
+    void delete(MarkerBean markerBean);
+
+    @Query("DELETE FROM MarkerBean")
+    void deleteAll();
+
+    @Query("select  * from MarkerBean limit 1")
+    MarkerBean findFirst();
+
+    @Query("select  * from MarkerBean")
+    List<MarkerBean> findAll();
+}
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 7c122e4..39d32d5 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
@@ -1,7 +1,9 @@
 package com.dayu.pipirrapp.fragment;
 
 import android.content.Context;
+import android.content.Intent;
 import android.location.LocationManager;
+import android.os.Build;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -18,6 +20,7 @@
 import androidx.annotation.Nullable;
 
 import com.dayu.pipirrapp.bean.db.CenterPointBean;
+import com.dayu.pipirrapp.bean.db.MarkerBean;
 import com.dayu.pipirrapp.bean.net.CenterPointResult;
 import com.dayu.pipirrapp.bean.net.MarkerResult;
 import com.dayu.pipirrapp.dao.DaoSingleton;
@@ -28,6 +31,7 @@
 import com.dayu.pipirrapp.net.Constants;
 import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
 import com.dayu.pipirrapp.observer.MapFragmenObserver;
+import com.dayu.pipirrapp.service.MyLocationService;
 import com.dayu.pipirrapp.utils.CommonData;
 import com.dayu.pipirrapp.utils.MapJpgUtils;
 import com.dayu.pipirrapp.utils.MyLog;
@@ -37,7 +41,12 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Random;
+
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
+import io.reactivex.rxjava3.schedulers.Schedulers;
 
 /**
  * author: zuo
@@ -54,7 +63,8 @@
 
     WebView mWebView;
     CenterPointBean centerPointBean;
-    String jsonData;
+    String strMarkerJson;
+    boolean isStartInspec = false;
 
     @Override
     public void onAttach(@NonNull Context context) {
@@ -65,6 +75,17 @@
     @Override
     public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        //鏄剧ず宸℃鐘舵��
+        if (isStartInspec) {
+            binding.stateText.setVisibility(View.VISIBLE);
+        } else {
+            binding.stateText.setVisibility(View.GONE);
+        }
     }
 
     @Nullable
@@ -80,25 +101,36 @@
         mWebView.loadUrl("file:///android_asset/index.html");
         getCenterPoint();
         initView();
-        initData();
+        initLocalData();
         getMarkerData();
         //寮�鍚畾浣�
-//        Intent location = new Intent(this.getActivity(), MyLocationService.class);
-//        location.putExtra("isSingle", false);
-//        this.getActivity().startService(location);
+        Intent location = new Intent(this.getActivity(), MyLocationService.class);
+        location.putExtra("isSingle", false);
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+            this.getActivity().startForegroundService(location);
+        } else {
+            this.getActivity().startService(location);
+        }
         return binding.getRoot();
     }
 
-    private void initData() {
+
+    /**
+     * 鍒濆鍖栨湰鍦版暟鎹�
+     */
+    public void initLocalData() {
+        centerPointBean = DaoSingleton.getInstance(MapFragment.this.getContext()).centerPointDao().findFirst();
+        List<MarkerBean> markerBeans = DaoSingleton.getInstance(MapFragment.this.getContext()).markerDao().findAll();
+        strMarkerJson = beanToJson(markerBeans);
         jumpCenterPoint();
+        setMapMarker();
     }
+
 
     /**
      * 璺宠浆鍦板浘涓績鐐�
      */
     public void jumpCenterPoint() {
-
-        centerPointBean = DaoSingleton.getInstance(MapFragment.this.getContext()).centerPointDao().findFirst();
         if (centerPointBean != null) {
             Log.d(TAG, "jumpCenterPoint>>>>>>>>>>>>>>>>>>>" + centerPointBean.getLng() + "\",\"" + centerPointBean.getLat());
             mWebView.evaluateJavascript("javascript:setCenterAndZoom(\"" + centerPointBean.getLng() + "\",\"" + centerPointBean.getLat() + "\")", value -> {
@@ -106,9 +138,12 @@
         }
     }
 
-    public void setMapMarker(){
-        Log.i("mWebView", "addMarker????????????" + jsonData);
-        mWebView.evaluateJavascript("javascript:addMarker(\"" + jsonData + "\")", new ValueCallback<String>() {
+    /**
+     * 娣诲姞鏍囨敞鐐�
+     */
+    public void setMapMarker() {
+        Log.i("mWebView", "addMarker????????????" + strMarkerJson);
+        mWebView.evaluateJavascript("javascript:addMarker(\"" + strMarkerJson + "\")", new ValueCallback<String>() {
             @Override
             public void onReceiveValue(String value) {
                 Log.i("mWebView", "addMarker锛侊紒锛侊紒锛侊紒锛侊紒锛�" + value);
@@ -117,29 +152,45 @@
     }
 
 
-
+    /**
+     * 鑾峰彇鍙栨按鍙e垪琛�
+     */
     private void getMarkerData() {
-        ApiManager.getInstance().requestGet(this.getContext(), Constants.BASE_URL + ":8085/project/intake/all", MarkerResult.class, null, new SubscriberListener<BaseResponse<MarkerResult>>() {
+        ApiManager.getInstance().requestGetHideLoading(this.getContext(), Constants.BASE_URL + ":8085/project/intake/all", MarkerResult.class, null, new SubscriberListener<BaseResponse<MarkerResult>>() {
             @Override
             public void onNext(BaseResponse<MarkerResult> t) {
                 if (t.isSuccess()) {
                     if (t.isSuccess()) {
                         if (t.getContent().getObj() != null && !t.getContent().getObj().isEmpty()) {
-                            StringBuilder stringBuilder = new StringBuilder();
-                            stringBuilder.append("[");
+                            List<MarkerBean> markerBeans = new ArrayList<>();
                             for (int i = 0; i < t.getContent().getObj().size(); i++) {
-                                stringBuilder.append("[");
-                                stringBuilder.append(t.getContent().getObj().get(i).getLng());
-                                stringBuilder.append(",");
-                                stringBuilder.append(t.getContent().getObj().get(i).getLat());
-                                stringBuilder.append(",\"" + t.getContent().getObj().get(i).getName() + "\"]");
-                                if (i != t.getContent().getObj().size() - 1) {
-                                    stringBuilder.append(",");
-                                }
+                                MarkerResult.Obj result = t.getContent().getObj().get(i);
+                                //淇濆瓨鏁版嵁
+                                MarkerBean markerBean = new MarkerBean();
+                                markerBean.setLng(result.getLng());
+                                markerBean.setLat(result.getLat());
+                                markerBean.setBlockId(result.getBlockId());
+                                markerBean.setName(result.getName());
+                                markerBean.setRemarks(result.getRemarks());
+                                markerBean.setTownId(result.getTownId());
+                                markerBean.setVillageId(result.getVillageId());
+                                markerBean.setCountyId(result.getCountyId());
+                                markerBeans.add(markerBean);
                             }
-                            stringBuilder.append("]");
-                            jsonData = stringBuilder.toString().replace("\\", "\\\\").replace("\"", "\\\"");
-
+                            strMarkerJson = beanToJson(markerBeans);
+                            setMapMarker();
+                            DaoSingleton.getInstance(MapFragment.this.getContext()).markerDao().deleteAll();
+                            // 浣跨敤 RxJava 寮傛鎻掑叆鏁版嵁
+                            DaoSingleton.getAsynchInstance(MapFragment.this.getContext()).markerDao().insertAll(markerBeans)
+                                    .subscribeOn(Schedulers.io()) // 鍦� IO 绾跨▼涓婃墽琛�
+                                    .observeOn(AndroidSchedulers.mainThread()) // 鍦ㄤ富绾跨▼涓婅瀵�
+                                    .subscribe(() -> {
+                                        // 鎻掑叆鎴愬姛
+                                        Log.i("mWebView", "鏁版嵁鎻掑叆鎴愬姛");
+                                    }, throwable -> {
+                                        // 鎻掑叆澶辫触
+                                        Log.e("mWebView", "鏁版嵁鎻掑叆澶辫触: " + throwable.getMessage());
+                                    });
                         }
                     }
                 } else {
@@ -148,6 +199,29 @@
             }
 
         });
+    }
+
+    /**
+     * bean杞琷son
+     *
+     * @param markerBeans
+     */
+    private String beanToJson(List<MarkerBean> markerBeans) {
+        StringBuilder stringBuilder = new StringBuilder();
+        stringBuilder.append("[");
+        for (int i = 0; i < markerBeans.size(); i++) {
+            MarkerBean markerBean = markerBeans.get(i);
+            stringBuilder.append("[");
+            stringBuilder.append(markerBean.getLng());
+            stringBuilder.append(",");
+            stringBuilder.append(markerBean.getLat());
+            stringBuilder.append(",\"" + markerBean.getName() + "\"]");
+            if (i != markerBeans.size() - 1) {
+                stringBuilder.append(",");
+            }
+        }
+        stringBuilder.append("]");
+        return stringBuilder.toString().replace("\\", "\\\\").replace("\"", "\\\"");
     }
 
 
@@ -205,6 +279,7 @@
     @Override
     public void onDestroy() {
         super.onDestroy();
+        Log.d(TAG, "onDestroy>>>>>>>>>>>>>>>>>>>>>>>>>>>");
         ((ViewGroup) mWebView.getParent()).removeView(mWebView);
         mWebView.destroy(); // 褰� Activity 瑕� destroy 鏃讹紝搴斿厛灏� WebView 绉婚櫎锛屽啀 destroy 鎺�
     }
@@ -268,6 +343,17 @@
                 // 鏍规嵁HTTP鐘舵�佺爜澶勭悊閿欒
             }
         });
+        binding.inspectButton.setOnClickListener(v -> {
+            if (!isStartInspec) {
+                isStartInspec = true;
+                binding.inspectButton.setText("缁�");
+            } else {
+
+                isStartInspec = false;
+            }
+
+            binding.stateText.setVisibility(View.VISIBLE);
+        });
     }
 
 
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 6806cc1..02e248e 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java
@@ -1,6 +1,8 @@
 package com.dayu.pipirrapp.fragment;
 
 import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -10,10 +12,13 @@
 import androidx.annotation.Nullable;
 
 import com.dayu.pipirrapp.activity.ChangePSActivity;
+import com.dayu.pipirrapp.activity.LoginActivity;
 import com.dayu.pipirrapp.bean.db.LoginBean;
 import com.dayu.pipirrapp.dao.DaoSingleton;
-import com.dayu.pipirrapp.databinding.FragmentMapBinding;
 import com.dayu.pipirrapp.databinding.FragmentMyBinding;
+import com.dayu.pipirrapp.utils.CleanDataUtils;
+import com.dayu.pipirrapp.utils.ToastUtil;
+import com.dayu.pipirrapp.view.ConfirmDialog;
 import com.dayu.pipirrapp.view.TitleBar;
 
 /**
@@ -35,18 +40,44 @@
     }
 
     private void initView() {
-        binding.changePS.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                Intent intent = new Intent(MyFragment.this.getContext(), ChangePSActivity.class);
-                MyFragment.this.getActivity().startActivity(intent);
-            }
+        binding.changePS.setOnClickListener(v -> {
+            Intent intent = new Intent(MyFragment.this.getContext(), ChangePSActivity.class);
+            MyFragment.this.getActivity().startActivity(intent);
+        });
+        //閫�鍑虹櫥褰�
+        binding.loginOutRL.setOnClickListener((v) -> {
+
+            ConfirmDialog confirmDialog = new ConfirmDialog(MyFragment.this.getActivity(), "纭畾閫�鍑哄悧锛�", v1 -> {
+                try {
+                    CleanDataUtils.cleanUserData(MyFragment.this.getContext());
+                    Intent intent = new Intent(MyFragment.this.getContext(), LoginActivity.class);
+                    MyFragment.this.getActivity().startActivity(intent);
+                    MyFragment.this.getActivity().finish();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            });
+            confirmDialog.show();
+
         });
         LoginBean loginBean = DaoSingleton.getInstance(MyFragment.this.getContext()).loginDao().findFirst();
         if (loginBean != null) {
             binding.name.setText(loginBean.getName());
             binding.phone.setText(loginBean.getPhone());
         }
+//        娓呴櫎缂撳瓨
+        binding.cleanDataRL.setOnClickListener(v -> {
+            ConfirmDialog confirmDialog = new ConfirmDialog(MyFragment.this.getActivity(), "纭畾娓呴櫎缂撳瓨鍚楋紵", v1 -> {
+                try {
+                    CleanDataUtils.cleanMapData(MyFragment.this.getContext());
+                    ToastUtil.showToast(MyFragment.this.getActivity(), "娓呴櫎鎴愬姛");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            });
+            confirmDialog.show();
+
+        });
     }
 
     private void initData() {
@@ -55,7 +86,18 @@
             binding.name.setText(loginBean.getName());
             binding.phone.setText(loginBean.getPhone());
         }
-
+        //
+        try {
+            PackageInfo packageInfo = MyFragment.this.getActivity().getPackageManager().getPackageInfo(MyFragment.this.getActivity().getPackageName(), 0);
+            binding.versionText.setText(packageInfo.versionName);
+        } catch (PackageManager.NameNotFoundException e) {
+            throw new RuntimeException(e);
+        }
     }
 
+    @Override
+    public void onStart() {
+        super.onStart();
+        new TitleBar(MyFragment.this.getActivity()).setTitleText("鎴戠殑");
+    }
 }
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 3ff5033..0735ae5 100644
--- a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
+++ b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
@@ -82,6 +82,9 @@
     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);
+    }
 
     /**
      * 鍙戦�佽姹�
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 0b665fd..a55e156 100644
--- a/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java
+++ b/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java
@@ -1,19 +1,26 @@
 package com.dayu.pipirrapp.service;
 
-import android.annotation.SuppressLint;
+import android.Manifest;
 import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.app.Service;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.graphics.BitmapFactory;
 import android.location.Criteria;
 import android.location.Location;
 import android.location.LocationListener;
 import android.location.LocationManager;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.IBinder;
+import android.widget.Toast;
 
 import androidx.annotation.Nullable;
+import androidx.core.app.ActivityCompat;
+import androidx.core.app.NotificationCompat;
 
 import com.baidu.location.BDAbstractLocationListener;
 import com.baidu.location.BDLocation;
@@ -23,6 +30,7 @@
 import com.dayu.pipirrapp.activity.MainActivity;
 import com.dayu.pipirrapp.bean.db.LatLonBean;
 import com.dayu.pipirrapp.utils.MyLog;
+import com.dayu.pipirrapp.utils.ToastUtil;
 import com.jeremyliao.liveeventbus.LiveEventBus;
 import com.tencent.bugly.crashreport.CrashReport;
 
@@ -78,32 +86,62 @@
             Notification notification = builder.build(); // 鑾峰彇鏋勫缓濂界殑Notification
             notification.defaults = Notification.DEFAULT_SOUND; //璁剧疆涓洪粯璁ょ殑澹伴煶
         }
-        return super.onStartCommand(intent, flags, startId);
+        return START_STICKY;// 濡傛灉绯荤粺缁堟璇ユ湇鍔★紝涔嬪悗浼氶噸鍚�
     }
 
 
     @Override
     public void onCreate() {
         super.onCreate();
-
+        // 鍚姩鍓嶅彴鏈嶅姟
+        startForegroundService();
         createNativeLocation();
 //        createBDLocation();
     }
 
+    private void startForegroundService() {
+        // 閽堝 Android 8.0 鍙婃洿楂樼増鏈垱寤洪�氱煡娓犻亾
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+            NotificationChannel channel = new NotificationChannel(
+                    "location_channel",
+                    "Location Service Channel",
+                    NotificationManager.IMPORTANCE_DEFAULT
+            );
+            NotificationManager manager = getSystemService(NotificationManager.class);
+            if (manager != null) {
+                manager.createNotificationChannel(channel);
+            }
+        }
+        // 鍒涘缓閫氱煡
+        Intent notificationIntent = new Intent(this, MainActivity.class);
+        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_IMMUTABLE);
+
+        Notification notification = new NotificationCompat.Builder(this, "location_channel")
+                .setContentTitle("瀹氫綅鏈嶅姟")
+                .setContentText("瀹氫綅鏈嶅姟姝e湪鍚庡彴杩愯")
+                .setSmallIcon(R.mipmap.ic_launcher)
+                .setContentIntent(pendingIntent)
+                .build();
+
+        // 灏嗘湇鍔¤缃负鍓嶅彴鏈嶅姟
+        startForeground(1, notification);
+    }
 
     /**
      * 鍘熺敓鐨勫畾浣嶆湇鍔�
      */
-    @SuppressLint("MissingPermission")
     private void createNativeLocation() {
 
         try {
             locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
+            if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
+                // 鎻愮ず鐢ㄦ埛寮�鍚畾浣�
+                Toast.makeText(this, "璇峰紑鍚疓PS瀹氫綅", Toast.LENGTH_SHORT).show();
+            }
             listener = new MyLocationListener();
-
             Criteria criteria = new Criteria();
             // 鏌ヨ绮惧害锛氶珮锛孋riteria.ACCURACY_COARSE姣旇緝绮楃暐锛孋riteria.ACCURACY_FINE鍒欐瘮杈冪簿纭�
-            criteria.setAccuracy(Criteria.ACCURACY_FINE);
+            criteria.setAccuracy(Criteria.ACCURACY_COARSE);
             //涓嶈姹傛捣鎷�
             criteria.setAltitudeRequired(false);
             //涓嶈姹傛柟浣�
@@ -116,7 +154,11 @@
             MyLog.i("瀹氫綅鐨刾rovider:" + provider);
 
             //绗簩涓弬鏁版槸闂撮殧鏃堕棿 绗笁涓弬鏁版槸闂撮殧澶氬皯璺濈锛岃繖閲屾垜璇曡繃浜嗕笉鍚岀殑鍚勭缁勫悎锛岃兘鑾峰彇鍒颁綅缃氨鏄兘锛屼笉鑳借幏鍙栧氨鏄笉鑳�
-            locationManager.requestLocationUpdates(provider, 1000, 0, listener);
+            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+                MyLog.i("鍘熺敓瀹氫綅娌℃湁鏉冮檺>>>>");
+                return;
+            }
+            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER , 1000, 0, listener);
         } catch (Exception e) {
             CrashReport.postCatchedException(e);
         }
@@ -166,6 +208,9 @@
     }
 
 
+    /**
+     * 鍘熺敓瀹氫綅
+     */
     class MyLocationListener implements LocationListener {
         // 浣嶇疆鏀瑰彉鏃惰幏鍙栫粡绾害
         @Override
@@ -179,24 +224,28 @@
             if (isSingle) {
                 stopSelf();  // 鑾峰彇鍒扮粡绾害浠ュ悗锛屽仠姝㈣service
             }
+            ToastUtil.showToast(MyLocationService.this, "鍘熺敓瀹氫綅onLocationChanged:  Latitude锛�" + latitude + "  Longitude锛�" + longitude);
         }
 
         // 鐘舵�佹敼鍙樻椂
         @Override
         public void onStatusChanged(String provider, int status, Bundle extras) {
             MyLog.i("onStatusChanged - provider:" + provider + " status:" + status);
+            ToastUtil.showToast(MyLocationService.this, "onStatusChanged - provider:" + provider + " status:" + status);
         }
 
         // 鎻愪緵鑰呭彲浠ヤ娇鐢ㄦ椂
         @Override
         public void onProviderEnabled(String provider) {
             MyLog.i("GPS寮�鍚簡");
+            ToastUtil.showToast(MyLocationService.this, "GPS寮�鍚簡");
         }
 
         // 鎻愪緵鑰呬笉鍙互浣跨敤鏃�
         @Override
         public void onProviderDisabled(String provider) {
             MyLog.i("GPS鍏抽棴浜�");
+            ToastUtil.showToast(MyLocationService.this, "GPS鍏抽棴浜�");
         }
 
     }
@@ -246,6 +295,11 @@
         MyLog.i("MyLocationService--onDestroy");
         // 鍋滄鍓嶅彴鏈嶅姟--鍙傛暟锛氳〃绀烘槸鍚︾Щ闄や箣鍓嶇殑閫氱煡
         stopForeground(true);
+        // 鑾峰彇NotificationManager骞跺彇娑堥�氱煡锛岀‘淇濋�氱煡琚Щ闄�
+        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+        if (notificationManager != null) {
+            notificationManager.cancel(0);  // 鍙傛暟1瀵瑰簲鐨勬槸startForeground()涓�氱煡鐨処D
+        }
         super.onDestroy();
         // 鍋滄鎵�鏈夌殑瀹氫綅鏈嶅姟
         try {
diff --git a/app/src/main/java/com/dayu/pipirrapp/utils/CleanDataUtils.java b/app/src/main/java/com/dayu/pipirrapp/utils/CleanDataUtils.java
new file mode 100644
index 0000000..e9db421
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/utils/CleanDataUtils.java
@@ -0,0 +1,33 @@
+package com.dayu.pipirrapp.utils;
+
+import android.content.Context;
+
+import com.dayu.pipirrapp.MyApplication;
+import com.dayu.pipirrapp.dao.DaoSingleton;
+
+/**
+ * author: zuo
+ * Date: 2024-10-10
+ * Time: 10:03
+ * 澶囨敞锛氭竻闄ょ紦瀛樿褰�
+ */
+public class CleanDataUtils {
+
+    /**
+     * 娓呴櫎鍦板浘缂撳瓨
+     */
+    public static void cleanMapData(Context context) {
+        DaoSingleton.getInstance(context).markerDao().deleteAll();
+    }
+
+    /**
+     * 娓呴櫎鐢ㄦ埛淇℃伅缂撳瓨
+     * @param context
+     */
+    public static void cleanUserData(Context context) {
+        DaoSingleton.getInstance(context).loginDao().deleteAll();
+        MyApplication.myApplication.token="";
+        SharedPreferencesHelper.getInstance(context).delete(CommonData.Token);
+    }
+
+}
diff --git a/app/src/main/res/layout/activity_splash_screen.xml b/app/src/main/res/layout/activity_splash_screen.xml
new file mode 100644
index 0000000..be06ff0
--- /dev/null
+++ b/app/src/main/res/layout/activity_splash_screen.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+
+    android:orientation="vertical"
+    android:padding="20dp">
+
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="100dp"
+        android:text="澶х鏅鸿兘宸℃绯荤粺"
+        android:textColor="@color/base_blue"
+        android:textSize="25sp" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="100dp"
+        android:text="姝e湪鍚姩....."
+        android:textColor="@color/base_blue"
+        android:textSize="10sp" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_map.xml b/app/src/main/res/layout/fragment_map.xml
index 6bb6bf0..75471b7 100644
--- a/app/src/main/res/layout/fragment_map.xml
+++ b/app/src/main/res/layout/fragment_map.xml
@@ -3,14 +3,14 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-<!--    <com.github.lzyzsd.jsbridge.BridgeWebView-->
-<!--        android:id="@+id/webView"-->
-<!--        android:layout_width="match_parent"-->
-<!--        android:layout_height="match_parent" />-->
-        <WebView
-            android:id="@+id/webView"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent" />
+    <!--    <com.github.lzyzsd.jsbridge.BridgeWebView-->
+    <!--        android:id="@+id/webView"-->
+    <!--        android:layout_width="match_parent"-->
+    <!--        android:layout_height="match_parent" />-->
+    <WebView
+        android:id="@+id/webView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
 
     <TextView
         android:id="@+id/flyBtn"
@@ -20,14 +20,39 @@
         android:layout_centerHorizontal="true"
         android:text="璺宠浆鍒版寚瀹氫綅缃�" />
 
+    <TextView
+        android:id="@+id/stateText"
+        android:layout_width="match_parent"
+        android:layout_height="35dp"
+        android:layout_alignParentTop="true"
+        android:background="@color/base_blue"
+        android:gravity="center"
+        android:text="宸插紑鍚贰妫�"
+        android:textColor="@color/white"
+        android:textSize="18sp" />
+
+    <TextView
+        android:id="@+id/inspectButton"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_marginTop="60dp"
+        android:layout_marginRight="15dp"
+        android:background="@drawable/ic_blue_background"
+        android:padding="10dp"
+        android:text="宸�"
+        android:textColor="@color/white"
+        android:textSize="18sp" />
+
+
     <LinearLayout
-        android:visibility="gone"
         android:id="@+id/bottomLL"
         android:layout_width="match_parent"
         android:layout_height="120dp"
         android:layout_alignParentBottom="true"
         android:background="@color/white"
-        android:orientation="horizontal">
+        android:orientation="horizontal"
+        android:visibility="gone">
 
         <LinearLayout
             android:layout_width="0dp"
diff --git a/app/src/main/res/layout/fragment_my.xml b/app/src/main/res/layout/fragment_my.xml
index 4637efb..25baa94 100644
--- a/app/src/main/res/layout/fragment_my.xml
+++ b/app/src/main/res/layout/fragment_my.xml
@@ -98,37 +98,12 @@
             android:src="@drawable/ic_right" />
     </RelativeLayout>
 
-    <RelativeLayout
-        android:id="@+id/versionRL"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/item_height"
-        android:layout_below="@+id/headRL"
-        android:layout_marginTop="1dp">
-
-        <TextView
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/item_height"
-            android:background="@color/white"
-            android:gravity="center_vertical"
-            android:paddingLeft="30dp"
-            android:text="褰撳墠鐗堟湰"
-            android:textColor="@color/black"
-            android:textSize="@dimen/my_item_text_size" />
-
-        <ImageView
-            android:layout_width="25dp"
-            android:layout_height="25dp"
-            android:layout_alignParentRight="true"
-            android:layout_centerVertical="true"
-            android:layout_marginRight="15dp"
-            android:src="@drawable/ic_right" />
-    </RelativeLayout>
 
     <RelativeLayout
         android:id="@+id/passwordRL"
         android:layout_width="match_parent"
         android:layout_height="@dimen/item_height"
-        android:layout_below="@+id/versionRL"
+        android:layout_below="@+id/headRL"
         android:layout_marginTop="1dp">
 
         <TextView
@@ -153,10 +128,36 @@
     </RelativeLayout>
 
     <RelativeLayout
-        android:id="@+id/loginOutRL"
+        android:id="@+id/cleanDataRL"
         android:layout_width="match_parent"
         android:layout_height="@dimen/item_height"
         android:layout_below="@+id/passwordRL"
+        android:layout_marginTop="1dp">
+
+        <TextView
+            android:id="@+id/cleanData"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/item_height"
+            android:background="@color/white"
+            android:gravity="center_vertical"
+            android:paddingLeft="30dp"
+            android:text="娓呴櫎缂撳瓨"
+            android:textColor="@color/black"
+            android:textSize="@dimen/my_item_text_size" />
+
+        <ImageView
+            android:layout_width="25dp"
+            android:layout_height="25dp"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:layout_marginRight="15dp"
+            android:src="@drawable/ic_right" />
+    </RelativeLayout>
+    <RelativeLayout
+        android:id="@+id/loginOutRL"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/item_height"
+        android:layout_below="@+id/cleanDataRL"
         android:layout_marginTop="1dp">
 
         <TextView
@@ -171,6 +172,7 @@
             android:textSize="@dimen/my_item_text_size" />
 
         <ImageView
+            android:id="@+id/loginOutBtn"
             android:layout_width="25dp"
             android:layout_height="25dp"
             android:layout_alignParentRight="true"
@@ -178,5 +180,37 @@
             android:layout_marginRight="15dp"
             android:src="@drawable/ic_right" />
     </RelativeLayout>
+    <RelativeLayout
+        android:id="@+id/versionRL"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/item_height"
+        android:layout_below="@+id/loginOutRL"
+        android:layout_marginTop="1dp">
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/item_height"
+            android:background="@color/white"
+            android:gravity="center_vertical"
+            android:paddingLeft="30dp"
+            android:text="褰撳墠鐗堟湰"
+            android:textColor="@color/black"
+            android:textSize="@dimen/my_item_text_size" />
+
+
+
+        <TextView
+            android:id="@+id/versionText"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:layout_marginRight="25dp"
+            android:text="v1.0"
+            android:textColor="@color/text_color"
+            android:textSize="15sp" />
+    </RelativeLayout>
+
+
 
 </RelativeLayout>
\ No newline at end of file

--
Gitblit v1.8.0