From 11289fb08aacbe88ec3a53bc03e4c9eb28b8994c Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Fri, 17 Feb 2023 11:41:20 +0800 Subject: [PATCH 1/7] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E9=A2=91=E7=B9=81=E8=AF=B7=E6=B1=82=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../outdoor/activity/HomeActivity.java | 11 +++---- .../com/navinfo/outdoor/api/Constant.java | 1 + .../outdoor/fragment/HasSubmitFragment.java | 6 ++-- .../outdoor/fragment/RecordFragment.java | 33 ++++++++++++++++++- 4 files changed, 41 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/navinfo/outdoor/activity/HomeActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/HomeActivity.java index 762f4f1..391eb2a 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/HomeActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/HomeActivity.java @@ -232,14 +232,13 @@ public class HomeActivity extends BaseActivity { EventBus.getDefault().post(obtain); } else if (tab.getPosition() == 1) { Message obtain = Message.obtain(); - obtain.what = Constant.STAY_SUBMIT_ITEM; - obtain.obj = true; + obtain.what = Constant.SWITCH_RECORFER_ITEM; // 发送消息给Recorder界面,根据子tab的选项请求数据 EventBus.getDefault().post(obtain); - Message obtain1 = Message.obtain(); - obtain1.what = Constant.HAS_SUBMIT_ITEM; - obtain1.obj = true; - EventBus.getDefault().post(obtain1); +// Message obtain1 = Message.obtain(); +// obtain1.what = Constant.HAS_SUBMIT_ITEM; +// obtain1.obj = true; +// EventBus.getDefault().post(obtain1); } else if (tab.getPosition() == 3) { Message obtain = Message.obtain(); obtain.what = Constant.HOME_MINE; diff --git a/app/src/main/java/com/navinfo/outdoor/api/Constant.java b/app/src/main/java/com/navinfo/outdoor/api/Constant.java index 60b5aad..4275f54 100644 --- a/app/src/main/java/com/navinfo/outdoor/api/Constant.java +++ b/app/src/main/java/com/navinfo/outdoor/api/Constant.java @@ -149,6 +149,7 @@ public class Constant { public static final int EVENT_MESSAGE = 55;//提示消息 public static final int CAPACITY_EVALUATION=59;//能力测试的返回 public static final int CHARGING_STATION_DISABLE=60;//能力测试的返回 + public static final int SWITCH_RECORFER_ITEM=61;//记录界面请求数据提醒 public static final String INTENT_POI_VIDEO_TYPE = "poi_video_type"; public static int NUMBER = 200; //任务个数 public static int LIMIT_TYPE = -1; //权限类型,普通任务-0,专属任务-1 diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/HasSubmitFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/HasSubmitFragment.java index 27de024..809aaf1 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/HasSubmitFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/HasSubmitFragment.java @@ -106,9 +106,9 @@ public class HasSubmitFragment extends BaseFragment implements View.OnClickListe @Override public void onResume() { super.onResume(); - if (((HomeActivity)getActivity()).getCurrentTabSelected() == 1) { - initRequest(); - } +// if (((HomeActivity)getActivity()).getCurrentTabSelected() == 1) { +// initRequest(); +// } } @Subscribe diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/RecordFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/RecordFragment.java index c78012e..b5b1779 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/RecordFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/RecordFragment.java @@ -7,6 +7,7 @@ import android.os.Message; import android.view.View; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentPagerAdapter; import androidx.viewpager.widget.ViewPager; @@ -18,6 +19,7 @@ import com.navinfo.outdoor.base.BaseFragment; import com.navinfo.outdoor.util.NoSlideViewPager; import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -29,6 +31,7 @@ import java.util.Objects; public class RecordFragment extends BaseFragment { private final String[] names = {"待提交", "已提交"}; + private TabLayout tabRecord; public static RecordFragment newInstance(Bundle bundle) { RecordFragment fragment = new RecordFragment(); @@ -44,7 +47,7 @@ public class RecordFragment extends BaseFragment { @Override protected void initView() { super.initView(); - TabLayout tabRecord = findViewById(R.id.tab_record); + tabRecord = findViewById(R.id.tab_record); NoSlideViewPager vpRecord = findViewById(R.id.vp_record); ArrayList fragments = new ArrayList<>(); // 待提交 @@ -105,9 +108,37 @@ public class RecordFragment extends BaseFragment { super.onPause(); } + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (!EventBus.getDefault().isRegistered(this)) { + EventBus.getDefault().register(this); + } + } + @Override public void onDestroy() { super.onDestroy(); + if (EventBus.getDefault().isRegistered(this)) { + EventBus.getDefault().unregister(this); + } + } + + @Subscribe + public void onEvent(Message data) { + if (data.what == Constant.SWITCH_RECORFER_ITEM) { + if (tabRecord.getSelectedTabPosition() == 0) { + Message obtain = Message.obtain(); + obtain.what = Constant.STAY_SUBMIT_ITEM; + obtain.obj = true; + EventBus.getDefault().post(obtain); + } else { + Message obtain1 = Message.obtain(); + obtain1.what = Constant.HAS_SUBMIT_ITEM; + obtain1.obj = true; + EventBus.getDefault().post(obtain1); + } + } } } \ No newline at end of file From f7943db1c0944710d53bb1cd1a6db54f2c595eca Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Fri, 17 Feb 2023 13:33:55 +0800 Subject: [PATCH 2/7] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../activity/AutoTakePictureActivity.java | 5 +- .../outdoor/activity/HomeActivity.java | 1 + .../navinfo/outdoor/api/UserApplication.java | 5 +- .../navinfo/outdoor/http/HttpInterface.java | 6 +- .../navinfo/outdoor/util/CrashHandler.java | 92 +++++++++++++++++++ .../com/navinfo/outdoor/util/GPSUtils.java | 7 +- .../outdoor/util/LocationLifeCycle.java | 16 +++- .../outdoor/util/TencentLocationObtain.java | 21 +++-- 9 files changed, 134 insertions(+), 23 deletions(-) create mode 100644 app/src/main/java/com/navinfo/outdoor/util/CrashHandler.java diff --git a/app/build.gradle b/app/build.gradle index 4d4059c..e736570 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,8 +12,8 @@ android { applicationId "com.navinfo.outdoor" minSdkVersion 24 targetSdkVersion 30 - versionCode 46 - versionName "8.230214" + versionCode 47 + versionName "8.230216" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { diff --git a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java index 7520939..f5c55d9 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java @@ -506,7 +506,10 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic @Override public void onMapClick(LatLng latLng) { Message msg = handler.obtainMessage(0x105); - msg.obj = TencentLocationObtain.obtainTecentLocation(latLng); + Location location = new Location("GPS"); + location.setLongitude(latLng.getLongitude()); + location.setLatitude(latLng.getLatitude()); + msg.obj = TencentLocationObtain.obtainTecentLocation(location); handler.sendMessage(msg); } }); diff --git a/app/src/main/java/com/navinfo/outdoor/activity/HomeActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/HomeActivity.java index 391eb2a..02c7571 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/HomeActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/HomeActivity.java @@ -48,6 +48,7 @@ import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.location.Location; import android.os.Bundle; import android.os.Handler; import android.os.Message; diff --git a/app/src/main/java/com/navinfo/outdoor/api/UserApplication.java b/app/src/main/java/com/navinfo/outdoor/api/UserApplication.java index c355cf1..94aa68e 100644 --- a/app/src/main/java/com/navinfo/outdoor/api/UserApplication.java +++ b/app/src/main/java/com/navinfo/outdoor/api/UserApplication.java @@ -8,8 +8,6 @@ import android.content.Intent; import android.os.StrictMode; import android.util.Log; -import androidx.lifecycle.ProcessLifecycleOwner; - import com.lzy.okgo.OkGo; import com.lzy.okgo.cache.CacheEntity; import com.lzy.okgo.cache.CacheMode; @@ -17,6 +15,7 @@ import com.lzy.okgo.cookie.CookieJarImpl; import com.lzy.okgo.cookie.store.DBCookieStore; import com.lzy.okgo.interceptor.HttpLoggingInterceptor; import com.lzy.okgo.model.HttpHeaders; +import com.navinfo.outdoor.util.CrashHandler; import com.tencent.map.navi.TencentNavi; import com.tencent.navi.surport.utils.DeviceUtils; import com.tencent.tencentmap.mapsdk.maps.TencentMapInitializer; @@ -62,7 +61,7 @@ public class UserApplication extends Application { config.setDeviceId(deviceID); // 或者设置开发者自己的的设备号config.setDeviceId(xxxxxxxx); TencentNavi.init(this, config); - + CrashHandler.getInstance().init(); } public static UserApplication getUserApplication() { diff --git a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java index 2b82a96..e7b38a3 100644 --- a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java +++ b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java @@ -2,9 +2,9 @@ package com.navinfo.outdoor.http; public class HttpInterface { // public static final String IP = "http://172.23.138.133:9999/m4";//测试接口-IP - public static final String IP2 = "http://dtxbmaps.navinfo.com/dtxb/dev/m4";//开发接口-外网 - public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/test/m4";//测试接口-外网 - public static final String IP1 = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口 + public static final String IP1 = "http://dtxbmaps.navinfo.com/dtxb/dev/m4";//开发接口-外网 + public static final String IP2 = "http://dtxbmaps.navinfo.com/dtxb/test/m4";//测试接口-外网 + public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口 public static final String USER_PATH = "/user/";//我的 public static final String MSG_LIST_PATH = "/msgList/";//发现 public static final String USER_LOGIN_PATH = "/userlogin/";//登录 diff --git a/app/src/main/java/com/navinfo/outdoor/util/CrashHandler.java b/app/src/main/java/com/navinfo/outdoor/util/CrashHandler.java new file mode 100644 index 0000000..e174af6 --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/util/CrashHandler.java @@ -0,0 +1,92 @@ +package com.navinfo.outdoor.util; + +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.os.Looper; +import android.os.SystemClock; +import android.widget.Toast; + +import com.elvishew.xlog.XLog; +import com.navinfo.outdoor.api.UserApplication; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.io.Writer; + + +public class CrashHandler implements Thread.UncaughtExceptionHandler { + + private static volatile CrashHandler INSTANCE; + + private CrashHandler() { + } + + public static CrashHandler getInstance() { + if (INSTANCE == null) { + synchronized (CrashHandler.class) { + if (INSTANCE == null) { + synchronized (CrashHandler.class) { + INSTANCE = new CrashHandler(); + } + } + } + } + return INSTANCE; + } + + private Thread.UncaughtExceptionHandler mDefaultHandler; + + /** + * 初始化默认异常捕获 + */ + public void init() { + // 获取默认异常处理器 + mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler(); + // 将当前类设为默认异常处理器 + Thread.setDefaultUncaughtExceptionHandler(this); + } + + @Override + public void uncaughtException(Thread t, Throwable e) { + if (handleException(e)) { + Toast.makeText(UserApplication.getUserApplication(), "抱歉,出现不可预知错误,请联系工作人员!", Toast.LENGTH_SHORT).show(); + // 已经处理,APP重启 + restartApp(); + } else { + // 如果不处理,则调用系统默认处理异常,弹出系统强制关闭的对话框 + if (mDefaultHandler != null) { + mDefaultHandler.uncaughtException(t, e); + } + } + } + + private boolean handleException(Throwable e) { + if (e == null) { + return false; + } + + Writer writer = new StringWriter(); + PrintWriter pw = new PrintWriter(writer); + e.printStackTrace(pw); + pw.close(); + String result = writer.toString(); + // 打印出错误日志 + XLog.e(result); + return true; + } + + /** + * 1s后让APP重启 + */ + private void restartApp() { + Intent intent = UserApplication.getUserApplication().getPackageManager() + .getLaunchIntentForPackage(UserApplication.getUserApplication().getPackageName()); + PendingIntent restartIntent = PendingIntent.getActivity(UserApplication.getUserApplication(), 0, intent, 0); + AlarmManager mgr = (AlarmManager) UserApplication.getUserApplication().getSystemService(Context.ALARM_SERVICE); + // 1秒钟后重启应用 + mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent); + System.exit(0); + } +} diff --git a/app/src/main/java/com/navinfo/outdoor/util/GPSUtils.java b/app/src/main/java/com/navinfo/outdoor/util/GPSUtils.java index 3ecd976..c981d4a 100644 --- a/app/src/main/java/com/navinfo/outdoor/util/GPSUtils.java +++ b/app/src/main/java/com/navinfo/outdoor/util/GPSUtils.java @@ -25,6 +25,9 @@ import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import com.navinfo.outdoor.api.Constant; +import com.tencent.map.fusionlocation.model.TencentGeoLocation; +import com.tencent.map.geolocation.TencentLocation; +import com.tencent.tencentmap.mapsdk.maps.model.LatLng; import org.greenrobot.eventbus.EventBus; @@ -171,10 +174,12 @@ public class GPSUtils { Log.i(TAG, "纬度:" + location.getLatitude()); Log.i(TAG, "海拔:" + location.getAltitude()); + TencentLocation tencentLocation = TencentLocationObtain.obtainTecentLocation(location); + Message currentLocationMsg = Message.obtain(); currentLocationMsg.what = Constant.EVENT_WHAT_LOCATION_CHANGE; currentLocationMsg.arg1 = LocationLifeCycle.LOCATION_FROM.ORIGIN.ordinal(); // 设置定位来源 - currentLocationMsg.obj = location; + currentLocationMsg.obj = tencentLocation; EventBus.getDefault().post(currentLocationMsg); } diff --git a/app/src/main/java/com/navinfo/outdoor/util/LocationLifeCycle.java b/app/src/main/java/com/navinfo/outdoor/util/LocationLifeCycle.java index ccfecff..8e93fa3 100644 --- a/app/src/main/java/com/navinfo/outdoor/util/LocationLifeCycle.java +++ b/app/src/main/java/com/navinfo/outdoor/util/LocationLifeCycle.java @@ -23,7 +23,7 @@ public class LocationLifeCycle implements DefaultLifecycleObserver { private Context mContext; private LOCATION_FROM mainLocationFrom = LOCATION_FROM.TENCENT/*主要位置源*/, referenceLocationFrom = LOCATION_FROM.ORIGIN/*参考位置源*/; private TencentLocation tencentLocation; // 腾讯定位获取到的最新位置信息 - private Location gpsLocation; // 原生系统获取到的最新位置 + private TencentLocation gpsLocation; // 原生系统获取到的最新位置 private List locationChangedListenerList; private static LocationLifeCycle instance; @@ -80,11 +80,21 @@ public class LocationLifeCycle implements DefaultLifecycleObserver { public void onEventMessageMainThread(Message msg) { if (msg.what == Constant.EVENT_WHAT_LOCATION_CHANGE) { // 用户位置更新 if (msg.arg1 == LOCATION_FROM.ORIGIN.ordinal()) { - gpsLocation = (Location) msg.obj; + gpsLocation = (TencentLocation) msg.obj; if (msg.arg1 == mainLocationFrom.ordinal()) { // 如果当前定位方式是主要定位方式 + MyLocation location = new MyLocation(gpsLocation.getProvider(), gpsLocation); + //设置经纬度以及精度 + location.setLatitude(gpsLocation.getLatitude()); + location.setLongitude(gpsLocation.getLongitude()); + if (gpsLocation.getBearing()!=0) { + location.setBearing(gpsLocation.getBearing()); + } else { + location.setBearing((float) gpsLocation.getDirection()); + } + location.setAccuracy(gpsLocation.getAccuracy()); if (locationChangedListenerList!=null) { for (LocationSource.OnLocationChangedListener locationChangedListener:locationChangedListenerList) { - locationChangedListener.onLocationChanged(gpsLocation); + locationChangedListener.onLocationChanged(location); } } } diff --git a/app/src/main/java/com/navinfo/outdoor/util/TencentLocationObtain.java b/app/src/main/java/com/navinfo/outdoor/util/TencentLocationObtain.java index 00330ce..ca91d3f 100644 --- a/app/src/main/java/com/navinfo/outdoor/util/TencentLocationObtain.java +++ b/app/src/main/java/com/navinfo/outdoor/util/TencentLocationObtain.java @@ -1,5 +1,6 @@ package com.navinfo.outdoor.util; +import android.location.Location; import android.os.Bundle; import com.tencent.map.geolocation.TencentLocation; @@ -10,11 +11,11 @@ import com.tencent.tencentmap.mapsdk.maps.model.LatLng; import java.util.List; public class TencentLocationObtain { - public static TencentLocation obtainTecentLocation(LatLng latLng) { + public static TencentLocation obtainTecentLocation(Location location) { return new TencentLocation() { @Override public String getProvider() { - return "NetWork"; + return location.getProvider(); } @Override @@ -29,22 +30,22 @@ public class TencentLocationObtain { @Override public double getLatitude() { - return latLng.getLatitude(); + return location.getLatitude(); } @Override public double getLongitude() { - return latLng.getLongitude(); + return location.getLongitude(); } @Override public double getAltitude() { - return latLng.getAltitude(); + return location.getAltitude(); } @Override public float getAccuracy() { - return 100; + return location.getAccuracy(); } @Override @@ -109,22 +110,22 @@ public class TencentLocationObtain { @Override public float getBearing() { - return 0; + return location.getBearing(); } @Override public float getSpeed() { - return 0; + return location.getSpeed(); } @Override public long getTime() { - return 0; + return location.getTime(); } @Override public long getElapsedRealtime() { - return 0; + return location.getElapsedRealtimeNanos(); } @Override From 88dd96f5722083d1caf45832530648d5961ecb98 Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Tue, 21 Feb 2023 11:11:18 +0800 Subject: [PATCH 3/7] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E4=BA=86=E6=8B=8D?= =?UTF-8?q?=E7=85=A7=E7=95=8C=E9=9D=A2=E5=87=BA=E7=8E=B0=E7=9A=84=E5=AE=9A?= =?UTF-8?q?=E4=BD=8D=E4=B8=8D=E5=AD=98=E5=9C=A8=E5=AF=BC=E8=87=B4=E7=9A=84?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=B4=A9=E6=BA=83=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +-- .../outdoor/activity/PicturesActivity.java | 34 +++++++++++++++---- .../com/navinfo/outdoor/util/SystemTTS.java | 6 ++++ 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e736570..f6be86c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,8 +12,8 @@ android { applicationId "com.navinfo.outdoor" minSdkVersion 24 targetSdkVersion 30 - versionCode 47 - versionName "8.230216" + versionCode 48 + versionName "8.230221" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { diff --git a/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java index d956fd5..6798158 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java @@ -699,6 +699,8 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen 0, //目标倾斜角[0.0 ~ 45.0] (垂直地图时为0) 0)); //目标旋转角 0~360° (正北方为0) tencentMap.animateCamera(cameraSigma); + } else { + ToastUtils.Message(this, "当前定位方式无法获取位置信息!"); } setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE); break; @@ -706,8 +708,10 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen imgLocationType.setSelected(!imgLocationType.isSelected()); if (imgLocationType.isSelected()) { // 选中状态,切换为GPS为主定位 LocationLifeCycle.getInstance().setMainLocationFrom(LocationLifeCycle.LOCATION_FROM.ORIGIN); + ToastUtils.Message(PicturesActivity.this, "切换为GPS定位"); } else { LocationLifeCycle.getInstance().setMainLocationFrom(LocationLifeCycle.LOCATION_FROM.TENCENT); + ToastUtils.Message(PicturesActivity.this, "切换为网络定位"); } break; } @@ -946,11 +950,20 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen sb.append(index == -1 ? 0 : index);//個數 startVideoIndex = index == -1 ? 0 : index; sb.append(","); - sb.append(LocationLifeCycle.getInstance().getMainLocation().getLatitude()); - sb.append(","); - sb.append(LocationLifeCycle.getInstance().getMainLocation().getLongitude()); - sb.append(","); - sb.append(LocationLifeCycle.getInstance().getMainLocation().getBearing()); + if (LocationLifeCycle.getInstance().getMainLocation()!=null) { + sb.append(LocationLifeCycle.getInstance().getMainLocation().getLatitude()); + sb.append(","); + sb.append(LocationLifeCycle.getInstance().getMainLocation().getLongitude()); + sb.append(","); + sb.append(LocationLifeCycle.getInstance().getMainLocation().getBearing()); + } else { + sb.append(LocationLifeCycle.getInstance().getTencentLocation().getLatitude()); + sb.append(","); + sb.append(LocationLifeCycle.getInstance().getTencentLocation().getLongitude()); + sb.append(","); + sb.append(LocationLifeCycle.getInstance().getTencentLocation().getBearing()); + ToastUtils.Message(PicturesActivity.this, "主定位方式无法获取位置信息,使用腾讯定位记录当前位置!"); + } sb.append(","); int gpsRssi = GPSUtils.getInstance(PicturesActivity.this).getSateliteCount(); if (gpsRssi == 0) { @@ -1015,7 +1028,10 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen private boolean isSpeedLimitTips = false; private void initSpeed() { - if (isSpeedLimitTips == true) { + if (!systemTTS.isSpeaking()) { + isSpeedLimitTips = false; + } + if (isSpeedLimitTips == true || LocationLifeCycle.getInstance().getMainLocation() == null) { return; } float speed = LocationLifeCycle.getInstance().getMainLocation().getSpeed();//米/秒 @@ -1144,7 +1160,11 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen */ public void initMarker(boolean isOration) { LatLng latLng = null; - latLng = new LatLng(LocationLifeCycle.getInstance().getMainLocation().getLatitude(), LocationLifeCycle.getInstance().getMainLocation().getLongitude()); + if (LocationLifeCycle.getInstance().getMainLocation()!=null) { + latLng = new LatLng(LocationLifeCycle.getInstance().getMainLocation().getLatitude(), LocationLifeCycle.getInstance().getMainLocation().getLongitude()); + } else { + latLng = new LatLng(LocationLifeCycle.getInstance().getTencentLocation().getLatitude(), LocationLifeCycle.getInstance().getTencentLocation().getLongitude()); + } BitmapDescriptor pileDescriptor = BitmapDescriptorFactory .fromResource(R.drawable.circle); Marker marker = tencentMap.addMarker(new MarkerOptions(latLng) diff --git a/app/src/main/java/com/navinfo/outdoor/util/SystemTTS.java b/app/src/main/java/com/navinfo/outdoor/util/SystemTTS.java index 2d1ddb8..bb3715b 100644 --- a/app/src/main/java/com/navinfo/outdoor/util/SystemTTS.java +++ b/app/src/main/java/com/navinfo/outdoor/util/SystemTTS.java @@ -97,5 +97,11 @@ public class SystemTTS extends UtteranceProgressListener implements TTS, TextToS } + public boolean isSpeaking() { + if (textToSpeech!=null) { + return textToSpeech.isSpeaking(); + } + return false; + } } From 37e4c590413bfeee046ffc2baa10f2b9a6aed15e Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Fri, 17 Mar 2023 16:14:10 +0800 Subject: [PATCH 4/7] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E9=81=93?= =?UTF-8?q?=E8=B7=AF=E4=BB=BB=E5=8A=A1=E6=8B=8D=E6=91=84=E6=97=B6=E7=9A=84?= =?UTF-8?q?=E8=B7=9D=E7=A6=BB=E5=88=A4=E5=AE=9A=EF=BC=8C=E5=BD=93=E8=BF=9E?= =?UTF-8?q?=E7=BB=AD5=E4=B8=AA=E7=82=B9=E8=B7=9D=E7=A6=BB=E5=B0=8F?= =?UTF-8?q?=E4=BA=8E2=E7=B1=B3=E6=97=B6=E6=9A=82=E5=81=9C=E6=8B=8D?= =?UTF-8?q?=E6=91=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../activity/AutoTakePictureActivity.java | 10 +++++ .../outdoor/activity/PicturesActivity.java | 12 ++++++ .../outdoor/util/PicturesSpeedCheck.kt | 43 +++++++++++++++++++ 4 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/navinfo/outdoor/util/PicturesSpeedCheck.kt diff --git a/app/build.gradle b/app/build.gradle index f6be86c..dba63c0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,8 +12,8 @@ android { applicationId "com.navinfo.outdoor" minSdkVersion 24 targetSdkVersion 30 - versionCode 48 - versionName "8.230221" + versionCode 49 + versionName "8.230317" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { diff --git a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java index f5c55d9..1ba09f6 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java @@ -85,6 +85,7 @@ import com.navinfo.outdoor.util.LocationLifeCycle; import com.navinfo.outdoor.util.MyLocation; import com.navinfo.outdoor.util.MyTecentLocationSource; import com.navinfo.outdoor.util.NaviUtils; +import com.navinfo.outdoor.util.PicturesSpeedCheck; import com.navinfo.outdoor.util.PreserveUtils; import com.navinfo.outdoor.util.SystemTTS; import com.navinfo.outdoor.util.TencentLocationObtain; @@ -239,10 +240,12 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic private boolean startMatchEnableDirection = true; // 是否启用方向匹配起点 private Logger logger; private ImageView imgLocationType; + private PicturesSpeedCheck speedCheck; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + speedCheck = new PicturesSpeedCheck(); SharedPreferences sharedPreferences = getSharedPreferences("pic", Context.MODE_PRIVATE); BRIGHTNESS = sharedPreferences.getInt("brightness", 40); FRAMENESS = sharedPreferences.getInt("framness", 30); @@ -575,6 +578,13 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic return; } + // 道路任务增加检查 + // 检测到当前车辆未移动,则无需进行拍摄 + if (!speedCheck.checkIsMove(LocationLifeCycle.getInstance().getMainLocation(), GPSUtils.getInstance(AutoTakePictureActivity.this).getSateliteCount())) { + com.github.lazylibrary.util.ToastUtils.showToast(AutoTakePictureActivity.this, "车辆静止中,暂停拍摄!"); + return; + } + File tmpPicFolder = new File(tmpPicFoldPath); if (!tmpPicFolder.exists()) { tmpPicFolder.mkdirs(); diff --git a/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java index 6798158..eeb8567 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java @@ -53,6 +53,7 @@ import com.navinfo.outdoor.util.Gps; import com.navinfo.outdoor.util.LocationLifeCycle; import com.navinfo.outdoor.util.MyLocation; import com.navinfo.outdoor.util.MyTecentLocationSource; +import com.navinfo.outdoor.util.PicturesSpeedCheck; import com.navinfo.outdoor.util.SystemTTS; import com.navinfo.outdoor.util.TimestampUtil; import com.navinfo.outdoor.util.ToastUtils; @@ -159,6 +160,7 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen private static int BRIGHTNESS=40, FRAMENESS=30; @SuppressLint("SimpleDateFormat") private SimpleDateFormat formatter; + private PicturesSpeedCheck speedCheck; private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(@NonNull Message msg) { @@ -194,6 +196,7 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen // 设置当前界面亮度为40% setWindowBrightness(BRIGHTNESS); LocationLifeCycle.getInstance().startGPSLocation(); + speedCheck = new PicturesSpeedCheck(); } @Override @@ -415,6 +418,15 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen } } + // 道路任务增加检查 + if (type == 4) { + // 检测到当前车辆未移动,则无需进行拍摄 + if (!speedCheck.checkIsMove(LocationLifeCycle.getInstance().getMainLocation(), GPSUtils.getInstance(PicturesActivity.this).getSateliteCount())) { + com.github.lazylibrary.util.ToastUtils.showToast(PicturesActivity.this, "车辆静止中,暂停拍摄!"); + return; + } + } + File file = new File(finalVideoPath); synchronized (finalVideoPath) { // 生成点位marker diff --git a/app/src/main/java/com/navinfo/outdoor/util/PicturesSpeedCheck.kt b/app/src/main/java/com/navinfo/outdoor/util/PicturesSpeedCheck.kt new file mode 100644 index 0000000..94ec038 --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/util/PicturesSpeedCheck.kt @@ -0,0 +1,43 @@ +package com.navinfo.outdoor.util + +import com.tencent.tencentmap.mapsdk.maps.model.LatLng + +class PicturesSpeedCheck { + val pointList = mutableListOf() + val LIST_SIZE = 5 + val DISTANCE = 2 + + /** + * 与前面的4个点做检查,如果当前点位距离前面4个点的距离超过阈值,且当前卫星信号强度为中以上(8颗),则返回false + * */ + fun checkIsMove(myLocation: MyLocation, sateliteCount: Int/*卫星颗数*/): Boolean { + pointList.add(myLocation) + if (pointList.size<5) { // 点位小于4个,不做判断,默认为运动中 + return true + } + if (pointList.size>5) { // 如果点位信息超过5个,移除第一个数据 + pointList.removeAt(0) + } + + if (sateliteCount<=3) { // 卫星颗数小于等于3,说明当前卫星信号弱,则忽略距离因素,认为车辆在移动中 + return true + } + + var distance = 0.0 + for (index in pointList.indices) { + if (index+1DISTANCE) { // 如果距离已经大于设置的距离阈值,无需再计算后面的点位,车辆运动中 + return true + } + } + return false + } +} \ No newline at end of file From 4317bc87d863a0c1f31793107fe2b1cbe37169c6 Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Fri, 17 Mar 2023 16:24:33 +0800 Subject: [PATCH 5/7] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index dba63c0..05e1f86 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,7 +13,7 @@ android { minSdkVersion 24 targetSdkVersion 30 versionCode 49 - versionName "8.230317" + versionName "8.230317-开发" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { diff --git a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java index e7b38a3..a4aa68a 100644 --- a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java +++ b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java @@ -2,9 +2,9 @@ package com.navinfo.outdoor.http; public class HttpInterface { // public static final String IP = "http://172.23.138.133:9999/m4";//测试接口-IP - public static final String IP1 = "http://dtxbmaps.navinfo.com/dtxb/dev/m4";//开发接口-外网 + public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/dev/m4";//开发接口-外网 public static final String IP2 = "http://dtxbmaps.navinfo.com/dtxb/test/m4";//测试接口-外网 - public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口 + public static final String IP0 = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口 public static final String USER_PATH = "/user/";//我的 public static final String MSG_LIST_PATH = "/msgList/";//发现 public static final String USER_LOGIN_PATH = "/userlogin/";//登录 From a66647d735d259e73e904eb552db383e569bb154 Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Mon, 20 Mar 2023 10:20:45 +0800 Subject: [PATCH 6/7] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- .../main/java/com/navinfo/outdoor/http/HttpInterface.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 05e1f86..c66b1a5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,7 +13,7 @@ android { minSdkVersion 24 targetSdkVersion 30 versionCode 49 - versionName "8.230317-开发" + versionName "8.230320-正式版" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { diff --git a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java index a4aa68a..e9a998b 100644 --- a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java +++ b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java @@ -2,9 +2,9 @@ package com.navinfo.outdoor.http; public class HttpInterface { // public static final String IP = "http://172.23.138.133:9999/m4";//测试接口-IP - public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/dev/m4";//开发接口-外网 - public static final String IP2 = "http://dtxbmaps.navinfo.com/dtxb/test/m4";//测试接口-外网 - public static final String IP0 = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口 + public static final String IP0 = "http://dtxbmaps.navinfo.com/dtxb/dev/m4";//开发接口-外网 + public static final String IP1 = "http://dtxbmaps.navinfo.com/dtxb/test/m4";//测试接口-外网 + public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口 public static final String USER_PATH = "/user/";//我的 public static final String MSG_LIST_PATH = "/msgList/";//发现 public static final String USER_LOGIN_PATH = "/userlogin/";//登录 From 6399dc3abc55ceaf2549a22db0a6ad52119d5aa9 Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Thu, 23 Mar 2023 15:49:18 +0800 Subject: [PATCH 7/7] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9XLog=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/navinfo/outdoor/fragment/StaySubmitFragment.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/StaySubmitFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/StaySubmitFragment.java index ac2d18a..63e3d3f 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/StaySubmitFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/StaySubmitFragment.java @@ -79,7 +79,7 @@ public class StaySubmitFragment extends BaseFragment implements View.OnClickList private CheckBox cbSelect; private File logFile; private StringBuilder staySubmitBuilder; - private Logger logger = XLogUtils.Companion.getInstance().getUploadLogWriter(); + private Logger logger; public static StaySubmitFragment newInstance(Bundle bundle) { StaySubmitFragment fragment = new StaySubmitFragment(); @@ -93,6 +93,7 @@ public class StaySubmitFragment extends BaseFragment implements View.OnClickList if (!EventBus.getDefault().isRegistered(this)) {//加上判断 EventBus.getDefault().register(this); } + logger = XLogUtils.Companion.getInstance().getUploadLogWriter(); } @Override