From 06d64f5fe8166edb4911b41137d7aff053eb1ec4 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 9 Mar 2023 14:11:40 +0800 Subject: [PATCH 1/6] =?UTF-8?q?[m1]=E8=B0=83=E6=95=B4=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=98=BE=E7=A4=BALogo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/item_m_msg_box_operation.xml | 7 +++---- .../src/main/res/layout/item_m_msg_list_operation.xml | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_m_msg_box_operation.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_m_msg_box_operation.xml index d8d1747997..de8d8eae24 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_m_msg_box_operation.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_m_msg_box_operation.xml @@ -10,13 +10,12 @@ Date: Thu, 9 Mar 2023 16:04:40 +0800 Subject: [PATCH 2/6] [2.13.0-arch-opt] reset color of jiangshiche --- .../function/business/identify/TrackerSourceColorHelper.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackerSourceColorHelper.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackerSourceColorHelper.kt index 13f0e013b1..b2400ffa9a 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackerSourceColorHelper.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackerSourceColorHelper.kt @@ -65,10 +65,10 @@ object TrackerSourceColorHelper { //僵尸车 if(data.addAttribute == AdditionalAttribute.ATTR_ZOMBIE){ - color = "#AE7887FF" + color = "#AD7488FF" CallerMapUIServiceManager.getMapUIController()?.let { if(it.isDayMode){ - color = "#AD7488FF" + color = "#AE7887FF" } } } From 0349a4925a7a1a737a9950b74d13a01f763da263 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Thu, 9 Mar 2023 16:26:51 +0800 Subject: [PATCH 3/6] =?UTF-8?q?[Opt3.0]=E8=A7=A3=E5=86=B3=E4=B8=8B?= =?UTF-8?q?=E6=96=B0=E7=9A=84=E8=AE=A2=E5=8D=95=E5=AF=BC=E8=87=B4=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9=E7=94=BB=E7=BA=BF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/function/smp/MarkerDrawerManager.kt | 18 +++++++++--------- .../eagle/core/function/view/OverMapView.kt | 4 ++++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt index 1c916ecbf7..1b8eb5302d 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt @@ -22,9 +22,7 @@ object MarkerDrawerManager { fun onLocationChanged(planningPoints: List, locIndex: Int) } - private val routeWipeDisposable by lazy { - CompositeDisposable() - } + private var routeWipeDisposable: CompositeDisposable? = null // 自主画线的所有高德坐标系的轨迹点 val planningPoints by lazy { @@ -40,19 +38,22 @@ object MarkerDrawerManager { var callback: Callback? = null fun startLoopCalCarLocation() { + routeWipeDisposable = CompositeDisposable() getLoopCalCarObservable().delay(1000L, TimeUnit.MILLISECONDS, true) .subscribeOn(Schedulers.io()) .repeat() .retry() .observeOn(AndroidSchedulers.mainThread()) .subscribe().let { - routeWipeDisposable.add(it) + routeWipeDisposable?.add(it) } } fun stopLoopCalCarLocation() { - if (!routeWipeDisposable.isDisposed) { - routeWipeDisposable.dispose() + routeWipeDisposable?.let { + if (!it.isDisposed) { + it.dispose() + } } } @@ -103,7 +104,6 @@ object MarkerDrawerManager { var baseDiffDis = CoordinateUtils.calculateLineDistance( realLon, realLat, baseLatLng.longitude, baseLatLng.latitude ) // lon,lat, prelon, prelat -// val lastIndex = if (lastArrivedIndex >= 1 && lastArrivedIndex <= routePoints.size - 1) lastArrivedIndex else 1 for (i in 1 until routePoints.size) { val latLng = routePoints[i] val diff = CoordinateUtils.calculateLineDistance( @@ -111,8 +111,8 @@ object MarkerDrawerManager { ) if (baseDiffDis > diff) { baseDiffDis = diff - // 距离最近的时候判断是否走过 - if (DrivingDirectionUtils.getDegreeOfCar2Poi2(realLon, realLat, latLng.longitude, latLng.latitude, heading) >= 90) { + // 距离最近的时候判断是否走过,且车行驶是线性连续的1s不会跳点过多 + if (DrivingDirectionUtils.getDegreeOfCar2Poi2(realLon, realLat, latLng.longitude, latLng.latitude, heading) >= 90 && i - lastArrivedIndex < 3) { currentIndex = i } } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt index dd56a3045b..3cef39a6a1 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt @@ -36,6 +36,7 @@ import com.mogo.eagle.core.function.smp.MakerWithCount import com.mogo.eagle.core.function.smp.MarkerDrawerManager import com.mogo.eagle.core.function.smp.MarkerDrawerManager.callback import com.mogo.eagle.core.function.smp.MarkerDrawerManager.coordinateConverterWgsToGcj +import com.mogo.eagle.core.function.smp.MarkerDrawerManager.lastArrivedIndex import com.mogo.eagle.core.function.smp.MarkerDrawerManager.lonLatHeading import com.mogo.eagle.core.function.smp.MarkerDrawerManager.planningPoints import com.mogo.eagle.core.function.smp.MarkerDrawerManager.startLoopCalCarLocation @@ -236,6 +237,9 @@ class OverMapView @JvmOverloads constructor( } mStartMarker?.isVisible = false mEndMarker?.isVisible = false + MarkerDrawerManager.stopLoopCalCarLocation() + planningPoints.clear() + lastArrivedIndex = -1 } @SuppressLint("UseCompatLoadingForDrawables") From bebcddee310ec0b29d2709e6ecc1caab1e2ae244 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Thu, 9 Mar 2023 16:27:11 +0800 Subject: [PATCH 4/6] =?UTF-8?q?[Opt3.0]=E5=86=85=E9=83=A8=E5=B0=81?= =?UTF-8?q?=E8=A3=85TTS=E5=9C=A8=E4=B8=BB=E7=BA=BF=E7=A8=8B=E4=B8=AD?= =?UTF-8?q?=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/tts/iflytek/IFlyTekTts.kt | 47 ++++++++++++++++--- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/tts/tts-iflytek/src/main/java/com/mogo/tts/iflytek/IFlyTekTts.kt b/tts/tts-iflytek/src/main/java/com/mogo/tts/iflytek/IFlyTekTts.kt index f0752af30c..4dab0363b9 100644 --- a/tts/tts-iflytek/src/main/java/com/mogo/tts/iflytek/IFlyTekTts.kt +++ b/tts/tts-iflytek/src/main/java/com/mogo/tts/iflytek/IFlyTekTts.kt @@ -68,8 +68,15 @@ class IFlyTekTts : IMogoTTS, InitListener { } override fun release() { - ttsEngine?.stopSpeaking() - ttsEngine?.destroy() + if (Thread.currentThread() != Looper.getMainLooper().thread) { + UiThreadHandler.post { + ttsEngine?.stopSpeaking() + ttsEngine?.destroy() + } + } else { + ttsEngine?.stopSpeaking() + ttsEngine?.destroy() + } } override fun flush() { @@ -91,7 +98,16 @@ class IFlyTekTts : IMogoTTS, InitListener { override fun speakTTSVoiceWithLevel(tts: String?, level: Int, callBack: IMogoTTSCallback?) { if (tts.isNullOrEmpty()) return - speakMultiLangTTSWithLevel(MultiLangTtsEntity(listOf(LangTtsEntity(tts, LanguageType.CHINESE))), level, callBack) + speakMultiLangTTSWithLevel( + MultiLangTtsEntity( + listOf( + LangTtsEntity( + tts, + LanguageType.CHINESE + ) + ) + ), level, callBack + ) } override fun speakMultiLangTTSWithLevel( @@ -99,10 +115,19 @@ class IFlyTekTts : IMogoTTS, InitListener { level: Int, callBack: IMogoTTSCallback? ) { - if (callBack != null) { - speakVoiceMap[ttsEntity.toString()] = callBack + if (Thread.currentThread() != Looper.getMainLooper().thread) { + UiThreadHandler.post { + if (callBack != null) { + speakVoiceMap[ttsEntity.toString()] = callBack + } + speakMultiLangTTSWithLevel(ttsEntity, level) + } + } else { + if (callBack != null) { + speakVoiceMap[ttsEntity.toString()] = callBack + } + speakMultiLangTTSWithLevel(ttsEntity, level) } - speakMultiLangTTSWithLevel(ttsEntity, level) } override fun stopSpeakTts(text: String?) { @@ -110,6 +135,16 @@ class IFlyTekTts : IMogoTTS, InitListener { } override fun stopTts() { + if (Thread.currentThread() != Looper.getMainLooper().thread) { + UiThreadHandler.post { + realStop() + } + } else { + realStop() + } + } + + private fun realStop() { curTtsEntity?.let { val string = it.toString() if (speakVoiceMap.containsKey(string)) { From 101da8fb459456a28286f49f6f0b43432d51bf6e Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Thu, 9 Mar 2023 17:05:46 +0800 Subject: [PATCH 5/6] =?UTF-8?q?[dev=5Farch=5Fopt=5F3.0]=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/view_debug_setting.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index 27d514d3b1..8ba6b14009 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -317,7 +317,7 @@ android:id="@+id/tbOpenMfView" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="打开蘑方按键Toast" + android:text="蘑方按键Toast" android:paddingTop="5dp" android:paddingBottom="5dp" android:visibility="gone" From d5467e260ed9a63f8273766065e65de0de6a9f4b Mon Sep 17 00:00:00 2001 From: donghongyu Date: Thu, 9 Mar 2023 21:03:02 +0800 Subject: [PATCH 6/6] =?UTF-8?q?[dev=5Farch=5Fopt=5F3.0]=20[Change]=20[=201?= =?UTF-8?q?=E3=80=81=E9=AB=98=E5=BE=B7=E5=9C=B0=E5=9B=BE=E5=AE=9A=E4=BD=8D?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AD=90=E7=BA=BF=E7=A8=8B=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=20]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: donghongyu --- .../startup/stageone/HttpDnsStartUp.kt | 1 + .../com/mogo/map/location/GDLocationClient.kt | 118 ++++++++++-------- 2 files changed, 65 insertions(+), 54 deletions(-) diff --git a/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt b/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt index 0bea51ed0d..584308b320 100644 --- a/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt +++ b/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt @@ -124,6 +124,7 @@ class HttpDnsStartUp : AndroidStartup() { } //设置长链接的secretKey 通过SHA1和包名找中台服务生成,后续包名分渠道,需要做对应操作 clientConfig.secretKey = "YMj2VFDFxJ3Q4gNoZceJ" +// clientConfig.secretKey = "n48AlVufihvMDWgzwHX42yzSgiWaad6v" clientConfig.iHttpCurrentLocation = object : ICurrentLocation { override fun getCurrentLocation(): SimpleLocation { diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/location/GDLocationClient.kt b/libraries/mogo-map/src/main/java/com/mogo/map/location/GDLocationClient.kt index 12c3dbaa96..6edc26bd3c 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/location/GDLocationClient.kt +++ b/libraries/mogo-map/src/main/java/com/mogo/map/location/GDLocationClient.kt @@ -1,6 +1,8 @@ package com.mogo.map.location import android.content.Context +import android.os.Handler +import android.os.HandlerThread import com.amap.api.location.AMapLocation import com.amap.api.location.AMapLocationClient import com.amap.api.location.AMapLocationClientOption @@ -29,6 +31,12 @@ class GDLocationClient private constructor(context: Context) : AMapLocationListe */ private var lastGaoDeLocation: MogoLocation = MogoLocation() + private val handler by lazy { + val thread = HandlerThread("GDLocationChange") + thread.start() + Handler(thread.looper) + } + init { AMapLocationClient.updatePrivacyShow(context, true, true) AMapLocationClient.updatePrivacyAgree(context, true) @@ -64,66 +72,68 @@ class GDLocationClient private constructor(context: Context) : AMapLocationListe } override fun onLocationChanged(aMapLocation: AMapLocation) { - // 更新GNSS 信息 - lastGaoDeLocation.lastReceiveTime = TimeUtils.getNowMills() - - // 将高德中的一些用于业务的数据进行融合,例如:CityCode、address等 - mapLocation?.let { - // 转换 GCJ02-->WGS84 坐标 - val wgs84Location = - CoordinateTransform.GCJ02ToWGS84(it.longitude, it.latitude) - - lastGaoDeLocation.longitude = wgs84Location[0] - lastGaoDeLocation.latitude = wgs84Location[1] - lastGaoDeLocation.heading = it.bearing.toDouble() - lastGaoDeLocation.gnssSpeed = it.speed - lastGaoDeLocation.altitude = it.altitude - lastGaoDeLocation.satelliteTime = it.time + handler.post { + // 更新GNSS 信息 lastGaoDeLocation.lastReceiveTime = TimeUtils.getNowMills() - lastGaoDeLocation.locType = 1 // 定位类型为高德坐标(网路或者硬件定位) - lastGaoDeLocation.satellite = 4 + // 将高德中的一些用于业务的数据进行融合,例如:CityCode、address等 + mapLocation?.let { + // 转换 GCJ02-->WGS84 坐标 + val wgs84Location = + CoordinateTransform.GCJ02ToWGS84(it.longitude, it.latitude) - lastGaoDeLocation.cityName = it.city - lastGaoDeLocation.cityCode = it.cityCode - lastGaoDeLocation.provider = it.provider - lastGaoDeLocation.address = it.address - lastGaoDeLocation.district = it.district - lastGaoDeLocation.province = it.province - lastGaoDeLocation.adCode = it.adCode - lastGaoDeLocation.locationDetail = it.locationDetail - lastGaoDeLocation.poiName = it.poiName - lastGaoDeLocation.aoiName = it.aoiName - lastGaoDeLocation.street = it.street - lastGaoDeLocation.streetNum = it.streetNum - lastGaoDeLocation.description = it.description - lastGaoDeLocation.buildingId = it.buildingId - lastGaoDeLocation.floor = it.floor - lastGaoDeLocation.errorCode = it.errorCode - lastGaoDeLocation.errorInfo = it.errorInfo - } + lastGaoDeLocation.longitude = wgs84Location[0] + lastGaoDeLocation.latitude = wgs84Location[1] + lastGaoDeLocation.heading = it.bearing.toDouble() + lastGaoDeLocation.gnssSpeed = it.speed + lastGaoDeLocation.altitude = it.altitude + lastGaoDeLocation.satelliteTime = it.time + lastGaoDeLocation.lastReceiveTime = TimeUtils.getNowMills() - // 回掉给监听者 - CallerGaoDeMapLocationListenerManager.invokeMoGoLocationChanged(lastGaoDeLocation) + lastGaoDeLocation.locType = 1 // 定位类型为高德坐标(网路或者硬件定位) + lastGaoDeLocation.satellite = 4 - mapLocation = aMapLocation - // 本地SP缓存城市Code - val cityCode = aMapLocation.cityCode - if (cityCode != null && cityCode.isNotEmpty()) { - mCityCode = aMapLocation.cityCode - SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()) - .putString(SharedPrefsConstants.LOCATION_CITY_CODE, cityCode) + lastGaoDeLocation.cityName = it.city + lastGaoDeLocation.cityCode = it.cityCode + lastGaoDeLocation.provider = it.provider + lastGaoDeLocation.address = it.address + lastGaoDeLocation.district = it.district + lastGaoDeLocation.province = it.province + lastGaoDeLocation.adCode = it.adCode + lastGaoDeLocation.locationDetail = it.locationDetail + lastGaoDeLocation.poiName = it.poiName + lastGaoDeLocation.aoiName = it.aoiName + lastGaoDeLocation.street = it.street + lastGaoDeLocation.streetNum = it.streetNum + lastGaoDeLocation.description = it.description + lastGaoDeLocation.buildingId = it.buildingId + lastGaoDeLocation.floor = it.floor + lastGaoDeLocation.errorCode = it.errorCode + lastGaoDeLocation.errorInfo = it.errorInfo + } - SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()) - .putString( - SharedPrefsConstants.LOCATION_LATITUDE, - aMapLocation.latitude.toString() - ) - SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()) - .putString( - SharedPrefsConstants.LOCATION_LONGITUDE, - aMapLocation.longitude.toString() - ) + // 回掉给监听者 + CallerGaoDeMapLocationListenerManager.invokeMoGoLocationChanged(lastGaoDeLocation) + + mapLocation = aMapLocation + // 本地SP缓存城市Code + val cityCode = aMapLocation.cityCode + if (cityCode != null && cityCode.isNotEmpty()) { + mCityCode = aMapLocation.cityCode + SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()) + .putString(SharedPrefsConstants.LOCATION_CITY_CODE, cityCode) + + SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()) + .putString( + SharedPrefsConstants.LOCATION_LATITUDE, + aMapLocation.latitude.toString() + ) + SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()) + .putString( + SharedPrefsConstants.LOCATION_LONGITUDE, + aMapLocation.longitude.toString() + ) + } } }