From 44d06f8d7980ad78e629d7640e4ebe6d6ec8765e Mon Sep 17 00:00:00 2001 From: xuxinchao <13522809046@163.com> Date: Wed, 3 Aug 2022 17:06:21 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=8D=B1=E9=99=A9?= =?UTF-8?q?=E8=BD=A6=E8=BE=86=E9=A2=9C=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #D77F70FF改为#D65D5AFF --- .../core/function/map/identify/IdentifyOriginDataDrawer.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/IdentifyOriginDataDrawer.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/IdentifyOriginDataDrawer.kt index 1d88c5f1e3..559cc42620 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/IdentifyOriginDataDrawer.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/IdentifyOriginDataDrawer.kt @@ -72,7 +72,7 @@ class IdentifyOriginDataDrawer : Identify, IMoGoAutopilotStatusListener { //0是leading障碍物,障碍物车身红色提示 trackObj?.let { colorTrafficData[trackId] = PlanningTrack( - "#D77F70FF", + "#D65D5AFF", CallerAutoPilotStatusListenerManager.getCurWgs84SatelliteTime() ) } From 4789c426e7fee745db95c1235b233bd345cb546c Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 3 Aug 2022 16:52:39 +0800 Subject: [PATCH 02/12] =?UTF-8?q?[RouteOpt]=E6=9B=B4=E6=94=B9API=EF=BC=8C?= =?UTF-8?q?=E9=98=B2=E6=AD=A2=E6=8A=9B=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/service/routeoverlay/MogoRouteOverlayManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java index e7f02e4f15..32de230e96 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java @@ -77,7 +77,7 @@ public class MogoRouteOverlayManager implements return; } synchronized (queue) { - List items = queue.getLast(); + List items = queue.peekLast(); if (items != null && !items.isEmpty()) { RouteOverlayDrawer.getInstance().drawTrajectoryList(items, location.getBearing()); } From ebad7806e3bbf3d3dee19b553f38ff1f8e27de86 Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 3 Aug 2022 16:53:29 +0800 Subject: [PATCH 03/12] =?UTF-8?q?[CrashFix]=E4=BC=98=E5=8C=96=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=8D=95=E8=8E=B7=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [xxx] --- app/build.gradle | 2 +- .../com/mogo/launcher/MogoApplication.java | 3 +- .../com/mogo/launcher/crash/CrashSystem.java | 218 ++++++++++++++++++ config.gradle | 1 - .../mogo-core-function-hmi/build.gradle | 2 +- 5 files changed, 221 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/com/mogo/launcher/crash/CrashSystem.java diff --git a/app/build.gradle b/app/build.gradle index 5e7d53898b..4ca4d03f22 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -230,7 +230,7 @@ aspectjx { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) //Crash日志收集 - implementation rootProject.ext.dependencies.crashSdk +// implementation rootProject.ext.dependencies.crashSdk implementation rootProject.ext.dependencies.androidxappcompat implementation rootProject.ext.dependencies.arouter implementation rootProject.ext.dependencies.boostmultidex diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 41ea4abeeb..8f87eca0de 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -1,9 +1,9 @@ package com.mogo.launcher; -import com.auto.zhidao.logsdk.CrashSystem; import com.mogo.eagle.core.function.main.MainMoGoApplication; import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; +import com.mogo.launcher.crash.CrashSystem; /** * @author congtaowang @@ -17,7 +17,6 @@ public class MogoApplication extends MainMoGoApplication { protected void initCrashConfig() { CrashSystem crashSystem = CrashSystem.getInstance(this); crashSystem.init(); - //设置debug模式,日志不上传 crashSystem.setDebug(BuildConfig.DEBUG); } diff --git a/app/src/main/java/com/mogo/launcher/crash/CrashSystem.java b/app/src/main/java/com/mogo/launcher/crash/CrashSystem.java new file mode 100644 index 0000000000..91742834a7 --- /dev/null +++ b/app/src/main/java/com/mogo/launcher/crash/CrashSystem.java @@ -0,0 +1,218 @@ +package com.mogo.launcher.crash; + +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.os.Build; +import android.os.Environment; +import android.text.TextUtils; +import android.util.Log; + +import com.mogo.cloud.passport.MoGoAiCloudClientConfig; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.FilenameFilter; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.io.Writer; +import java.lang.Thread.UncaughtExceptionHandler; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +public class CrashSystem implements UncaughtExceptionHandler { + public static final String TAG = "CrashSystem"; + private String mAppPackage = null; + private String mAppVersionCode = null; + private String mAppVersionName = null; + private String mAppName = null; + private String mOsVersion = null; + private String mDeviceId = null; + private UncaughtExceptionHandler mDefaultHandler; + private final Map info = new HashMap(); + private final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); + private boolean mDebug = false; + private final List callbackList = new ArrayList<>(); + + private static CrashSystem sCrashSystem = null; + + private static final Object lock = new Object(); + + public void init() { + this.mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler(); + Thread.setDefaultUncaughtExceptionHandler(this); + } + + + /** + * 是否收集记录crash信息 + * @param debug 是否是debug + */ + public void setDebug(boolean debug) { + this.mDebug = debug; + } + + /** + * 添加crash事件回调 + */ + public void addCallback(CrashCallback callback) { + if(callback != null) { + callbackList.add(callback); + } + } + + private CrashSystem(Context context) { + this.inflateSystemInfo(context); + } + + public static CrashSystem getInstance(Context context) { + CrashSystem crashSystem = sCrashSystem; + if(crashSystem == null) { + synchronized (lock) { + crashSystem = sCrashSystem; + if(crashSystem == null) { + crashSystem = new CrashSystem(context.getApplicationContext()); + sCrashSystem = crashSystem; + } + } + } + return crashSystem; + } + + @Override + public void uncaughtException(Thread thread, Throwable ex) { + try { + this.handleException(ex); + dispatchCrashError(); + } finally { + if (mDefaultHandler != null) { + mDefaultHandler.uncaughtException(thread, ex); + } + } + } + + /** + * 分发异常事件 + */ + private void dispatchCrashError() { + for (CrashCallback callback : callbackList) { + if(callback != null) { + callback.onCrashError(); + } + } + } + + private boolean handleException(Throwable ex) { + if(ex == null) { + return true; + } else { + String msg = ex.getLocalizedMessage(); + Log.e("CrashSystem", msg); + String filePath = saveCrashInfo2File(ex); + Log.i(TAG, "handleException: filePath = " + filePath); + return true; + } + } + + private String saveCrashInfo2File(Throwable ex) { + try { + if(!Environment.getExternalStorageState().equals("mounted")) { + return null; + } + File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "crash"); + if(!dir.exists()) { + dir.mkdir(); + } + String[] fileList = dir.list((dir1, name) -> name.contains(mAppPackage)); + if(fileList == null || fileList.length >= 20) { //避免crash日志一直重复 + return null; + } + String time = this.format.format(new Date()); + String fileName = "app-crash-" + this.mAppPackage + "-" + time + ".log"; + if(mDebug) { + fileName = "debug-" + fileName; + } + String fileTemp = fileName + ".temp"; + StringBuilder sb = new StringBuilder(); + Iterator> var4 = this.info.entrySet().iterator(); + String result; + while(var4.hasNext()) { + Entry entry = var4.next(); + String key = entry.getKey(); + result = entry.getValue(); + sb.append(key).append("=").append(result).append("\n"); + } + sb.append("TIME=").append(String.valueOf(System.currentTimeMillis())).append("\n"); + sb.append("fileName=").append(fileName).append("\n"); + Writer writer = new StringWriter(); + PrintWriter pw = new PrintWriter(writer); + ex.printStackTrace(pw); + for(Throwable cause = ex.getCause(); cause != null; cause = cause.getCause()) { + cause.printStackTrace(pw); + } + pw.close(); + result = writer.toString(); + sb.append(result); + FileOutputStream fos = null; + try { + File dest = new File(dir, fileTemp); + fos = new FileOutputStream(dest); + fos.write(sb.toString().getBytes()); + fos.flush(); + File file = new File(dir,fileName); + dest.renameTo(file); + return dir.getAbsolutePath() + File.separator + fileName; + } catch (IOException var13) { + var13.printStackTrace(); + } finally { + try { + if (fos != null) { + fos.close(); + } + } catch (IOException ignore) {} + } + } catch (Throwable ignore) { + } + return null; + } + + private void inflateSystemInfo(Context context) { + this.mAppPackage = context.getPackageName(); + PackageManager pm = context.getPackageManager(); + try { + PackageInfo packageInfo = pm.getPackageInfo(this.mAppPackage, 0); + this.mAppVersionCode = "" + packageInfo.versionCode; + this.mAppVersionName = packageInfo.versionName; + this.mAppPackage = packageInfo.packageName; + this.mAppName = packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString(); + this.mOsVersion = Build.DISPLAY; + String deviceId = MoGoAiCloudClientConfig.getInstance().getSn(); + if(TextUtils.isEmpty(deviceId)) { + deviceId = "11111111"; + } + this.mDeviceId = deviceId; + } catch (Exception var5) { + var5.printStackTrace(); + } + + this.info.put("appName",this.mAppName); + this.info.put("appPackageName", this.mAppPackage); + this.info.put("versionCode", this.mAppVersionCode); + this.info.put("versionName", this.mAppVersionName); + this.info.put("sn", this.mDeviceId); + this.info.put("DISPLAY", this.mOsVersion); + } + + public interface CrashCallback { + void onCrashError(); + } +} + diff --git a/config.gradle b/config.gradle index 1fb4d25a1b..183c9f761d 100644 --- a/config.gradle +++ b/config.gradle @@ -89,7 +89,6 @@ ext { jetbrainsannotationsjava5 : "org.jetbrains:annotations-java5:15.0", // crash - crashSdk : "com.zhidaoauto.crash.log:library:1.0.5", kotlinstdlibjdk7 : "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${kotlin_version}", //探路使用的直播组件 diff --git a/core/function-impl/mogo-core-function-hmi/build.gradle b/core/function-impl/mogo-core-function-hmi/build.gradle index bad3ffbcc4..9822314159 100644 --- a/core/function-impl/mogo-core-function-hmi/build.gradle +++ b/core/function-impl/mogo-core-function-hmi/build.gradle @@ -62,7 +62,7 @@ dependencies { implementation rootProject.ext.dependencies.androidxroomktx //Crash日志收集 - implementation rootProject.ext.dependencies.crashSdk +// implementation rootProject.ext.dependencies.crashSdk implementation rootProject.ext.dependencies.boostmultidex debugImplementation rootProject.ext.dependencies.debugleakcanary From 789afc54718ff4edefa608d1316b7cfcf535199c Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Wed, 3 Aug 2022 17:40:52 +0800 Subject: [PATCH 04/12] =?UTF-8?q?[290=20bus/taxi]taxi=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E8=BD=A8=E8=BF=B9=E6=95=B0=E6=8D=AE=E6=B8=85=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/och/taxi/model/TaxiModel.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 5b151461f5..a06c4210e4 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -1268,7 +1268,10 @@ public class TaxiModel { Logger.d(M_TAXI + TAG, "--------计算出sumLength开始---------- "); //转换成高德坐标系 - mRoutePoints = CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjListCommon(mContext, models); + if (mRoutePoints.size() > 0){ + mRoutePoints.clear(); + } + mRoutePoints.addAll(CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjListCommon(mContext, models)); startDynamicCalculateRouteInfo(); } From 7a5911988835d55f4a6452081fdbb85a641501a9 Mon Sep 17 00:00:00 2001 From: pangfan Date: Wed, 3 Aug 2022 19:38:44 +0800 Subject: [PATCH 05/12] =?UTF-8?q?[Bus/Taxi=20driver=20v2.9.0]opt=EF=BC=9A?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=89=93release=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OCH/mogo-och-bus-passenger/build.gradle | 16 +++++++--------- OCH/mogo-och-taxi-passenger/build.gradle | 16 +++++++--------- OCH/mogo-och-taxi/build.gradle | 16 +++++++--------- 3 files changed, 21 insertions(+), 27 deletions(-) diff --git a/OCH/mogo-och-bus-passenger/build.gradle b/OCH/mogo-och-bus-passenger/build.gradle index 4bc7c0fd4c..f9be5b07ca 100644 --- a/OCH/mogo-och-bus-passenger/build.gradle +++ b/OCH/mogo-och-bus-passenger/build.gradle @@ -29,15 +29,13 @@ android { } buildTypes { - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - debug { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + debug { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } diff --git a/OCH/mogo-och-taxi-passenger/build.gradle b/OCH/mogo-och-taxi-passenger/build.gradle index d3b586a5ed..cd67326bc9 100644 --- a/OCH/mogo-och-taxi-passenger/build.gradle +++ b/OCH/mogo-och-taxi-passenger/build.gradle @@ -29,15 +29,13 @@ android { } buildTypes { - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - debug { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + debug { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } diff --git a/OCH/mogo-och-taxi/build.gradle b/OCH/mogo-och-taxi/build.gradle index 11d63d9a60..307d440922 100644 --- a/OCH/mogo-och-taxi/build.gradle +++ b/OCH/mogo-och-taxi/build.gradle @@ -29,15 +29,13 @@ android { } buildTypes { - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - debug { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + debug { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } From e7f57c1cfc6b894e9e1b7772a97646f553caa414 Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 3 Aug 2022 19:47:55 +0800 Subject: [PATCH 06/12] =?UTF-8?q?[V2X]=E4=BC=98=E5=8C=96V2X=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E5=9C=A8=E5=AD=90=E7=BA=BF=E7=A8=8B=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../functions/test/AutoPilotBadCaseTest.kt | 6 +-- .../com/mogo/functions/test/ReminderTest.kt | 53 ++++++++++++++++--- .../core/function/hmi/ui/MoGoHmiFragment.kt | 31 +++++------ .../eagle/core/utilcode/reminder/Reminder.kt | 29 ++++++---- .../reminder/api/impl/PopupWindowReminder.kt | 2 +- 5 files changed, 86 insertions(+), 35 deletions(-) diff --git a/app/src/androidTest/java/com/mogo/functions/test/AutoPilotBadCaseTest.kt b/app/src/androidTest/java/com/mogo/functions/test/AutoPilotBadCaseTest.kt index 766ef7cb4e..473cc51913 100644 --- a/app/src/androidTest/java/com/mogo/functions/test/AutoPilotBadCaseTest.kt +++ b/app/src/androidTest/java/com/mogo/functions/test/AutoPilotBadCaseTest.kt @@ -52,7 +52,7 @@ class AutoPilotBadCaseTest { it.timestamp = SimpleDateFormat("yyyyMMddHHmmss").format(Date()) index++ } - CallerDevaToolsManager.onReceiveBadCaseRecord(builder.build()) + // CallerDevaToolsManager.onReceiveBadCaseRecord(builder.build()) } .flowOn(Dispatchers.Default) .collect() @@ -86,7 +86,7 @@ class AutoPilotBadCaseTest { it.timestamp = SimpleDateFormat("yyyyMMddHHmmss").format(Date()) index++ } - CallerDevaToolsManager.onReceiveBadCaseRecord(builder.build()) + // CallerDevaToolsManager.onReceiveBadCaseRecord(builder.build()) } .flowOn(Dispatchers.Default) .collect() @@ -114,7 +114,7 @@ class AutoPilotBadCaseTest { it.timestamp = SimpleDateFormat("yyyyMMddHHmmss").format(Date()) index++ } - CallerDevaToolsManager.onReceiveBadCaseRecord(builder.build()) + // CallerDevaToolsManager.onReceiveBadCaseRecord(builder.build()) } .flowOn(Dispatchers.Default) .collect() diff --git a/app/src/androidTest/java/com/mogo/functions/test/ReminderTest.kt b/app/src/androidTest/java/com/mogo/functions/test/ReminderTest.kt index de9ad31d87..cb0356b507 100644 --- a/app/src/androidTest/java/com/mogo/functions/test/ReminderTest.kt +++ b/app/src/androidTest/java/com/mogo/functions/test/ReminderTest.kt @@ -20,6 +20,7 @@ import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener import com.mogo.eagle.core.function.hmi.notification.WarningFloat import com.mogo.eagle.core.function.hmi.notification.anim.DefaultAnimator import com.mogo.eagle.core.data.enums.SidePattern +import com.mogo.eagle.core.function.hmi.ui.* import com.mogo.eagle.core.function.main.MainLauncherActivity import com.mogo.eagle.core.utilcode.kotlin.shape import com.mogo.eagle.core.utilcode.reminder.Reminder @@ -27,14 +28,14 @@ import com.mogo.eagle.core.utilcode.reminder.api.impl.ActivityReminder import com.mogo.eagle.core.utilcode.reminder.api.impl.PopupWindowReminder import com.mogo.eagle.core.utilcode.reminder.api.impl.ViewReminder import com.mogo.eagle.core.utilcode.util.AppStateManager -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.delay -import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.* +import kotlinx.coroutines.flow.* import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import java.lang.Integer.min -import java.util.concurrent.TimeUnit +import java.util.concurrent.* +import java.util.concurrent.TimeUnit.MILLISECONDS @RunWith(AndroidJUnit4::class) @@ -64,6 +65,46 @@ class ReminderTest { return@runBlocking } + @Test + fun testShowWarningV2x() = runBlocking { + val f = ensureMoGoHmiFragmentShow() + + delay(5000) + (1 until 20).map { + it + }.asFlow() + .onEach { + f.showWarningV2X("10006", "test", "测试$it", "$it", null, true, 5000) + } + .flowOn(Dispatchers.Default) + .collect() + delay(3000000) + } + + private suspend fun ensureMoGoHmiFragmentShow(): MoGoHmiFragment = suspendCancellableCoroutine { + launch.onActivity { itx -> + val executor = Executors.newSingleThreadScheduledExecutor() + executor.scheduleAtFixedRate({ + var find = + itx.supportFragmentManager.fragments.find { it is MoGoHmiFragment } as? MoGoHmiFragment + while (find == null) { + find = + itx.supportFragmentManager.fragments.find { it is MoGoHmiFragment } as? MoGoHmiFragment + } + while (!find.isResumed) { + Thread.sleep(500) + } + it.resumeWith(Result.success(find)) + try { + Thread.sleep(500) + executor.shutdownNow() + } catch (e: Throwable) { + e.printStackTrace() + } + }, 50, 500, MILLISECONDS) + } + } + @Test fun testViewReminderOverride() = runBlocking(Dispatchers.Main) { launch.onActivity { @@ -357,14 +398,14 @@ class ReminderTest { } } - class TestPopupWindowReminder(private val anchor: View, private val popupWindow: PopupWindow): PopupWindowReminder(popupWindow) { + class TestPopupWindowReminder(private val anchor: View, override val popupWindow: PopupWindow): PopupWindowReminder(popupWindow) { override fun show() { popupWindow.showAtLocation(anchor, Gravity.CENTER, 0, 0) } } - class TestPopupWindowReminderOverride(private val anchor: View, private val popupWindow: PopupWindow): PopupWindowReminder(popupWindow) { + class TestPopupWindowReminderOverride(private val anchor: View, override val popupWindow: PopupWindow): PopupWindowReminder(popupWindow) { override fun show() { popupWindow.showAtLocation(anchor, Gravity.CENTER, 0, 0) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index aa21b0bfd5..8c0936b3aa 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -146,6 +146,8 @@ import java.util.* private var speakJob: Job? = null + private var showV2XJob: Job? = null + private var showingV2XTip: IReminder? = null private var roadVideoDialog: RoadVideoDialog? = null @@ -606,11 +608,9 @@ import java.util.* CallerLogger.e("$M_HMI$TAG", "Show warningContent is null or empty!") return } - speakJob?.safeCancel() val content = mViewNotificationProvider?.getNotificationView() ?: return content.setWarningIcon(EventTypeEnum.getWarningIcon(v2xType)) content.setWarningContent(warningContent) - var reminder: IReminder? = null Log.d("$M_HMI$TAG", "--- show v2x dialog 1 ---: info -> v2x-type: $v2xType : expireTime: $expireTime") Reminder.enqueue(this@MoGoHmiFragment, object : PopupWindowReminder(PopupWindow(content, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT).also { itx -> itx.isTouchable = false @@ -633,43 +633,44 @@ import java.util.* } }) { override fun show() { + showV2XJob?.safeCancel() + speakJob?.safeCancel() val parent = it.window.decorView parent.doOnAttach { Log.d("$M_HMI$TAG", "--- show v2x dialog 2 ---: info -> v2x-type: $v2xType : expireTime: $expireTime") popupWindow.showAtLocation(parent, content.layoutGravity, 0, 0) } } - override fun isOverride(): Boolean { return true } - }.also { itx -> reminder = itx }, object : IStateChangeListener { + }, object : IStateChangeListener { override fun onShow(reminder: IReminder) { listener?.onShow() + showingV2XTip = reminder + lifecycleScope.launch { + delay(expireTime) + }.also { itx -> + showV2XJob = itx + }.invokeOnCompletion { _ -> + reminder.hide() + } if (ttsContent != null && !TextUtils.isEmpty(ttsContent) && playTTS) { lifecycleScope.launch { speak(it, ttsContent) - }.also { - speakJob = it + }.also { itx -> + speakJob = itx } } } override fun onHide(reminder: IReminder) { listener?.onDismiss() + showingV2XTip = null showWarning(WarningDirectionEnum.ALERT_WARNING_NON) } }) - - if (reminder == null) { - return - } - showingV2XTip = reminder - lifecycleScope.launch { - delay(expireTime) - reminder?.hide() - } } } diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/reminder/Reminder.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/reminder/Reminder.kt index f8aec8fd23..d0cbe616d3 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/reminder/Reminder.kt +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/reminder/Reminder.kt @@ -100,17 +100,23 @@ object Reminder { if (key.isEmpty()) { throw IllegalStateException("reminder: ${reminder.javaClass.name}'s key can't be empty.") } - if (enqueued.contains(key)) { - return + synchronized(enqueued) { + if (enqueued.contains(key)) { + return + } + enqueued += key } - enqueued += key - attaches.getOrPut(attachTo) { - mutableListOf() - }.also { - it.add(WeakReference(reminder)) + synchronized(attaches) { + attaches.getOrPut(attachTo) { + mutableListOf() + }.also { + it.add(WeakReference(reminder)) + } } - listener?.let { - reminderListeners[reminder] = it + synchronized(reminderListeners) { + listener?.let { + reminderListeners[reminder] = it + } } scope.launch { if (reminder is ActivityReminder) { @@ -131,11 +137,14 @@ object Reminder { heap += reminder dequeueHeap() } else { - queue += reminder val pre = findPreShowedReminder() if (pre != null) { pre.hide() + queue.clear() + queue += reminder } else { + queue.clear() + queue += reminder dequeue() } } diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/reminder/api/impl/PopupWindowReminder.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/reminder/api/impl/PopupWindowReminder.kt index 7e1045088c..65c063292e 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/reminder/api/impl/PopupWindowReminder.kt +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/reminder/api/impl/PopupWindowReminder.kt @@ -4,7 +4,7 @@ import android.widget.PopupWindow import androidx.lifecycle.LifecycleOwner import com.mogo.eagle.core.utilcode.reminder.api.IReminder -abstract class PopupWindowReminder(val popupWindow: PopupWindow): IReminder { +abstract class PopupWindowReminder(open val popupWindow: PopupWindow): IReminder { override fun lifecycleOwner(): LifecycleOwner = popupWindow.lifecycleOwner From 05f4a8b3717fa806681b8d1873ab5b39533e69c6 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 3 Aug 2022 18:50:13 +0800 Subject: [PATCH 07/12] ui problem --- .../hmi/ui/widget/TrafficDataView.java | 38 ++++++++++--------- .../src/main/res/layout/hmi_traffic_data.xml | 15 +++++++- .../res/values-xhdpi-2560x1440/dimens.xml | 4 ++ 3 files changed, 38 insertions(+), 19 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java index 0f2d237421..f669c9487e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java @@ -42,6 +42,8 @@ public class TrafficDataView extends ConstraintLayout { private static final int MSG_SEND_UPDATE = 1; private volatile double acceleration; + private volatile float mBrake; + private volatile float mThrottle; @SuppressLint("HandlerLeak") private final Handler handler = new Handler() { @@ -49,10 +51,24 @@ public class TrafficDataView extends ConstraintLayout { public void handleMessage(@NonNull Message msg) { super.handleMessage(msg); if (msg.what == MSG_SEND_UPDATE) { - java.text.DecimalFormat mFormat = new java.text.DecimalFormat("0.00"); + java.text.DecimalFormat mFormat = new java.text.DecimalFormat("0.0"); String accStr = mFormat.format(acceleration); - accTextView.setText("a: " + accStr); + if (acceleration > 0f) { + accTextView.setText(accStr); + } else { + accTextView.setText("—" + accStr); + } + + if (mBrake > 0) { + brakeStatus.setImageResource(R.drawable.traffic_data_brake); + } else if (mThrottle >= 0 && mBrake == 0) { + brakeStatus.setImageResource(R.drawable.traffic_data_accelerator); + } else { + brakeStatus.setImageResource(R.drawable.traffic_data_empty); + } + } + handler.sendEmptyMessageDelayed(MSG_SEND_UPDATE, 1000L); } }; @@ -76,12 +92,12 @@ public class TrafficDataView extends ConstraintLayout { @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); + handler.sendEmptyMessageDelayed(MSG_SEND_UPDATE, 1000L); CallerAutopilotVehicleStateListenerManager.INSTANCE.addListener(TAG, mIMoGoAutopilotVehicleStateListener); CallerAutopilotCarStatusListenerManager.INSTANCE.addListener(TAG, gnssInfo -> { if (gnssInfo != null) { acceleration = gnssInfo.getAcceleration(); } - handler.sendEmptyMessageDelayed(MSG_SEND_UPDATE, 1000L); }); } @@ -162,25 +178,13 @@ public class TrafficDataView extends ConstraintLayout { @Override public void onAutopilotBrake(float brake) { CallerLogger.INSTANCE.d(TAG, "刹车:" + brake); - ThreadUtils.runOnUiThread(() -> { - if (brake > 0) { - brakeStatus.setImageResource(R.drawable.traffic_data_brake); - } else { - brakeStatus.setImageResource(R.drawable.traffic_data_empty); - } - }); + mBrake = brake; } @Override public void onAutopilotThrottle(float throttle) { CallerLogger.INSTANCE.d(TAG, "油门:" + throttle); - ThreadUtils.runOnUiThread(() -> { - if (throttle > 0) { - brakeStatus.setImageResource(R.drawable.traffic_data_accelerator); - } else { - brakeStatus.setImageResource(R.drawable.traffic_data_empty); - } - }); + mThrottle = throttle; } }; diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_traffic_data.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_traffic_data.xml index e96bc08d6a..754b67fde0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_traffic_data.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_traffic_data.xml @@ -73,8 +73,19 @@ android:id="@+id/speedAccTextView" android:layout_width="wrap_content" android:layout_height="@dimen/dp_56" - android:layout_marginLeft="@dimen/dp_42" - android:text="a: " + android:layout_marginEnd="@dimen/dp_80" + android:gravity="end" + android:textColor="#fff" + android:textSize="@dimen/dp_40" + app:layout_constraintBottom_toBottomOf="@+id/brakeStatus" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="@+id/brakeStatus"/> + + 12px + 14px 20px 22px 43px + 50px 57px + 60px 72px + 80px 88px 26px 30px From 72d5cd8d884cbf87a9b09b1a7cae8ad1f77dde31 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 3 Aug 2022 19:43:07 +0800 Subject: [PATCH 08/12] ui --- .../eagle/core/function/hmi/ui/widget/TrafficDataView.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java index f669c9487e..fdde4791ac 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java @@ -52,11 +52,11 @@ public class TrafficDataView extends ConstraintLayout { super.handleMessage(msg); if (msg.what == MSG_SEND_UPDATE) { java.text.DecimalFormat mFormat = new java.text.DecimalFormat("0.0"); - String accStr = mFormat.format(acceleration); + String accStr = mFormat.format(Math.abs(acceleration)); if (acceleration > 0f) { accTextView.setText(accStr); } else { - accTextView.setText("—" + accStr); + accTextView.setText("- " + accStr); } if (mBrake > 0) { From 4cbf7d9083b828a1d577c9003a636c0101fe9696 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 3 Aug 2022 20:16:32 +0800 Subject: [PATCH 09/12] fix trafficdataview ui logic problem --- .../hmi/ui/widget/TrafficDataView.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java index fdde4791ac..cc2d7aa78d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java @@ -14,6 +14,7 @@ import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotVehicleStateListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateListenerManager; import com.mogo.eagle.core.function.hmi.R; @@ -58,15 +59,19 @@ public class TrafficDataView extends ConstraintLayout { } else { accTextView.setText("- " + accStr); } - - if (mBrake > 0) { - brakeStatus.setImageResource(R.drawable.traffic_data_brake); - } else if (mThrottle >= 0 && mBrake == 0) { - brakeStatus.setImageResource(R.drawable.traffic_data_accelerator); - } else { + int state = CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState(); + if (state < 2) { + if (mBrake > 0) { + brakeStatus.setImageResource(R.drawable.traffic_data_brake); + } else if (mThrottle >= 0 && mBrake == 0) { + brakeStatus.setImageResource(R.drawable.traffic_data_accelerator); + } else { + brakeStatus.setImageResource(R.drawable.traffic_data_empty); + } + } + if (state == 2) { brakeStatus.setImageResource(R.drawable.traffic_data_empty); } - } handler.sendEmptyMessageDelayed(MSG_SEND_UPDATE, 1000L); } From fea9f20480f5753036b028468d20e06ae4440c06 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Wed, 3 Aug 2022 20:28:35 +0800 Subject: [PATCH 10/12] =?UTF-8?q?[290=20bus/taxi]taxi=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E5=AE=8C=E6=88=90=E4=B8=80=E5=8D=95=E5=90=8E=E5=89=A9?= =?UTF-8?q?=E4=BD=99=E9=87=8C=E7=A8=8B=E5=92=8C=E6=97=B6=E9=97=B4=E6=B8=85?= =?UTF-8?q?=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/och/taxi/model/TaxiModel.java | 8 +++++--- .../mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java | 4 ++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index a06c4210e4..b5c057b931 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -1208,8 +1208,10 @@ public class TaxiModel { @Override public void onAutopilotRotting(MessagePad.GlobalPathResp routeList) { - CallerLogger.INSTANCE.d(M_TAXI + TAG, "onAutopilotRotting = " - + GsonUtil.jsonFromObject(routeList)); + if (null != routeList && routeList.getWayPointsList() != null){ + CallerLogger.INSTANCE.d(M_TAXI + TAG, "getWayPointsList = " + + routeList.getWayPointsList().size()); + } if (null != routeList && routeList.getWayPointsList().size() > 0) { updateOrderRoute(routeList.getWayPointsList()); updateOrderRouteInfo(routeList.getWayPointsList()); @@ -1327,7 +1329,7 @@ public class TaxiModel { new TaxiServiceCallback() { @Override public void onSuccess(QueryOrderRouteResp data) { - if (data != null && data.data != null) { + if (data != null && data.data != null && mRoutePoints.size() == 0) { mRoutePoints.clear(); mRoutePoints.addAll(data.data); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java index a5e09fe2dd..c1a2ec1ff7 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java @@ -167,6 +167,8 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement if (order.orderStatus == TaxiOrderStatusEnum.JourneyCompleted.getCode()) { mCurrentOrder = null; isHaveBeingOrder(false); + mDistanceAndTime2.setText("距离 - - 公里,用时 - - 分"); + mDistanceAndTime3.setText("距离 - - 公里,用时 - - 分"); return; } mOrderNo = order.orderNo; @@ -407,6 +409,8 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement if (status == TaxiOrderStatusEnum.None.getCode() || status == TaxiOrderStatusEnum.Cancel.getCode() || status == TaxiOrderStatusEnum.JourneyCompleted.getCode()) { isHaveBeingOrder(false); mCurrentOrder = null; + mDistanceAndTime2.setText("距离 - - 公里,用时 - - 分"); + mDistanceAndTime3.setText("距离 - - 公里,用时 - - 分"); } else { isHaveBeingOrder(true); } From 13deff1e2f6a389ef54b0524e1357a9653f693ef Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Wed, 3 Aug 2022 20:32:21 +0800 Subject: [PATCH 11/12] =?UTF-8?q?[290=20bus/taxi]bus=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E4=BC=98=E5=8C=96=E8=BD=A8=E8=BF=B9=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/bus/passenger/model/BusPassengerModel.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java index 050cfe77aa..4cf55d2582 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java @@ -409,7 +409,9 @@ public class BusPassengerModel { public void dynamicCalculateRouteInfo() { //计算当前位置和下一站的剩余点集合 //计算剩余点总里程和时间 - calculateTwoStationsRoute(); + if (mTwoStationsRouts.size() == 0){ + calculateTwoStationsRoute(); + } if (mTwoStationsRouts.size() > 0){ List lastPoints = CoordinateCalculateRouteUtil .getRemainPointListByCompare(mTwoStationsRouts,mLongitude,mLatitude); @@ -481,6 +483,7 @@ public class BusPassengerModel { if (isStart) { BusPassengerModelLoopManager.getInstance().startCalculateRouteInfoLoop(); } else { + mTwoStationsRouts.clear(); BusPassengerModelLoopManager.getInstance().stopCalculateRouteInfLoop(); } } From 7a496631abbb071173d3d93ba5f364594dc675ae Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 3 Aug 2022 20:52:31 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E3=80=81=E9=99=90=E5=88=B6=E5=A4=9A=E8=BF=9B=E7=A8=8B=E9=80=9A?= =?UTF-8?q?=E8=AE=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mulprocess/OrderServiceImpl.java | 8 ++- .../passenger/ui/leftmenu/LeftMenuOpen.kt | 56 +++++++++++++------ .../ui/leftmenu/OverlayLeftViewUtils.kt | 2 +- .../taxi/passenger/ui/video/VideoActivity.kt | 23 ++++++-- 4 files changed, 63 insertions(+), 26 deletions(-) diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/mulprocess/OrderServiceImpl.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/mulprocess/OrderServiceImpl.java index 73eb617d82..006be38689 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/mulprocess/OrderServiceImpl.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/mulprocess/OrderServiceImpl.java @@ -2,15 +2,19 @@ package com.mogo.och.taxi.passenger.mulprocess; import android.os.RemoteException; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.och.taxi.passenger.ui.leftmenu.LeftMenuOpen; import com.mogo.och.taxi.passenger.ui.leftmenu.OverlayLeftViewUtils; public class OrderServiceImpl extends ILeftMenuService.Stub { + public static final String TAG = "mulprocessOrderServiceImpl"; + @Override public void transmissionIndex(int index) throws RemoteException { - + CallerLogger.INSTANCE.d(SceneConstant.M_TAXI_P + TAG, "跨进程 transmissionIndex"+index); UiThreadHandler.getsUiHandler().post(() -> { OverlayLeftViewUtils.INSTANCE.transmissionIndexGet(index); }); @@ -18,11 +22,13 @@ public class OrderServiceImpl extends ILeftMenuService.Stub { @Override public void registerCallback(ICallback cb) throws RemoteException { + CallerLogger.INSTANCE.d(SceneConstant.M_TAXI_P + TAG, "跨进程 registerCallback"); LeftMenuOpen.INSTANCE.registerCallbackHost(cb); } @Override public void unRegisterCallback(ICallback cb) throws RemoteException { + CallerLogger.INSTANCE.d(SceneConstant.M_TAXI_P + TAG, "跨进程 unRegisterCallback"); LeftMenuOpen.INSTANCE.unregisterCallbackHost(cb); } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/LeftMenuOpen.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/LeftMenuOpen.kt index 18e823eb47..39cb1770a3 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/LeftMenuOpen.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/LeftMenuOpen.kt @@ -10,6 +10,8 @@ import android.view.MotionEvent import android.view.View import android.view.ViewGroup import android.view.WindowManager +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI_P import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.eagle.core.utilcode.util.Utils import com.mogo.och.taxi.passenger.R @@ -25,6 +27,8 @@ import rx.schedulers.Schedulers @SuppressLint("StaticFieldLeak") object LeftMenuOpen { + const val TAG = "mulprocessLeftMenuOpen" + private var windowView: View? = null private var wl: WindowManager.LayoutParams? = null private var windowManager: WindowManager? = null @@ -43,7 +47,7 @@ object LeftMenuOpen { var checkIndex = OverlayLeftViewUtils.LIVE private var lastClickTime = 0L - private const val FAST_CLICK_DELAY_TIME = 1000 // 防止事件发送过快 + private const val FAST_CLICK_DELAY_TIME = 1300 // 防止事件发送过快 fun setValue( @@ -51,7 +55,8 @@ object LeftMenuOpen { wl: WindowManager.LayoutParams?, windowManager: WindowManager?, close: (view: View, windowManager: WindowManager?) -> Unit, - open: (view: View, windowManager: WindowManager?) -> Unit + open: (view: View, windowManager: WindowManager?) -> Unit, + isMainProcess: Boolean ) { this.open = open this.close = close @@ -61,7 +66,9 @@ object LeftMenuOpen { dragList.forEach { registerDragView(it) } - registerC() + if(!isMainProcess) { + registerC() + } } fun clearValue() { @@ -168,9 +175,9 @@ object LeftMenuOpen { fun registerDragView(view: View?) { if (view != null) { dragList.add(view) - if (orderService == null) { - registerC() - } +// if (orderService == null) { +// registerC() +// } view.setOnTouchListener(ItemViewTouchListener()) view.setOnClickListener { open?.let { it1 -> it1(windowView!!, windowManager) } @@ -193,6 +200,7 @@ object LeftMenuOpen { } fun transmissionIndex(index:Int){ + CallerLogger.d(M_TAXI_P + TAG, "tran--transmissionIndex---$index") if (orderService == null) { registerC() } @@ -200,22 +208,23 @@ object LeftMenuOpen { } fun registerCallbackHost(cb:ICallback?){ - if (orderService == null) { - registerC() - } +// if (orderService == null) { +// registerC() +// } cb?.let { - icallbacks?.register(it) + icallbacks.register(it) } } fun unregisterCallbackHost(cb:ICallback?){ cb?.let { - icallbacks?.unregister(it) + icallbacks.unregister(it) } } fun registerCallback(cb:ICallback?){ + CallerLogger.d(M_TAXI_P + TAG, "tran--registerCallback--注册") if (orderService == null) { registerC() } @@ -225,6 +234,7 @@ object LeftMenuOpen { } fun unregisterCallback(cb:ICallback?){ + CallerLogger.d(M_TAXI_P + TAG, "tran--unregisterCallback--反注册") cb?.let { orderService?.unRegisterCallback(it) } @@ -240,15 +250,20 @@ object LeftMenuOpen { Observable.empty().subscribeOn(Schedulers.io()) .subscribe(object : Observer { override fun onCompleted() { - val len = icallbacks.beginBroadcast() - for (i in 0 until len) { - try { - icallbacks.getBroadcastItem(i).onResult(meters, timeInSecond, speed) - } catch (e: RemoteException) { - e.printStackTrace() + CallerLogger.d(M_TAXI_P + TAG, "callCallBack$meters--$timeInSecond--$speed") + try { + val len = icallbacks.beginBroadcast() + for (i in 0 until len) { + try { + icallbacks.getBroadcastItem(i).onResult(meters, timeInSecond, speed) + } catch (e: RemoteException) { + e.printStackTrace() + } } + icallbacks.finishBroadcast() + }catch (e:Exception){ + CallerLogger.e(M_TAXI_P + TAG, "callCallBack${e.message}") } - icallbacks.finishBroadcast() } override fun onError(e: Throwable?) {} override fun onNext(t: String?) {} @@ -273,7 +288,12 @@ object LeftMenuOpen { * 主进程在显示是主动调用 * video进程在天津View是判断是否调用了 */ + @Synchronized private fun registerC() { + if(orderService!=null){ + return + } + CallerLogger.d(M_TAXI_P + TAG, "tran--registerC--获取jni") val resolver: ContentResolver = Utils.getApp().contentResolver cu = resolver.query( diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/OverlayLeftViewUtils.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/OverlayLeftViewUtils.kt index 50a5e225b5..53ba767892 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/OverlayLeftViewUtils.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/OverlayLeftViewUtils.kt @@ -177,7 +177,7 @@ object OverlayLeftViewUtils { addTarget(context) - LeftMenuOpen.setValue(view, params, windowManager,::close,::open) + LeftMenuOpen.setValue(view, params, windowManager,::close,::open,isMainProcess) try { windowManager!!.addView(overlayView, params) checkProcess() diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/VideoActivity.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/VideoActivity.kt index d3da306254..f2b1d190ea 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/VideoActivity.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/VideoActivity.kt @@ -11,6 +11,8 @@ import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.AppCompatImageView import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.NumberFormatUtil import com.mogo.och.taxi.passenger.R @@ -52,6 +54,7 @@ class VideoActivity : AppCompatActivity() { private lateinit var acivTitleIcon: AppCompatImageView private lateinit var tvTitle: TextView private var subscribe: Subscription?=null + private val TAG = "mulprocessVideoActivity" private val arrayListOf = ArrayList() @@ -352,7 +355,7 @@ class VideoActivity : AppCompatActivity() { } } - subscribe = Observable.interval(0, 8, TimeUnit.SECONDS) + subscribe = Observable.interval(2, 8, TimeUnit.SECONDS) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : Observer { @@ -387,15 +390,13 @@ class VideoActivity : AppCompatActivity() { } } } - subscribe?.let { - if(it.isUnsubscribed){ - it.unsubscribe() - } - } + cancleSubscribe() } @Subscribe(threadMode = ThreadMode.MAIN) fun finishActivity(event: FinishActivity){ + CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "finishActivity(event)") + cancleSubscribe() val intent = Intent() val parse = Uri.parse("mogo://launcher/main/switch2?type=launch") intent.data = parse @@ -405,6 +406,7 @@ class VideoActivity : AppCompatActivity() { } override fun onDestroy() { + CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "onDestroy()") super.onDestroy() EventBus.getDefault().unregister(this) LeftMenuOpen.unregisterCallback(callBack) @@ -412,6 +414,15 @@ class VideoActivity : AppCompatActivity() { OverlayLeftViewUtils.dismissOverlayView(false) FloatingDistanceInfoUtils.dismissOverlayView() FixMemoryLeak.fixLeak(this) + cancleSubscribe() + } + + private fun cancleSubscribe(){ + subscribe?.let { + if(!it.isUnsubscribed){ + it.unsubscribe() + } + } } private fun releaseOnNewInstance() {