From 79f1279cae2d7fc6f13bbb2712a9440c01c3699b Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Mon, 4 Dec 2023 10:34:08 +0800 Subject: [PATCH 01/62] =?UTF-8?q?[6.2.4]=E8=87=AA=E5=8A=A8=E5=8C=96?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E5=8C=85=E4=B8=8E=E9=97=AE=E9=A2=98=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0=EF=BC=8C=E5=B0=86=E5=BD=95=E5=8C=85=E5=8E=9F=E5=9B=A0?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E7=BB=99=E5=B7=A5=E6=8E=A7=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/InitiativeBadCaseWindow.kt | 2 ++ .../badcase/biz/PassiveBadCaseWindow.kt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index 3606bd8045..08443a2606 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -435,6 +435,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList }else{ "$uploadReason 语音内容:$reasonDetail" } + //上报到工控机 + CallerAutoPilotControlManager.recordCause(recordKey.toString(),recordFileName,"",uploadReasonTotal) val uploadResult = presenter.upload(mutableMapOf().also { itx -> itx["carLicense"] = AppConfigInfo.plateNumber?:"" //车牌号 itx["filename"] = recordFileName?:"" //bag包文件地址 diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt index 8b982a16a1..2c0270679c 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt @@ -435,6 +435,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene }else{ "$uploadReason 语音内容:$reasonDetail" } + //上报到工控机 + CallerAutoPilotControlManager.recordCause(recordKey,recordFileName,"",uploadReasonTotal) val uploadResult = presenter.upload(mutableMapOf().also { itx -> itx["carLicense"] = AppConfigInfo.plateNumber //车牌号 itx["filename"] = recordFileName?:"" //bag包文件地址 From 264e68da17bb5bcdaf4ef1aef8ad0655208bdcfb Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Mon, 4 Dec 2023 11:03:39 +0800 Subject: [PATCH 02/62] =?UTF-8?q?[6.2.4]=E9=AD=94=E6=96=B9=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E4=B8=BB=E5=8A=A8=E5=BD=95=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevaToolsProvider.kt | 7 ++ .../badcase/BadCaseManager.kt | 75 +++++++++++++++++++ .../badcase/biz/CaseListDialog.java | 10 +-- .../data/deva/badcase/RecordCaseEntity.kt | 8 +- .../api/devatools/IDevaToolsProvider.kt | 5 ++ .../call/devatools/CallerDevaToolsManager.kt | 7 ++ 6 files changed, 104 insertions(+), 8 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index 000169af02..6926e45bec 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -288,6 +288,13 @@ class DevaToolsProvider : IDevaToolsProvider { BadCaseManager.onReceiveBadCaseRecord(msgBoxBean, activity, countdown) } + /** + * 魔方开启主动录包 + */ + override fun startRecordByMoFang() { + BadCaseManager.startRecordByMoFang() + } + override fun showFeedbackWindow(ctx: Context) { BadCaseManager.showBadCaseConfigWindow(ctx) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index efa0e4a5f8..e6448ca428 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -5,6 +5,7 @@ import android.app.Activity import android.content.Context import android.view.View import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.FragmentActivity import androidx.lifecycle.Lifecycle.Event import androidx.lifecycle.LifecycleEventObserver @@ -12,10 +13,12 @@ import androidx.lifecycle.LifecycleOwner import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.data.deva.badcase.RecordCaseEntity import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgBoxType import com.mogo.eagle.core.data.msgbox.RecordBagMsg import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager @@ -30,6 +33,7 @@ import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord import com.zhjt.mogo_core_function_devatools.ext.enqueuePop import me.jessyan.autosize.utils.AutoSizeUtils +import mogo.telematics.pad.MessagePad import record_cache.RecordPanelOuterClass internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordListener { @@ -41,11 +45,53 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis @Volatile private var record: AutoPilotRecord? = null + //是否处理录包配置回调数据 + private var receiveRecordConfig: Boolean = false + fun init(context: Context) { CallerAutopilotRecordListenerManager.addListener(TAG, this) SpeechUtils.init(context) } + /** + * 魔方开启主动录包 + */ + fun startRecordByMoFang(){ + if (NetworkUtils.isConnected()){ + if (BadCaseConfig.dockerVersion != null){ + val activity = AppStateManager.currentActivity() + if (activity !is AppCompatActivity) { + return + } + //兼容老MAP版本 + if (BadCaseConfig.dockerVersion!!.contains("2.3.0") + || BadCaseConfig.dockerVersion!!.contains("2.4.0") + || BadCaseConfig.dockerVersion!!.contains("2.5.0") + || BadCaseConfig.dockerVersion!!.contains("2.6.0") + || BadCaseConfig.dockerVersion!!.contains("2.8.0") + ){ + val initiativeBadCaseWindow = InitiativeBadCaseWindow(activity) + initiativeBadCaseWindow.setClickListener(object : + InitiativeBadCaseWindow.ClickListener { + override fun closeWindow() { + initiativeBadCaseWindow.hideFloatWindow() + } + + }) + initiativeBadCaseWindow.showFloatWindow(null) + }else{ + receiveRecordConfig = true + //获取数据采集录制模式配置列表 + CallerAutoPilotControlManager.getBadCaseConfig(0, 0, ArrayList()) + } + }else { + ToastUtils.showShort("工控机连接状态异常") + } + }else { + ToastUtils.showShort("网络异常,请检查网络") + } + } + /** * 展示BadCase配置页面 */ @@ -269,4 +315,33 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis } + /** + * 数据采集配置应答 + */ + override fun onAutopilotRecordConfig(config: MessagePad.RecordDataConfig) { + if(receiveRecordConfig){ + ThreadUtils.runOnUiThread { + if(config.recordTypesCount >0){ + config.recordTypesList.forEach { + //TODO 需要确认具体是哪个ID + if(it.id == 1){ + val recordCaseEntity = RecordCaseEntity(it.id,it.desc,it.topicsList) + val initiativeBadCaseWindow = AppStateManager.currentActivity() + ?.let { it1 -> InitiativeBadCaseWindow(it1) } + initiativeBadCaseWindow?.setClickListener(object : + InitiativeBadCaseWindow.ClickListener { + override fun closeWindow() { + initiativeBadCaseWindow.hideFloatWindow() + } + + }) + initiativeBadCaseWindow?.showFloatWindow(recordCaseEntity) + receiveRecordConfig = false + } + } + } + } + } + } + } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java index a8fdeab7f5..7cadeb932d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java @@ -9,6 +9,7 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.google.protobuf.ProtocolStringList; import com.mogo.eagle.core.data.deva.badcase.RecordCaseEntity; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager; @@ -99,19 +100,14 @@ public class CaseListDialog extends Dialog implements IMoGoAutopilotRecordListen if(config.getRecordTypesCount()>0){ for(int index=0;index topicList = new ArrayList<>(); -// TODO java.lang.IndexOutOfBoundsException: Index: 38, Size: 38 -// for(int position=0;index0){ - recordTypeEntityArrayList.add(new RecordCaseEntity(0,"自定义A",BadCaseConfig.customTopicList)); + recordTypeEntityArrayList.add(new RecordCaseEntity(0,"自定义A", (ProtocolStringList) BadCaseConfig.customTopicList)); } caseListAdapter.setData(recordTypeEntityArrayList); caseListAdapter.notifyDataSetChanged(); diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/badcase/RecordCaseEntity.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/badcase/RecordCaseEntity.kt index dc4146fbbc..3fabcc1373 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/badcase/RecordCaseEntity.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/badcase/RecordCaseEntity.kt @@ -1,3 +1,9 @@ package com.mogo.eagle.core.data.deva.badcase -data class RecordCaseEntity(var caseId: Int,var caseName: String,var topicList: ArrayList) \ No newline at end of file +import com.google.protobuf.ProtocolStringList + +data class RecordCaseEntity( + var caseId: Int, + var caseName: String, + var topicList: ProtocolStringList +) \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt index 750ae690c2..8a4a6c716b 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt @@ -113,6 +113,11 @@ interface IDevaToolsProvider : IProvider { */ fun onReceiveBadCaseRecord(msgBoxBean: MsgBoxBean,activity: Activity,countdown: Boolean) + /** + * 魔方开启主动录包 + */ + fun startRecordByMoFang() + /** * 展示录包配置 */ diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt index f8accbd915..faab951939 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt @@ -149,6 +149,13 @@ object CallerDevaToolsManager { devaToolsProviderApi?.onReceiveBadCaseRecord(msgBoxBean, activity,countdown) } + /** + * 魔方开启主动录包 + */ + fun startRecordByMoFang(){ + devaToolsProviderApi?.startRecordByMoFang() + } + /** * 展示录包配置页面 */ From 7d040d2ae053392b779b9d21cd76fedbc71c2992 Mon Sep 17 00:00:00 2001 From: renwj Date: Mon, 4 Dec 2023 12:05:41 +0800 Subject: [PATCH 03/62] =?UTF-8?q?[6.2.4][=E8=98=91=E6=96=B9]=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=95=BF=E6=8C=89=E9=94=AEB=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E5=BD=95=E5=8C=85=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mofang/MoFangCommandExecutor.kt | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangCommandExecutor.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangCommandExecutor.kt index fd9b3442a6..de503482f7 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangCommandExecutor.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangCommandExecutor.kt @@ -7,6 +7,7 @@ import com.mogo.commons.utils.MogoAnalyticUtils import com.mogo.eagle.core.data.config.* import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.* +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.utilcode.mogo.* import com.zhjt.mogo.adas.data.bean.MogoReport.Code.Info.IMF @@ -57,6 +58,7 @@ internal class MoFangCommandExecutor { private const val MSG_WHAT_KEY_CODE_D = 0x06 private const val MSG_WHAT_KEY_CODE_E = 0x07 private const val MSG_WHAT_KEY_CODE_EL = 0x08 + private const val MSG_WHAT_KEY_CODE_BL = 0x09 } @Volatile @@ -232,6 +234,27 @@ internal class MoFangCommandExecutor { } } } + MSG_WHAT_KEY_CODE_BL -> { + try { + Log.d(TAG, "--- 长按录包 ---") + MoFangAnalyticUtils.track(EVENT_EXECUTE, mutableMapOf( + EVENT_EXECUTE_PARAMS_KEYCODE to (getKeycodeByWhat(msg.what) ?: ""), + EVENT_EXECUTE_PARAMS_TYPE to (getInputTypeByWhat(msg.what) ?: ""), + EVENT_EXECUTE_PARAMS_LON to location.longitude, + EVENT_EXECUTE_PARAMS_LAT to location.latitude, + EVENT_EXECUTE_PARAMS_SPEED to location.gnssSpeed, + EVENT_EXECUTE_PARAMS_ACC to location.acceleration, + EVENT_EXECUTE_PARAMS_HEADING to location.heading, + EVENT_EXECUTE_PARAMS_LINE_ID to CallerAutoPilotStatusListenerManager.getLineId(), + EVENT_EXECUTE_PARAMS_DOCKER_VERSION to (CallerAutoPilotStatusListenerManager.getDockerVersion() ?: "") + )) + linkedLog?.record(mapOf("执行:${System.currentTimeMillis()}" to "$message, $msg")) + CallerDevaToolsManager.startRecordByMoFang() + } catch (t: Throwable) { + t.printStackTrace() + Log.e(TAG, "error: ${t.message}, msg-> $msg") + } + } } true } @@ -266,6 +289,9 @@ internal class MoFangCommandExecutor { MSG_WHAT_KEY_CODE_E -> { "单击键E->开启自驾$extra" } + MSG_WHAT_KEY_CODE_BL -> { + "长按键B->录包$extra" + } MSG_WHAT_KEY_CODE_EL -> { "长按键E->鸣笛$extra" } @@ -276,7 +302,7 @@ internal class MoFangCommandExecutor { private fun getKeycodeByWhat(what: Int): String? { return when(what) { MSG_WHAT_KEY_CODE_A, MSG_WHAT_KEY_CODE_AL -> KeyEvent.keyCodeToString(KeyEvent.KEYCODE_A) - MSG_WHAT_KEY_CODE_B -> KeyEvent.keyCodeToString(KeyEvent.KEYCODE_B) + MSG_WHAT_KEY_CODE_B, MSG_WHAT_KEY_CODE_BL -> KeyEvent.keyCodeToString(KeyEvent.KEYCODE_B) MSG_WHAT_KEY_CODE_AB -> "${KeyEvent.keyCodeToString(KeyEvent.KEYCODE_A)},${KeyEvent.keyCodeToString(KeyEvent.KEYCODE_B)}" MSG_WHAT_KEY_CODE_C -> KeyEvent.keyCodeToString(KeyEvent.KEYCODE_C) MSG_WHAT_KEY_CODE_D -> KeyEvent.keyCodeToString(KeyEvent.KEYCODE_D) @@ -294,7 +320,7 @@ internal class MoFangCommandExecutor { MSG_WHAT_KEY_CODE_E -> { "1" } - MSG_WHAT_KEY_CODE_AL,MSG_WHAT_KEY_CODE_EL -> { + MSG_WHAT_KEY_CODE_AL, MSG_WHAT_KEY_CODE_BL, MSG_WHAT_KEY_CODE_EL -> { "2" } MSG_WHAT_KEY_CODE_AB -> { @@ -387,6 +413,15 @@ internal class MoFangCommandExecutor { }) linkedLog?.record(mapOf("发送[EL]:${System.currentTimeMillis()}" to "${whatToString(MSG_WHAT_KEY_CODE_EL)}")) } + + if (keyCode == KeyEvent.KEYCODE_B) { + Log.d(TAG, "--- 长按键B --- 触发录包 ----") + handler.removeMessages(MSG_WHAT_KEY_CODE_BL) + handler.sendMessage(Message.obtain().also { + it.what = MSG_WHAT_KEY_CODE_BL + }) + linkedLog?.record(mapOf("发送[BL]:${System.currentTimeMillis()}" to "${whatToString(MSG_WHAT_KEY_CODE_BL)}")) + } } fun handleCombineClick(vararg keyCodes: Int) { From f1313600d9b5082e8a6f8f15b710aaaa7f44109c Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Mon, 4 Dec 2023 14:45:33 +0800 Subject: [PATCH 04/62] =?UTF-8?q?[6.2.4]=E5=BD=95=E5=8C=85=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=AB=98=E7=B2=BE=E5=9C=B0=E5=9B=BE=E6=88=AA=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/InitiativeBadCaseWindow.kt | 20 +++++++++++++++-- .../badcase/biz/PassiveBadCaseWindow.kt | 19 +++++++++++++++- .../api/map/deva/IMoGoMapScreenListener.kt | 10 +++++++++ .../map/CallerMapScreenListenerManager.kt | 22 +++++++++++++++++++ .../map/uicontroller/IMogoMapUIController.kt | 5 +++++ .../main/java/com/mogo/map/AMapViewWrapper.kt | 19 +++++++++++++++- 6 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/deva/IMoGoMapScreenListener.kt create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapScreenListenerManager.kt diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index 08443a2606..7284498c88 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -2,6 +2,7 @@ package com.zhjt.mogo_core_function_devatools.badcase.biz import android.annotation.SuppressLint import android.app.Activity +import android.graphics.Bitmap import android.graphics.PixelFormat import android.os.Bundle import android.os.CountDownTimer @@ -32,10 +33,13 @@ import com.mogo.eagle.core.data.deva.badcase.RecordCaseEntity import com.mogo.eagle.core.data.deva.badcase.RecordOptionEntity import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.api.devatools.badcase.BadCaseNetListener +import com.mogo.eagle.core.function.api.map.deva.IMoGoMapScreenListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84 import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsNetManager +import com.mogo.eagle.core.function.call.map.CallerMapScreenListenerManager +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA import com.mogo.eagle.core.utilcode.mogo.toast.TipToast @@ -74,7 +78,7 @@ import java.util.* * @since: 2022/7/13 */ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchListener, - IMoGoAutopilotRecordListener, BadCaseNetListener { + IMoGoAutopilotRecordListener, BadCaseNetListener, IMoGoMapScreenListener { companion object { const val TAG = "InitiativeBadCaseWindow" @@ -192,7 +196,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList */ BadCaseNetManager.badCaseNetManager.getRecordOption(1,AppConfigInfo.iPCMacAddress) // BadCaseNetManager.badCaseNetManager.getRecordOption(1,"48:b0:2d:3a:9c:8f") - + //高精地图屏幕截图 + CallerMapScreenListenerManager.addListener(this.hashCode().toString(),this) //采集结果回调监听 CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(),this) //主动录包采集原因回调监听 @@ -530,6 +535,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList mWindowManager!!.addView(mFloatLayout, mWindowParams) //开启录包 recordKey = Random(SystemClock.elapsedRealtime()).nextInt().toLong() + //开启高精地图截图 + CallerMapUIServiceManager.getMapUIController()?.getMapScreenShot() if(recordCaseEntity!=null){ CallerAutoPilotControlManager.recordPackage(recordCaseEntity.caseId,recordKey.toInt(), BadCaseConfig.totalDuration, BadCaseConfig.previousDuration,recordCaseEntity.topicList) @@ -563,6 +570,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList CallerAutopilotRecordListenerManager.removeListener(this.hashCode().toString()) //注销采集原因回调监听 CallerDevaToolsNetManager.removeListener(this.hashCode().toString()) + //注销高精地图截图监听回调 + CallerMapScreenListenerManager.removeListener(this.hashCode().toString()) if (mFloatLayout.parent != null){ mWindowManager!!.removeView(mFloatLayout) @@ -644,4 +653,11 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList } } + /** + * 高精地图截图回调 + */ + override fun onMapScreen(bitmap: Bitmap) { + + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt index 2c0270679c..7a4b520e4e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt @@ -2,6 +2,7 @@ package com.zhjt.mogo_core_function_devatools.badcase.biz import android.annotation.SuppressLint import android.app.Activity +import android.graphics.Bitmap import android.graphics.Color import android.graphics.PixelFormat import android.os.Bundle @@ -34,9 +35,12 @@ import com.mogo.eagle.core.data.deva.badcase.RecordOptionEntity import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.RecordBagMsg import com.mogo.eagle.core.function.api.devatools.badcase.BadCaseNetListener +import com.mogo.eagle.core.function.api.map.deva.IMoGoMapScreenListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsNetManager +import com.mogo.eagle.core.function.call.map.CallerMapScreenListenerManager +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA @@ -72,7 +76,7 @@ import java.lang.StringBuilder * @since: 2022/7/17 */ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListener, - BadCaseNetListener { + BadCaseNetListener , IMoGoMapScreenListener { companion object { const val TAG = "PassiveBadCaseWindow" @@ -183,6 +187,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene */ BadCaseNetManager.badCaseNetManager.getRecordOption(2,AppConfigInfo.iPCMacAddress) // BadCaseNetManager.badCaseNetManager.getRecordOption(2,"48:b0:2d:3a:9c:8f") + //高精地图屏幕截图 + CallerMapScreenListenerManager.addListener(this.hashCode().toString(),this) CallerDevaToolsNetManager.addListener(this.hashCode().toString(),this) if(BadCaseConfig.windowNum<1){ BadCaseConfig.windowNum = 1 @@ -537,6 +543,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene fun hideFloatWindow() { + //注销高精地图截图监听回调 + CallerMapScreenListenerManager.removeListener(this.hashCode().toString()) //注销采集原因回调监听 CallerDevaToolsNetManager.removeListener(this.hashCode().toString()) // 移除 ADAS车辆状态&定位 监听 @@ -557,6 +565,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene recordFileName = recordBagMsg.fileName receiveTime = msgBoxBean.timestamp.toString() stat = recordBagMsg.stat.toString() + //获取高精地图截图 + CallerMapUIServiceManager.getMapUIController()?.getMapScreenShot() } fun setClickListener(clickListener: ClickListener) { @@ -619,4 +629,11 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene } } + /** + * 高精地图截图回调 + */ + override fun onMapScreen(bitmap: Bitmap) { + super.onMapScreen(bitmap) + } + } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/deva/IMoGoMapScreenListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/deva/IMoGoMapScreenListener.kt new file mode 100644 index 0000000000..8c4d1a83b8 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/deva/IMoGoMapScreenListener.kt @@ -0,0 +1,10 @@ +package com.mogo.eagle.core.function.api.map.deva + +import android.graphics.Bitmap + +interface IMoGoMapScreenListener { + /** + * 高精地图监听回调 + */ + fun onMapScreen(bitmap: Bitmap){} +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapScreenListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapScreenListenerManager.kt new file mode 100644 index 0000000000..7b6068a0ff --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapScreenListenerManager.kt @@ -0,0 +1,22 @@ +package com.mogo.eagle.core.function.call.map + +import android.graphics.Bitmap +import com.mogo.eagle.core.function.api.map.deva.IMoGoMapScreenListener +import com.mogo.eagle.core.function.call.base.CallerBase + +/** + * 高精地图屏幕截图回调监听管理 + */ +object CallerMapScreenListenerManager: CallerBase() { + + /** + * 高精地图屏幕截图回调 + */ + fun invokeMapScreen(bitmap: Bitmap){ + M_LISTENERS.forEach{ + val listener = it.value + listener.onMapScreen(bitmap) + } + } + +} \ No newline at end of file diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.kt b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.kt index f924bf6193..2e08c74471 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.kt +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.kt @@ -330,4 +330,9 @@ interface IMogoMapUIController { * 设置地图默认视角 */ fun setVrAngleDefaultMode(mode: VisualAngleMode) + + /** + * 获取高精地图截图 + */ + fun getMapScreenShot() } \ No newline at end of file diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.kt b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.kt index 16342b6969..3a93399909 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.kt +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.kt @@ -1,5 +1,6 @@ package com.mogo.map +import android.graphics.Bitmap import android.graphics.Point import android.graphics.Rect import android.os.Bundle @@ -8,6 +9,7 @@ import android.os.HandlerThread import android.text.TextUtils import android.view.MotionEvent import android.view.View +import com.autonavi.nge.map.OnMapScreenShotListener import com.mogo.eagle.core.data.deva.chain.ChainConstant import com.mogo.eagle.core.data.enums.TrafficTypeEnum import com.mogo.eagle.core.data.map.MogoLatLng @@ -19,6 +21,7 @@ import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager.invoke import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager.invokeRoadChange import com.mogo.eagle.core.function.call.map.CallerMapRomaListener.invokeMapRomaRange import com.mogo.eagle.core.function.call.map.CallerMapRomaListener.invokeMapRomaStatus +import com.mogo.eagle.core.function.call.map.CallerMapScreenListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i @@ -61,7 +64,7 @@ import kotlin.properties.Delegates class AMapViewWrapper(mMapView: MapAutoView) : IMogoMapView, IMogoMapUIController, OnMapLoadedListener, OnMapClickListener, OnMapTouchListener, OnMarkClickListener, OnMapStyleListener, OnMapViewVisualAngleChangeListener, OnRoadInfoListener, - ILog, OnRoamStatusListener, OnRoadSideFenceRegionListener { + ILog, OnRoamStatusListener, OnRoadSideFenceRegionListener,OnMapScreenShotListener { companion object { private const val TAG = "AMapViewWrapper" @@ -888,6 +891,12 @@ class AMapViewWrapper(mMapView: MapAutoView) : IMogoMapView, IMogoMapUIControlle } } + override fun getMapScreenShot() { + if(checkAMapView()){ + mMapView.getMapAutoViewHelper()?.toScreen() + } + } + override fun getVrAngleDefaultMode(): VisualAngleMode { if (checkAMapView()) { val code = mMapView.getMapStyleParams()?.getVrAngleDefaultMode() @@ -895,4 +904,12 @@ class AMapViewWrapper(mMapView: MapAutoView) : IMogoMapView, IMogoMapUIControlle } return MODE_MEDIUM_SIGHT } + /** + * 高精地图屏幕截图 + */ + override fun onMapScreenShot(bitmap: Bitmap?) { + bitmap?.let { + CallerMapScreenListenerManager.invokeMapScreen(it) + } + } } \ No newline at end of file From 87a2a1f227824e8bd6a8911685630e062e11e17f Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Mon, 4 Dec 2023 15:08:48 +0800 Subject: [PATCH 05/62] =?UTF-8?q?[6.2.4]=E5=BD=95=E5=8C=85=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E6=9F=A5=E7=9C=8B=E6=88=AA=E5=9B=BE=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo-core-function-devatools/build.gradle | 1 + .../badcase/biz/RecordScreenDialog.java | 64 ++++++++++++++++++ .../res/drawable-xhdpi/icon_screen_close.png | Bin 0 -> 2510 bytes .../main/res/layout/dialog_record_screen.xml | 39 +++++++++++ .../eagle/core/utilcode/util/TimeUtils.java | 4 ++ 5 files changed, 108 insertions(+) create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/RecordScreenDialog.java create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_screen_close.png create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/res/layout/dialog_record_screen.xml diff --git a/core/function-impl/mogo-core-function-devatools/build.gradle b/core/function-impl/mogo-core-function-devatools/build.gradle index dd29601f0e..704be88b02 100644 --- a/core/function-impl/mogo-core-function-devatools/build.gradle +++ b/core/function-impl/mogo-core-function-devatools/build.gradle @@ -80,6 +80,7 @@ dependencies { implementation rootProject.ext.dependencies.androidxroomruntime kapt rootProject.ext.dependencies.androidxroomcompiler implementation rootProject.ext.dependencies.rxandroid + implementation rootProject.ext.dependencies.androidxcardview implementation rootProject.ext.dependencies.androidxroomktx implementation rootProject.ext.dependencies.protobuf_java implementation rootProject.ext.dependencies.androidxappcompat diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/RecordScreenDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/RecordScreenDialog.java new file mode 100644 index 0000000000..031fe59d1d --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/RecordScreenDialog.java @@ -0,0 +1,64 @@ +package com.zhjt.mogo_core_function_devatools.badcase.biz; + +import static com.mogo.eagle.core.utilcode.util.FileUtils.millis2String; +import static com.mogo.eagle.core.utilcode.util.TimeUtils.getMdFormat; + +import android.app.Dialog; +import android.content.Context; +import android.net.Uri; +import android.os.Bundle; +import android.os.Environment; +import android.view.WindowManager; +import android.widget.ImageView; + +import androidx.annotation.NonNull; + +import com.zhjt.mogo_core_function_devatools.R; + +import java.io.File; + +/** + * 录包时鹰眼截图查看对话框 + */ +public class RecordScreenDialog extends Dialog { + + private ImageView ivScreen; //截图展示 + private ImageView ivScreenClose; //关闭按钮 + + private Context mContext; + + public RecordScreenDialog(@NonNull Context context) { + super(context, R.style.bad_case_dialog); + mContext = context; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.dialog_record_screen); + WindowManager.LayoutParams params = getWindow().getAttributes(); + params.height = 1013; + params.width = 1708; + getWindow().setAttributes(params);//向WindowManager设置属性 + setCanceledOnTouchOutside(false); + init(); + initEvent(); + } + + private void init(){ + ivScreen = findViewById(R.id.ivScreen); + ivScreenClose = findViewById(R.id.ivScreenClose); + } + + private void initEvent(){ + String imagePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator+ + "MapScreen" + File.separator+ millis2String(System.currentTimeMillis(),getMdFormat()) + File.separator+"test.png"; + Uri imageUri = Uri.parse(imagePath); + + ivScreen.setImageURI(imageUri); + + //关闭当前弹窗 + ivScreenClose.setOnClickListener(view -> dismiss()); + } + +} diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_screen_close.png b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_screen_close.png new file mode 100644 index 0000000000000000000000000000000000000000..1899acac7e5dc6c8325446cde0693b32dccdcfef GIT binary patch literal 2510 zcmV;<2{HDGP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91RGr|Grx1r=bkxFGu|y-Rsb6u92})$ zjF!xi&m*J`UnL!}LFuBe3px(?I?u6GDsjx!OhGd(gaD3IhGV5G{39TfFo5<;XOI8` zJyXjJs34NpIO!_?m_O6 zzh5*UQ_H7LIJ8m&HkJN1@rnv0t*}c1X5#+kGYJFiap{;^EUh;&OSHm*$sjXXN@|cv ztfCG_w9+Gj${?1AB?8oMm4Li5ky2&v{rlCOPfI$nGq3J?%Xq`wH05x*T5Au!R$VQO*8u0H}yFC1}Uh zP&hhwEUT!%G^)BKLOhMf7uU+~!@lqDblfGSZLIDdldh5WN?%J&Z653TYJ(Nb%KN7Q zx}rT(kxZA8wCQrTNvizvHtYPGBr~b<#lFKjiM);N)Q6AFNrK07+L1bF{FQHc!Q>G} z(lE*AE~yeGVNXj-`H+IqV%A8NFv*5;r16+$jL(id0!zx84%SQ2{6DT23!anfCC$4J zco?rUV9pAJUOM6NMq01tl-ZSAs4^=DS_;!l&~{zSD={{EL4k{H5e*5^?iw!!MAK$YEvF#UTj*84Jy;C<(xFoUQ(Ev?rbdM?}Bkv}O`C+wDCZJwl z6=AxCTdKm%>3)4!E1fj~86QXG)j~}@f6#|dB;MDoHl}j#NZ0uhl=T(qcK^Kka6kdT zjK0-o2Ng(5<{i(xZJ6VBB^(vk|vo9iD*3sU?KI=^5AMs9iA zl%*zNh5=6~uSX*C>s0)E(v*mFSx0-1jBOL^tP5iDdsH7DHzyIts}&E_?uc|*Mqi|b z76s@-D$A3O+PjvKyuks~F2{9Q2NwqD{i^v>j@qA8IBR!y+-){hf$O9qJpT58+V&@H z1y3vNJ~@8I;hdFEk91J_O8Q>1*)#>NmFQdZwDa8Z138x9UgiC~BmXlB?~#75i2p*L zw^y83ew?lopr-X~tTHdxXK$sHR|~ycrFzj(vVMj4NCzzOpDS#KC7hs{(i&+zCplPd zEp(wO>)H%q>y4K7n*#{byw4ne3m2q9m;Q+WLu#zny-`g zNnu8LH%aWN+H8&jS4mm!qEV)S4!uUgH_k1Vh25%5UX$p%tBtOQ=S@7!i(?m*XruI# zBk^2?X9=|*mZoA^09~L8z9EgU0APC#m_J+M!h(SMp|snPXr97XN?9yZJ%$D-BWjw) zL$~G9NJ}Qb+#tE2SS|?!MSU6bm3oE5`aezc7A3>G2Pm{cY053%9WIEHD?;13P~5f<7;4n<0k}NDK_yq`gwwHbxmdD9w`S z2DVD{*-6{q0?G!CXVpMCrvPb>h?jC7`u{Q*{wbi`b)J=PdCvTZzDrTV|HdG|&uElk zl0E>`cR&Z5MqlH*ZkD{fdYI2o1{)ZH$|KroQWlSD zO}1$q*>%tNN3Bh*1eF##S<3T8EmNFEj%;)k<7d|^OE0jzPXySZvg6N0y?B2Zpb9Fj zwM&{HH8hK;^q10Smel-roMQj!ipt8XwbDv~+9?$UEFhUj^H*ykmyt?Wx20ZDf#u}_ z12(VO0He17nd;-6)Pb6>SYXL(oW!GQj#(J%Zyxcs&L60olIj%eC7wYoYEU=zpI5|406q%OU{t+9O>AGUcQX + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/TimeUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/TimeUtils.java index 2ad587de61..e837752e57 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/TimeUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/TimeUtils.java @@ -47,6 +47,10 @@ public final class TimeUtils { return getSafeDateFormat("yyyy-MM-dd HH:mm:ss"); } + public static SimpleDateFormat getMdFormat(){ + return getSafeDateFormat("yyyy-MM-dd"); + } + public static SimpleDateFormat getHourMinSecondFormat(){ return getSafeDateFormat("HH:mm:ss"); } From c43cdbd15b9f33f784405766a6a6488d40249768 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Mon, 4 Dec 2023 17:51:47 +0800 Subject: [PATCH 06/62] =?UTF-8?q?[6.2.4]=E8=AF=AD=E9=9F=B3=E8=BD=AC?= =?UTF-8?q?=E6=96=87=E5=AD=97=E7=BB=93=E6=9E=9C=E5=91=88=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/InitiativeBadCaseWindow.kt | 54 ++++++----------- .../badcase/biz/PassiveBadCaseWindow.kt | 60 ++++++------------- .../res/layout/view_initiative_bad_case.xml | 37 ++++++++---- .../main/res/layout/view_passive_bad_case.xml | 38 ++++++++---- 4 files changed, 92 insertions(+), 97 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index 7284498c88..fa54298d3f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -96,7 +96,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList private lateinit var viewAudioBg: ImageView private lateinit var viewAudioButton: ImageView - private lateinit var tvAudioCountDown: TextView + private lateinit var viewAudioStart: ImageView + private lateinit var tvAudioResult: TextView private lateinit var tvInitiativeReport: TextView private lateinit var tvInitiativeCancel: TextView @@ -162,7 +163,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList viewAudioBg = mFloatLayout.findViewById(R.id.viewAudioBg) viewAudioButton = mFloatLayout.findViewById(R.id.viewAudioButton) - tvAudioCountDown = mFloatLayout.findViewById(R.id.tvAudioCountDown) + viewAudioStart = mFloatLayout.findViewById(R.id.viewAudioStart) + tvAudioResult = mFloatLayout.findViewById(R.id.tvAudioResult) tvInitiativeReport = mFloatLayout.findViewById(R.id.tvInitiativeReport) tvInitiativeCancel = mFloatLayout.findViewById(R.id.tvInitiativeCancel) @@ -223,11 +225,10 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList }else{ //停止语音听写 mIat?.stopListening() - //结束倒计时 - countDownTimer?.cancel() - countDownTimer?.onFinish() - //将倒计时置空 - countDownTimer = null + //结束录音 + RecordManager.getInstance().stop() + //结束动画 + viewAudioStart.clearAnimation() uploadAudio() } } @@ -318,10 +319,11 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList } Log.i(TAG, "语音内容=$resultBuffer") reasonDetail = resultBuffer.toString() + if(!reasonDetail.isNullOrEmpty()){ + tvAudioResult.text = reasonDetail + } } - var countDownTimer: CountDownTimer?=null - private fun setAudio(status: Boolean){ if(status){ //开始录音 @@ -344,35 +346,17 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList ) scaleAnimation.duration = 1000 scaleAnimation.repeatCount = -1 - viewAudioButton.startAnimation(scaleAnimation) - - tvAudioCountDown.visibility = View.VISIBLE - //开始倒计时 - if(countDownTimer==null){ - countDownTimer = object : CountDownTimer(60000, 1000) { - - override fun onTick(millisUntilFinished: Long) { - tvAudioCountDown.text = "${millisUntilFinished/1000}S" - } - - override fun onFinish() { - tvAudioCountDown.visibility = View.GONE - //结束录音 - RecordManager.getInstance().stop() - //结束动画 - viewAudioButton.clearAnimation() - } - } - countDownTimer?.start() - } + viewAudioButton.visibility = View.GONE + viewAudioStart.visibility = View.VISIBLE + viewAudioStart.startAnimation(scaleAnimation) + tvAudioResult.text = "..." }else{ //停止语音听写 mIat?.stopListening() - //结束倒计时 - countDownTimer?.cancel() - countDownTimer?.onFinish() - //将倒计时置空 - countDownTimer = null + //结束录音 + RecordManager.getInstance().stop() + //结束动画 + viewAudioStart.clearAnimation() } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt index 7a4b520e4e..0e04f6f245 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt @@ -3,23 +3,18 @@ package com.zhjt.mogo_core_function_devatools.badcase.biz import android.annotation.SuppressLint import android.app.Activity import android.graphics.Bitmap -import android.graphics.Color import android.graphics.PixelFormat import android.os.Bundle -import android.os.CountDownTimer import android.os.Handler import android.util.DisplayMetrics import android.util.Log import android.view.* import android.view.animation.Animation import android.view.animation.ScaleAnimation -import android.widget.CheckBox -import android.widget.CompoundButton import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.google.android.flexbox.FlexboxLayout import com.iflytek.cloud.ErrorCode import com.iflytek.cloud.InitListener import com.iflytek.cloud.RecognizerListener @@ -61,13 +56,11 @@ import com.zhjt.mogo_core_function_devatools.badcase.BadCaseAnalyticsManager import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.BadReasonListAdapter import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.BadCaseNetManager import com.zhjt.mogo_core_function_devatools.badcase.repository.store.BadCaseReasonStore -import me.jessyan.autosize.utils.AutoSizeUtils import org.greenrobot.eventbus.EventBus import org.json.JSONArray import org.json.JSONException import org.json.JSONObject import java.io.File -import java.lang.Exception import java.lang.StringBuilder /** @@ -112,7 +105,6 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene private var mInScreenY = 0f private var clickListener: ClickListener? = null - var countDownTimer: CountDownTimer?=null private lateinit var tvPassiveNum: TextView private lateinit var tvPassiveTime: TextView @@ -120,7 +112,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene private lateinit var viewAudioBg: ImageView private lateinit var viewAudioButton: ImageView - private lateinit var tvAudioCountDown: TextView + private lateinit var viewAudioStart: ImageView + private lateinit var tvAudioResult: TextView private lateinit var tvPassiveReport: TextView private lateinit var tvPassiveCancel: TextView @@ -160,8 +153,9 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene tvPassiveTime = mFloatLayout.findViewById(R.id.tvPassiveTime) tvPassiveIdentity = mFloatLayout.findViewById(R.id.tvPassiveIdentity) viewAudioBg = mFloatLayout.findViewById(R.id.viewAudioBg) + tvAudioResult = mFloatLayout.findViewById(R.id.tvAudioResult) viewAudioButton = mFloatLayout.findViewById(R.id.viewAudioButton) - tvAudioCountDown = mFloatLayout.findViewById(R.id.tvAudioCountDown) + viewAudioStart = mFloatLayout.findViewById(R.id.viewAudioStart) tvPassiveReport = mFloatLayout.findViewById(R.id.tvPassiveReport) tvPassiveCancel = mFloatLayout.findViewById(R.id.tvPassiveCancel) rvPassiveList = mFloatLayout.findViewById(R.id.rvPassiveList) @@ -219,11 +213,10 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene }else{ //停止语音听写 mIat?.stopListening() - //结束倒计时 - countDownTimer?.cancel() - countDownTimer?.onFinish() - //将倒计时置空 - countDownTimer = null + //结束录音 + RecordManager.getInstance().stop() + //结束动画 + viewAudioStart.clearAnimation() uploadAudio() } //删除记录 @@ -320,6 +313,9 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene } Log.i(TAG, "语音内容=$resultBuffer") reasonDetail = resultBuffer.toString() + if(!reasonDetail.isNullOrEmpty()){ + tvAudioResult.text = reasonDetail + } } @@ -345,35 +341,17 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene ) scaleAnimation.duration = 1000 scaleAnimation.repeatCount = -1 - viewAudioButton.startAnimation(scaleAnimation) - - tvAudioCountDown.visibility = View.VISIBLE - //开始倒计时 - if(countDownTimer==null){ - countDownTimer = object : CountDownTimer(60000, 1000) { - - override fun onTick(millisUntilFinished: Long) { - tvAudioCountDown.text = "${millisUntilFinished/1000}S" - } - - override fun onFinish() { - tvAudioCountDown.visibility = View.GONE - //结束录音 - RecordManager.getInstance().stop() - //结束动画 - viewAudioButton.clearAnimation() - } - } - countDownTimer?.start() - } + viewAudioButton.visibility = View.GONE + viewAudioStart.visibility = View.VISIBLE + viewAudioStart.startAnimation(scaleAnimation) + tvAudioResult.text = "..." }else{ //停止语音听写 mIat?.stopListening() - //结束倒计时 - countDownTimer?.cancel() - countDownTimer?.onFinish() - //将倒计时置空 - countDownTimer = null + //结束录音 + RecordManager.getInstance().stop() + //结束动画 + viewAudioStart.clearAnimation() } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_initiative_bad_case.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_initiative_bad_case.xml index 96a89f7004..3424a3f421 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_initiative_bad_case.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_initiative_bad_case.xml @@ -104,6 +104,23 @@ android:layout_marginBottom="@dimen/dp_40" /> + + - \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_passive_bad_case.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_passive_bad_case.xml index 4178a3b155..72e93d6b9d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_passive_bad_case.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_passive_bad_case.xml @@ -104,6 +104,23 @@ android:layout_marginBottom="@dimen/dp_40" /> + + - - \ No newline at end of file From d716b618a79a334bd122fda1c417225773f7040c Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Mon, 4 Dec 2023 20:56:38 +0800 Subject: [PATCH 07/62] =?UTF-8?q?[6.2.4]=E6=9F=A5=E7=9C=8B=E5=BD=95?= =?UTF-8?q?=E5=8C=85=E5=BF=AB=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/BadCaseManagerView.kt | 10 +++ .../badcase/biz/InitiativeBadCaseWindow.kt | 16 ++++- .../badcase/biz/PassiveBadCaseWindow.kt | 15 ++++- .../badcase/biz/RecordScreenDialog.java | 14 +++-- .../biz/adapter/BagManagerListAdapter.kt | 8 +++ .../badcase/util/RecordBitmapUtils.kt | 63 +++++++++++++++++++ .../src/main/res/layout/item_bag_manager.xml | 15 ++++- .../src/main/proto/bag_manager.proto | 2 + .../main/java/com/mogo/map/AMapViewWrapper.kt | 1 + 9 files changed, 133 insertions(+), 11 deletions(-) create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt index 75100b5784..9017d57097 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt @@ -50,6 +50,7 @@ class BadCaseManagerView @JvmOverloads constructor( private var bagManagerEntity: BagManagerEntity = BagManagerEntity() private var clickListener: ClickListener? = null private var bagUploadDialog: BagUploadDialog ?= null + private var recordScreenDialog: RecordScreenDialog ?= null private var spaceTotal: Long = 0 //总空间 private var spaceUsed: Long = 0 //已用空间 @@ -212,6 +213,15 @@ class BadCaseManagerView @JvmOverloads constructor( }, 1500) } + override fun lookMapScreen(key: Long) { + //打开高精地图截图对话框 + if(recordScreenDialog == null){ + recordScreenDialog = RecordScreenDialog(context) + } + recordScreenDialog?.show() + recordScreenDialog?.showScreenImage(key) + } + }) val linearLayoutManager = LinearLayoutManager(context) rvBagList.layoutManager = linearLayoutManager diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index fa54298d3f..f0fa1a8e5f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -5,7 +5,7 @@ import android.app.Activity import android.graphics.Bitmap import android.graphics.PixelFormat import android.os.Bundle -import android.os.CountDownTimer +import android.os.Environment import android.os.Handler import android.os.SystemClock import android.util.DisplayMetrics @@ -62,6 +62,7 @@ import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig import com.zhjt.mogo_core_function_devatools.badcase.record.RecordManager import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.BadCaseNetManager import com.zhjt.mogo_core_function_devatools.badcase.repository.store.BadCaseReasonStore +import com.zhjt.mogo_core_function_devatools.badcase.util.RecordBitmapUtils import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import org.json.JSONArray @@ -641,7 +642,18 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList * 高精地图截图回调 */ override fun onMapScreen(bitmap: Bitmap) { - + //图片保存本地 + val currentDay = millis2String(System.currentTimeMillis(), TimeUtils.getMdFormat()) + val fileDir: String = Environment.getExternalStorageDirectory().absolutePath + File.separator+ + "MapScreen" + File.separator+ currentDay + File.separator + val fileName = "$recordKey.png" + val path = fileDir + fileName + if (!File(fileDir).exists()) { + File(fileDir).mkdirs() + } + RecordBitmapUtils.bitmap2Path(bitmap,path) + //遍历是否有非当日的文件并删除 + RecordBitmapUtils.deleteExpiredFile(currentDay) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt index 0e04f6f245..78dcf232fb 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt @@ -5,6 +5,7 @@ import android.app.Activity import android.graphics.Bitmap import android.graphics.PixelFormat import android.os.Bundle +import android.os.Environment import android.os.Handler import android.util.DisplayMetrics import android.util.Log @@ -56,6 +57,7 @@ import com.zhjt.mogo_core_function_devatools.badcase.BadCaseAnalyticsManager import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.BadReasonListAdapter import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.BadCaseNetManager import com.zhjt.mogo_core_function_devatools.badcase.repository.store.BadCaseReasonStore +import com.zhjt.mogo_core_function_devatools.badcase.util.RecordBitmapUtils import org.greenrobot.eventbus.EventBus import org.json.JSONArray import org.json.JSONException @@ -611,7 +613,18 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene * 高精地图截图回调 */ override fun onMapScreen(bitmap: Bitmap) { - super.onMapScreen(bitmap) + //图片保存本地 + val currentDay = millis2String(System.currentTimeMillis(), TimeUtils.getMdFormat()) + val fileDir: String = Environment.getExternalStorageDirectory().absolutePath + File.separator+ + "MapScreen" + File.separator+ currentDay + File.separator + val fileName = "$recordKey.png" + val path = fileDir + fileName + if (!File(fileDir).exists()) { + File(fileDir).mkdirs() + } + RecordBitmapUtils.bitmap2Path(bitmap,path) + //遍历是否有非当日的文件并删除 + RecordBitmapUtils.deleteExpiredFile(currentDay) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/RecordScreenDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/RecordScreenDialog.java index 031fe59d1d..2998bb7142 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/RecordScreenDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/RecordScreenDialog.java @@ -51,14 +51,16 @@ public class RecordScreenDialog extends Dialog { } private void initEvent(){ - String imagePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator+ - "MapScreen" + File.separator+ millis2String(System.currentTimeMillis(),getMdFormat()) + File.separator+"test.png"; - Uri imageUri = Uri.parse(imagePath); - - ivScreen.setImageURI(imageUri); - //关闭当前弹窗 ivScreenClose.setOnClickListener(view -> dismiss()); } + public void showScreenImage(Long recordKey){ + String imagePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator+ + "MapScreen" + File.separator+ millis2String(System.currentTimeMillis(),getMdFormat()) + File.separator+recordKey+".png"; + Uri imageUri = Uri.parse(imagePath); + + ivScreen.setImageURI(imageUri); + } + } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt index e8b1f34210..9490029f08 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt @@ -113,6 +113,11 @@ class BagManagerListAdapter: RecyclerView.Adapter() { } } + holder.ivMapScreen.setOnClickListener { + bagInfoEntity.description?.let { + bagClickListener?.lookMapScreen(bagInfoEntity.key) + } + } if(bagInfoEntity.description?.hasAudio == true){ holder.ivBagAudio.visibility = View.VISIBLE @@ -161,6 +166,7 @@ class BagManagerListAdapter: RecyclerView.Adapter() { var ivBagAudio: ImageView = itemView.findViewById(R.id.ivBagAudio) var tvBagTime: TextView = itemView.findViewById(R.id.tvBagTime) var tvBagSize: TextView = itemView.findViewById(R.id.tvBagSize) + var ivMapScreen: ImageView = itemView.findViewById(R.id.ivMapScreen) } fun setListener(listener: BagClickListener){ @@ -176,6 +182,8 @@ class BagManagerListAdapter: RecyclerView.Adapter() { fun editDescription(key: Long,description: BagDescriptionEntity) //听录音 fun bagAudio(key: Long,audioUrl: String) + //查看高精地图截图 + fun lookMapScreen(key: Long) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt new file mode 100644 index 0000000000..6f2d1e8fa1 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt @@ -0,0 +1,63 @@ +package com.zhjt.mogo_core_function_devatools.badcase.util + +import android.graphics.Bitmap +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.os.Environment +import android.util.Log +import com.zhjt.mogo_core_function_devatools.badcase.biz.InitiativeBadCaseWindow +import java.io.File +import java.io.FileOutputStream +import java.io.OutputStream + +object RecordBitmapUtils { + + /** + * 将Bitmap保存到本地 + */ + fun bitmap2Path(bitmap: Bitmap, path: String?): String? { + try { + val os: OutputStream = FileOutputStream(path) + bitmap.compress(Bitmap.CompressFormat.PNG, 100, os) + os.flush() + os.close() + } catch (e: java.lang.Exception) { + Log.e(InitiativeBadCaseWindow.TAG, "bitmap2Path Exception", e) + } + return path + } + + /** + * 删除过期文件 + */ + fun deleteExpiredFile(currentDay: String){ + val checkFileName = Environment.getExternalStorageDirectory().absolutePath + File.separator+ "MapScreen" + val checkFileFolder = File(checkFileName) + if(checkFileFolder.exists()){ + checkFileFolder.listFiles()?.forEach {dir-> + if(dir.name != currentDay && dir.isDirectory){ + dir.listFiles()?.forEach { file-> + file.delete() + } + dir.delete() + } + } + } + } + + /** + * 在指定Bitmap中绘制文字 + */ + fun drawTextOnBitmap(bitmap: Bitmap, text: String?, x: Int, y: Int): Bitmap? { + val mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true) + val canvas = Canvas(mutableBitmap) + val paint = Paint() + paint.color = Color.RED + paint.textSize = 100f + paint.isAntiAlias = true + canvas.drawText(text!!, x.toFloat(), y.toFloat(), paint) + return mutableBitmap + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_bag_manager.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_bag_manager.xml index 8cd8a75b48..3177571e65 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_bag_manager.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_bag_manager.xml @@ -62,6 +62,17 @@ android:layout_marginEnd="30dp" /> + + diff --git a/libraries/mogo-adas-data/src/main/proto/bag_manager.proto b/libraries/mogo-adas-data/src/main/proto/bag_manager.proto index 448e1bfdb9..88c5a06c29 100644 --- a/libraries/mogo-adas-data/src/main/proto/bag_manager.proto +++ b/libraries/mogo-adas-data/src/main/proto/bag_manager.proto @@ -37,6 +37,8 @@ message BagDescription{ optional bool hasAudio = 2; // 此bag是否具有录音文件 optional string audioUrl = 3; // bag附加录音文件的文件名 optional bool reportBI = 4; //上报BI状态 + optional bool isPassive = 5; // 是否是被动录包,true代表是被动录包,false代表是主动录包 + optional bool recordFail = 6; //录包是否失败,fasle代表录包成功,true代表录包失败 } // 各主机上报的包信息 diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.kt b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.kt index 3a93399909..b44e5bd196 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.kt +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.kt @@ -127,6 +127,7 @@ class AMapViewWrapper(mMapView: MapAutoView) : IMogoMapView, IMogoMapUIControlle mMapView.setOnMapViewVisualAngleChangeListener(this) mMapView.setOnRoadInfoListener(this, 1) mMapView.setOnRoadSideFenceRegionListener(this,5000) + mMapView.registerScreenListener(this) registerLogListener(this, mMapView.getEventController()) d(M_MAP + TAG, "initListeners - setOnMapStyleListener - view $mMapView") } From 5b400187009af002138294d0c797e303154c8bea Mon Sep 17 00:00:00 2001 From: zhongchao Date: Tue, 5 Dec 2023 14:29:54 +0800 Subject: [PATCH 08/62] [6.2.4] fix bug of request in main thread --- .../view/SweeperTrafficDataView.kt | 21 ---------- .../sweeper/view/SweeperTrafficDataView.kt | 10 +---- .../network/FuncConfigNetWorkModel.kt | 6 +-- .../upgrade/IPCUpgradeNetWorkModel.kt | 24 ++++++------ .../hmi/ui/lookaround/M1LookAroundView.kt | 7 ++-- .../hmi/ui/widget/TrafficDataView.java | 39 ------------------- .../ai/net/AiCloudIdentifyNetWorkModel.kt | 26 ++++++------- .../CallerAutoPilotStatusListenerManager.kt | 18 ++------- foudations/mogo-commons/build.gradle | 2 - .../com/mogo/commons/module/ServiceConst.java | 32 --------------- gradle.properties | 2 +- 11 files changed, 37 insertions(+), 150 deletions(-) delete mode 100644 foudations/mogo-commons/src/main/java/com/mogo/commons/module/ServiceConst.java diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperTrafficDataView.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperTrafficDataView.kt index 875b5ca82c..e03fcf4430 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperTrafficDataView.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperTrafficDataView.kt @@ -8,7 +8,6 @@ import android.widget.ImageView import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import chassis.Chassis.GearPosition -import chassis.Chassis.LightSwitch import chassis.ChassisStatesOuterClass.BMSSystemStates import chassis.ChassisStatesOuterClass.SweeperFuTianTaskSystemStates import com.elegant.utils.UiThreadHandler @@ -27,7 +26,6 @@ import kotlin.math.roundToInt */ class SweeperTrafficDataView : ConstraintLayout, IMoGoBatteryManagementSystemListener, - IMoGoChassisLamplightListener, IMoGoChassisGearStateListener, IMoGoSweeperFutianCleanSystemListener { private var tapPositionView //方向盘下方的档位 @@ -78,8 +76,6 @@ class SweeperTrafficDataView : ConstraintLayout, super.onAttachedToWindow() //电量 CallerBatteryManagementSystemListenerManager.addListener(TAG, this) - //转向灯 - CallerChassisLamplightListenerManager.addListener(TAG, this) //档位 CallerChassisGearStateListenerManager.addListener(TAG, this) //清扫车相关数据接口 @@ -89,7 +85,6 @@ class SweeperTrafficDataView : ConstraintLayout, override fun onDetachedFromWindow() { super.onDetachedFromWindow() CallerBatteryManagementSystemListenerManager.removeListener(TAG) - CallerChassisLamplightListenerManager.removeListener(TAG) CallerChassisGearStateListenerManager.removeListener(TAG) CallerSweeperFutianCleanSystemListenerManager.removeListener(TAG) } @@ -127,14 +122,6 @@ class SweeperTrafficDataView : ConstraintLayout, } } - /** - * 车辆转向灯 - * @param directionLight - */ - override fun onAutopilotLightSwitchData(lightSwitch: LightSwitch?) { - //转向灯状态 0是正常 1是左转 2是右转 - } - /** * 设置自动驾驶状态 */ @@ -163,14 +150,6 @@ class SweeperTrafficDataView : ConstraintLayout, } } - /** - * 刹车灯 - * @param brakeLight - */ - override fun onAutopilotBrakeLightData(brakeLight: Boolean) { - d(TAG, "刹车灯:$brakeLight") - } - /** * 方向盘下方的档位 * @param gear diff --git a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/view/SweeperTrafficDataView.kt b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/view/SweeperTrafficDataView.kt index 3482edfd7e..ccf3d2b9a2 100644 --- a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/view/SweeperTrafficDataView.kt +++ b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/view/SweeperTrafficDataView.kt @@ -130,9 +130,10 @@ class SweeperTrafficDataView : ConstraintLayout, tvBattery?.text = "${states.bmsSoc.roundToInt()}%" } } + /** * 车辆转向灯 - * @param directionLight + * @param lightSwitch */ override fun onAutopilotLightSwitchData(lightSwitch: LightSwitch?) { //转向灯状态 0是正常 1是左转 2是右转 @@ -141,13 +142,6 @@ class SweeperTrafficDataView : ConstraintLayout, } } - /** - * 刹车灯 - * @param brakeLight - */ - override fun onAutopilotBrakeLightData(brakeLight: Boolean) { - d(TAG, "刹车灯:$brakeLight") - } /** * 方向盘下方的档位 * @param gear diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt index b2e9732364..50a6404f54 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt @@ -38,12 +38,12 @@ class FuncConfigNetWorkModel { if (error == null) { error = onError } - map["sn"] = MoGoAiCloudClientConfig.getInstance().sn - map["mac"] = DeviceUtils.getMacAddress() - map["channelVersion"] = AppIdentityModeUtils.getMisChannelCode(FunctionBuildConfig.appIdentityMode) } loader { apiCall { + map["sn"] = MoGoAiCloudClientConfig.getInstance().sn + map["mac"] = DeviceUtils.getMacAddress() + map["channelVersion"] = AppIdentityModeUtils.getMisChannelCode(FunctionBuildConfig.appIdentityMode) getNetWorkApi().funcConfig(map) } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/IPCUpgradeNetWorkModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/IPCUpgradeNetWorkModel.kt index 712307239a..7b69cb6213 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/IPCUpgradeNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/IPCUpgradeNetWorkModel.kt @@ -34,20 +34,20 @@ class IPCUpgradeNetWorkModel { fun upgradeConfirm(images: List,padSn: String,releaseId: String, onSuccess: ((String) -> Unit),onError: ((String) -> Unit)){ request> { - val requestJson = JSONObject() - val imagesJsonArray = JSONArray() - images.iterator().forEach { - imagesJsonArray.put(it) - } - requestJson.put("images",imagesJsonArray) - requestJson.put("padSn",padSn) - requestJson.put("releaseId",releaseId) - val requestBody:RequestBody= RequestBody.create( - MediaType.parse("application/json; charset=utf-8"), - requestJson.toString() - ) loader{ apiCall{ + val requestJson = JSONObject() + val imagesJsonArray = JSONArray() + images.iterator().forEach { + imagesJsonArray.put(it) + } + requestJson.put("images",imagesJsonArray) + requestJson.put("padSn",padSn) + requestJson.put("releaseId",releaseId) + val requestBody:RequestBody= RequestBody.create( + MediaType.parse("application/json; charset=utf-8"), + requestJson.toString() + ) getNetWorkApi(getBaseUrl()).upgradeConfirm(requestBody) } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/lookaround/M1LookAroundView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/lookaround/M1LookAroundView.kt index c1bde36d11..b990722143 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/lookaround/M1LookAroundView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/lookaround/M1LookAroundView.kt @@ -5,7 +5,6 @@ import android.graphics.* import android.graphics.Paint.Style.STROKE import android.os.Handler import android.os.HandlerThread -import android.os.SystemClock import android.util.* import android.view.SurfaceHolder import android.view.SurfaceView @@ -15,6 +14,8 @@ import com.mogo.eagle.core.function.api.lookaround.data.* import com.mogo.eagle.core.function.call.autopilot.* import com.mogo.eagle.core.function.call.devatools.* import com.mogo.eagle.core.utilcode.kotlin.* +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.Utils import kotlinx.coroutines.* @@ -279,12 +280,11 @@ class M1LookAroundView: SurfaceView, SurfaceHolder.Callback, Runnable, IMoGoChas override fun onAttachedToWindow() { super.onAttachedToWindow() CallerChassisSteeringStateListenerManager.addListener(TAG, this) - Log.d(TAG, "--- 发起订阅 ---") CallerAutoPilotControlManager.setIsSubscribeM1StitchedVideo(true) scope.launch(ThreadUtils.getCpuPool().asCoroutineDispatcher()) { CallerDevaToolsManager.lookAroundProvider()?.flow()?.also { flow -> flow.onEach { - Log.d(TAG, "-- onEach ---:$it") + CallerLogger.d("$M_HMI$TAG", "-- onEach ---:$it") if (it.isValid()) { data = it handler.get()?.removeCallbacks(this@M1LookAroundView) @@ -307,7 +307,6 @@ class M1LookAroundView: SurfaceView, SurfaceHolder.Callback, Runnable, IMoGoChas override fun onDetachedFromWindow() { super.onDetachedFromWindow() CallerChassisSteeringStateListenerManager.removeListener(TAG) - Log.d(TAG, "--- 取消订阅 ---") CallerAutoPilotControlManager.setIsSubscribeM1StitchedVideo(false) handler.get()?.looper?.quitSafely() } 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 5245de3bd6..16d9dd686b 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 @@ -18,13 +18,11 @@ import androidx.constraintlayout.widget.ConstraintLayout; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningActionsListener; import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisBrakeStateListener; import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisGearStateListener; -import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisSteeringStateListener; import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisThrottleStateListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerPlanningActionsListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerChassisBrakeStateListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerChassisGearStateListenerManager; -import com.mogo.eagle.core.function.call.autopilot.CallerChassisSteeringStateListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerChassisThrottleStateListenerManager; import com.mogo.eagle.core.function.hmi.R; import com.mogo.eagle.core.utilcode.util.ThreadUtils; @@ -33,8 +31,6 @@ import org.jetbrains.annotations.NotNull; import chassis.Chassis; import mogo.telematics.pad.MessagePad; -import chassis.ChassisStatesOuterClass; -import planning.RoboSweeperTaskIndexOuterClass; /** * @author Jing @@ -42,7 +38,6 @@ import planning.RoboSweeperTaskIndexOuterClass; * @since: 6/24/22 */ public class TrafficDataView extends ConstraintLayout implements - IMoGoChassisSteeringStateListener, IMoGoChassisGearStateListener , IMoGoChassisBrakeStateListener, IMoGoChassisThrottleStateListener, @@ -54,9 +49,6 @@ public class TrafficDataView extends ConstraintLayout implements private ImageView speedImage; private ImageView brakeStatus; - //圆弧颜色 - private int mArcColor; - private static final int MSG_SEND_UPDATE = 1; private volatile double acceleration; private volatile float mBrake; @@ -114,7 +106,6 @@ public class TrafficDataView extends ConstraintLayout implements protected void onAttachedToWindow() { super.onAttachedToWindow(); handler.sendEmptyMessageDelayed(MSG_SEND_UPDATE, 1000L); - CallerChassisSteeringStateListenerManager.INSTANCE.addListener(TAG, this); CallerChassisGearStateListenerManager.INSTANCE.addListener(TAG, this); CallerChassisBrakeStateListenerManager.INSTANCE.addListener(TAG, this); CallerChassisThrottleStateListenerManager.INSTANCE.addListener(TAG, this); @@ -133,7 +124,6 @@ public class TrafficDataView extends ConstraintLayout implements @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); - CallerChassisSteeringStateListenerManager.INSTANCE.removeListener(TAG); CallerChassisGearStateListenerManager.INSTANCE.removeListener(TAG); CallerChassisBrakeStateListenerManager.INSTANCE.removeListener(TAG); CallerChassisThrottleStateListenerManager.INSTANCE.removeListener(TAG); @@ -145,20 +135,8 @@ public class TrafficDataView extends ConstraintLayout implements acceleration = planningActionMsg.getDestinationAcc(); } - /** - * 方向盘转向角 左+右- - * @param steering - */ - @Override - public void onAutopilotSteeringData(float steering) { - if (Math.abs(steering) < 1) { - steering = 0; - } - } - /** * 档位 - * @param gear */ @Override public void onAutopilotGearData(@NotNull Chassis.GearPosition gear) { @@ -178,23 +156,6 @@ public class TrafficDataView extends ConstraintLayout implements public void onAutopilotThrottle(float throttle) { mThrottle = throttle; } - /** - * 设置弧形颜色 - * - * @param value 颜色值 - */ - public void setArcColor(int value) { - mArcColor = value; - } - - /** - * 设置数据 - * - * @param value 当前绘制的值 - */ - public void setValues(int value) { - - } /** * value呈现 diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/net/AiCloudIdentifyNetWorkModel.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/net/AiCloudIdentifyNetWorkModel.kt index 61a48f2c0b..fad2bd1230 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/net/AiCloudIdentifyNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/net/AiCloudIdentifyNetWorkModel.kt @@ -29,22 +29,20 @@ class AiCloudIdentifyNetWorkModel private constructor() { onError: ((String) -> Unit) ) { request> { - val map = mutableMapOf() - start { - map["sn"] = MoGoAiCloudClientConfig.getInstance().sn - map["status"] = dataReceive - map["startMetre"] = START_METRE - map["endMetre"] = END_METRE - map["type"] = 1 - if (lon != 0.0) { - map["lon"] = lon - } - if (lat != 0.0) { - map["lat"] = lat - } - } loader { apiCall { + val map = mutableMapOf() + map["sn"] = MoGoAiCloudClientConfig.getInstance().sn + map["status"] = dataReceive + map["startMetre"] = START_METRE + map["endMetre"] = END_METRE + map["type"] = 1 + if (lon != 0.0) { + map["lon"] = lon + } + if (lat != 0.0) { + map["lat"] = lat + } getNetWorkApi().identifyRange(map) } } diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt index 9f614cc914..5ede15519a 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt @@ -26,6 +26,9 @@ object CallerAutoPilotStatusListenerManager : CallerBase if (oldValue != newValue) { - fixAtStationState(newValue) + //todo emArrow chainLog M_LISTENERS.forEach { val listener = it.value listener.onAutopilotStatusResponse(newValue) @@ -42,19 +45,6 @@ object CallerAutoPilotStatusListenerManager : CallerBase if (!oldValue.contentEquals(newValue)) { M_LISTENERS.forEach { diff --git a/foudations/mogo-commons/build.gradle b/foudations/mogo-commons/build.gradle index f39dbedbe7..f182270d1b 100644 --- a/foudations/mogo-commons/build.gradle +++ b/foudations/mogo-commons/build.gradle @@ -51,8 +51,6 @@ dependencies { implementation rootProject.ext.dependencies.arouter annotationProcessor rootProject.ext.dependencies.aroutercompiler implementation rootProject.ext.dependencies.rxjava - - implementation rootProject.ext.dependencies.amapnavi3dmap implementation rootProject.ext.dependencies.analytics api 'org.greenrobot:eventbus:3.1.1' diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/ServiceConst.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/ServiceConst.java deleted file mode 100644 index 9a3ce9b413..0000000000 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/ServiceConst.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.mogo.commons.module; - -/** - * @author congtaowang - * @since 2020-01-03 - *

- * 描述 - */ -public class ServiceConst { - - /** - * 类型 - */ - public static final String TYPE = "STRATEGY_REFRESH"; - - - /** - * 卡片 用户数据 - */ - public static final String CARD_TYPE_USER_DATA = "CARD_TYPE_USER_DATA"; - - /** - * 卡片 探路数据 - */ - public static final String CARD_TYPE_ROAD_CONDITION = "CARD_TYPE_ROAD_CONDITION"; - - /** - * 卡片 新鲜事 - */ - public static final String CARD_TYPE_NOVELTY = "CARD_TYPE_NOVELTY"; - -} diff --git a/gradle.properties b/gradle.properties index 6da4957238..2ff589d4e4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -61,7 +61,7 @@ bytex.ASM_API=ASM7 ################ 外部依赖引用 ################ # loglib -LOGLIB_VERSION=1.10.6 +LOGLIB_VERSION=1.10.7 ######## MogoAiCloudSDK Version ######## # 网络请求LOGLIB_VERSION MOGO_NETWORK_VERSION=1.4.7.19 From 5bb005753b0b7f7bc1f790b9a8c4772e55d4cc75 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Tue, 5 Dec 2023 16:58:51 +0800 Subject: [PATCH 09/62] =?UTF-8?q?[6.2.4]=E4=BF=AE=E5=A4=8D=E9=AD=94?= =?UTF-8?q?=E6=96=B9=E5=90=AF=E5=8A=A8=E5=BD=95=E5=8C=85=E5=92=8C=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=E5=8E=9F=E5=9B=A0=E5=88=B0=E5=B7=A5=E6=8E=A7=E6=9C=BA?= =?UTF-8?q?Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/BadCaseManager.kt | 48 +------------------ .../badcase/biz/InitiativeBadCaseWindow.kt | 11 +++-- 2 files changed, 8 insertions(+), 51 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index e6448ca428..5a14e847d5 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -13,12 +13,10 @@ import androidx.lifecycle.LifecycleOwner import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig -import com.mogo.eagle.core.data.deva.badcase.RecordCaseEntity import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgBoxType import com.mogo.eagle.core.data.msgbox.RecordBagMsg import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager @@ -33,7 +31,6 @@ import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord import com.zhjt.mogo_core_function_devatools.ext.enqueuePop import me.jessyan.autosize.utils.AutoSizeUtils -import mogo.telematics.pad.MessagePad import record_cache.RecordPanelOuterClass internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordListener { @@ -45,9 +42,6 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis @Volatile private var record: AutoPilotRecord? = null - //是否处理录包配置回调数据 - private var receiveRecordConfig: Boolean = false - fun init(context: Context) { CallerAutopilotRecordListenerManager.addListener(TAG, this) SpeechUtils.init(context) @@ -63,13 +57,7 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis if (activity !is AppCompatActivity) { return } - //兼容老MAP版本 - if (BadCaseConfig.dockerVersion!!.contains("2.3.0") - || BadCaseConfig.dockerVersion!!.contains("2.4.0") - || BadCaseConfig.dockerVersion!!.contains("2.5.0") - || BadCaseConfig.dockerVersion!!.contains("2.6.0") - || BadCaseConfig.dockerVersion!!.contains("2.8.0") - ){ + ThreadUtils.runOnUiThread { val initiativeBadCaseWindow = InitiativeBadCaseWindow(activity) initiativeBadCaseWindow.setClickListener(object : InitiativeBadCaseWindow.ClickListener { @@ -79,10 +67,7 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis }) initiativeBadCaseWindow.showFloatWindow(null) - }else{ - receiveRecordConfig = true - //获取数据采集录制模式配置列表 - CallerAutoPilotControlManager.getBadCaseConfig(0, 0, ArrayList()) + } }else { ToastUtils.showShort("工控机连接状态异常") @@ -315,33 +300,4 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis } - /** - * 数据采集配置应答 - */ - override fun onAutopilotRecordConfig(config: MessagePad.RecordDataConfig) { - if(receiveRecordConfig){ - ThreadUtils.runOnUiThread { - if(config.recordTypesCount >0){ - config.recordTypesList.forEach { - //TODO 需要确认具体是哪个ID - if(it.id == 1){ - val recordCaseEntity = RecordCaseEntity(it.id,it.desc,it.topicsList) - val initiativeBadCaseWindow = AppStateManager.currentActivity() - ?.let { it1 -> InitiativeBadCaseWindow(it1) } - initiativeBadCaseWindow?.setClickListener(object : - InitiativeBadCaseWindow.ClickListener { - override fun closeWindow() { - initiativeBadCaseWindow.hideFloatWindow() - } - - }) - initiativeBadCaseWindow?.showFloatWindow(recordCaseEntity) - receiveRecordConfig = false - } - } - } - } - } - } - } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index f0fa1a8e5f..c9f8ccf9b8 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -520,8 +520,6 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList mWindowManager!!.addView(mFloatLayout, mWindowParams) //开启录包 recordKey = Random(SystemClock.elapsedRealtime()).nextInt().toLong() - //开启高精地图截图 - CallerMapUIServiceManager.getMapUIController()?.getMapScreenShot() if(recordCaseEntity!=null){ CallerAutoPilotControlManager.recordPackage(recordCaseEntity.caseId,recordKey.toInt(), BadCaseConfig.totalDuration, BadCaseConfig.previousDuration,recordCaseEntity.topicList) @@ -566,10 +564,13 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) { CallerLogger.d("${M_DEVA}${TAG}", "-- 收到工控机录制任务回调 -- $recordPanel") ThreadUtils.runOnUiThread { - if(recordKey==null){ - recordKey = recordPanel.key + recordKey = recordPanel.key + //开始录制 + if(recordPanel.stat == 300){ + BadCaseConfig.recordKeyList.add(recordPanel.key) + //开启高精地图截图 + CallerMapUIServiceManager.getMapUIController()?.getMapScreenShot() } - BadCaseConfig.recordKeyList.add(recordPanel.key) if(recordFileName==null){ recordFileName = recordPanel.filename } From 09b8d1eaeb038c9dbda3f36769b63d0a7a409b71 Mon Sep 17 00:00:00 2001 From: renwj Date: Tue, 5 Dec 2023 19:29:39 +0800 Subject: [PATCH 10/62] =?UTF-8?q?[6.2.0][APM]=20docker=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=AA=E6=9C=89release->debug=E6=88=96debug->release?= =?UTF-8?q?=E6=89=8D=E7=BD=AE=E4=B8=BAtrue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt index d9e3bc01e4..d391927509 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt @@ -69,8 +69,10 @@ class ApmEnvProviderImpl: IApmEnvProvider, CoroutineScope { var dockerVersionChanged = false val version = ApmEnvConfig.getDockerVersion() if (!TextUtils.isEmpty(version) && !TextUtils.isEmpty(dockerVersion) && version != dockerVersion) { - dockerVersionChanged = true - ApmEnvConfig.setDockerVersion(dockerVersion) + dockerVersionChanged = version?.endsWith("release", true) == true || dockerVersion.endsWith("release", true) + if (dockerVersionChanged) { + ApmEnvConfig.setDockerVersion(dockerVersion) + } } var isFirstDockerVersionSet = false if (TextUtils.isEmpty(version) && !TextUtils.isEmpty(dockerVersion)) { From 226c31cc41f252682f1ccd084fddbd20ec266870 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Tue, 5 Dec 2023 20:14:08 +0800 Subject: [PATCH 11/62] =?UTF-8?q?[6.2.4]=E8=B0=83=E6=95=B4=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=E5=86=85=E5=AE=B9=E5=92=8CPB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/InitiativeBadCaseWindow.kt | 8 ++++---- .../badcase/biz/PassiveBadCaseWindow.kt | 8 ++++---- libraries/mogo-adas-data/src/main/proto/bag_manager.proto | 2 -- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index c9f8ccf9b8..5bf02d4ae2 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -110,7 +110,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList private var audioFileName:String?=null //录音文件名称 private var uploadReason: StringBuilder = StringBuilder() //上报原因,标签 - private var reasonDetail: String ?= null //语音转写 + private var reasonDetail: String = "" //语音转写 private var uploadReasonTotal: String = "" @Volatile private var recordKey: Long = 0 //录制bag包key @@ -320,7 +320,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList } Log.i(TAG, "语音内容=$resultBuffer") reasonDetail = resultBuffer.toString() - if(!reasonDetail.isNullOrEmpty()){ + if(reasonDetail.isNotEmpty()){ tvAudioResult.text = reasonDetail } } @@ -420,13 +420,13 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList */ private fun upload(downloadUrl: String?){ GlobalScope.launch{ - uploadReasonTotal = if(reasonDetail.isNullOrEmpty()){ + uploadReasonTotal = if(reasonDetail.isEmpty()){ uploadReason.toString() }else{ "$uploadReason 语音内容:$reasonDetail" } //上报到工控机 - CallerAutoPilotControlManager.recordCause(recordKey.toString(),recordFileName,"",uploadReasonTotal) + CallerAutoPilotControlManager.recordCause(recordKey.toString(),recordFileName,"",uploadReason.toString()+reasonDetail) val uploadResult = presenter.upload(mutableMapOf().also { itx -> itx["carLicense"] = AppConfigInfo.plateNumber?:"" //车牌号 itx["filename"] = recordFileName?:"" //bag包文件地址 diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt index 78dcf232fb..818fcd9f12 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt @@ -128,7 +128,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene // 用HashMap存储听写结果 private val mIatResults: HashMap = LinkedHashMap() - private var reasonDetail: String ?= null //语音转写 + private var reasonDetail: String = "" //语音转写 private var uploadReasonTotal: String = "" private var isUploadCos = false //是否在上传Cos操作 @@ -315,7 +315,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene } Log.i(TAG, "语音内容=$resultBuffer") reasonDetail = resultBuffer.toString() - if(!reasonDetail.isNullOrEmpty()){ + if(reasonDetail.isNotEmpty()){ tvAudioResult.text = reasonDetail } } @@ -416,13 +416,13 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene */ private fun upload(downloadUrl: String?){ GlobalScope.launch{ - uploadReasonTotal = if(reasonDetail.isNullOrEmpty()){ + uploadReasonTotal = if(reasonDetail.isEmpty()){ uploadReason.toString() }else{ "$uploadReason 语音内容:$reasonDetail" } //上报到工控机 - CallerAutoPilotControlManager.recordCause(recordKey,recordFileName,"",uploadReasonTotal) + CallerAutoPilotControlManager.recordCause(recordKey,recordFileName,"",uploadReason.toString()+reasonDetail) val uploadResult = presenter.upload(mutableMapOf().also { itx -> itx["carLicense"] = AppConfigInfo.plateNumber //车牌号 itx["filename"] = recordFileName?:"" //bag包文件地址 diff --git a/libraries/mogo-adas-data/src/main/proto/bag_manager.proto b/libraries/mogo-adas-data/src/main/proto/bag_manager.proto index 88c5a06c29..448e1bfdb9 100644 --- a/libraries/mogo-adas-data/src/main/proto/bag_manager.proto +++ b/libraries/mogo-adas-data/src/main/proto/bag_manager.proto @@ -37,8 +37,6 @@ message BagDescription{ optional bool hasAudio = 2; // 此bag是否具有录音文件 optional string audioUrl = 3; // bag附加录音文件的文件名 optional bool reportBI = 4; //上报BI状态 - optional bool isPassive = 5; // 是否是被动录包,true代表是被动录包,false代表是主动录包 - optional bool recordFail = 6; //录包是否失败,fasle代表录包成功,true代表录包失败 } // 各主机上报的包信息 From 1a50197b7671196434c64a71e189d838e8e02e4b Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 6 Dec 2023 01:09:58 +0800 Subject: [PATCH 12/62] =?UTF-8?q?[6.2.4]=E5=BD=95=E5=8C=85=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/BadCaseManager.kt | 2 + .../badcase/biz/BadCaseManagerView.kt | 7 ++ .../badcase/biz/InitiativeBadCaseWindow.kt | 2 + .../biz/adapter/BagManagerListAdapter.kt | 67 ++++++++++++--- .../badcase/consts/BadCaseConfig.kt | 6 ++ .../res/drawable/bag_artificial_button_bg.xml | 9 ++ .../main/res/drawable/bag_auto_button_bg.xml | 9 ++ .../src/main/res/layout/item_bag_manager.xml | 83 ++++++++++++++----- .../eagle/core/utilcode/util/TimeUtils.java | 4 + 9 files changed, 154 insertions(+), 35 deletions(-) create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bag_artificial_button_bg.xml create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bag_auto_button_bg.xml diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index 5a14e847d5..893c53223d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -248,6 +248,8 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis ) } bag录制失败" ) + //录包失败时,保存录包失败状态 + BadCaseConfig.bagRecordFailList.add(recordPanel.key) } return } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt index 9017d57097..71cb1c78dc 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt @@ -8,6 +8,8 @@ import android.os.Handler import android.util.AttributeSet import android.view.LayoutInflater import android.view.View +import android.view.inputmethod.InputMethodManager +import android.widget.EditText import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.LinearLayoutManager import bag_manager.BagManagerOuterClass @@ -222,6 +224,11 @@ class BadCaseManagerView @JvmOverloads constructor( recordScreenDialog?.showScreenImage(key) } + override fun startEdit(editText: EditText) { + val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager? + imm?.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT) + } + }) val linearLayoutManager = LinearLayoutManager(context) rvBagList.layoutManager = linearLayoutManager diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index 5bf02d4ae2..e25cb093a9 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -568,6 +568,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList //开始录制 if(recordPanel.stat == 300){ BadCaseConfig.recordKeyList.add(recordPanel.key) + //保存录包状态 + BadCaseConfig.bagResourceList.add(recordPanel.key) //开启高精地图截图 CallerMapUIServiceManager.getMapUIController()?.getMapScreenShot() } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt index 9490029f08..67d912e1e8 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt @@ -12,9 +12,13 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.mogo.eagle.core.data.deva.badcase.BagDescriptionEntity import com.mogo.eagle.core.data.deva.badcase.BagInfoEntity +import com.mogo.eagle.core.utilcode.util.FileUtils.millis2String +import com.mogo.eagle.core.utilcode.util.TimeUtils import com.zhjt.mogo_core_function_devatools.R +import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig import java.text.DecimalFormat + /** * @author XuXinChao * @description Bag包管理列表适配器 @@ -32,14 +36,14 @@ class BagManagerListAdapter: RecyclerView.Adapter() { } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - if(viewType == 1){ + return if(viewType == 1){ val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_bag_time_title,parent,false) - return BagTimeTitleHolder(view) + BagTimeTitleHolder(view) }else{ val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_bag_manager, parent, false) - return BagManagerListHolder(view) + BagManagerListHolder(view) } } @@ -92,18 +96,25 @@ class BagManagerListAdapter: RecyclerView.Adapter() { bagInfoEntity.description?.let { des-> - if(des.reportBI){ - //已上报 - holder.tvBagReportStatus.text = "已上报" + if(BadCaseConfig.bagRecordFailList.contains(bagInfoEntity.key)){ + //如果在录包失败列表中找到该Bag包,则该包为录包失败状态 + holder.tvBagReportStatus.text = "录包失败" holder.tvBagReportStatus.setBackgroundResource(R.drawable.bag_reported_button_bg) holder.tvBagReportStatus.isClickable = false }else{ - //未上报 - holder.tvBagReportStatus.text = "上报" - holder.tvBagReportStatus.setBackgroundResource(R.drawable.bag_report_button_bg) - holder.tvBagReportStatus.isClickable = true - holder.tvBagReportStatus.setOnClickListener { - bagClickListener?.uploadBI(bagInfoEntity) + if(des.reportBI){ + //已上报 + holder.tvBagReportStatus.text = "已上报" + holder.tvBagReportStatus.setBackgroundResource(R.drawable.bag_reported_button_bg) + holder.tvBagReportStatus.isClickable = false + }else{ + //未上报 + holder.tvBagReportStatus.text = "上报" + holder.tvBagReportStatus.setBackgroundResource(R.drawable.bag_report_button_bg) + holder.tvBagReportStatus.isClickable = true + holder.tvBagReportStatus.setOnClickListener { + bagClickListener?.uploadBI(bagInfoEntity) + } } } if(des.description.isEmpty()){ @@ -119,6 +130,25 @@ class BagManagerListAdapter: RecyclerView.Adapter() { } } + //录包来源:自动 or 人工 + if(BadCaseConfig.bagResourceList.contains(bagInfoEntity.key)){ + //在该列表中找到Bag包的Key则代表该Bag为人工录包 + holder.tvBagResource.text = "人工" + holder.tvBagResource.setBackgroundResource(R.drawable.bag_artificial_button_bg) + }else{ + //自动录包 + holder.tvBagResource.text = "自动" + holder.tvBagResource.setBackgroundResource(R.drawable.bag_auto_button_bg) + } + + //编辑文字按钮 + holder.ivEditReason.setOnClickListener { + holder.etBagNameEdit.requestFocus() + holder.etBagNameEdit.performClick() + //调起软键盘 + bagClickListener?.startEdit(holder.etBagNameEdit) + } + if(bagInfoEntity.description?.hasAudio == true){ holder.ivBagAudio.visibility = View.VISIBLE holder.ivBagAudio.setOnClickListener { @@ -144,6 +174,15 @@ class BagManagerListAdapter: RecyclerView.Adapter() { e.printStackTrace() } } + + //只有当天的Bag才显示查看截图按钮 + bagInfoEntity.timestamp.let {day -> + val currentDay = millis2String(System.currentTimeMillis(), TimeUtils.getMdFormatTwo()) + if(day.contains(currentDay)){ + holder.ivMapScreen.visibility = View.VISIBLE + } + } + } } } @@ -167,6 +206,8 @@ class BagManagerListAdapter: RecyclerView.Adapter() { var tvBagTime: TextView = itemView.findViewById(R.id.tvBagTime) var tvBagSize: TextView = itemView.findViewById(R.id.tvBagSize) var ivMapScreen: ImageView = itemView.findViewById(R.id.ivMapScreen) + var tvBagResource: TextView = itemView.findViewById(R.id.tvBagResource) + var ivEditReason: ImageView = itemView.findViewById(R.id.ivEditReason) } fun setListener(listener: BagClickListener){ @@ -184,6 +225,8 @@ class BagManagerListAdapter: RecyclerView.Adapter() { fun bagAudio(key: Long,audioUrl: String) //查看高精地图截图 fun lookMapScreen(key: Long) + //点击按钮调起编辑Bag包信息 + fun startEdit(editText: EditText) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt index 29b7741383..b6ee0d1047 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt @@ -37,5 +37,11 @@ object BadCaseConfig { //Bag包管理列表 @JvmField var bagManagerList: ArrayList = ArrayList() + //Bag包来源,将主动录包的Key保存在该列表中,不在该列表中的在录包管理页面的Bag包视为被动录包 + @JvmField + var bagResourceList: ArrayList = ArrayList() + //Bag包录包失败状态列表,当Bag录制失败时保存在该列表,当Bag包在该列表中不存在时即视为录包成功 + @JvmField + var bagRecordFailList: ArrayList = ArrayList() } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bag_artificial_button_bg.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bag_artificial_button_bg.xml new file mode 100644 index 0000000000..03f1407ad1 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bag_artificial_button_bg.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bag_auto_button_bg.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bag_auto_button_bg.xml new file mode 100644 index 0000000000..fdc5ea6d1e --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bag_auto_button_bg.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_bag_manager.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_bag_manager.xml index 3177571e65..3d02585ffa 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_bag_manager.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_bag_manager.xml @@ -17,25 +17,56 @@ app:layout_constraintStart_toStartOf="parent" /> - + + + + + + + - \ No newline at end of file diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/TimeUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/TimeUtils.java index e837752e57..3edf2d84c8 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/TimeUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/TimeUtils.java @@ -51,6 +51,10 @@ public final class TimeUtils { return getSafeDateFormat("yyyy-MM-dd"); } + public static SimpleDateFormat getMdFormatTwo(){ + return getSafeDateFormat("yyyyMMdd"); + } + public static SimpleDateFormat getHourMinSecondFormat(){ return getSafeDateFormat("HH:mm:ss"); } From bfa28c1269ce4fa59412162f9b805abf35c0201e Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 6 Dec 2023 14:54:09 +0800 Subject: [PATCH 13/62] =?UTF-8?q?[6.2.4]=20[bus=E3=80=81shuttle]=20[?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E4=BB=BB=E5=8A=A1=E6=97=B6=20=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E8=87=AA=E9=A9=BE]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java | 3 +++ .../src/main/java/com/mogo/och/bus/model/OrderModel.java | 2 ++ 2 files changed, 5 insertions(+) diff --git a/OCH/bus/driver/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java b/OCH/bus/driver/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java index 84d8af86be..3a89eaa247 100644 --- a/OCH/bus/driver/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/bus/driver/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java @@ -548,6 +548,9 @@ public class OrderModel { clearBusStationDatas(); queryBusRoutes(); removeTipRunnables(); + CallerAutoPilotControlManager.INSTANCE.cancelAutoPilot(); + // 取消自驾 + setTrajectoryStation(null,null,-1L); // startOrStopQueryPassengerWriteOff(false); } } diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java index e6a847f71b..6ecc30ac08 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java @@ -605,6 +605,8 @@ public class OrderModel { clearBusStationDatas(); queryBusRoutes(); removeTipRunnables(); + // 取消自驾 + CallerAutoPilotControlManager.INSTANCE.cancelAutoPilot(); // startOrStopQueryPassengerWriteOff(false); } } From 959d56f240f3606acfd1f1acc89a0da4fac10b5c Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 6 Dec 2023 16:34:42 +0800 Subject: [PATCH 14/62] =?UTF-8?q?[6.2.4]=E5=BD=95=E5=8C=85=E6=88=AA?= =?UTF-8?q?=E5=9B=BE=E5=A2=9E=E5=8A=A0=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/BadCaseManager.kt | 58 ++++++++++++++++- .../badcase/biz/InitiativeBadCaseWindow.kt | 25 +++++++- .../badcase/consts/BadCaseConfig.kt | 19 ++++++ .../badcase/util/RecordBitmapUtils.kt | 62 +++++++++++++++++-- .../adapter/DriverMsgBoxBubbleAdapter.kt | 2 - .../msgbox/adapter/DriverMsgBoxListAdapter.kt | 1 - .../mogo/eagle/core/data}/msgbox/MsgFmData.kt | 4 +- 7 files changed, 159 insertions(+), 12 deletions(-) rename core/{function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function => mogo-core-data/src/main/java/com/mogo/eagle/core/data}/msgbox/MsgFmData.kt (99%) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index 893c53223d..0651537b66 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -11,14 +11,27 @@ import androidx.lifecycle.Lifecycle.Event import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.LifecycleOwner import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.commons.module.status.IMogoStatusChangedListener +import com.mogo.commons.module.status.MogoStatusManager +import com.mogo.commons.module.status.StatusDescriptor import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.data.deva.report.ReportEntity +import com.mogo.eagle.core.data.map.MogoLocation +import com.mogo.eagle.core.data.msgbox.FMInfoMsg import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgBoxType +import com.mogo.eagle.core.data.msgbox.MsgCategory import com.mogo.eagle.core.data.msgbox.RecordBagMsg import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener +import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener +import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxListener +import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager +import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxListenerManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -32,8 +45,11 @@ import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPi import com.zhjt.mogo_core_function_devatools.ext.enqueuePop import me.jessyan.autosize.utils.AutoSizeUtils import record_cache.RecordPanelOuterClass +import kotlin.math.abs -internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordListener { +internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordListener, + IMoGoChassisLocationGCJ02Listener, IMsgBoxListener, IMoGoDevaToolsListener, + IMogoStatusChangedListener { const val TAG = "BadCase" @@ -45,6 +61,14 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis fun init(context: Context) { CallerAutopilotRecordListenerManager.addListener(TAG, this) SpeechUtils.init(context) + //定位监听, 传false是高德坐标系 + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 1, this) + //消息盒子监听,获取FM和Report信息 + CallerMsgBoxListenerManager.addListener(TAG,this) + CallerDevaToolsListenerManager.addListener(TAG, this) + // 云socket连接状态 + MogoStatusManager.getInstance() + .registerStatusChangedListener(TAG, StatusDescriptor.CLOUD_SOCKET, this) } /** @@ -302,4 +326,36 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis } + override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { + mogoLocation?.let { + BadCaseConfig.currentSpeed = (abs(it.gnssSpeed) * 3.6f).toInt() + } + } + + override fun onDataChanged(category: MsgCategory, msgBoxList: MsgBoxBean) { + if(category == MsgCategory.SYS_INFO){ + //上报 + BadCaseConfig.newReportEntity = msgBoxList.bean as ReportEntity + }else if(category == MsgCategory.FM_INFO){ + //FM + BadCaseConfig.newFMInfoMsg = msgBoxList.bean as FMInfoMsg + } + + } + + override fun gpsStatus(status: Boolean) { + super.gpsStatus(status) + BadCaseConfig.gpsStatus = "GPS${if (status) "正常" else "异常"}" + } + + override fun tracingStatus(status: Boolean) { + super.tracingStatus(status) + BadCaseConfig.tracingStatus = "寻迹算路${if (status) "正常" else "异常"}" + } + + override fun onStatusChanged(descriptor: StatusDescriptor?, isTrue: Boolean) { + BadCaseConfig.socketStatus = "云Socket连接${if (isTrue) "正常" else "异常"}" + } + + } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index e25cb093a9..9c9681fc45 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -35,6 +35,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.api.devatools.badcase.BadCaseNetListener import com.mogo.eagle.core.function.api.map.deva.IMoGoMapScreenListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84 import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsNetManager @@ -645,6 +646,23 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList * 高精地图截图回调 */ override fun onMapScreen(bitmap: Bitmap) { + //在截图上保存即时信息 + val time = "时间:${millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())}" + val lineId = "路线ID:${CallerAutoPilotStatusListenerManager.getLineId()}" + val state = when(CallerAutoPilotStatusListenerManager.getState()){ + 0->"自驾状态:不可自驾" + 1->"自驾状态:可自驾" + 2->"自驾状态:自驾中" + 7->"自驾状态:平行驾驶中" + else->"自驾状态:未知" + } + val speed = "当前车速:${BadCaseConfig.currentSpeed}" + + + val outBitmap = RecordBitmapUtils.drawTextOnBitmap(bitmap,time,lineId,state,speed, + BadCaseConfig.gpsStatus,BadCaseConfig.tracingStatus,BadCaseConfig.socketStatus + ,BadCaseConfig.newFMInfoMsg,BadCaseConfig.newReportEntity) + //图片保存本地 val currentDay = millis2String(System.currentTimeMillis(), TimeUtils.getMdFormat()) val fileDir: String = Environment.getExternalStorageDirectory().absolutePath + File.separator+ @@ -654,7 +672,12 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList if (!File(fileDir).exists()) { File(fileDir).mkdirs() } - RecordBitmapUtils.bitmap2Path(bitmap,path) + if(outBitmap != null){ + RecordBitmapUtils.bitmap2Path(outBitmap,path) + }else{ + RecordBitmapUtils.bitmap2Path(bitmap,path) + } + //遍历是否有非当日的文件并删除 RecordBitmapUtils.deleteExpiredFile(currentDay) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt index b6ee0d1047..26f9fc5f96 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt @@ -1,6 +1,8 @@ package com.zhjt.mogo_core_function_devatools.badcase.consts import com.mogo.eagle.core.data.deva.badcase.BagInfoEntity +import com.mogo.eagle.core.data.deva.report.ReportEntity +import com.mogo.eagle.core.data.msgbox.FMInfoMsg /** * @author XuXinChao @@ -29,6 +31,23 @@ object BadCaseConfig { //工控机版本 @JvmField var dockerVersion:String ?= null + //当前车速 + @JvmField + var currentSpeed: Int = 0 + //最新的上报消息 + @JvmField + var newReportEntity: ReportEntity ?= null + //最新的FM消息 + @JvmField + var newFMInfoMsg: FMInfoMsg ?= null + //GPS状态 + @JvmField + var gpsStatus: String ?= null + //寻迹算路 + @JvmField + var tracingStatus: String ?= null + //云Socket连接状态 + var socketStatus: String ?= null @JvmField var recordKeyList:ArrayList = ArrayList() //自定义Topic清单列表 diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt index 6f2d1e8fa1..5ee8056017 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt @@ -6,6 +6,10 @@ import android.graphics.Color import android.graphics.Paint import android.os.Environment import android.util.Log +import com.mogo.eagle.core.data.deva.report.ReportEntity +import com.mogo.eagle.core.data.msgbox.FMInfoMsg +import com.mogo.eagle.core.data.msgbox.MsgFmData +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.zhjt.mogo_core_function_devatools.badcase.biz.InitiativeBadCaseWindow import java.io.File import java.io.FileOutputStream @@ -19,7 +23,7 @@ object RecordBitmapUtils { fun bitmap2Path(bitmap: Bitmap, path: String?): String? { try { val os: OutputStream = FileOutputStream(path) - bitmap.compress(Bitmap.CompressFormat.PNG, 100, os) + bitmap.compress(Bitmap.CompressFormat.PNG, 80, os) os.flush() os.close() } catch (e: java.lang.Exception) { @@ -49,14 +53,64 @@ object RecordBitmapUtils { /** * 在指定Bitmap中绘制文字 */ - fun drawTextOnBitmap(bitmap: Bitmap, text: String?, x: Int, y: Int): Bitmap? { + fun drawTextOnBitmap(bitmap: Bitmap, time: String,lineId: String,state: String,currentSpeed: String + ,gpsStatus: String?,tracingStatus: String?,socketStatus: String? + ,fm: FMInfoMsg?,report: ReportEntity? + ): Bitmap? { val mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true) val canvas = Canvas(mutableBitmap) val paint = Paint() paint.color = Color.RED - paint.textSize = 100f + paint.textSize = 50f paint.isAntiAlias = true - canvas.drawText(text!!, x.toFloat(), y.toFloat(), paint) + canvas.drawText(time, 100f, 100f, paint) + canvas.drawText(lineId,100f,200f,paint) + canvas.drawText(state,100f,300f,paint) + canvas.drawText(currentSpeed,100f,400f,paint) + + gpsStatus?.let { + canvas.drawText(it,1000f,100f,paint) + } + tracingStatus?.let { + canvas.drawText(it,1000f,200f,paint) + } + socketStatus?.let { + canvas.drawText(it,1000f,300f,paint) + } + + fm?.let { + canvas.drawText("FM:${MsgFmData.getFmPolicyName(it.policyCode)}",100f,600f,paint) + canvas.drawText("故障策略:${MsgFmData.getFmPolicyName(it.policyCode)}(${it.policyCode})",100f,700f,paint) + //故障原因 + if(it.fmInfoList.isNullOrEmpty()){ + canvas.drawText("故障原因:暂无",100f,800f,paint) + }else{ + val fmFaultReason = StringBuilder() + fmFaultReason.append("故障原因:") + for((index,info) in it.fmInfoList!!.withIndex()){ + fmFaultReason.append(info.faultName) + if(info.faultId.isNotBlank()){ + fmFaultReason.append("(") + fmFaultReason.append(info.faultId) + fmFaultReason.append(")") + } + if(index!=(it.fmInfoList!!.size-1)){ + fmFaultReason.append("/") + } + } + canvas.drawText(fmFaultReason.toString(),100f,800f,paint) + } + } + report?.let { + var resultStr = "上报类型:" + for (result in it.resultList) { + resultStr = + "${resultStr}${CallerAutoPilotControlManager.getReportResultDesc(result)}" + } + canvas.drawText(resultStr,100f,1000f,paint) + canvas.drawText("原因:${it.msg}",100f,1100f,paint) + canvas.drawText("消息来源:${it.src}",100f,1200f,paint) + } return mutableBitmap } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt index 1c4e6a7a75..905b83cff0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt @@ -19,8 +19,6 @@ import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.function.hmi.R -import com.mogo.eagle.core.function.msgbox.MsgBoxConfig -import com.mogo.eagle.core.function.msgbox.MsgFmData import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform import com.mogo.eagle.core.utilcode.util.TimeUtils diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt index 9abf8fd4d3..b35f490ca8 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt @@ -18,7 +18,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.hmi.R -import com.mogo.eagle.core.function.msgbox.MsgFmData import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform import com.mogo.eagle.core.utilcode.util.ResourceUtils.getDrawable diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/MsgFmData.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/MsgFmData.kt similarity index 99% rename from core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/MsgFmData.kt rename to core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/MsgFmData.kt index 064484cc27..32297c55cc 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/MsgFmData.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/MsgFmData.kt @@ -1,6 +1,4 @@ -package com.mogo.eagle.core.function.msgbox - -import com.zhjt.mogo.adas.data.bean.MogoReport +package com.mogo.eagle.core.data.msgbox /** * FM信息对照表 From 9bda271c10cb693a2e3d1c090cc9f6a64c22a5dc Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 6 Dec 2023 16:43:03 +0800 Subject: [PATCH 15/62] [6.2.4] union v2x and init trace file and extends trace of common param --- .../mogo/och/bus/presenter/BusPresenter.java | 4 - .../mogo/och/bus/presenter/BusPresenter.java | 14 +- .../passenger/model/BusPassengerModel.java | 5 - .../sweepercloud/model/SweeperTaskModel.java | 6 - .../sweeper/presenter/SweeperPresenter.java | 11 +- .../com/mogo/och/taxi/model/TaxiModel.java | 4 - .../biz/dispatch/DispatchAutoPilotManager.kt | 6 +- .../eagle/function/biz/v2x/V2XBizTrace.kt | 33 ++- .../function/biz/v2x/v2n/V2XEventManager.kt | 12 +- .../biz/v2x/v2n/alarm/V2XAlarmServer.java | 24 +- .../biz/v2x/v2n/network/V2XRefreshModel.kt | 4 +- .../biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt | 258 ++++++++++++------ .../v2n/scenario/scene/airoad/AiRoadMarker.kt | 4 +- .../scene/road/V2XRoadEventMarker.java | 6 +- .../scene/road/V2XRoadEventScenario.java | 2 +- .../function/biz/v2x/vip/VipCarManager.kt | 4 +- .../autopilot/adapter/MoGoAdasListenerImpl.kt | 4 +- .../status/flow/OverViewImpl.kt | 8 - .../status/flow/rtk/RTKImpl.kt | 5 +- .../trace/TraceManager.kt | 4 - .../function/hmi/ui/utils/HmiActionLog.kt | 27 +- .../hmi/ui/widget/ParallelDriveView.kt | 33 ++- .../hmi/ui/widget/SteeringWheelView.kt | 1 - .../hmi/ui/widget/SystemVersionView.kt | 5 +- .../eagle/core/function/main/MainActivity.kt | 16 +- .../eagle/core/data/deva/chain/ChainCommon.kt | 4 + .../core/data/deva/chain/ChainConstant.kt | 6 +- .../autopilot/IMoGoAutopilotStatusListener.kt | 9 - .../CallerAutoPilotStatusListenerManager.kt | 14 +- .../CallerAutopilotActionsListenerManager.kt | 2 +- .../CallerAutopilotRecordListenerManager.kt | 2 + .../CallerChassisAccStateListenerManager.kt | 1 - .../CallerChassisBrakeStateListenerManager.kt | 1 - ...erParallelDrivingActionsListenerManager.kt | 2 + .../CallerParallelDrivingListenerManager.kt | 3 +- .../call/msgbox/CallerMsgBoxManager.kt | 10 +- .../core/function/call/trace/CallerTrace.kt | 46 ++++ 37 files changed, 361 insertions(+), 239 deletions(-) create mode 100644 core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainCommon.kt create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trace/CallerTrace.kt diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index 657e6857d1..076371db78 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -293,10 +293,6 @@ public class BusPresenter extends Presenter runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus()); } - @Override - public void onAutopilotStatusResponse(@NonNull AutopilotStatusInfo autoPilotStatusInfo) { - } - @Override public void onAutopilotDockerInfo(@NonNull String dockerVersion) { } diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index 057d2948b9..300e9fe8f4 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -11,7 +11,6 @@ import androidx.lifecycle.LifecycleOwner; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.mvp.Presenter; import com.mogo.commons.voice.AIAssist; -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; @@ -34,7 +33,6 @@ import com.mogo.och.common.module.biz.constant.LoginStatusManager; import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager; import com.mogo.och.common.module.voice.VoiceNotice; -import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; @@ -55,7 +53,7 @@ public class BusPresenter extends Presenter private static final String TAG = "BusPresenter"; - private List mStationList = new ArrayList<>(); + private final List mStationList = new ArrayList<>(); private int mCurrentStation = 0; public BusPresenter(BusFragment view) { @@ -164,10 +162,6 @@ public class BusPresenter extends Presenter public void onAutopilotSNRequest() { } - @Override - public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { - } - @Override public void onAutopilotStatusResponse(int state) { switch (state) { @@ -206,7 +200,7 @@ public class BusPresenter extends Presenter @Override public void onCarLocationChanged(MogoLocation location) { if (null != location) { - runOnUIThread(() -> mView.updateSpeedView((float) location.getGnssSpeed())); + runOnUIThread(() -> mView.updateSpeedView(location.getGnssSpeed())); } } @@ -237,9 +231,7 @@ public class BusPresenter extends Presenter * 测试使用 */ public void debugAutoPilotStatus(int status) { - AutopilotStatusInfo info = new AutopilotStatusInfo(); - info.setState(status); - onAutopilotStatusResponse(info); + onAutopilotStatusResponse(status); } @Override diff --git a/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java index b996d96f58..7c0ee5d18f 100644 --- a/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java +++ b/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java @@ -532,11 +532,6 @@ public class BusPassengerModel { private boolean arriveAtEnd = false; //乘客app专用字段 - @Override - public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { - - } - @Override public void onAutopilotSNRequest() { diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/model/SweeperTaskModel.java b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/model/SweeperTaskModel.java index da9eb627c7..0779cb86a9 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/model/SweeperTaskModel.java +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/model/SweeperTaskModel.java @@ -14,7 +14,6 @@ import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.module.status.IMogoStatusChangedListener; import com.mogo.commons.module.status.MogoStatusManager; import com.mogo.commons.module.status.StatusDescriptor; -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener; @@ -612,11 +611,6 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM return MoGoAiCloudClientConfig.getInstance().getSn(); } - @Override - public void onAutopilotStatusResponse(@NonNull AutopilotStatusInfo autoPilotStatusInfo) { - - } - @Override public void onAutopilotArriveAtStation(@Nullable MessagePad.ArrivalNotification arrivalNotification) { diff --git a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java index 1a2bf393d3..451cd91a1a 100644 --- a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java +++ b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java @@ -10,7 +10,6 @@ import androidx.lifecycle.LifecycleOwner; import com.amap.api.maps.model.LatLng; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.mvp.Presenter; -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; @@ -120,10 +119,6 @@ public class SweeperPresenter extends Presenter public void onAutopilotRouteLineId(long lineId) { } - @Override - public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { - } - @Override public void onAutopilotStatusResponse(int state) { SweeperTaskModel.getInstance().setAutopilotState(state); @@ -178,7 +173,7 @@ public class SweeperPresenter extends Presenter @Override public void onCarLocationChanged(MogoLocation location) { if (null != location) { - ThreadUtils.runOnUiThread(() -> mView.updateSpeedView((float) location.getGnssSpeed())); + ThreadUtils.runOnUiThread(() -> mView.updateSpeedView(location.getGnssSpeed())); ThreadUtils.runOnUiThread(() -> mView.setCurrentLocation(location)); } } @@ -211,9 +206,7 @@ public class SweeperPresenter extends Presenter * 测试使用 */ public void debugAutoPilotStatus(int status) { - AutopilotStatusInfo info = new AutopilotStatusInfo(); - info.setState(status); - onAutopilotStatusResponse(info); + onAutopilotStatusResponse(status); } @Override diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 97d23806fc..662e2aceaf 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -1210,10 +1210,6 @@ public class TaxiModel { TaxiTrajectoryManager.getInstance().onAutopilotGuardian(guardianInfo); } - @Override - public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { - } - @Override public void onAutopilotStatusResponse(int state) { if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/dispatch/DispatchAutoPilotManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/dispatch/DispatchAutoPilotManager.kt index c418329316..a0962857bd 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/dispatch/DispatchAutoPilotManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/dispatch/DispatchAutoPilotManager.kt @@ -113,7 +113,7 @@ class DispatchAutoPilotManager private constructor() : } @ChainLog( - linkChainLog = ChainConstant.CHAIN_TYPE_V2X, + linkChainLog = ChainConstant.CHAIN_TYPE_STATUS, linkCode = ChainConstant.CHAIN_SOURCE_CLOUD, nodeAliasCode = ChainConstant.CHAIN_CODE_DISPATCH_RECEIVE, paramIndexes = [0] @@ -140,7 +140,7 @@ class DispatchAutoPilotManager private constructor() : } @ChainLog( - linkChainLog = ChainConstant.CHAIN_TYPE_V2X, + linkChainLog = ChainConstant.CHAIN_TYPE_STATUS, linkCode = ChainConstant.CHAIN_SOURCE_CLOUD, nodeAliasCode = ChainConstant.CHAIN_CODE_DISPATCH_START, paramIndexes = [-1] @@ -348,7 +348,7 @@ class DispatchAutoPilotManager private constructor() : AIAssist.getInstance(mContext).speakTTSVoice("云调度完成,车辆已到达${it.endLocAddress}") } }else{ - V2XBizTrace.onAck(M_BIZ + TAG, mapOf("arriveErrorMsg" to "不在到站距离范围内", "ArriveAtStation" to arrivalNotification, "distanceFromSelf" to distanceFromSelf)) + V2XBizTrace.onAck(M_BIZ + TAG, mapOf("arriveErrorMsg" to "不在到站距离范围内", "ArriveAtStation" to arrivalNotification, "distanceFromSelf" to distanceFromSelf), true) } } diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/V2XBizTrace.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/V2XBizTrace.kt index 5eec21a195..ff285e32a1 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/V2XBizTrace.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/V2XBizTrace.kt @@ -1,24 +1,45 @@ package com.mogo.eagle.function.biz.v2x import android.util.* +import com.mogo.eagle.core.data.deva.chain.ChainCommon import com.mogo.eagle.core.data.deva.chain.ChainConstant -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X -import com.mogo.eagle.core.utilcode.util.* +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.zhjt.service.chain.ChainLog class V2XBizTrace { companion object { + fun onAck(data: Any, data1: Any, param: Boolean = false) { + Log.d("V2X", "tag:$data, msg: $data1") + if (param) { + val cal = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() + val lineId = CallerAutoPilotStatusListenerManager.getLineId() + realParamAction(data, data1, ChainCommon(cal.latitude, cal.longitude, lineId)) + } else { + realAction(data, data1) + } + } + @ChainLog( - linkChainLog = ChainConstant.CHAIN_TYPE_V2X, + linkChainLog = ChainConstant.CHAIN_TYPE_STATUS, linkCode = ChainConstant.CHAIN_SOURCE_CLOUD, nodeAliasCode = ChainConstant.CHAIN_CODE_V2X_MSG, paramIndexes = [0, 1] ) - fun onAck(data: Any, data1: Any) { - Log.d("V2X", "tag:$data, msg: $data1") + private fun realAction(data: Any, data1: Any) { + + } + + @ChainLog( + linkChainLog = ChainConstant.CHAIN_TYPE_STATUS, + linkCode = ChainConstant.CHAIN_SOURCE_CLOUD, + nodeAliasCode = ChainConstant.CHAIN_CODE_V2X_MSG, + paramIndexes = [0, 1, 2] + ) + private fun realParamAction(data: Any, data1: Any, chainCommon: ChainCommon) { + } } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt index a02c9210c8..3d79f2ef56 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt @@ -9,7 +9,7 @@ import com.mogo.eagle.core.data.config.* import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_V2X_MSG import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_SOURCE_ADAS import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_SOURCE_CLOUD -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_V2X +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_STATUS import com.mogo.eagle.core.data.enums.* import com.mogo.eagle.core.data.enums.DataSourceType import com.mogo.eagle.core.data.enums.EventTypeEnumNew.Companion.isRoadEvent @@ -115,7 +115,7 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, V2XScenarioManager.getInstance().handlerMessage(v2XMessageEntity) V2XBizTrace.onAck("巡航处理 handlerMessage v2XMessageEntity", " $v2XMessageEntity") }else{ - V2XBizTrace.onAck("事件未触发,巡航处理", mapOf("roadEvent" to v2XRoadEventEntity, "distance" to distance)) + V2XBizTrace.onAck("事件未触发,巡航处理", mapOf("roadEvent" to v2XRoadEventEntity, "distance" to distance), true) } } } @@ -147,7 +147,7 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, * V2XEvent事件回调 */ @ChainLog( - linkChainLog = CHAIN_TYPE_V2X, + linkChainLog = CHAIN_TYPE_STATUS, linkCode = CHAIN_SOURCE_CLOUD, nodeAliasCode = CHAIN_CODE_V2X_MSG, paramIndexes = [0] @@ -173,18 +173,18 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, if (!AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) || !FunctionBuildConfig.v2nMainSwitch || !FunctionBuildConfig.isNewV2NData) { handleRoadMarkerEvent(event.data.toRoadMarker()) }else{ - V2XBizTrace.onAck("事件未触发,被开关拦截",mapOf("roadEvent" to event, "v2nMainSwitch" to FunctionBuildConfig.v2nMainSwitch,"isNewV2NData" to FunctionBuildConfig.isNewV2NData)) + V2XBizTrace.onAck("事件未触发,被开关拦截",mapOf("roadEvent" to event, "v2nMainSwitch" to FunctionBuildConfig.v2nMainSwitch,"isNewV2NData" to FunctionBuildConfig.isNewV2NData), true) } } else -> { - V2XBizTrace.onAck("事件未触发,不识别的新事件",mapOf("roadEvent" to event)) + V2XBizTrace.onAck("事件未触发,不识别的新事件",mapOf("roadEvent" to event), true) } } } @RequiresApi(Build.VERSION_CODES.N) @ChainLog( - linkChainLog = CHAIN_TYPE_V2X, + linkChainLog = CHAIN_TYPE_STATUS, linkCode = CHAIN_SOURCE_ADAS, nodeAliasCode = CHAIN_CODE_V2X_MSG, paramIndexes = [0] diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/alarm/V2XAlarmServer.java b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/alarm/V2XAlarmServer.java index 0bc5ac915d..6c11973b88 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/alarm/V2XAlarmServer.java +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/alarm/V2XAlarmServer.java @@ -1,10 +1,12 @@ package com.mogo.eagle.function.biz.v2x.v2n.alarm; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BIZ; + import com.mogo.eagle.core.data.enums.EventTypeEnumNew; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.data.map.entity.MarkerLocation; import com.mogo.eagle.core.data.map.entity.V2XRoadEventEntity; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils; import com.mogo.eagle.function.biz.v2x.V2XBizTrace; @@ -39,7 +41,7 @@ public class V2XAlarmServer { CopyOnWriteArrayList v2XRoadEventEntityList, MogoLocation currentLocation) { try { - Logger.d(TAG, "getDriveFrontAlarmEvent --- 1 ---" + currentLocation ); + CallerLogger.d(M_BIZ + TAG, "getDriveFrontAlarmEvent --- 1 ---" + currentLocation ); if (!showedEvents.isEmpty()) { Iterator iterator = showedEvents.iterator(); while (iterator.hasNext()) { @@ -56,18 +58,18 @@ public class V2XAlarmServer { } } } - Logger.d(TAG, "getDriveFrontAlarmEvent --- 2 ---" + currentLocation); + CallerLogger.d(M_BIZ + TAG, "getDriveFrontAlarmEvent --- 2 ---" + currentLocation); if (currentLocation != null && v2XRoadEventEntityList != null) { // 因为集合是按照距离排序后的所以这里检索出来第一个就发出警告 for (V2XRoadEventEntity v2XRoadEventEntity : v2XRoadEventEntityList) { // 0、道路事件必须有朝向,角度>=0; - //Logger.d(TAG, "entity:" + v2XRoadEventEntity.getLocation()); + //CallerLogger.d(M_BIZ + TAG, "entity:" + v2XRoadEventEntity.getLocation()); if (v2XRoadEventEntity.getLocation().getAngle() >= 0) { // 计算车辆距离指定气泡的距离 MarkerLocation eventLocation = v2XRoadEventEntity.getLocation(); // 1、判断是否到达了触发距离,20 ~ 500, double distance = v2XRoadEventEntity.getDistance(); - Logger.d(TAG, "distance:" + distance + ",poiType:" + v2XRoadEventEntity.getPoiType()); + CallerLogger.d(M_BIZ + TAG, "distance:" + distance + ",poiType:" + v2XRoadEventEntity.getPoiType()); if (distance <= 500) { if (EventTypeEnumNew.GHOST_PROBE.getPoiType().equals(v2XRoadEventEntity.getPoiType())) { if (distance > 25) { @@ -78,7 +80,7 @@ public class V2XAlarmServer { double carBearing = currentLocation.getHeading(); double eventBearing = eventLocation.getAngle(); double diffAngle = DrivingDirectionUtils.getAngleDiff(carBearing, eventBearing); - Logger.d(TAG, "car_bearing:" + carBearing + ",eventBearing:" + eventBearing + ",diffAngle:" + diffAngle); + CallerLogger.d(M_BIZ + TAG, "car_bearing:" + carBearing + ",eventBearing:" + eventBearing + ",diffAngle:" + diffAngle); if (diffAngle <= 30) { // 3、计算当前车辆行驶方向与事件位置之间夹角《20度,保证道路事件在车辆前方 double eventAngle = DrivingDirectionUtils.getDegreeOfCar2Poi( @@ -89,31 +91,31 @@ public class V2XAlarmServer { (int) currentLocation.getHeading() ); - Logger.d(TAG, "eventAngle:" + eventAngle); + CallerLogger.d(M_BIZ + TAG, "eventAngle:" + eventAngle); if (0 <= eventAngle && eventAngle <= 25) { if (showedEvents.contains(v2XRoadEventEntity)) { return null; } - Logger.d(TAG, "showed---"); + CallerLogger.d(M_BIZ + TAG, "showed---"); showedEvents.add(v2XRoadEventEntity); return v2XRoadEventEntity; } }else{ HashMap map = new HashMap(); map.put("diffAngle",diffAngle); - V2XBizTrace.Companion.onAck("事件未触发,未达到触发角度",map); + V2XBizTrace.Companion.onAck("事件未触发,未达到触发角度",map,true); } }else{ HashMap map = new HashMap(); map.put("distance",distance); - V2XBizTrace.Companion.onAck("事件未触发,未达到触发距离",map); + V2XBizTrace.Companion.onAck("事件未触发,未达到触发距离",map,true); } } } } } catch (Exception e) { e.printStackTrace(); - Logger.w(TAG, "error: " + e.getMessage()); + CallerLogger.w(M_BIZ + TAG, "error: " + e.getMessage()); } return null; } diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/network/V2XRefreshModel.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/network/V2XRefreshModel.kt index cbf3207f39..f722e49601 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/network/V2XRefreshModel.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/network/V2XRefreshModel.kt @@ -18,6 +18,8 @@ import com.mogo.eagle.core.network.MoGoRetrofitFactory 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.DeviceUtils +import com.mogo.eagle.function.biz.v2x.V2XBizTrace +import com.mogo.eagle.function.biz.v2x.v2n.V2XPoiLoader import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers @@ -102,7 +104,7 @@ internal class V2XRefreshModel { CallerLogger.d(SceneConstant.M_V2X + TAG, "请求成功,size为:${it.result?.v2XEventList?.size}") return@map it.result?.v2XEventList } else { - CallerLogger.d(SceneConstant.M_V2X + TAG, "请求失败,code为:${it.code}") + V2XBizTrace.onAck("${SceneConstant.M_V2X}$TAG", mapOf("v2xEventsSummaryError" to it.code), true) return@map ArrayList() } } diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt index 3ba30d6dfe..f06b170ccf 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt @@ -1,26 +1,35 @@ package com.mogo.eagle.function.biz.v2x.v2n.pnc -import android.os.* -import androidx.core.util.* -import com.mogo.eagle.core.data.config.* -import com.mogo.eagle.core.data.enums.* +import android.os.Handler +import android.os.HandlerThread +import android.os.Message +import androidx.core.util.Pair +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.data.enums.CommunicationType import com.mogo.eagle.core.data.enums.DataSourceType +import com.mogo.eagle.core.data.enums.EventTypeEnumNew import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_TOP -import com.mogo.eagle.core.data.map.entity.* -import com.mogo.eagle.core.data.msgbox.* +import com.mogo.eagle.core.data.map.entity.MarkerExploreWay +import com.mogo.eagle.core.data.map.entity.MarkerLocation +import com.mogo.eagle.core.data.map.entity.V2XRoadEventEntity +import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgBoxType.V2X +import com.mogo.eagle.core.data.msgbox.V2XMsg import com.mogo.eagle.core.function.angle.scenes.Default import com.mogo.eagle.core.function.angle.scenes.RoadEvent -import com.mogo.eagle.core.function.api.autopilot.* -import com.mogo.eagle.core.function.api.hmi.warning.* -import com.mogo.eagle.core.function.call.autopilot.* -import com.mogo.eagle.core.function.call.hmi.* -import com.mogo.eagle.core.function.call.map.* +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener +import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager +import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager.saveMsgBox -import com.mogo.eagle.core.utilcode.mogo.* -import com.mogo.eagle.core.utilcode.util.* +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.utilcode.util.CoordinateTransform +import com.mogo.eagle.core.utilcode.util.CoordinateUtils +import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils import com.mogo.eagle.function.biz.v2x.V2XBizTrace -import com.mogo.eagle.function.biz.v2x.v2n.scenario.scene.airoad.* +import com.mogo.eagle.function.biz.v2x.v2n.scenario.scene.airoad.AiRoadMarker import com.mogo.eagle.function.biz.v2x.v2n.scenario.scene.airoad.AiRoadMarker.Marker import com.mogo.eagle.function.biz.v2x.v2n.utils.V2XEventAnalyticsManager import mogo.telematics.pad.MessagePad.Header @@ -36,22 +45,28 @@ internal object V2NIdentifyDrawer { private const val TAG = "V2NIdentifyDataSubscriber" private const val MSG_WHAT_DRAW_SHIGONE = 0x1010 // 道路施工 - private const val MSG_WHAT_DRAW_SHIGU = 0x1011 // 交通事故 - private const val MSG_WHAT_DRAW_YONGDU = 0x1012 // 交通拥堵 + private const val MSG_WHAT_DRAW_SHIGU = 0x1011 // 交通事故 + private const val MSG_WHAT_DRAW_YONGDU = 0x1012 // 交通拥堵 private val callback = Handler.Callback { msg -> if (msg.what == MSG_WHAT_DRAW_SHIGONE || msg.what == MSG_WHAT_DRAW_SHIGU) { val events = msg.obj as? List<*> if (events == null || events.isEmpty()) { - V2XBizTrace.onAck(TAG, mapOf("shiGong-shiGu" to "")) + V2XBizTrace.onAck(TAG, mapOf("shiGong-shiGu" to ""), true) return@Callback true } val car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84() val filtered = events.filterIsInstance(TrackedObject::class.java).filter { itx -> - DrivingDirectionUtils.getDegreeOfCar2Poi(car.longitude, car.latitude, itx.longitude, itx.latitude, car.heading.toInt()) < 90 + DrivingDirectionUtils.getDegreeOfCar2Poi( + car.longitude, + car.latitude, + itx.longitude, + itx.latitude, + car.heading.toInt() + ) < 90 } if (filtered.isEmpty()) { - V2XBizTrace.onAck(TAG, mapOf("shiGong-shiGu-filter" to "")) + V2XBizTrace.onAck(TAG, mapOf("shiGong-shiGu-filter" to ""), true) return@Callback true } filtered.forEach { itx -> @@ -60,68 +75,121 @@ internal object V2NIdentifyDrawer { AiRoadMarker().apply { val poiType = getPoiType(itx.type).poiType val polygon = itx.polygonList.map { Pair.create(it.longitude, it.latitude) } - marker(Marker(id, poiType, itx.latitude,itx.longitude, itx.heading, polygon, null, + marker(Marker(id, + poiType, + itx.latitude, + itx.longitude, + itx.heading, + polygon, + null, V2XRoadEventEntity().also { e -> e.poiType = poiType - e.location = MarkerLocation().also { l -> - val p = CoordinateTransform.WGS84ToGCJ02(itx.longitude, itx.latitude) - l.lon = p[0] - l.lat = p[1] - l.angle = itx.heading - } - e.noveltyInfo = MarkerExploreWay().also { - it.poiType = poiType - it.location = e.location - it.polygon = polygon - } - }), true, isDrawRoadLine(poiType)) + e.location = MarkerLocation().also { l -> + val p = CoordinateTransform.WGS84ToGCJ02( + itx.longitude, + itx.latitude + ) + l.lon = p[0] + l.lat = p[1] + l.angle = itx.heading + } + e.noveltyInfo = MarkerExploreWay().also { + it.poiType = poiType + it.location = e.location + it.polygon = polygon + } + }), true, isDrawRoadLine(poiType) + ) - val distance = CoordinateUtils.calculateLineDistance(itx.longitude, itx.latitude, car.longitude, car.latitude) + val distance = CoordinateUtils.calculateLineDistance( + itx.longitude, + itx.latitude, + car.longitude, + car.latitude + ) val alertContent = getAlertContent(poiType, distance.toDouble()) val ttsContent = getTtsContent(poiType, distance.toDouble()) - V2XBizTrace.onAck(TAG,"绘制poi事件:$poiType") - saveMsgBox(MsgBoxBean(V2X, V2XMsg(poiType, alertContent, ttsContent,CommunicationType.V2N.name))) - CallerHmiManager.warningV2X(poiType, alertContent, ttsContent, object : IMoGoWarningStatusListener { - override fun onShow() { - super.onShow() - CallerVisualAngleManager.changeAngle(RoadEvent(itx.longitude, itx.latitude, itx.angle)) - } + V2XBizTrace.onAck(TAG, "绘制poi事件:$poiType") + saveMsgBox( + MsgBoxBean( + V2X, + V2XMsg( + poiType, + alertContent, + ttsContent, + CommunicationType.V2N.name + ) + ) + ) + CallerHmiManager.warningV2X( + poiType, + alertContent, + ttsContent, + object : IMoGoWarningStatusListener { + override fun onShow() { + super.onShow() + CallerVisualAngleManager.changeAngle( + RoadEvent( + itx.longitude, + itx.latitude, + itx.angle + ) + ) + } - override fun onDismiss() { - super.onDismiss() - CallerVisualAngleManager.changeAngle(Default()) - } - }, ALERT_WARNING_TOP, 10000, false) + override fun onDismiss() { + super.onDismiss() + CallerVisualAngleManager.changeAngle(Default()) + } + }, + ALERT_WARNING_TOP, + 10000, + false + ) //消息埋点 - V2XEventAnalyticsManager.triggerV2XEvent(poiType, alertContent, ttsContent, - DataSourceType.AICLOUD,CommunicationType.V2N) + V2XEventAnalyticsManager.triggerV2XEvent( + poiType, alertContent, ttsContent, + DataSourceType.AICLOUD, CommunicationType.V2N + ) } }.receive() } } else if (msg.what == MSG_WHAT_DRAW_YONGDU) { val events = msg.obj as? List<*> if (events == null || events.isEmpty()) { - V2XBizTrace.onAck(TAG, mapOf("yongDu" to "")) + V2XBizTrace.onAck(TAG, mapOf("yongDu" to ""), true) return@Callback true } val car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84() val filtered = events.filterIsInstance(MogoV2X.RTEData_PB::class.java).filter { itx -> - val eventLon = itx.eventPos?.offsetLL?.positionLatLon?.lon?.let { it * 1.0 / 10_000_000 } ?: 0.0 - val eventLat = itx.eventPos?.offsetLL?.positionLatLon?.lat?.let { it * 1.0 / 10_000_000 } ?: 0.0 - DrivingDirectionUtils.getDegreeOfCar2Poi(car.longitude, car.latitude, eventLon, eventLat, car.heading.toInt()) < 90 + val eventLon = + itx.eventPos?.offsetLL?.positionLatLon?.lon?.let { it * 1.0 / 10_000_000 } + ?: 0.0 + val eventLat = + itx.eventPos?.offsetLL?.positionLatLon?.lat?.let { it * 1.0 / 10_000_000 } + ?: 0.0 + DrivingDirectionUtils.getDegreeOfCar2Poi( + car.longitude, + car.latitude, + eventLon, + eventLat, + car.heading.toInt() + ) < 90 } if (filtered.isEmpty()) { - V2XBizTrace.onAck(TAG, mapOf("yongDu-filter" to "")) + V2XBizTrace.onAck(TAG, mapOf("yongDu-filter" to ""), true) return@Callback true } filtered.forEach { itx -> val id = itx.rteId.toString() - val lon = itx.eventPos?.offsetLL?.positionLatLon?.lon?.let { it * 1.0 / 10_000_000 } ?: 0.0 - val lat = itx.eventPos?.offsetLL?.positionLatLon?.lat?.let { it * 1.0 / 10_000_000 } ?: 0.0 + val lon = itx.eventPos?.offsetLL?.positionLatLon?.lon?.let { it * 1.0 / 10_000_000 } + ?: 0.0 + val lat = itx.eventPos?.offsetLL?.positionLatLon?.lat?.let { it * 1.0 / 10_000_000 } + ?: 0.0 AiRoadMarker.aiMakers.getOrPut(id) { AiRoadMarker().apply { val poiType = getPoiType(itx.eventType).poiType - marker(Marker(id, poiType, lat, lon, car.heading, null, null, + marker(Marker(id, poiType, lat, lon, car.heading, null, null, V2XRoadEventEntity().also { e -> e.poiType = poiType e.location = MarkerLocation().also { l -> @@ -135,27 +203,59 @@ internal object V2NIdentifyDrawer { it.location = e.location it.polygon = emptyList() } - }), true, isDrawRoadLine(poiType)) + }), true, isDrawRoadLine(poiType) + ) - val distance = CoordinateUtils.calculateLineDistance(lon, lat, car.longitude, car.latitude) + val distance = CoordinateUtils.calculateLineDistance( + lon, + lat, + car.longitude, + car.latitude + ) val alertContent = getAlertContent(poiType, distance.toDouble()) val ttsContent = getTtsContent(poiType, distance.toDouble()) - V2XBizTrace.onAck(TAG,"绘制poi事件:$poiType") - saveMsgBox(MsgBoxBean(V2X, V2XMsg(poiType, alertContent, ttsContent,CommunicationType.V2N.name))) - CallerHmiManager.warningV2X(poiType, alertContent, ttsContent, object : IMoGoWarningStatusListener { - override fun onShow() { - super.onShow() - CallerVisualAngleManager.changeAngle(RoadEvent(lon, lat, car.heading)) - } + V2XBizTrace.onAck(TAG, "绘制poi事件:$poiType") + saveMsgBox( + MsgBoxBean( + V2X, + V2XMsg( + poiType, + alertContent, + ttsContent, + CommunicationType.V2N.name + ) + ) + ) + CallerHmiManager.warningV2X( + poiType, + alertContent, + ttsContent, + object : IMoGoWarningStatusListener { + override fun onShow() { + super.onShow() + CallerVisualAngleManager.changeAngle( + RoadEvent( + lon, + lat, + car.heading + ) + ) + } - override fun onDismiss() { - super.onDismiss() - CallerVisualAngleManager.changeAngle(Default()) - } - }, ALERT_WARNING_TOP, 10000, false) + override fun onDismiss() { + super.onDismiss() + CallerVisualAngleManager.changeAngle(Default()) + } + }, + ALERT_WARNING_TOP, + 10000, + false + ) //消息埋点 - V2XEventAnalyticsManager.triggerV2XEvent(poiType, alertContent, ttsContent, - DataSourceType.AICLOUD,CommunicationType.V2N) + V2XEventAnalyticsManager.triggerV2XEvent( + poiType, alertContent, ttsContent, + DataSourceType.AICLOUD, CommunicationType.V2N + ) } }.receive() } @@ -181,7 +281,7 @@ internal object V2NIdentifyDrawer { } private fun getAlertContent(poiType: String, distance: Double): String { - return when(poiType) { + return when (poiType) { EventTypeEnumNew.TYPE_SOCKET_ROAD_SHIGONG.poiType -> { "前方${distance.toInt()}米道路施工" } @@ -201,7 +301,10 @@ internal object V2NIdentifyDrawer { return EventTypeEnumNew.TYPE_SOCKET_ROAD_SHIGONG.poiType == poiType } - private fun getPoiType(type: Int): EventTypeEnumNew = if (type == 501 || type == 502) EventTypeEnumNew.TYPE_SOCKET_ROAD_SHIGONG else if (type == 13) EventTypeEnumNew.TYPE_SOCKET_ROAD_SHIGU else if (type == 102) EventTypeEnumNew.TYPE_SOCKET_ROAD_CONGESTION else throw AssertionError("error!!!") + private fun getPoiType(type: Int): EventTypeEnumNew = + if (type == 501 || type == 502) EventTypeEnumNew.TYPE_SOCKET_ROAD_SHIGONG else if (type == 13) EventTypeEnumNew.TYPE_SOCKET_ROAD_SHIGU else if (type == 102) EventTypeEnumNew.TYPE_SOCKET_ROAD_CONGESTION else throw AssertionError( + "error!!!" + ) private val handler by lazy { val thread = HandlerThread("v2n_identify_drawer") @@ -225,12 +328,7 @@ internal object V2NIdentifyDrawer { override fun onAutopilotV2nCongestionEvent(header: Header, rsi: RSI_PB) { super.onAutopilotV2nCongestionEvent(header, rsi) - try { - V2XBizTrace.onAck("onAutopilotV2nCongestionEvent", rsi) - } catch (t: Throwable) { - t.printStackTrace() - } - + V2XBizTrace.onAck("onAutopilotV2nCongestionEvent", rsi) rsi.rsiFrame?.rtes?.rteDataList?.filter { it.eventType == 102 }?.takeIf { @@ -242,7 +340,7 @@ internal object V2NIdentifyDrawer { } private fun drawShiGong(events: List) { - if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) && FunctionBuildConfig.v2nMainSwitch && FunctionBuildConfig.isNewV2NData) { + if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) && FunctionBuildConfig.v2nMainSwitch && FunctionBuildConfig.isNewV2NData) { handler.removeMessages(MSG_WHAT_DRAW_SHIGONE) handler.sendMessage(Message.obtain(handler, MSG_WHAT_DRAW_SHIGONE, events)) } diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/airoad/AiRoadMarker.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/airoad/AiRoadMarker.kt index 82a986e606..a421d6ea73 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/airoad/AiRoadMarker.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/airoad/AiRoadMarker.kt @@ -136,11 +136,11 @@ class AiRoadMarker { return@post } if (l1 == null || l2 == null) { - V2XBizTrace.onAck("$TAG -marker-3-line null return ----", "") + V2XBizTrace.onAck("$TAG -marker-3-line null return ----", "", true) return@post } if (l1.points.isEmpty() || l2.points.isEmpty()) { - V2XBizTrace.onAck("$TAG -marker-3-line points null return ----", "") + V2XBizTrace.onAck("$TAG -marker-3-line points null return ----", "", true) return@post } V2XBizTrace.onAck("$TAG -marker-4-l2:", l2) diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/road/V2XRoadEventMarker.java b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/road/V2XRoadEventMarker.java index 5040ac2840..9e60f5fa38 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/road/V2XRoadEventMarker.java +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/road/V2XRoadEventMarker.java @@ -36,10 +36,10 @@ public class V2XRoadEventMarker implements IV2XMarker { IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager(); if (overlayManager != null) { if (entity != null) { - V2XBizTrace.Companion.onAck("V2XRoadEventMarker -> poiType : ", entity.getPoiType()); + V2XBizTrace.Companion.onAck("V2XRoadEventMarker -> poiType : ", entity.getPoiType(), false); if (isAiRoadEvent(entity.getPoiType())) { MarkerExploreWay noveltyInfo = entity.getNoveltyInfo(); - V2XBizTrace.Companion.onAck("V2XRoadEventMarker -> noveltyInfo : ",noveltyInfo.toString()); + V2XBizTrace.Companion.onAck("V2XRoadEventMarker -> noveltyInfo : ",noveltyInfo.toString(), false); Pair gpsLocation = noveltyInfo.getGpsLocation(); List> polygons = noveltyInfo.getPolygon(); if (gpsLocation != null && polygons != null) { @@ -57,7 +57,7 @@ public class V2XRoadEventMarker implements IV2XMarker { .set3DMode(true) .icon3DRes(EventTypeEnumNew.getMarker3DRes(entity.getPoiType())).build(),DEFAULT); if (point != null) { - V2XBizTrace.Companion.onAck("V2XRoadEventMarker -> --- add Marker type: ", entity.getPoiType()); + V2XBizTrace.Companion.onAck("V2XRoadEventMarker -> --- add Marker type: ", entity.getPoiType(), false); ArrayList markers = new ArrayList<>(); markers.add(point); String id = entity.getLocation().getLon() + "_" + entity.getLocation().getLat(); diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/road/V2XRoadEventScenario.java b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/road/V2XRoadEventScenario.java index fbc3095148..76074b309b 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/road/V2XRoadEventScenario.java +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/road/V2XRoadEventScenario.java @@ -48,7 +48,7 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp @Override public void init(V2XMessageEntity v2XMessageEntity) { try { - V2XBizTrace.Companion.onAck("v2XMessageEntity",v2XMessageEntity); + V2XBizTrace.Companion.onAck("v2XMessageEntity",v2XMessageEntity,false); V2XRoadEventEntity v2XRoadEventEntity = v2XMessageEntity.getContent(); if (v2XRoadEventEntity != null) { if (!isSameScenario(v2XMessageEntity)) { diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/vip/VipCarManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/vip/VipCarManager.kt index dce13bd7be..08b55b7ed7 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/vip/VipCarManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/vip/VipCarManager.kt @@ -123,7 +123,7 @@ class VipCarManager : IMogoOnMessageListener, IMoGoTrafficLightListe } if (trafficLightResult.currentRoadTrafficLight() == null) { - V2XBizTrace.onAck("$M_V2X$TAG", "vip获取到灯态,但没找到对应车道数据 trafficLight:$$trafficLightResult") + V2XBizTrace.onAck("$M_V2X$TAG", "vip获取到灯态,但没找到对应车道数据 trafficLight:$$trafficLightResult", true) result = null return } @@ -258,7 +258,7 @@ class VipCarManager : IMogoOnMessageListener, IMoGoTrafficLightListe ",crossId:${result?.crossId}" + ",bearing:$bearing" + ",controlTime:$controlTime" - ) + ,true) ToastUtils.showLong("服务异常,请稍后重试") }) } diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt index ab77257189..5d4ae62052 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -828,7 +828,7 @@ class MoGoAdasListenerImpl : OnAdasListener { * @param rsi 数据 */ @ChainLog( - linkChainLog = ChainConstant.CHAIN_TYPE_V2X, + linkChainLog = ChainConstant.CHAIN_TYPE_STATUS, linkCode = ChainConstant.CHAIN_SOURCE_CLOUD, nodeAliasCode = ChainConstant.CHAIN_CODE_V2X_MSG, paramIndexes = [0, 1] @@ -848,7 +848,7 @@ class MoGoAdasListenerImpl : OnAdasListener { * @param parkingViolation 违停 ---包含 静态障碍车 */ @ChainLog( - linkChainLog = ChainConstant.CHAIN_TYPE_V2X, + linkChainLog = ChainConstant.CHAIN_TYPE_STATUS, linkCode = ChainConstant.CHAIN_SOURCE_CLOUD, nodeAliasCode = ChainConstant.CHAIN_CODE_V2X_MSG, paramIndexes = [0] diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/OverViewImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/OverViewImpl.kt index a9af35d89d..2d2326d988 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/OverViewImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/OverViewImpl.kt @@ -253,14 +253,6 @@ internal class OverViewImpl(ctx: Context) : IFlow(ctx), } } - /** - * 工控机连接状态 - */ - override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) { - super.onAutopilotIpcConnectStatusChanged(status, reason) - } - - override fun onDestroy() { super.onDestroy() // CallerDevaToolsListenerManager.removeListener(TAG) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/rtk/RTKImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/rtk/RTKImpl.kt index 93d36a30de..1dfae49417 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/rtk/RTKImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/rtk/RTKImpl.kt @@ -1,7 +1,6 @@ package com.zhjt.mogo_core_function_devatools.status.flow.rtk import android.content.Context -import android.util.Log import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Listener @@ -66,7 +65,7 @@ internal class RTKImpl(ctx: Context): IFlow(ctx), IMoGoAutopilotStatu check?.takeIf { it.isActive }?.cancel() isOldVersion.set(false) val info = status.healthInfoList?.find { "localization".equals(it.name, true) } - Log.d(TAG, "info: $info") + CallerLogger.d("$M_DEVA$TAG", "info: $info") if (info != null) { healthInfo.set(info) send(RTKStatus(getDesc(), getCode())) @@ -77,7 +76,7 @@ internal class RTKImpl(ctx: Context): IFlow(ctx), IMoGoAutopilotStatu check?.takeIf { it.isActive }?.cancel() isOldVersion.set(false) val info = statusInf.healthInfoList?.find { "localization".equals(it.name, true) } - Log.d(TAG, "info: $info") + CallerLogger.d("$M_DEVA$TAG", "info: $info") if (info != null) { healthInfo.set(info) send(RTKStatus(getDesc(), getCode())) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt index 94361fcdef..00d5559ec1 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt @@ -74,8 +74,6 @@ class TraceManager : IMoGoCloudListener, IMoGoAutopilotCarConfigListener { FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_TRAFFIC_LIGHT) fwBuildMap[ChainConstant.CHAIN_TYPE_ANR_LEAK] = FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_RECORD_ANR) - fwBuildMap[ChainConstant.CHAIN_TYPE_V2X] = - FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_V2X) fwBuildMap[ChainConstant.CHAIN_TYPE_WEAK_NETWORK] = FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_RECORD_WEAK_NETWORK) fwBuildMap[ChainConstant.CHAIN_TYPE_OCH] = @@ -98,8 +96,6 @@ class TraceManager : IMoGoCloudListener, IMoGoAutopilotCarConfigListener { ChainLogParam(true, "红绿灯Union数据") traceInfoCache[ChainConstant.CHAIN_TYPE_ANR_LEAK] = ChainLogParam(true, "ANR Record") - traceInfoCache[ChainConstant.CHAIN_TYPE_V2X] = - ChainLogParam(true, "V2X(V2N/V2I)") traceInfoCache[ChainConstant.CHAIN_TYPE_WEAK_NETWORK] = ChainLogParam(true, "WeakNetWork Record") diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/HmiActionLog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/HmiActionLog.kt index 6e0d8be103..de47dd80e6 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/HmiActionLog.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/HmiActionLog.kt @@ -1,6 +1,9 @@ package com.mogo.eagle.core.function.hmi.ui.utils +import com.mogo.eagle.core.data.deva.chain.ChainCommon import com.mogo.eagle.core.data.deva.chain.ChainConstant +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.zhjt.service.chain.ChainLog @@ -9,14 +12,34 @@ class HmiActionLog { companion object { + fun hmiAction(data: Any, data1: Any, param: Boolean = false) { + CallerLogger.d(M_HMI + data.toString(), data1) + if (param) { + val cal = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() + val lineId = CallerAutoPilotStatusListenerManager.getLineId() + realParamAction(data, data1, ChainCommon(cal.latitude, cal.longitude, lineId)) + } else { + realAction(data, data1) + } + } + @ChainLog( linkChainLog = ChainConstant.CHAIN_TYPE_STATUS, linkCode = ChainConstant.CHAIN_SOURCE_HMI, nodeAliasCode = ChainConstant.CHAIN_CODE_HMI_ACTIONS, paramIndexes = [0, 1] ) - fun hmiAction(data: Any, data1: Any) { - CallerLogger.d(M_HMI + data.toString(), data1) + private fun realAction(data: Any, data1: Any) { + + } + + @ChainLog( + linkChainLog = ChainConstant.CHAIN_TYPE_STATUS, + linkCode = ChainConstant.CHAIN_SOURCE_HMI, + nodeAliasCode = ChainConstant.CHAIN_CODE_HMI_ACTIONS, + paramIndexes = [0, 1, 2] + ) + private fun realParamAction(data: Any, data1: Any, chainCommon: ChainCommon) { } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt index 5b8d49477c..f835356bef 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt @@ -6,7 +6,6 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color import android.util.AttributeSet -import android.util.Log import android.view.LayoutInflater import android.view.animation.LinearInterpolator import android.widget.ImageView @@ -22,6 +21,9 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerParallelDrivingActionsListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerParallelDrivingListenerManager import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.zhjt.mogo.adas.data.bean.UnableLaunchReason @@ -74,9 +76,9 @@ class ParallelDriveView @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() initView() - CallerAutoPilotStatusListenerManager.addListener(TAG, this) - CallerParallelDrivingListenerManager.addListener(TAG, this) - CallerParallelDrivingActionsListenerManager.addListener(TAG, this) + CallerAutoPilotStatusListenerManager.addListener("$M_HMI$TAG", this) + CallerParallelDrivingListenerManager.addListener("$M_HMI$TAG", this) + CallerParallelDrivingActionsListenerManager.addListener("$M_HMI$TAG", this) } private fun initView() { @@ -88,7 +90,7 @@ class ParallelDriveView @JvmOverloads constructor( when (state) { 0 -> { state = APP_REQUESTING - Log.d(TAG, "Click-开始请求平行驾驶") + HmiActionLog.hmiAction(TAG,"Click-开始请求平行驾驶") updateUI(APP_REQUESTING) reqParaDrive() listener?.onReqClick() @@ -96,18 +98,18 @@ class ParallelDriveView @JvmOverloads constructor( APP_REQUESTING -> { cancelParaDrive() - Log.d(TAG, "Click-请求已取消") + HmiActionLog.hmiAction(TAG,"Click-请求已取消") ToastUtils.showShort("请求已取消!") checkAvailableAndUpdateUI() } AD_REQUESTING -> { - Log.d(TAG, "Click-自动驾驶正在请求平行驾驶") + HmiActionLog.hmiAction(TAG,"Click-自动驾驶正在请求平行驾驶") ToastUtils.showShort("自动驾驶正在请求平行驾驶") } UNAVAILABLE -> { - Log.d(TAG, "Click-请P档驻车并松开油门刹车后请求") + HmiActionLog.hmiAction(TAG,"Click-请P档驻车并松开油门刹车后请求") ToastUtils.showShort("请P档驻车并松开油门刹车后请求") } } @@ -124,7 +126,6 @@ class ParallelDriveView @JvmOverloads constructor( when (state) { 7 -> { isAutoDriving = false - Log.d(TAG, "onAutopilotStatusResponse-7") ThreadUtils.runOnUiThread({ this.state = PARALLEL_DRIVING updateUI(PARALLEL_DRIVING) @@ -133,7 +134,6 @@ class ParallelDriveView @JvmOverloads constructor( 2 -> { isAutoDriving = true - Log.d(TAG, "onAutopilotStatusResponse-2") if (this.autopilotState == 7) { ThreadUtils.runOnUiThread({ checkAvailableAndUpdateUI() @@ -143,7 +143,6 @@ class ParallelDriveView @JvmOverloads constructor( else -> { isAutoDriving = false - Log.d(TAG, "onAutopilotStatusResponse-else") if (this.autopilotState == 7) { ThreadUtils.runOnUiThread({ checkAvailableAndUpdateUI() @@ -158,14 +157,14 @@ class ParallelDriveView @JvmOverloads constructor( isParallelDrivingAbility: Boolean ) { if (!isParallelDrivingAbility) { - Log.d(TAG, "onParallelDrivingAbility-UNAVAILABLE") + CallerLogger.d("$M_HMI$TAG", "onParallelDrivingAbility-UNAVAILABLE") ThreadUtils.runOnUiThread({ if (state == PARALLEL_DRIVING) return@runOnUiThread state = UNAVAILABLE updateUI(UNAVAILABLE) }, ThreadUtils.MODE.QUEUE) } else { - Log.d(TAG, "onParallelDrivingAbility-AVAILABLE") + CallerLogger.d("$M_HMI$TAG", "onParallelDrivingAbility-AVAILABLE") ThreadUtils.runOnUiThread({ if (state == PARALLEL_DRIVING) return@runOnUiThread state = 0 @@ -176,8 +175,8 @@ class ParallelDriveView @JvmOverloads constructor( override fun onParallelDrivingResp(parallelTaskProcessNotice: ParallelTaskProcessNoticeOuterClass.ParallelTaskProcessNotice?) { parallelTaskProcessNotice?.let { + CallerLogger.d("$M_HMI$TAG", "onParallelDrivingResp-code:${it.code}") ThreadUtils.runOnUiThread({ - Log.d(TAG, "onParallelDrivingResp-code:${it.code}") when (it.code) { "START_SYNC" -> {// 同步中 state = SYNCHRONIZING @@ -452,9 +451,9 @@ class ParallelDriveView @JvmOverloads constructor( override fun onDetachedFromWindow() { super.onDetachedFromWindow() - CallerAutoPilotStatusListenerManager.removeListener(TAG) - CallerParallelDrivingListenerManager.removeListener(TAG) - CallerParallelDrivingActionsListenerManager.removeListener(TAG) + CallerAutoPilotStatusListenerManager.removeListener("$M_HMI$TAG") + CallerParallelDrivingListenerManager.removeListener("$M_HMI$TAG") + CallerParallelDrivingActionsListenerManager.removeListener("$M_HMI$TAG") } interface ClickEventListener { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.kt index f8f11438f0..1d48809d87 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.kt @@ -96,7 +96,6 @@ class SteeringWheelView : ConstraintLayout, IMoGoChassisSteeringStateListener, object : IMoGoAutopilotStatusListener { override fun onAutopilotStatusResponse(state: Int) { ThreadUtils.runOnUiThread { - d("$M_BUS_P$TAG", "state = %s", state) if (autopilotIV != null) { if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { if (!isBus(FunctionBuildConfig.appIdentityMode)) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt index c74b35b6a2..16261a2922 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt @@ -136,10 +136,7 @@ class SystemVersionView @JvmOverloads constructor( } ivHDCache.setOnClickListener { - hmiAction( - "$M_HMI$TAG", - "HD map view click , isHDCached:$isHDCached , lon:${getChassisLocationWGS84().longitude} , lat:${getChassisLocationWGS84().latitude}" - ) + hmiAction("$M_HMI$TAG", mapOf("isHDCached" to isHDCached),true) if (isHDCached) {// 已缓存 ToastUtils.showShort(resources.getString(R.string.offline_had_downloaded)) } else {// 未缓存 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.kt index f5ca6be125..69a48cf285 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.kt @@ -41,7 +41,6 @@ import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView import com.mogo.eagle.core.function.main.modules.MogoModulesManager import com.mogo.eagle.core.function.main.windowview.FloatingViewHandler import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant @@ -59,10 +58,6 @@ import java.io.File /** - * @author congtaowang - * @since 2019-12-23 - * - * * 描述:加载各个模块 */ open class MainActivity : MvpActivity(), MainView, @@ -76,7 +71,8 @@ open class MainActivity : MvpActivity(), MainView, private var isFirst = false private var mConnAdapter: ConnInfoAdapter? = null private val dataList: List = ArrayList() - private var mLastStatus = 0x00 +// private var mLastStatus = 0x00 + private var mLastStatus = 0x01 private var isFloatingLayerHidden = false override fun getLayoutId(): Int { @@ -327,11 +323,11 @@ open class MainActivity : MvpActivity(), MainView, MogoStatusManager.getInstance().setMainPageIsBackgroundStatus(TAG, true) } - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { + override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) { + super.onAutopilotIpcConnectStatusChanged(status, reason) UiThreadHandler.post { - val status = autoPilotStatusInfo.ipcConnStatus - if (mLastStatus != status) { - val statusInfo = autoPilotStatusInfo.clone() + if(mLastStatus != status){ + val statusInfo = CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().clone() rvConnectInfo.post { updateConnectInfoView(statusInfo) } mLastStatus = status } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainCommon.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainCommon.kt new file mode 100644 index 0000000000..91618889c5 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainCommon.kt @@ -0,0 +1,4 @@ +package com.mogo.eagle.core.data.deva.chain + +data class ChainCommon(val lat:Double, val lon:Double, val lineId:Long) { +} \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt index 56555c05f0..d227008626 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt @@ -22,14 +22,13 @@ class ChainConstant { const val CHAIN_SOURCE_OCH = 13 //业务类型与下方文件名一一对应 - const val CHAIN_TYPE_STATUS = 0 // 各个业务初始化信息,配置信息.链接状态,点击信息 + const val CHAIN_TYPE_STATUS = 0 // 记录所有业务信息(正常调用,异常数据) const val CHAIN_TYPE_GNSS = 1 // 工控定位数据 const val CHAIN_TYPE_SOCKET_AUTOPILOT = 2 // 包括自动驾驶状态,reportMsg,planning数据,全局路径数据,FM const val CHAIN_TYPE_SOCKET_DATA_TRACKED = 3 // 感知数据,现阶段记录云端漫游 const val CHAIN_TYPE_SOCKET_TRAJECTORY = 4 // 前车引导线,用于调试 const val CHAIN_TYPE_SOCKET_VEHICLE = 5 // 底盘数据 const val CHAIN_TYPE_SOCKET_TRAFFIC_LIGHT = 6 // 多元红绿灯聚合数据 - const val CHAIN_TYPE_V2X = 100 // V2X(V2I、V2N) const val CHAIN_TYPE_ANR_LEAK = 300 const val CHAIN_TYPE_WEAK_NETWORK = 400 const val CHAIN_TYPE_OCH = 500 @@ -42,7 +41,6 @@ class ChainConstant { const val CHAIN_LINK_LOG_ADAS_TRAJECTORY = "-adasTrajectory" const val CHAIN_LINK_LOG_ADAS_VEHICLE = "-adasVehicle" const val CHAIN_LINK_LOG_ADAS_TRAFFIC_LIGHT = "-UnionTrafficLight" - const val CHAIN_LINK_LOG_V2X = "-eagleCloudWSV2X" const val CHAIN_LINK_LOG_RECORD_ANR = "-eagleRecordANR" const val CHAIN_LINK_LOG_RECORD_WEAK_NETWORK = "-eagleRecordWeakNetwork" const val CHAIN_LINK_LOG_OCH = "-eagleOch" @@ -102,8 +100,8 @@ class ChainConstant { const val CHAIN_CODE_HTTP_DNS_CITY_CODE = "CHAIN_CODE_HTTP_DNS_CITY_CODE" const val CHAIN_CODE_HTTP_DNS_ERROR_REASON = "CHAIN_CODE_HTTP_DNS_ERROR_REASON" + const val CHAIN_CODE_DATA_CENTER = "CHAIN_CODE_DATA_CENTER" const val CHAIN_CODE_V2X_MSG = "CHAIN_CODE_V2X_MSG" - const val CHAIN_CODE_MSG_BOX = "CHAIN_CODE_MSG_BOX" const val CHAIN_CODE_HD_MAP_CALL = "CHAIN_CODE_HD_MAP_CALL" const val CHAIN_CODE_HD_MAP_ROAD_CROSS = "CHAIN_CODE_HD_MAP_ROAD_CROSS" const val CHAIN_CODE_HD_MAP_ICON_SET = "CHAIN_CODE_HD_MAP_ICON_SET" diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt index d70810e024..b022e6a006 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt @@ -1,6 +1,5 @@ package com.mogo.eagle.core.function.api.autopilot -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg import system_master.* @@ -12,14 +11,6 @@ import system_master.* */ interface IMoGoAutopilotStatusListener { - /** - * 自动驾驶状态信息 - * - * @param autoPilotStatusInfo 状态信息 - */ - @Deprecated("3.3.0之后不建议使用此种回调方式,按需回调,主界面暂时使用用于check检查信息透出") - fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) {} - /** * 自动驾驶状态信息 * diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt index 5ede15519a..b589922a74 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt @@ -4,6 +4,7 @@ import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.base.CallerBase +import com.mogo.eagle.core.function.call.trace.CallerTrace import com.mogo.eagle.core.utilcode.util.GsonUtils import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg @@ -37,7 +38,7 @@ object CallerAutoPilotStatusListenerManager : CallerBase if (oldValue != newValue) { - //todo emArrow chainLog + CallerTrace.write("AutoPilotStatus", mapOf("state" to newValue)) M_LISTENERS.forEach { val listener = it.value listener.onAutopilotStatusResponse(newValue) @@ -61,7 +62,6 @@ object CallerAutoPilotStatusListenerManager : CallerBase? ) { if (isConnected) { - var isEquals: Boolean = true + var isEquals = true if (unableAutopilotReasons != null && this.unableAutopilotReasons != null) { unableAutopilotReasons.let { onw -> onw.sortWith(compareBy(UnableLaunchReason::hashCode)); diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotRecordListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotRecordListenerManager.kt index f0b8cae7f0..704566c680 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotRecordListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotRecordListenerManager.kt @@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.call.autopilot import bag_manager.BagManagerOuterClass import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.call.base.CallerBase +import com.mogo.eagle.core.function.call.trace.CallerTrace import mogo.telematics.pad.MessagePad import record_cache.RecordPanelOuterClass @@ -17,6 +18,7 @@ object CallerAutopilotRecordListenerManager : CallerBase() { - /** * 车辆加速度 * acc 加速度 diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisBrakeStateListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisBrakeStateListenerManager.kt index 1f5797029f..a197d8dad7 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisBrakeStateListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisBrakeStateListenerManager.kt @@ -8,7 +8,6 @@ import com.mogo.eagle.core.function.call.base.CallerBase */ object CallerChassisBrakeStateListenerManager : CallerBase() { - /** * brake 刹车 */ diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingActionsListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingActionsListenerManager.kt index e81e2d16a3..53881e328a 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingActionsListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingActionsListenerManager.kt @@ -2,6 +2,7 @@ package com.mogo.eagle.core.function.call.autopilot import com.mogo.eagle.core.function.api.autopilot.IMoGoParallelDrivingActionsListener import com.mogo.eagle.core.function.call.base.CallerBase +import com.mogo.eagle.core.function.call.trace.CallerTrace /** @@ -43,6 +44,7 @@ object CallerParallelDrivingActionsListenerManager : } private fun notification() { + CallerTrace.write("ParallelDriving", mapOf("ParallelState" to isParallelDrivingAbility)) M_LISTENERS.forEach { val listener = it.value listener.onParallelDrivingAbility( diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingListenerManager.kt index c7ccd21d99..7c9407a9c3 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingListenerManager.kt @@ -2,7 +2,7 @@ package com.mogo.eagle.core.function.call.autopilot import com.mogo.eagle.core.function.api.autopilot.IMoGoParallelDrivingStatusListener import com.mogo.eagle.core.function.call.base.CallerBase -import mogo.telematics.pad.MessagePad +import com.mogo.eagle.core.function.call.trace.CallerTrace import mogo.yycp.paralleldriving.protocol.ParallelTaskProcessNoticeOuterClass /** @@ -12,6 +12,7 @@ object CallerParallelDrivingListenerManager : CallerBase Date: Wed, 6 Dec 2023 16:56:59 +0800 Subject: [PATCH 16/62] =?UTF-8?q?[6.2.4]=E8=A1=A5=E4=BA=A4=E8=A2=AB?= =?UTF-8?q?=E5=8A=A8=E5=BD=95=E5=8C=85=E6=88=AA=E5=9B=BE=E5=A1=AB=E5=86=99?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/PassiveBadCaseWindow.kt | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt index 818fcd9f12..de94745d87 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt @@ -33,6 +33,7 @@ import com.mogo.eagle.core.data.msgbox.RecordBagMsg import com.mogo.eagle.core.function.api.devatools.badcase.BadCaseNetListener import com.mogo.eagle.core.function.api.map.deva.IMoGoMapScreenListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsNetManager import com.mogo.eagle.core.function.call.map.CallerMapScreenListenerManager @@ -613,6 +614,22 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene * 高精地图截图回调 */ override fun onMapScreen(bitmap: Bitmap) { + //在截图上保存即时信息 + val time = "时间:${millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())}" + val lineId = "路线ID:${CallerAutoPilotStatusListenerManager.getLineId()}" + val state = when(CallerAutoPilotStatusListenerManager.getState()){ + 0->"自驾状态:不可自驾" + 1->"自驾状态:可自驾" + 2->"自驾状态:自驾中" + 7->"自驾状态:平行驾驶中" + else->"自驾状态:未知" + } + val speed = "当前车速:${BadCaseConfig.currentSpeed}" + + + val outBitmap = RecordBitmapUtils.drawTextOnBitmap(bitmap,time,lineId,state,speed, + BadCaseConfig.gpsStatus,BadCaseConfig.tracingStatus,BadCaseConfig.socketStatus + ,BadCaseConfig.newFMInfoMsg,BadCaseConfig.newReportEntity) //图片保存本地 val currentDay = millis2String(System.currentTimeMillis(), TimeUtils.getMdFormat()) val fileDir: String = Environment.getExternalStorageDirectory().absolutePath + File.separator+ @@ -622,7 +639,11 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene if (!File(fileDir).exists()) { File(fileDir).mkdirs() } - RecordBitmapUtils.bitmap2Path(bitmap,path) + if(outBitmap != null){ + RecordBitmapUtils.bitmap2Path(outBitmap,path) + }else{ + RecordBitmapUtils.bitmap2Path(bitmap,path) + } //遍历是否有非当日的文件并删除 RecordBitmapUtils.deleteExpiredFile(currentDay) } From cfbf4fca207a7131861a77b028a667c4cb6990b8 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 6 Dec 2023 17:49:42 +0800 Subject: [PATCH 17/62] [6.2.4] add common of chain , versionCode --- .../eagle/core/function/hmi/ui/widget/SystemVersionView.kt | 2 +- .../java/com/mogo/eagle/core/data/deva/chain/ChainCommon.kt | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt index 16261a2922..3372261d27 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt @@ -136,7 +136,7 @@ class SystemVersionView @JvmOverloads constructor( } ivHDCache.setOnClickListener { - hmiAction("$M_HMI$TAG", mapOf("isHDCached" to isHDCached),true) + hmiAction("$M_HMI$TAG", mapOf("isHDCached" to isHDCached)) if (isHDCached) {// 已缓存 ToastUtils.showShort(resources.getString(R.string.offline_had_downloaded)) } else {// 未缓存 diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainCommon.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainCommon.kt index 91618889c5..18d7a3d8d0 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainCommon.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainCommon.kt @@ -1,4 +1,6 @@ package com.mogo.eagle.core.data.deva.chain -data class ChainCommon(val lat:Double, val lon:Double, val lineId:Long) { +import com.mogo.eagle.core.data.app.AppConfigInfo + +data class ChainCommon(val lat:Double, val lon:Double, val lineId:Long, val eagleVersionCode:Int = AppConfigInfo.appVersionCode) { } \ No newline at end of file From cd372f6b7abb36b9324ec2f0065a8d63b7cd7a49 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 6 Dec 2023 18:31:51 +0800 Subject: [PATCH 18/62] [6.2.4] fix trace log --- .../CallerAutopilotRecordListenerManager.kt | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotRecordListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotRecordListenerManager.kt index 704566c680..e2fe9a0859 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotRecordListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotRecordListenerManager.kt @@ -18,7 +18,20 @@ object CallerAutopilotRecordListenerManager : CallerBase Date: Wed, 6 Dec 2023 18:37:55 +0800 Subject: [PATCH 19/62] =?UTF-8?q?[6.2.4]Bag=E5=8C=85=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E4=B8=8D=E5=8F=AF=E5=86=8D=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E6=88=AA=E5=9B=BE=EF=BC=8C=E6=8C=89=E9=92=AE=E7=BD=AE=E7=81=B0?= =?UTF-8?q?=EF=BC=8C=E4=B8=8A=E4=BC=A0=E6=88=90=E5=8A=9F=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=BD=93=E5=89=8DBag=E5=8C=85=E6=88=AA?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/InitiativeBadCaseWindow.kt | 8 +++-- .../badcase/biz/PassiveBadCaseWindow.kt | 6 ++++ .../biz/adapter/BagManagerListAdapter.kt | 32 ++++++++++-------- .../badcase/util/RecordBitmapUtils.kt | 25 +++++++++++++- .../res/drawable-xhdpi/icon_bag_audio.png | Bin 1658 -> 2746 bytes .../main/res/drawable-xhdpi/icon_bag_edit.png | Bin 0 -> 2538 bytes .../drawable-xhdpi/icon_bag_look_screen.png | Bin 0 -> 2396 bytes .../src/main/res/drawable/icon_bag_edit.png | Bin 926 -> 0 bytes .../src/main/res/layout/item_bag_manager.xml | 3 +- 9 files changed, 55 insertions(+), 19 deletions(-) create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bag_edit.png create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bag_look_screen.png delete mode 100644 core/function-impl/mogo-core-function-devatools/src/main/res/drawable/icon_bag_edit.png diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index 9c9681fc45..46d5f93714 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -119,6 +119,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList private var recordFileName: String?=null //录制文件包名 private var receiveTime: String?= null private var uploadStamp: String = System.currentTimeMillis().toString() + private var screenSavePath: String ?= null //截图保存路径 private var bagManagerEntity: BagManagerEntity = BagManagerEntity() @@ -241,7 +242,6 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList clickListener?.closeWindow() } - mWindowParams = WindowManager.LayoutParams() mWindowManager = mActivity.windowManager mWindowParams?.let { @@ -460,6 +460,10 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList bagManagerEntity.descReq = descReqEntity CallerAutoPilotControlManager.sendBagManagerCmd(bagManagerEntity) } + //删除截图 + screenSavePath?.let { + RecordBitmapUtils.deleteReportedImage(it) + } val loc = getChassisLocationWGS84() BadCaseAnalyticsManager.bagRecordUpload(recordKey.toString(),recordFileName?:"",uploadStamp, "100",AppConfigInfo.plateNumber,BadCaseConfig.totalDuration.toString(),MoGoAiCloudClientConfig.getInstance().sn, @@ -677,7 +681,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList }else{ RecordBitmapUtils.bitmap2Path(bitmap,path) } - + screenSavePath = path //遍历是否有非当日的文件并删除 RecordBitmapUtils.deleteExpiredFile(currentDay) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt index de94745d87..b7404370b4 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt @@ -99,6 +99,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene private lateinit var rvPassiveList : RecyclerView private var badReasonListAdapter: BadReasonListAdapter?= null + private var screenSavePath: String ?= null //截图保存路径 private var mInViewX = 0f private var mInViewY = 0f @@ -457,6 +458,10 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene bagManagerEntity.descReq = descReqEntity CallerAutoPilotControlManager.sendBagManagerCmd(bagManagerEntity) } + //删除截图 + screenSavePath?.let { + RecordBitmapUtils.deleteReportedImage(it) + } //被动上报埋点统计 val loc = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84() BadCaseAnalyticsManager.bagRecordUpload(recordKey?:"",recordFileName?:"",receiveTime?:System.currentTimeMillis().toString(), @@ -644,6 +649,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene }else{ RecordBitmapUtils.bitmap2Path(bitmap,path) } + screenSavePath = path //遍历是否有非当日的文件并删除 RecordBitmapUtils.deleteExpiredFile(currentDay) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt index 67d912e1e8..72d4174393 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt @@ -14,8 +14,10 @@ import com.mogo.eagle.core.data.deva.badcase.BagDescriptionEntity import com.mogo.eagle.core.data.deva.badcase.BagInfoEntity import com.mogo.eagle.core.utilcode.util.FileUtils.millis2String import com.mogo.eagle.core.utilcode.util.TimeUtils +import com.mogo.eagle.core.utilcode.util.ToastUtils import com.zhjt.mogo_core_function_devatools.R import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig +import com.zhjt.mogo_core_function_devatools.badcase.util.RecordBitmapUtils import java.text.DecimalFormat @@ -101,12 +103,18 @@ class BagManagerListAdapter: RecyclerView.Adapter() { holder.tvBagReportStatus.text = "录包失败" holder.tvBagReportStatus.setBackgroundResource(R.drawable.bag_reported_button_bg) holder.tvBagReportStatus.isClickable = false + //已上报的Bag不支持再查看,图标置为灰色,并且不可点击 + holder.ivMapScreen.alpha = 0.5f + holder.ivMapScreen.isClickable = false }else{ if(des.reportBI){ //已上报 holder.tvBagReportStatus.text = "已上报" holder.tvBagReportStatus.setBackgroundResource(R.drawable.bag_reported_button_bg) holder.tvBagReportStatus.isClickable = false + //已上报的Bag不支持再查看,图标置为灰色,并且不可点击 + holder.ivMapScreen.alpha = 0.5f + holder.ivMapScreen.isClickable = false }else{ //未上报 holder.tvBagReportStatus.text = "上报" @@ -115,6 +123,16 @@ class BagManagerListAdapter: RecyclerView.Adapter() { holder.tvBagReportStatus.setOnClickListener { bagClickListener?.uploadBI(bagInfoEntity) } + holder.ivMapScreen.setOnClickListener { + bagInfoEntity.description?.let { + //查找是否有截图文件 + if(RecordBitmapUtils.checkHasImage(bagInfoEntity.key)){ + bagClickListener?.lookMapScreen(bagInfoEntity.key) + }else{ + ToastUtils.showShort("该截图录制失败或已删除") + } + } + } } } if(des.description.isEmpty()){ @@ -124,12 +142,6 @@ class BagManagerListAdapter: RecyclerView.Adapter() { } } - holder.ivMapScreen.setOnClickListener { - bagInfoEntity.description?.let { - bagClickListener?.lookMapScreen(bagInfoEntity.key) - } - } - //录包来源:自动 or 人工 if(BadCaseConfig.bagResourceList.contains(bagInfoEntity.key)){ //在该列表中找到Bag包的Key则代表该Bag为人工录包 @@ -175,14 +187,6 @@ class BagManagerListAdapter: RecyclerView.Adapter() { } } - //只有当天的Bag才显示查看截图按钮 - bagInfoEntity.timestamp.let {day -> - val currentDay = millis2String(System.currentTimeMillis(), TimeUtils.getMdFormatTwo()) - if(day.contains(currentDay)){ - holder.ivMapScreen.visibility = View.VISIBLE - } - } - } } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt index 5ee8056017..eab089942a 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt @@ -10,6 +10,8 @@ import com.mogo.eagle.core.data.deva.report.ReportEntity import com.mogo.eagle.core.data.msgbox.FMInfoMsg import com.mogo.eagle.core.data.msgbox.MsgFmData import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.utilcode.util.FileUtils.millis2String +import com.mogo.eagle.core.utilcode.util.TimeUtils import com.zhjt.mogo_core_function_devatools.badcase.biz.InitiativeBadCaseWindow import java.io.File import java.io.FileOutputStream @@ -33,7 +35,7 @@ object RecordBitmapUtils { } /** - * 删除过期文件 + * 删除过期文件夹 */ fun deleteExpiredFile(currentDay: String){ val checkFileName = Environment.getExternalStorageDirectory().absolutePath + File.separator+ "MapScreen" @@ -50,6 +52,27 @@ object RecordBitmapUtils { } } + fun deleteReportedImage(path: String){ + val screenFile = File(path) + if(screenFile.exists()){ + screenFile.delete() + } + } + + fun checkHasImage(recordKey: Long): Boolean{ + var checkResult = false + val currentDay = millis2String(System.currentTimeMillis(), TimeUtils.getMdFormat()) + val fileDir: String = Environment.getExternalStorageDirectory().absolutePath + File.separator+ + "MapScreen" + File.separator+ currentDay + File.separator + val fileName = "$recordKey.png" + val path = fileDir + fileName + val file = File(path) + if(file.exists()){ + checkResult = true + } + return checkResult + } + /** * 在指定Bitmap中绘制文字 */ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bag_audio.png b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bag_audio.png index 2959045ff30d8eae9d56d7b4a4279a7cf5a9ba42..7a03289e1f47fea8f2f4593c28c6cf71c5e61ed7 100644 GIT binary patch delta 2645 zcmV-b3aa(`47wGNfPV@kNklZH!e{6^7TjGo`Jeg<&X6r;tIujHaz7)&K#l zCM0b_L2Cm4ni!)=V^S3@MF02^H3l&%HjV#`(HIjNF`eCq;oQqGP`Wbb?6uzY_3nN4IrrW(g}o0+DSs7HW~Rmq|w-(AFKTOIx*S>>55>DsK~iQj;U*od%n@J9fNa< zm&%CipKpk;E`R;fX4`hD$>%8Pja@O*rT68F6~uIc0xB#MjJ!;?@)w2eRiW(*=N8Aw zpGmGucq*k0scm~iVxVdSnINR<6+VqVosS7sc+@Ivvfpg0NYA)U8Z*tN*-lT0?7>c_ zBaq1cy~IU&vi}x)V5Ii+=(_1Hw`^Ct-Axvfy=1+i99=j}B=~{^qaImj`ph1b z>r3Gm?BbJ>5%s{mCK$RFZmMa!%INZ3t+2Mjntx`;UI6w2u9S(`*{sOaF>Wj_uM? z&m&|#F8e*dV}1Ib@i;oNXu!TD_o0XbbCNm7aX?AvOs1W#tg;inr0)iDtaBnXRuF+4 z`hRn&+ulSdBrBplaS<>7<9fD!0k^*NbQ*a4nu!yr$uILC{A5UQfZq2NpX0 zr`onfE^F`=QDirTGe!zjvyCDd>unYd)PL=w_U&V`Pl9<3jrzN--L&t~(52tLqfxC( zg7iVKV~qYaY%^Soi_NsU)wUNaM^4PSxot1V zcUQzJh3#cAH$LPpIE$d%P00a?_3Y5IvjsdoKbc=vQq) z9JPf~jiuVdc6XgbB!fi}u&}8gvwudfjxzqf(R20<;t|F9&E>lMy7}&X>tE?^>?L>E zQO2l?9^!ly@4mdkIc~Tid^lz*{mSLZGXwJijJaYe?2`2T!v7vcqlW5#F^5^|vp?lV z0dcpFVCWI2A24<<>U+NMSPWvo5FbiD!wrGMfYH$Pm=$|Lf-ee5ZHe%w7Jm&CoAg2O zQ8oRoUp6^1xg`@9(gO14CObhh$5qSg6y__8Uv(z%MGSh>qIKPu`wur1?T;5PpadMD zlOIGYOsl$hPH`BUU%!n$`xQixn6!RQ-GM!Cp8ZcQ=Mj5R@N9gD9;X*b4Pw>8WQ>^T zpSh%lfYZ^)M}i5YQ`R+9wtw)&qbc1EhO}C?l7>-3P-pQR8^bqtPWMO03itbxX&<+2 z0w1EZp^6awXjtN|=aiBMe!Vv6*UZPIt<16IY%$m~8X*#bt-tx{y#4Xyx%5+!S<)$N zr^ZSYe@H8T8Q|TveYl>FKC5A;s$g#TY%uzvQxL}$dX5|K*9^z2z<-J2PX*uu_}zMQe1C8ph*fd|BnzyQ4IIqz7!`{+R@jp(7Z%?x5wi>L*iS@sZY+Q| zPI~{4MK5GN0|wiA{fLkL9wI*ATH*tZg?HLvDHD-|!wc1lxtc)+Kf2vf584w)=GWi@Q9Pk_2?gxOP5z0vN*(X)qfH@+~Cn9;MoYGLH!^W zpBJYn{#+#D@C#deu5J5|ji+zw7x&X#rE2opcY6Kz-46~F|52#DHfEnyo%!ykW)`ob zllP(zdiF`*=a12B?}?y@h(N|@?0OWJ;W(o(C*QFLb))?#;(WxP?2UUD*)K`eL%+Y( zu^)ETRE(1=V}FB!cOnj-ZnkFt{0sa&ydEm-`6v>}PJ$u|^i|Et*dAN+Q4B0b&n;K) ze9>o*YIXEx*6eSi`shyfp{jPSiO>6Lbdt(-o0{UbW?A`j-w6|}$I%Xa1R?e2P7cgH zSICDA9L?%`QNNfkbsDz${^8;cVvdZb5ygE!V!^1v;eUBjdV6_~{KJ*_itwVr;w5c0 zzl$jthtJlt%3?tXD15{sj%oB<_Hf5u{MfMhtJK$ZLv}9fUg>D>601{OHQ(>Gd?$^c zKyg~P;>zpTiZGs{-?l4wGM3T{3y%VooiPgHLxQAZvVq0<)32PgU%#BvE$?2m-wV6X z<8zM3=zqir9yPq5FkPWZy?WU$wGu6Ax4ijp{etF=rCwFxsS^sF26Tx=Zs*tv%OE7w z($}zUy=1|!A`G~4LGhIGc7JyfQgOHCh@!+gi5O|7<#ZB(<*}+I zyH^)f)zLPf#O}4ruYPk$oP5`oV-tGq+OeOBKp#sf&Mr<8;x!vJCWKB50){XI=J|D7 zIz$xH))H>}4_G0MqS@#=EFLc(g z?0x`1dW>kAK;Y>#F#_Znc^R)-Hd4|GND@!Fy~2gN5GJw#VH4*Pq)bes zJf;JJLU0BR0V9YSi6J3sVnTQriHamMLNr1G$`mB9$z*C6VL*6n@+t^pLpHWy6BhKOSpUK+{ZyTm3lhZ_!pwp!q5L8<7hC>Smf8 zam+r%F2nWOWGsxymuPl*Q_z*Fs?E|XuYMp6Pc=%T$C{)~TXsoKr!$Z-7mWu^Y`T)?O@q#5rz^@XT<5kBUwm5fNc{XZ2EKJdq|mR-Ud#@qyn0 z@%|DU1ru`qQam4shpsja4Hm3i{Ru8!x~>o&77#eTVjTr)SCT_Xu4#t(HO^bG23O2C zk$;d7hqvE+8LusyCl51hSRzIYPr{x0CRnX);CN-AOd%n`h>wdF_2w2ES_1&gGpy+Z zd-nVl)YRUAL{?4o+7BK1Q?a?-~>ei#(-mE zJ7pgGUdmdIVNHP9;i7`s$e%k?1frC1c>(o&F{Guc}Or_cOFo69ZHmpn2F ziHY$Fxr&CFLxQi5`b1XxL~Yu#6JPHt7P&%XWQ2GFV+@Zd{2n~?JDl#_Z`L!}ir7~u z_S`tYfO(H}1zpdIekB}>>FEXxrGH&6G9nxc@{L%vVv)k8rsf}qzmy489BeDPIGQ72Nv10bfKR(~FM^1PqKAuLpn)9t< z#wq}iLp~|%LXuSHyw-vBlJsd%w(se$TlUDO84v67*X_T1A279_XZ@%E0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91ET97b1ONa40RR91EC2ui0Q_#}qW}O2R7pfZR9FeESzU;nR~dfK?4(wZ zw8@4xPOK)Iwt~HEAPL(Qi75zyAeO8bB7#IgY}8yd;#F@;1JY`g>P33x%|>#O5XeOl zq-xEDML{izH9ufCKU12jSlXGLIenh@d!MssW@mTP)|dUh^Zq{XbIy0ZZ@!sL_7NoK zocd32m<>@8*0sB@uBo%M<_AUxk9=&_XT{2RCPk)~?$dDRu}_49M+ z@%^$A(SR^)N+~hebU6VJgiRlb(g#sobp^+R%eWx*`~%bJ2VOLGnn;){I~>?gM1m`z z)lyUML83eYR0L>BA15cj>Sa4l0C7Oe?|o)V`YH2jSwYwzS!U+}FvY?`2!?C|)QxB> zRvH6YI%5=J$*-pcZI3I5cCrEX>z6=!WKWOmVLlCp$rb=GMM4D_I&Jp>t0v1FkKxiQ zt}CJ#Qkonn1vA+#e0)5k8ew>x`9qt+o?f{2cIF3CkrBf0E!pwGz&5d%Qi|EAag~NO z8PBcas@GUZ1|}xdood^@ZJX1N@JM@7arR(M>5Ch&-?QTZ?L*lTyQm=44#>R^ZEZeW$_g)8 zGZQDsEQsqk$>)HybucI5{@9Yu0t!ZN9{E_!0lXV~$!0wsr|nzP&%o+QmQ|&$vwo2M z)77(`@Vou|I0BD(b3TTU#6%wWbE$2{DI{5lHm*{qd;&yz7b&}7EZ~Z~aP6)9?I`hK z$F%(%%I_VMHNk_mIOZgfW9dOb|gQ6kVMBXt5J0xddbb9P~+~#@NNU?^B!7 zpC8z4UqkK!h`n&7+mPm4-|JobC495YcRY@va}rAfnC3e}5Hi9?aE;2;@$)>pPB%Nhzv|Fi3)zsi~w^~~|S<^Jtt zd)s)79bf^26xYL60fShH5-WMGpjnI@C~OX#ZYzzhY!fYKru{c^-Rb?H6+UoiB22)8 z;XoVBW;_w6k{Cryq7*`rCJ}dcHSQXLa4N7snQOjiEyCbr=k-p^^C?HNP^+ITcgJY+S-YNrinrw+Q#738YM$ihMpp`y#* zg_kQ+`@Y=zlQrvePkhyS|_M%je$#lcWS+DfR)9U*TV$nhk(d%luf<( z$$>GBIv6**-oi5THv+pV>6r7q! zlrFZ>c+ry?bU2)_CqdCiFu?+lDFViG_Qa%5uqG#`izFM*S+5}oiD2Z>ozrS^^aP9~t7Q4!Xi%8kC3bJS))GePvO(b zCz;8>)0W-g$qB2X*L@|k*s;YP2gq6YPu8TJY-|Ij^Ki0IWRFY&PQrU$ z^nvNNkBpNn4RGAO-7d8F!yJ5P+zG#Cr_l>>@|hzM?*}iUroZz(JA~KLv-o&Dc@ZnE zmBqWsVQ<1l0F7pi9yYNZmp1YwbZdg@AF1@8Ay!|2upc7!7HYr1dWxEeD1D9@BWGV$F!Vad>#_3UL2i3@HedJsla9%) zY{&40Yx%vnYR)*#)|9BoGlzC#`bb@M zuG6mK_&MNMn1oywe0%*h8b48HhEN556|+0oAKEto_H`W7imf1npnRGLyOezC!AgG5 zsbUO+;OV)C(-VwQMhU;2cMN*=Cje|>vL84R5Q*>ND&0+;!m%c!Nk+I3rp?^C&g*ef zjoZwLT*dK?<@Q}0?9tuZ(-rzCzK0vtZ2P?kv}_*4mIS6oxS{UWo>Yu=zh&VQmh1 zBWq|=@IrNTE^f5O)0|fjru(z^r4!f!&xwRU-3FjQnM+*++>b)fABz<%_{a4c2it(# z@A=sWSN?LzJj7O)*KXt^coO^=jM`*{g>Z3_L6iI_`?w}9ow$7N`sF2AJi6>I+qE89)_Dz;JCVQq zEAK(0XR%G@nD0b+qK+}t#?Kom{ETaY)O}?eqQApJJoVT^|L1>uu}LkjUc-Nu%npIX zK{VgWm{!k8<0P^^dP0MMClLR!coutgVbW8e$y)vVfmV1NhHq%EUbWr$UHJe$K4(C> z1412a3I6+**NPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91ET97b1ONa40RR91EC2ui0Q_#}qW}O1#z{m$R9Fe6S>KCYR~h~Go#`*s zq%o-(Zf#>HKM58gbOeJ{E$sNniTX_EAV+9wLE&1(7Ii zuoR0XRm5O5xrss@s`%^Px%ar%I(zNe_s-3oY4S1W?7i3bed}9$pMB4qdv1!mu%>C! zAmYGqHI79Si=gT@4Gy%U01|N%=iUeh`q$9Eu;qccoKm9ijx60t)?m;)HB9j=#61HM z3uvW|Txb%ztVVpvdZ;(=j)rr8R*YbGkp8Q1aWmcBEGrSKB(lx@ARN1i>5=iy#aBFuPA5&0NNPx8PWQ$8elti2eF?h#uS1V}kSD;2rMSNkJUfg;ju9#@!O9`HG0A z5>HI&DpGCNJy#3^)X;K*2 zPh6bDTK~2|U-x~6%gPG(`^~{Y6K@d}fjVs>$9Y)9)EGZlyu1=nt!7Re%Nfhd0rkXK zXL1b6Lwgt6e=cQ(SEHQ?Ib2A6oQ$a$$3Dm&@y7irb^<#J_#OM?0ifbJo*26A!4CTw zP#(uZ*W#EzY}Qs;EBs$P8?27vr;M%>MV1Me=&@U3_ebp5vL$`UFnk8){`yfY4I^Fv z*L{vdSj)=}Op~at1Tn^zI01RgK5VWNU)#4cy{Q$(436`%N)((bl*!rWr7nc@<8Z9S z0t!5Z4Hq6vFQ&QpQj}0P~8EWBb_VKI;#L@hpbX;Ugl%K5eI45-`xh zT%d@DpV&0(ek#5H@YXnt-0vagKMZr;B%gicF&|skudrvRHT@eOw$)+0RUA3dT8Ni} ztT2+<7PjKiWrqFbqh>Fj@LnH|;t0c-st;-I3j=7*F&&Jl>d&V*)WL1+n7~X>2WXZ~ z;GRQFP3%64-p(G`n*Q+Ur{gP_*7G3vS1p#cT!Z=KcMam&rg=Nkj~l}=JdVbq0&$w$ z0?I}pV%p0^5*{2IL%We-Z;u|^kgjfmjE0<@()u$j9A69Bn||XA;G??lA&F6o0oyidtB$h1?WM zQ`{(;4uG3pHMQAU_nF|a+q>2J$6oVje-JPcvoEfygDZg%h~)HI7H~%ZW=9~C$@>|e-nUwXRdc3L`^h7v>_2yByCm&83Tzm3jNX8u_ zsE#GDN&DTc=CLa`<2BTLvhe1j5@sImSt2)&r_?OhrxHwK~jex#LL*akov|k zAb$NH&Grmo+{|HBe>fP$uc70hb2(9QWCG)PD4&J8)*5Fk93QrG#GtjcKmWbC1Y$h` zGMQE`6~B zuL!>WVf!W2glh~Za*GP4;|S%@g?-L+tb@n zzsw*O_d&v1OfA;F;%6b}a~t5$Y7>N6IETt*3ziM;FmCrZS3mESZ;<`&f`aSjlVM<6HJ2Lc$bC$C@0x3MKgo2 zjJv1{X%g^xg&0eW=5+IwoIII2hcPrfdY(MGd;Gl`@pXa;?)yx71$n0}!YidQ942L~ zM7U)!d=M0GEVqRViaDH zvrLnm6)?^B?g#i~3BUM2#M3Cgz!(VzDE+zhB#bEzPhBYb6YSNq)9wP(>ebjC2{r*A z%-{V}9Kd_!WB4(45dyooC3dkT`138VAHRO}u-f|R7OQ#T@SeN->GuE9eUo%0Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$?2uVaiR9Fecmq}<8K@^6klNgbp zsKot{gC2x{7lR-X#FH2zi6SV9pdg3{qKFGf@Zfd`UPKf@RFEKoh~OnIAPk5L4lV@I zgNJ|~H6}>ZaT&kA=T#`1nPGYnAN=#G-e2{o=H{{L39ClXX2mmi$&oZz%`5C`zHk;J{P>T zByzvN7Pmm!?FwRJnHPX)D;SbGHUbJ^tNetmqdgTowpbz40uY@6^f=2#!7?x%xY&2v zFM#YT=*+AD#HN9#K=uW!@V0yw{nsMQR7h9Iy9hqVq9aRE%$w%!0Tt!#57xsqHI zX|~((^p{vnI~K&g1WeM(224aN+wR1jCwA6&x&1CKPrt+C;uXL|t?ZH~u*(;>1gAaz zNCiGs0p~sOy%oeyc>J*_Zv`eR0O5X5{BTqpuFvE9qrB@gCVl}-(m~_?wv}h66O^Za zKtZ!JJ{N5>CQ$)hCjQa9ZoX|2$M3P2+yxLsllp!5LnH*TflQCzWi`yM;AIGU_&yjEc%yw^D^cB?x2mdtMvQ3#u8_L5D-A>^_73D& z?QkWrEMg5=h@{a_0Ywv-lSU}U+<7*($j*k>Ri9)X;5gT(1)uiQ%=9a|nM4m6qrBl! z+D+pBVdb}CE25VQ^zNR;=XtHgNWTEO!`1Wi2YsMk8!-a?0000007*qoM6N<$f(+h` ASO5S3 diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_bag_manager.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_bag_manager.xml index 3d02585ffa..60129b5acd 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_bag_manager.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_bag_manager.xml @@ -100,9 +100,8 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintRight_toLeftOf="@id/ivBagAudio" - android:src="@drawable/icon_bad_case_audio_select" + android:src="@drawable/icon_bag_look_screen" android:layout_marginEnd="@dimen/dp_25" - android:visibility="invisible" /> Date: Wed, 6 Dec 2023 18:45:37 +0800 Subject: [PATCH 20/62] =?UTF-8?q?[6.2.4]=E8=B0=83=E6=95=B4=E6=88=AA?= =?UTF-8?q?=E5=9B=BE=E6=9F=A5=E7=9C=8B=E5=AF=B9=E8=AF=9D=E6=A1=86=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E6=8C=89=E9=92=AE=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/dialog_record_screen.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/dialog_record_screen.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/dialog_record_screen.xml index a2f20a926d..b125bb4555 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/dialog_record_screen.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/dialog_record_screen.xml @@ -32,7 +32,7 @@ android:src="@drawable/icon_screen_close" app:layout_constraintTop_toTopOf="parent" app:layout_constraintRight_toRightOf="parent" - android:layout_marginEnd="@dimen/dp_120" + android:layout_marginEnd="@dimen/dp_100" android:layout_marginTop="@dimen/dp_100" /> From f23c54aa47677c6b0030e207614eb0b1c2da5756 Mon Sep 17 00:00:00 2001 From: aibingbing Date: Thu, 7 Dec 2023 11:46:08 +0800 Subject: [PATCH 21/62] =?UTF-8?q?[=E5=BD=95=E5=8C=85=E4=BC=98=E5=8C=96]=20?= =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E5=8F=B8=E6=9C=BA=E7=AB=AF=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7V6.2.4=20=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/gradle.properties b/gradle.properties index c911518c2c..a9b0917cd0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -90,8 +90,8 @@ WEBSOCKET_VERSION=1.1.7 applicationId=com.mogo.launcer applicationName=IntelligentPilot # RoboBus司机端:2.5.1;RoboTaxi司机端:2.5.1;RoboTaxi乘客端:1.0.0 -versionCode=6002002 -versionName=6.2.2 +versionCode=6002004 +versionName=6.2.4 ################# 新架构模块Maven版本管理 ################# MOGO_CORE_FUNCTION_HMI_VERSION=0.0.58.10 @@ -150,28 +150,28 @@ MATRIX_VERSION=2.0.8 # 测试模式司机端版本号 NOOP_DRIVER_VERSION=3.2.0 # 公交模式司机端版本号 -BUS_DRIVER_VERSION=6.2.0 +BUS_DRIVER_VERSION=6.2.4 # 公交模式乘客端端版本号 BUS_PASSENGER_VERSION=5.2.0 # 接驳模式司机端版本号 -SHUTTLE_DRIVER_VERSION=6.2.0 +SHUTTLE_DRIVER_VERSION=6.2.4 # 接驳模式乘客端端版本号 SHUTTLE_PASSENGER_VERSION=5.2.0 # 出租车模式司机端版本号 -TAXI_DRIVER_VERSION=6.2.0 +TAXI_DRIVER_VERSION=6.2.4 # 出租车模式乘客端端版本号 TAXI_PASSENGER_VERSION=5.2.0 # 出租车模式司机端版本号 -TAXIUNMANNED_DRIVER_VERSION=6.2.2 +TAXIUNMANNED_DRIVER_VERSION=6.2.4 # 出租车模式乘客端端版本号 TAXIUNMANNED_PASSENGER_VERSION=5.2.0 # 包车模式司机端版本号 -CHARTER_DRIVER_VERSION=6.2.0 +CHARTER_DRIVER_VERSION=6.2.4 # 包车模式乘客端端版本号 CHARTER_PASSENGER_VERSION=5.2.0 # 支持云控清扫车模式司机端版本号 -SWEEPERCLOUD_DRIVER_VERSION=6.2.0 +SWEEPERCLOUD_DRIVER_VERSION=6.2.4 # 清扫车模式司机端版本号 -SWEEPEROPERATE_DRIVER_VERSION=6.2.0 +SWEEPEROPERATE_DRIVER_VERSION=6.2.4 From e89ac5fb8e5e9e6e6e1229822b10610e187f14db Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 7 Dec 2023 12:18:06 +0800 Subject: [PATCH 22/62] =?UTF-8?q?[6.2.4]=E9=99=8D=E4=BD=8E=E6=88=AA?= =?UTF-8?q?=E5=9B=BE=E5=9B=BE=E7=89=87=E8=B4=A8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/util/RecordBitmapUtils.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt index eab089942a..4bba14ca95 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt @@ -25,7 +25,7 @@ object RecordBitmapUtils { fun bitmap2Path(bitmap: Bitmap, path: String?): String? { try { val os: OutputStream = FileOutputStream(path) - bitmap.compress(Bitmap.CompressFormat.PNG, 80, os) + bitmap.compress(Bitmap.CompressFormat.PNG, 50, os) os.flush() os.close() } catch (e: java.lang.Exception) { From 5d79938c43f4951c2d60d473d3e35dd4c7928055 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 7 Dec 2023 15:04:09 +0800 Subject: [PATCH 23/62] =?UTF-8?q?[6.2.4]=E5=A2=9E=E5=8A=A0MediaPlayer=20Il?= =?UTF-8?q?legalStateException=20=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/BadCaseManagerView.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt index 71cb1c78dc..de4836a97d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt @@ -211,7 +211,11 @@ class BadCaseManagerView @JvmOverloads constructor( //延迟播放 Handler().postDelayed({ //音频文件播放 - Audition.getInstance().playOrStop("${audioSavePath}${key}.wav") + try { + Audition.getInstance().playOrStop("${audioSavePath}${key}.wav") + }catch (e: Exception){ + CallerLogger.i(M_DEVA + TAG,"playOrStop=${e}") + } }, 1500) } From 63a551cfd74240216b744a4009b7617c3c8311c3 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 7 Dec 2023 15:29:24 +0800 Subject: [PATCH 24/62] =?UTF-8?q?[6.2.4]AI=E6=95=B0=E6=8D=AE=E9=87=87?= =?UTF-8?q?=E9=9B=86=E4=B9=9F=E8=AE=B0=E5=BD=95=E5=9C=A8=E4=BA=BA=E5=B7=A5?= =?UTF-8?q?=E5=BD=95=E5=8C=85=E5=88=97=E8=A1=A8=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/AIDataCollectWindow.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt index 3297dcf31b..322f0f9d63 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt @@ -197,9 +197,12 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) { CallerLogger.d("${M_DEVA}${TAG}", "-- 收到工控机录制任务回调 -- $recordPanel") ThreadUtils.runOnUiThread { - if (recordKey == null) { - recordKey = recordPanel.key.toString() + recordKey = recordPanel.key.toString() + //开始录制 + if(recordPanel.stat == 300){ BadCaseConfig.recordKeyList.add(recordPanel.key) + //保存录包状态 + BadCaseConfig.bagResourceList.add(recordPanel.key) } if (recordFileName == null) { recordFileName = recordPanel.filename From a4b77cd9a2d619ada1c89f624947ceb219007987 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 7 Dec 2023 16:06:06 +0800 Subject: [PATCH 25/62] =?UTF-8?q?[6.2.4]=E5=BD=95=E5=8C=85=E5=8E=9F?= =?UTF-8?q?=E5=9B=A0=E5=92=8C=E8=AF=AD=E9=9F=B3=E4=B9=8B=E9=97=B4=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=88=86=E5=89=B2=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/InitiativeBadCaseWindow.kt | 3 ++- .../badcase/biz/PassiveBadCaseWindow.kt | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index 46d5f93714..e803341c6e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -427,7 +427,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList "$uploadReason 语音内容:$reasonDetail" } //上报到工控机 - CallerAutoPilotControlManager.recordCause(recordKey.toString(),recordFileName,"",uploadReason.toString()+reasonDetail) + CallerAutoPilotControlManager.recordCause(recordKey.toString(),recordFileName,"", + "$uploadReason:$reasonDetail") val uploadResult = presenter.upload(mutableMapOf().also { itx -> itx["carLicense"] = AppConfigInfo.plateNumber?:"" //车牌号 itx["filename"] = recordFileName?:"" //bag包文件地址 diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt index b7404370b4..007c329b0f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt @@ -424,7 +424,9 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene "$uploadReason 语音内容:$reasonDetail" } //上报到工控机 - CallerAutoPilotControlManager.recordCause(recordKey,recordFileName,"",uploadReason.toString()+reasonDetail) + CallerAutoPilotControlManager.recordCause(recordKey,recordFileName,"", + "$uploadReason:$reasonDetail" + ) val uploadResult = presenter.upload(mutableMapOf().also { itx -> itx["carLicense"] = AppConfigInfo.plateNumber //车牌号 itx["filename"] = recordFileName?:"" //bag包文件地址 From 02199849e92f82fbcb9909c1c40e6a2b632fabb2 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Thu, 7 Dec 2023 17:03:09 +0800 Subject: [PATCH 26/62] [6.2.4] [fix] [set value] --- .../src/main/java/com/mogo/och/data/bean/BusRoutesResult.java | 2 +- .../driver/src/main/java/com/mogo/och/bus/model/OrderModel.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusRoutesResult.java b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusRoutesResult.java index 59b6a1cc87..3e9a4cffc5 100644 --- a/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusRoutesResult.java +++ b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusRoutesResult.java @@ -57,7 +57,7 @@ public class BusRoutesResult { } public void setSite(List site) { - this.sites = sites; + this.sites = site; } public long getTaskTime() { diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java index 6ecc30ac08..b43791e1c5 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java @@ -700,7 +700,7 @@ public class OrderModel { beanPre.setLeaving(false); sites.set(currentIndex -1,beanPre); } - busRoutesResult.setSite(sites); + //busRoutesResult.setSite(sites); pushCacheTransferData(busRoutesResult); From 96304d65410dec7c36da05da6e70c347bf9c9e41 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 7 Dec 2023 17:07:32 +0800 Subject: [PATCH 27/62] [6.2.4] fix sonarbug --- .../module/map/AmapNaviToDestinationModel.java | 2 +- .../module/wigets/sfv/FrameSurfaceView.java | 8 ++++++++ .../bus/passenger/model/BusPassengerModel.java | 3 +++ .../mogo/och/sweepercloud/SweeperProvider.java | 4 ++-- .../och/sweeper/presenter/SweeperPresenter.java | 2 +- .../eagle/core/utilcode/util/CommonUtils.java | 2 +- .../map/sdk/inner/byteh/PayloadEncoder.java | 6 ++++-- .../zhidaoauto/map/sdk/inner/utils/MainInfo.java | 16 ++++++++-------- 8 files changed, 28 insertions(+), 15 deletions(-) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java index d49a3f7a34..317a4b9be0 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java @@ -46,7 +46,7 @@ public class AmapNaviToDestinationModel implements AMapNaviListener { protected final List eList = new ArrayList(); protected List mWayPointList = new ArrayList(); private volatile ICommonNaviChangedCallback mNaviChangedCallback; - private AtomicInteger errorCount = new AtomicInteger(0); + private final AtomicInteger errorCount = new AtomicInteger(0); private boolean isPlay; public static AmapNaviToDestinationModel getInstance(Context context) { diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/sfv/FrameSurfaceView.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/sfv/FrameSurfaceView.java index 7b3ddd377a..8b8a303d7d 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/sfv/FrameSurfaceView.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/sfv/FrameSurfaceView.java @@ -1,5 +1,7 @@ package com.mogo.och.common.module.wigets.sfv; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI; + import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -12,6 +14,8 @@ import android.os.Handler; import android.os.HandlerThread; import android.util.AttributeSet; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; + import java.io.InputStream; import java.util.ArrayList; import java.util.List; @@ -21,6 +25,7 @@ import java.util.concurrent.atomic.AtomicInteger; * a SurfaceView which draws bitmaps one after another like frame animation */ public class FrameSurfaceView extends BaseSurfaceView { + private static final String TAG = "FrameSurfaceView"; public static final int INVALID_INDEX = Integer.MAX_VALUE; private final int bufferSize = 3; public static final String DECODE_THREAD_NAME = "DecodingThread"; @@ -320,6 +325,7 @@ public class FrameSurfaceView extends BaseSurfaceView { decodedBitmaps.put(linkedBitmap); } catch (InterruptedException e) { e.printStackTrace(); + CallerLogger.e(M_HMI + TAG, "decodeAndPutBitmap error"); } } @@ -338,6 +344,7 @@ public class FrameSurfaceView extends BaseSurfaceView { bitmap = drawnBitmaps.take(); } catch (InterruptedException e) { e.printStackTrace(); + CallerLogger.e(M_HMI + TAG, "getDrawnBitmap error"); } return bitmap; } @@ -354,6 +361,7 @@ public class FrameSurfaceView extends BaseSurfaceView { bitmap = decodedBitmaps.take(); } catch (InterruptedException e) { e.printStackTrace(); + CallerLogger.e(M_HMI + TAG, "getDecodedBitmap error"); } return bitmap; } diff --git a/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java index 7c0ee5d18f..8613bdfb37 100644 --- a/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java +++ b/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java @@ -565,6 +565,9 @@ public class BusPassengerModel { public synchronized void onAutopilotRotting(@Nullable MessagePad.GlobalPathResp routeList) { // CallerLogger.d(M_BUS_P + TAG, "onAutopilotRotting = " // + GsonUtil.jsonFromObject(routeList)); + if(routeList == null){ + return; + } List routePoints = routeList.getWayPointsList(); if(globalPathTruncation!=null&&!globalPathTruncation.isDisposed()){ diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/SweeperProvider.java b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/SweeperProvider.java index 503ee93ce0..c24d2c0b49 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/SweeperProvider.java +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/SweeperProvider.java @@ -36,14 +36,14 @@ public class SweeperProvider implements IMogoOCH { FragmentManager supportFragmentManager = activity.getSupportFragmentManager(); if (sweeperFragment == null) { CallerLogger.d(TAG, "准备add fragment======"); - Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(sweeperFragment.TAG); + Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(SweeperFragment.TAG); if (fragmentByTag instanceof SweeperFragment) { sweeperFragment = (SweeperFragment) fragmentByTag; } else { sweeperFragment = new SweeperFragment(); } if(!sweeperFragment.isAdded()) { - supportFragmentManager.beginTransaction().add(containerId, sweeperFragment, sweeperFragment.TAG).commitAllowingStateLoss(); + supportFragmentManager.beginTransaction().add(containerId, sweeperFragment, SweeperFragment.TAG).commitAllowingStateLoss(); } return; } diff --git a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java index 451cd91a1a..68253f868c 100644 --- a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java +++ b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java @@ -354,7 +354,7 @@ public class SweeperPresenter extends Presenter } public static String format(double value) { - BigDecimal bd = new BigDecimal(value); + BigDecimal bd = BigDecimal.valueOf(value); bd = bd.setScale(2, RoundingMode.HALF_UP); return bd.toString(); } diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/CommonUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/CommonUtils.java index b08328aa46..b9808d3a2f 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/CommonUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/CommonUtils.java @@ -580,7 +580,7 @@ public class CommonUtils { } BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); StringBuffer stringBuffer = new StringBuffer(); - String line = null; + String line; while ((line = in.readLine()) != null) { stringBuffer.append(line + " "); diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/byteh/PayloadEncoder.java b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/byteh/PayloadEncoder.java index 6f3f27d43e..dcb5928cc9 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/byteh/PayloadEncoder.java +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/byteh/PayloadEncoder.java @@ -39,8 +39,10 @@ public class PayloadEncoder { switch (typeName) { case "com.autonavi.nge.map.LonLat": LonLat lonLat = (LonLat) value; - buffer.writeDouble(lonLat.getLon()); - buffer.writeDouble(lonLat.getLat()); + if(lonLat != null){ + buffer.writeDouble(lonLat.getLon()); + buffer.writeDouble(lonLat.getLat()); + } break; case "java.lang.Boolean": case "kotlin.Boolean": diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/utils/MainInfo.java b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/utils/MainInfo.java index c3817df850..11c6df6f8d 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/utils/MainInfo.java +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/utils/MainInfo.java @@ -2,6 +2,7 @@ package com.zhidaoauto.map.sdk.inner.utils; import java.io.File; import java.io.FileWriter; +import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; @@ -33,12 +34,11 @@ public class MainInfo { if (null == dir) { return; } - try { - FileWriter fw = new FileWriter((dir + "log.txt"), true); + try(FileWriter fw = new FileWriter((dir + "log.txt"), true)){ String date = dateFormat.format(new Date()); fw.write(date + " " + log + "\r\n"); - fw.close(); - } catch (Exception ex) { + } catch (IOException e) { + e.printStackTrace(); } } @@ -50,11 +50,11 @@ public class MainInfo { if (null == dir) { return; } - try { - FileWriter fw = new FileWriter((dir + "log.txt"), true); + + try(FileWriter fw = new FileWriter((dir + "log.txt"), true)){ e.printStackTrace(new PrintWriter(fw)); - fw.close(); - } catch (Exception ex) { + } catch (IOException ex) { + ex.printStackTrace(); } } From 2643dc23328783aa55b06817185251dba2375f93 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 7 Dec 2023 17:31:35 +0800 Subject: [PATCH 28/62] [6.2.4] code style --- .../com/mogo/och/sweeper/fragment/BaseSweeperTabFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/fragment/BaseSweeperTabFragment.java b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/fragment/BaseSweeperTabFragment.java index e9fc880d3e..f95d312fcb 100644 --- a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/fragment/BaseSweeperTabFragment.java +++ b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/fragment/BaseSweeperTabFragment.java @@ -516,7 +516,7 @@ public abstract class BaseSweeperTabFragment Date: Thu, 7 Dec 2023 18:16:41 +0800 Subject: [PATCH 29/62] [6.2.4] chain lig --- .../call/autopilot/CallerAutoPilotStatusListenerManager.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt index b589922a74..666e4772b0 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt @@ -38,7 +38,7 @@ object CallerAutoPilotStatusListenerManager : CallerBase if (oldValue != newValue) { - CallerTrace.write("AutoPilotStatus", mapOf("state" to newValue)) + CallerTrace.write("AutoPilotStatus", mapOf("AutoPilotStatus" to newValue)) M_LISTENERS.forEach { val listener = it.value listener.onAutopilotStatusResponse(newValue) From 92fb43aec8e691f6753544d8033da80f9d3d0a2c Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 7 Dec 2023 18:27:41 +0800 Subject: [PATCH 30/62] [6.2.4] fix bug of trace log --- .../call/autopilot/CallerAutopilotRecordListenerManager.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotRecordListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotRecordListenerManager.kt index e2fe9a0859..99a624bac0 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotRecordListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotRecordListenerManager.kt @@ -23,12 +23,12 @@ object CallerAutopilotRecordListenerManager : CallerBase Date: Thu, 7 Dec 2023 18:38:21 +0800 Subject: [PATCH 31/62] [6.2.4] style code --- .../call/autopilot/CallerParallelDrivingListenerManager.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingListenerManager.kt index 7c9407a9c3..a83c5db191 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingListenerManager.kt @@ -12,7 +12,7 @@ object CallerParallelDrivingListenerManager : CallerBase Date: Thu, 7 Dec 2023 18:43:11 +0800 Subject: [PATCH 32/62] =?UTF-8?q?[Taxi=E6=97=A0=E4=BA=BA=E5=8C=96]=20refac?= =?UTF-8?q?tor:=20DebugView=20=E5=A2=9E=E5=8A=A0=E5=B1=95=E7=A4=BA=20?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E4=BF=9D=E5=AD=98=E6=97=B6=E9=97=B4=EF=BC=8C?= =?UTF-8?q?=E6=9C=80=E6=96=B0=E6=95=B0=E6=8D=AE=E6=9F=A5=E8=AF=A2=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E6=97=B6=E9=97=B4=20=E7=AD=89=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E5=92=8C=E4=BC=98=E5=8C=96=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../callback/ITaxiTaskWithOrderCallback.kt | 1 + .../com/mogo/och/taxi/ui/debug/DebugView.kt | 30 +++++++++++++++++-- .../taxi/ui/task/TaxiCurrentTaskViewModel.kt | 3 ++ .../mogo/och/taxi/ui/task/TaxiTaskModel.kt | 8 ++++- .../src/main/res/layout/taxi_debug_order.xml | 21 +++++++++++-- 5 files changed, 56 insertions(+), 7 deletions(-) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt index 1cfc6109b2..d22671f0e2 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt @@ -4,6 +4,7 @@ import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean import com.mogo.och.taxi.bean.TrajectoryListRespBean interface ITaxiTaskWithOrderCallback { + fun onTaskWithOrderQuerySuccess(timeMillis: Long) fun onTaskWithOrderDataChanged(taskWithOrder: QueryCurrentTaskRespBean.Result?) fun onTaskCompleted(result: QueryCurrentTaskRespBean.Result?) fun onTaskStarted(result: QueryCurrentTaskRespBean.Result?) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt index 25556b87a0..d8499cdd83 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt @@ -42,10 +42,12 @@ import kotlinx.android.synthetic.main.taxi_debug_order.view.currentLineId import kotlinx.android.synthetic.main.taxi_debug_order.view.currentOrder import kotlinx.android.synthetic.main.taxi_debug_order.view.currentOrderStopInfo import kotlinx.android.synthetic.main.taxi_debug_order.view.currentOrderTrajectoryInfo +import kotlinx.android.synthetic.main.taxi_debug_order.view.currentOrderTrajectoryTime import kotlinx.android.synthetic.main.taxi_debug_order.view.currentStatus import kotlinx.android.synthetic.main.taxi_debug_order.view.currentTaskType import kotlinx.android.synthetic.main.taxi_debug_order.view.debugLogHistoryTextView import kotlinx.android.synthetic.main.taxi_debug_order.view.debugLogTitleTextView +import kotlinx.android.synthetic.main.taxi_debug_order.view.lastQuerySuccessDataTimestamps import kotlinx.android.synthetic.main.taxi_debug_order.view.orderEndSiteInfo import kotlinx.android.synthetic.main.taxi_debug_order.view.orderNo import kotlinx.android.synthetic.main.taxi_debug_order.view.orderPreLoadLines @@ -126,6 +128,16 @@ public class DebugView @JvmOverloads constructor( DateTimeUtil.yyyy_MM_dd_HH_mm_ss ) } + + private fun formatDateTimeString(timeMillis: Long): String { + if (timeMillis <= 0L) { + return "" + } + return DateTimeUtil.formatCalendarToString( + DateTimeUtil.formatLongToCalendar(timeMillis), + DateTimeUtil.yyyy_MM_dd_HH_mm_ss + ) + } } private val broadcastReceiver = object : BroadcastReceiver() { @@ -198,6 +210,7 @@ public class DebugView @JvmOverloads constructor( initCurrentBusinessMode() initViewByTaskData(TaxiTaskModel.getCurrentTaskWithOrder()) initDebugLogTextViewTitle() + initLastTaskDataQuerySuccess(0L) } private fun initCurrentBusinessMode() { @@ -207,11 +220,16 @@ public class DebugView @JvmOverloads constructor( "当前业务模式:${if (isRoutingVerifyMode) "自主算路验证模式" else "无人化运营流程模式"}" } + private fun initLastTaskDataQuerySuccess(timeMillis: Long) { + lastQuerySuccessDataTimestamps.text = + "【最新数据查询成功时间】${formatDateTimeString(timeMillis)}" + } + private fun initViewByTaskData(data: QueryCurrentTaskRespBean.Result?) { //release包下隐藏Mock按钮,避免司机误操作 btnContainer.visibility = if (AppUtils.isAppDebug()) View.VISIBLE else View.INVISIBLE val curContrail = TaxiTaskModel.getCurrentTaskTrajectory() - currentDataTimestamps.text = "【当前数据返回时间】${currentDateTimeString()}" + currentDataTimestamps.text = "【当前数据更新时间】${currentDateTimeString()}" currentCarStatus.text = "【当前车辆状态】${data?.servingStatus} --> ${if (data?.servingStatus == 1) "开始接单" else "暂停接单"}" currentTaskType.text = @@ -233,10 +251,12 @@ public class DebugView @JvmOverloads constructor( "【订单终点】${data?.order?.orderEndSite?.siteName} siteId=${data?.order?.orderEndSite?.siteId}" orderPreLoadLines.text = "【接驾任务预加载lineIds】${GsonUtil.jsonFromObject(data?.order?.planningLines)}" + currentOrderTrajectoryTime.text = + "【当前任务轨迹保存时间】contrailSaveTime=${formatDateTimeString(curContrail?.contrailSaveTime ?: 0L)} , contrailSaveTimeDPQP=${formatDateTimeString(curContrail?.contrailSaveTimeDPQP ?: 0L)}" currentOrderTrajectoryInfo.text = - "【当前任务Traj信息】TrajMd5=${curContrail?.csvFileMd5} , TrajDPQPMd5=${curContrail?.csvFileMd5DPQP}" + "【当前任务轨迹Traj信息】TrajMd5=${curContrail?.csvFileMd5} , TrajDPQPMd5=${curContrail?.csvFileMd5DPQP}" currentOrderStopInfo.text = - "【当前任务Stop信息】StopMd5=${curContrail?.txtFileMd5}, StopDPQPMd5=${curContrail?.txtFileMd5DPQP}" + "【当前任务轨迹Stop信息】StopMd5=${curContrail?.txtFileMd5}, StopDPQPMd5=${curContrail?.txtFileMd5DPQP}" } private fun initDebugLogTextViewTitle() { @@ -246,6 +266,10 @@ public class DebugView @JvmOverloads constructor( if (isRoutingVerifyMode) "自主算路验证模式关键节点日志(司机端)" else "无人化运营流程关键节点日志(司机端)" } + override fun onTaskWithOrderQuerySuccess(timeMillis: Long) { + initLastTaskDataQuerySuccess(timeMillis) + } + override fun onTaskWithOrderDataChanged(taskWithOrder: QueryCurrentTaskRespBean.Result?) { d(TAG, "onTaskWithOrderDataChanged") initViewByTaskData(taskWithOrder) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt index 7df5e66270..7e65cb6535 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt @@ -232,6 +232,9 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } } + override fun onTaskWithOrderQuerySuccess(timeMillis: Long) { + } + override fun onTaskWithOrderDataChanged(result: QueryCurrentTaskRespBean.Result?) { d(TAG, "onTaskWithOrderChanged = result = " + GsonUtil.jsonFromObject(result)) DebugView.printInfoMsg("[查询TaskWithOrder信息] 更新数据, 刷新UI") diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index 05adb6f86b..8b29762713 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -466,7 +466,7 @@ object TaxiTaskModel { startFailedCode: String, startFailedMessage: String ) { - DebugView.printInfoMsg("[启自驾] 执行失败,code=$startFailedCode, msg=$startFailedMessage") + DebugView.printErrorMsg("[启自驾] 执行失败,code=$startFailedCode, msg=$startFailedMessage") TaxiAnalyticsManager.getInstance() .triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage) if (mADASStatusCallback != null && !FunctionBuildConfig.isDemoMode) { @@ -723,6 +723,12 @@ object TaxiTaskModel { object : OchCommonServiceCallback { override fun onSuccess(data: QueryCurrentTaskRespBean?) { //DebugView.printInfoMsg("[查询TaskWithOrder信息] success") + val currentTimeStamp = System.currentTimeMillis() + mTaxiTaskWithOrderCallbackMap.forEach { + val listener = it.value + listener.onTaskWithOrderQuerySuccess(currentTimeStamp) + } + if (data?.data == null) { d( TAG, diff --git a/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_debug_order.xml b/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_debug_order.xml index e56f833b6c..876a2b1e1a 100644 --- a/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_debug_order.xml +++ b/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_debug_order.xml @@ -17,7 +17,7 @@ android:id="@+id/unmanedTaskOrderContainer" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/dp_10"> + android:layout_marginTop="@dimen/dp_5"> + + + + From 69ff9ff4f51ff21681269ce8882a6ade639bcdc2 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Thu, 7 Dec 2023 19:30:46 +0800 Subject: [PATCH 33/62] =?UTF-8?q?[6.2.4]=20[charter]=20[=E8=BF=98=E8=BD=A6?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E5=90=8E=E9=80=80=E5=87=BA=E8=87=AA=E9=A9=BE?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt index a5dee16a6a..afa4cbcab6 100644 --- a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt +++ b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt @@ -632,6 +632,7 @@ class DriverM1Model { if (data != null && data.code == 0){ mOrderCallback?.updateReturnCarStatus(true) queryCurrentServiceStatus() + CallerAutoPilotControlManager.cancelAutoPilot() } } From bb330bdf69bc3842495bc16d24b896c8eebd359c Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Thu, 7 Dec 2023 20:09:02 +0800 Subject: [PATCH 34/62] =?UTF-8?q?[6.2.4][Feat]=E6=96=B0=E5=A2=9EQUIC?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E5=BB=B6=E6=97=B6=E5=9B=9E=E8=B0=83=E5=92=8C?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevaToolsProvider.kt | 4 ++ .../weaknetwork/WeakNetworkStrategy.kt | 13 +++++- .../hmi/ui/setting/DebugSettingView.kt | 40 +++++++++++++++++++ .../main/res/layout/view_debug_setting.xml | 2 +- .../api/devatools/IDevaToolsProvider.kt | 2 + .../call/devatools/CallerDevaToolsManager.kt | 4 ++ .../com/mogo/commons/constants/HostConst.java | 4 +- gradle.properties | 16 ++++---- 8 files changed, 72 insertions(+), 13 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index 6926e45bec..3ea8339543 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -407,4 +407,8 @@ class DevaToolsProvider : IDevaToolsProvider { override fun block(): IMoGoBlockProvider? = block override fun usage(): IMoGoCpuUsageProvider? = usage + + override fun setNetworkMode(isDebug: Boolean) { + WeakNetworkStrategy.setDebug(isDebug) + } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/WeakNetworkStrategy.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/WeakNetworkStrategy.kt index ce2597b208..1fe1cf76da 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/WeakNetworkStrategy.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/WeakNetworkStrategy.kt @@ -15,7 +15,7 @@ object WeakNetworkStrategy { private const val TAG = "WeakNetworkStrategy" // 记录到链路日志中的时间间隔 - private const val OUTPUT_TIME_INTERVAL = 15000 + private const val OUTPUT_TIME_INTERVAL = 2500 private const val WEAK_HTTP_RTT = 1300 @@ -23,6 +23,8 @@ object WeakNetworkStrategy { private var lastOutputTime = 0L + private var isDebug = false + private val lock by lazy { ReentrantReadWriteLock() } @@ -53,6 +55,10 @@ object WeakNetworkStrategy { }) } + fun setDebug(isDebug: Boolean) { + this.isDebug = isDebug + } + fun stopListen() { setListener(null) } @@ -63,10 +69,13 @@ object WeakNetworkStrategy { try { val currentTime = System.currentTimeMillis() if (currentTime - lastOutputTime > OUTPUT_TIME_INTERVAL) { + if (isDebug) { + invokeWeakResult("url为:$url, 耗时为:$timeStamp${if (isFail) " 连接失败!" else ""}") + } if (timeStamp >= WEAK_HTTP_RTT) { ToastUtils.showShort("当前网络质量差!") } else if (timeStamp in 300 until WEAK_HTTP_RTT) { - invokeWeakResult("url为:$url, 耗时为:$timeStamp${if (isFail) " 连接失败!" else ""}") +// invokeWeakResult("url为:$url, 耗时为:$timeStamp${if (isFail) " 连接失败!" else ""}") SdtManager.startActiveCheck() } lastOutputTime = currentTime diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index b5758c6c39..8e05d9b313 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -11,6 +11,7 @@ import android.os.Build import android.os.Process import android.text.Html import android.util.AttributeSet +import android.util.Log import android.view.LayoutInflater import android.view.View import androidx.annotation.RequiresApi @@ -21,6 +22,7 @@ import androidx.core.view.MenuCompat import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import chassis.Chassis +import com.mogo.cloud.network.cronet.NetworkQualityListener import com.mogo.cloud.network.cronet.QuicConfig import com.mogo.cloud.passport.MoGoAiCloudClient import com.mogo.cloud.passport.MoGoAiCloudClientConfig @@ -86,6 +88,7 @@ import com.mogo.eagle.core.utilcode.util.* import com.mogo.map.MogoData.Companion.mogoMapData import com.mogo.map.uicontroller.VisualAngleMode import com.mogo.map.uicontroller.VisualAngleMode.* +import com.zhjt.service.chain.ChainLog import kotlinx.android.synthetic.main.view_debug_setting.view.* import kotlinx.coroutines.* import mogo.telematics.pad.MessagePad @@ -773,7 +776,35 @@ internal class DebugSettingView @JvmOverloads constructor( FunctionBuildConfig.isObuWarningFusionUnion = isChecked } tbCronet.setOnCheckedChangeListener { _, isChecked -> + if (!isChecked) { + CallerDevaToolsManager.setNetworkMode(true) + } QuicConfig.setEnable(context, isChecked) + QuicConfig.setNetworkListener(object : NetworkQualityListener { + override fun onLatencyObservation(rttMs: Int, url: String?) { + invokeCronetResult("****** Cronet Request Completed, the latency is $rttMs ms;url is $url") + } + + override fun onFailed(error: String?, url: String?) { + invokeCronetResult("****** Cronet Request onFailed, error is $error;url is $url") + } + + override fun onCanceled(url: String?) { + invokeCronetResult("****** Cronet Request onFailed, url is: $url") + } + + override fun onRttObservation(rttMs: Int, whenMs: Long, source: Int) { + invokeCronetResult("rttMs is:$rttMs ms,source is:$source") + } + + override fun onThroughputObservation( + throughputKbps: Int, + whenMs: Long, + source: Int + ) { + invokeCronetResult("downstream throughput is:$throughputKbps,source is:$source") + } + }) } //重启工控机所有节点 @@ -2310,4 +2341,13 @@ internal class DebugSettingView @JvmOverloads constructor( } } + @ChainLog( + linkChainLog = ChainConstant.CHAIN_TYPE_WEAK_NETWORK, + linkCode = ChainConstant.CHAIN_SOURCE_WEAK_NETWORK, + nodeAliasCode = ChainConstant.CHAIN_CODE_RECORD_WEAK_NETWORK, + paramIndexes = [0] + ) + private fun invokeCronetResult(json: String) { + Log.d("CronetNetwork", json) + } } \ No newline at end of file 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 a306e10e77..5c813a0e19 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 @@ -2372,7 +2372,7 @@ android:padding="@dimen/dp_20" android:background="@drawable/radio_button_normal_background_right" android:textColor="#000" - android:textOff="开启QUIC协议(服务器暂不支持)" + android:textOff="开启QUIC协议(目前QA环境可用)" android:textOn="关闭QUIC协议" android:textSize="@dimen/dp_24" /> diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt index 8a4a6c716b..16f2b6358d 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt @@ -249,4 +249,6 @@ interface IDevaToolsProvider : IProvider { * 各线程CPU使用率 */ fun usage(): IMoGoCpuUsageProvider? + + fun setNetworkMode(isDebug: Boolean) } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt index faab951939..c5522e6937 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt @@ -291,4 +291,8 @@ object CallerDevaToolsManager { fun block(): IMoGoBlockProvider? = devaToolsProviderApi?.block() fun usage(): IMoGoCpuUsageProvider? = devaToolsProviderApi?.usage() + + fun setNetworkMode(isDebug: Boolean) { + devaToolsProviderApi?.setNetworkMode(isDebug) + } } \ No newline at end of file diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/constants/HostConst.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/constants/HostConst.java index 6ec57ac8d5..8e8b994df7 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/constants/HostConst.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/constants/HostConst.java @@ -4,10 +4,10 @@ import com.mogo.commons.debug.DebugConfig; import com.mogo.eagle.core.data.config.FunctionBuildConfig; public class HostConst { - public static final String HOST_DEV = "http://eagle-qa.zhidaozhixing.com"; + public static final String HOST_DEV = "https://eagle-qa.zhidaozhixing.com"; public static final String HOST_RELEASE = "http://eagle-mis.zhidaozhixing.com"; - public static final String HOST_EAGLE_QA = "http://eagle-dns-qa.zhidaozhixing.com/"; + public static final String HOST_EAGLE_QA = "https://eagle-dns-qa.zhidaozhixing.com/"; public static final String HOST_EAGLE_RELEASE = "http://eagle-dns.zhidaozhixing.com/"; public static String getHost() { diff --git a/gradle.properties b/gradle.properties index 2ff589d4e4..f4ab603a58 100644 --- a/gradle.properties +++ b/gradle.properties @@ -64,21 +64,21 @@ bytex.ASM_API=ASM7 LOGLIB_VERSION=1.10.7 ######## MogoAiCloudSDK Version ######## # 网络请求LOGLIB_VERSION -MOGO_NETWORK_VERSION=1.4.7.19 +MOGO_NETWORK_VERSION=1.4.7.20 # 鉴权 -MOGO_PASSPORT_VERSION=1.4.7.19 +MOGO_PASSPORT_VERSION=1.4.7.20 # 长链接 -MOGO_SOCKET_VERSION=1.4.7.19 +MOGO_SOCKET_VERSION=1.4.7.20 # 数据采集 -MOGO_REALTIME_VERSION=1.4.7.19 +MOGO_REALTIME_VERSION=1.4.7.20 # 直播推流 -MOGO_LIVE_VERSION=1.4.7.19 +MOGO_LIVE_VERSION=1.4.7.20 # 直播拉流 -MOGO_TRAFFICLIVE_VERSION=1.4.7.19 +MOGO_TRAFFICLIVE_VERSION=1.4.7.20 # 定位服务 -MOGO_LOCATION_VERSION=1.4.7.19 +MOGO_LOCATION_VERSION=1.4.7.20 # 远程通讯模块 -MOGO_TELEMATIC_VERSION=1.4.7.19 +MOGO_TELEMATIC_VERSION=1.4.7.20 ######## MogoAiCloudSDK Version ######## # 自研地图 MAP_SDK_VERSION=3.3.0.10 From 9782bd0045bf0fc128933701c6b7e6a65f101659 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 7 Dec 2023 20:33:35 +0800 Subject: [PATCH 35/62] =?UTF-8?q?[6.2.4]=E5=A2=9E=E5=8A=A0=E9=87=87?= =?UTF-8?q?=E9=9B=86=E7=B1=BB=E5=9E=8B=E3=80=81=E9=95=BF=E4=B9=85=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/BadCaseManager.kt | 5 +- .../badcase/biz/AIDataCollectWindow.kt | 4 +- .../badcase/biz/BadCaseManagerView.kt | 4 ++ .../badcase/biz/InitiativeBadCaseWindow.kt | 5 +- .../biz/adapter/BagManagerListAdapter.kt | 25 +++++++-- .../badcase/consts/BadCaseConfig.kt | 52 ++++++++++++++++--- 6 files changed, 83 insertions(+), 12 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index 0651537b66..4c3ffe9e2e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -272,8 +272,11 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis ) } bag录制失败" ) + //获取录包失败集合 + val recordFail = BadCaseConfig.getRecordFailSet() //录包失败时,保存录包失败状态 - BadCaseConfig.bagRecordFailList.add(recordPanel.key) + recordFail.add(recordPanel.key.toString()) + BadCaseConfig.setRecordFailSet(recordFail) } return } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt index 322f0f9d63..11891d2e42 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt @@ -201,8 +201,10 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener //开始录制 if(recordPanel.stat == 300){ BadCaseConfig.recordKeyList.add(recordPanel.key) + val aiDataSet = BadCaseConfig.getAiDataSet() //保存录包状态 - BadCaseConfig.bagResourceList.add(recordPanel.key) + aiDataSet.add(recordPanel.key.toString()) + BadCaseConfig.setAiDataSet(aiDataSet) } if (recordFileName == null) { recordFileName = recordPanel.filename diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt index de4836a97d..ae9c652dfa 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt @@ -27,6 +27,7 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.zhidao.loglib.download.DownloadManager import com.zhjt.mogo_core_function_devatools.R import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.BagManagerListAdapter +import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig.bagManagerList import com.zhjt.mogo_core_function_devatools.badcase.record.Audition import kotlinx.android.synthetic.main.layout_badcase_manager.view.* @@ -237,6 +238,9 @@ class BadCaseManagerView @JvmOverloads constructor( val linearLayoutManager = LinearLayoutManager(context) rvBagList.layoutManager = linearLayoutManager rvBagList.adapter = bagManagerListAdapter + bagManagerListAdapter?.setRecordSet(BadCaseConfig.getInitiativeRecordSet(), + BadCaseConfig.getAiDataSet(),BadCaseConfig.getRecordFailSet()) + //音频文件播放 // Audition.getInstance().playOrStop("/mnt/sdcard/mogo/test.wav") diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index e803341c6e..7371773efb 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -574,8 +574,11 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList //开始录制 if(recordPanel.stat == 300){ BadCaseConfig.recordKeyList.add(recordPanel.key) + //获取当前主动录包集合 + val recordSet = BadCaseConfig.getInitiativeRecordSet() //保存录包状态 - BadCaseConfig.bagResourceList.add(recordPanel.key) + recordSet.add(recordPanel.key.toString()) + BadCaseConfig.setInitiativeRecordSet(recordSet) //开启高精地图截图 CallerMapUIServiceManager.getMapUIController()?.getMapScreenShot() } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt index 72d4174393..8c8d421184 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt @@ -32,11 +32,24 @@ class BagManagerListAdapter: RecyclerView.Adapter() { private var bagClickListener: BagClickListener ?= null private val format = DecimalFormat("0.00") + private var initiativeSet: HashSet ?= null //录包来源为主动录包集合 + private var aiDataSet: HashSet ?= null //录包来源为AI数据采集集合 + private var recordFailSet: HashSet ?= null //录包失败集合 + fun setData(data: List?){ this.data = data notifyDataSetChanged() } + /** + * 设置录包缓存信息 + */ + fun setRecordSet(initiative: HashSet,aiData: HashSet,recordFail: HashSet){ + initiativeSet = initiative + aiDataSet = aiData + recordFailSet = recordFail + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return if(viewType == 1){ val view = LayoutInflater.from(parent.context) @@ -98,7 +111,7 @@ class BagManagerListAdapter: RecyclerView.Adapter() { bagInfoEntity.description?.let { des-> - if(BadCaseConfig.bagRecordFailList.contains(bagInfoEntity.key)){ + if(!recordFailSet.isNullOrEmpty() && recordFailSet!!.contains(bagInfoEntity.key.toString())){ //如果在录包失败列表中找到该Bag包,则该包为录包失败状态 holder.tvBagReportStatus.text = "录包失败" holder.tvBagReportStatus.setBackgroundResource(R.drawable.bag_reported_button_bg) @@ -142,11 +155,17 @@ class BagManagerListAdapter: RecyclerView.Adapter() { } } - //录包来源:自动 or 人工 - if(BadCaseConfig.bagResourceList.contains(bagInfoEntity.key)){ + //录包来源:自动 or 人工 or 采集 + if(!initiativeSet.isNullOrEmpty() && initiativeSet!!.contains(bagInfoEntity.key.toString())){ //在该列表中找到Bag包的Key则代表该Bag为人工录包 holder.tvBagResource.text = "人工" holder.tvBagResource.setBackgroundResource(R.drawable.bag_artificial_button_bg) + }else if(!aiDataSet.isNullOrEmpty() && aiDataSet!!.contains(bagInfoEntity.key.toString())){ + //AI数据采集 + holder.tvBagResource.text = "采集" + holder.tvBagResource.setBackgroundResource(R.drawable.bag_artificial_button_bg) + //AI数据采集不显示截图播放按钮 + holder.ivMapScreen.visibility = View.INVISIBLE }else{ //自动录包 holder.tvBagResource.text = "自动" diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt index 26f9fc5f96..ec26cca0c7 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt @@ -3,6 +3,7 @@ package com.zhjt.mogo_core_function_devatools.badcase.consts import com.mogo.eagle.core.data.deva.badcase.BagInfoEntity import com.mogo.eagle.core.data.deva.report.ReportEntity import com.mogo.eagle.core.data.msgbox.FMInfoMsg +import com.mogo.eagle.core.utilcode.util.SPUtils /** * @author XuXinChao @@ -56,11 +57,50 @@ object BadCaseConfig { //Bag包管理列表 @JvmField var bagManagerList: ArrayList = ArrayList() - //Bag包来源,将主动录包的Key保存在该列表中,不在该列表中的在录包管理页面的Bag包视为被动录包 - @JvmField - var bagResourceList: ArrayList = ArrayList() - //Bag包录包失败状态列表,当Bag录制失败时保存在该列表,当Bag包在该列表中不存在时即视为录包成功 - @JvmField - var bagRecordFailList: ArrayList = ArrayList() + private const val resourceInitiative = "RESOURCE_INITIATIVE" //录包来源为主动录包 + private const val resourceAiData = "RESOURCE_AI_DATA" //录包来源为AI数据采集 + private const val recordFail = "RECORD_FAIL" //录包失败 + + /** + * 获取主动录包集合 + */ + fun getInitiativeRecordSet(): HashSet{ + return SPUtils.getInstance().getStringSet(resourceInitiative,HashSet()) as HashSet + } + + /** + * 保存主动录包集合 + */ + fun setInitiativeRecordSet(initiativeSet: Set){ + SPUtils.getInstance().put(resourceInitiative,initiativeSet) + } + + /** + * 获取AI数据采集集合 + */ + fun getAiDataSet(): HashSet{ + return SPUtils.getInstance().getStringSet(resourceAiData,HashSet()) as HashSet + } + + /** + * 保存AI数据采集集合 + */ + fun setAiDataSet(aiDataSet: Set){ + SPUtils.getInstance().put(resourceAiData,aiDataSet) + } + + /** + * 获取录包失败集合 + */ + fun getRecordFailSet(): HashSet{ + return SPUtils.getInstance().getStringSet(recordFail,HashSet()) as HashSet + } + + /** + * 保存录包失败集合 + */ + fun setRecordFailSet(recordFailSet: Set){ + SPUtils.getInstance().put(recordFail,recordFailSet) + } } \ No newline at end of file From 8e43c8976007acae7daef4c5d60a24dfea0d763e Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 7 Dec 2023 21:05:23 +0800 Subject: [PATCH 36/62] =?UTF-8?q?[6.2.4]AI=E6=95=B0=E6=8D=AE=E9=87=87?= =?UTF-8?q?=E9=9B=86=E4=BF=A1=E6=81=AF=E4=B8=8A=E6=8A=A5=E5=88=B0=E5=B7=A5?= =?UTF-8?q?=E6=8E=A7=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/AIDataCollectWindow.kt | 21 ++++++++++++++++--- .../core/data/deva/badcase/BagInfoEntity.kt | 2 +- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt index 11891d2e42..5a653f02b9 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt @@ -12,6 +12,8 @@ import androidx.recyclerview.widget.RecyclerView import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.deva.badcase.AiDataEntity +import com.mogo.eagle.core.data.deva.badcase.BagDescriptionEntity +import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.api.devatools.badcase.BadCaseNetListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager @@ -67,11 +69,13 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener private var aiDataListAdapter: AiDataListAdapter?= null @Volatile - private var recordKey: String? = null //录制bag包key + private var recordKey: Long = 0 //录制bag包key @Volatile private var recordFileName: String? = null //录制文件包名 + private var bagManagerEntity: BagManagerEntity = BagManagerEntity() + private lateinit var mFloatLayout: View private var mInViewX = 0f private var mInViewY = 0f @@ -143,12 +147,15 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener ToastUtils.showShort("请选择最少一个原因") return@setOnClickListener } + //上报到工控机 + CallerAutoPilotControlManager.recordCause(recordKey.toString(),recordFileName,"", + collectReason.toString()) GlobalScope.launch { val uploadResult = presenter.upload(mutableMapOf().also { itx -> itx["carLicense"] = AppConfigInfo.plateNumber ?: "" //车牌号 itx["filename"] = recordFileName ?: "" //bag包文件地址 itx["filesize"] = "0" //bag包文件大小 - itx["key"] = recordKey ?: "" //key + itx["key"] = recordKey.toString() //key itx["reason"] = collectReason.toString() //采集原因 itx["duration"] = "20" //采集时长,固定为20S itx["startTime"] = System.currentTimeMillis().toString() //上报时间(时间戳格式) @@ -166,6 +173,14 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener TipToast.shortTip("上报失败") } else { TipToast.shortTip("上报成功") + //将上报BI的结果同步给工控机记录保存 + recordKey?.let { + val descReqEntity = BagDescriptionEntity(collectReason.toString(),false,"",true) + bagManagerEntity.reqType = 5 + bagManagerEntity.keyReq = it + bagManagerEntity.descReq = descReqEntity + CallerAutoPilotControlManager.sendBagManagerCmd(bagManagerEntity) + } BadCaseConfig.windowNum-- clickListener?.closeWindow() } @@ -197,7 +212,7 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) { CallerLogger.d("${M_DEVA}${TAG}", "-- 收到工控机录制任务回调 -- $recordPanel") ThreadUtils.runOnUiThread { - recordKey = recordPanel.key.toString() + recordKey = recordPanel.key //开始录制 if(recordPanel.stat == 300){ BadCaseConfig.recordKeyList.add(recordPanel.key) diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/badcase/BagInfoEntity.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/badcase/BagInfoEntity.kt index 143aec776a..d1123ae7dc 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/badcase/BagInfoEntity.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/badcase/BagInfoEntity.kt @@ -9,7 +9,7 @@ class BagInfoEntity(){ var key: Long = 0// bag key值 var totalSize: Long = 0// 所有子包或合并后的包的总大小 var timestamp: String = ""// 时间戳 - var bagPath: String ?= null// bag所在路径 + var bagPath: String = ""// bag所在路径 var mergeStat: Boolean = false// 合并状态 var uploadStat: Boolean = false// 上传cos桶状态 var description: BagDescriptionEntity?= null// 包描述信息 From 29033b21d92b3a7423a41c3b360ec4e0af8ecff6 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 7 Dec 2023 21:20:27 +0800 Subject: [PATCH 37/62] =?UTF-8?q?[6.2.4]=E9=9D=9ETaxi=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E5=B1=8F=E4=B8=8D=E6=98=BE=E7=A4=BA=E6=97=A0=E4=BA=BA=E5=8C=96?= =?UTF-8?q?=E6=BC=94=E7=BB=83=E6=8B=89=E5=8F=96=E6=97=B6=E9=97=B4=E9=97=B4?= =?UTF-8?q?=E9=9A=94Title?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eagle/core/function/hmi/ui/setting/SOPSettingView.kt | 8 ++++++-- .../src/main/res/layout/view_sop_setting.xml | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index b01319581d..2c888da2b4 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.hmi.ui.setting import android.content.Context import android.util.AttributeSet -import android.util.Log import android.view.LayoutInflater import android.view.View import android.widget.Toast @@ -31,7 +30,6 @@ import com.mogo.eagle.core.function.call.setting.CallerSopSettingManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager import com.mogo.eagle.core.function.call.vehicle.CallerSweeperModeListenerManager import com.mogo.eagle.core.function.hmi.R -import com.mogo.eagle.core.function.hmi.ui.tools.DockerRebootDialog import com.mogo.eagle.core.function.hmi.ui.tools.SweeperModeChangedConfirmDialog import com.mogo.eagle.core.function.call.unmanned.CallerUnmannedListenerManager import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog.Companion.hmiAction @@ -84,6 +82,7 @@ import kotlinx.android.synthetic.main.view_sop_setting.view.scV2nPnc import kotlinx.android.synthetic.main.view_sop_setting.view.scWeakNetSlowDown import kotlinx.android.synthetic.main.view_sop_setting.view.sopLayout import kotlinx.android.synthetic.main.view_sop_setting.view.tvOverTakeLimit +import kotlinx.android.synthetic.main.view_sop_setting.view.tvPullTimeTitle import kotlinx.android.synthetic.main.view_sop_setting.view.tvSpeed import kotlinx.android.synthetic.main.view_sop_setting.view.tvSpeedOverTakeLimit import kotlinx.android.synthetic.main.view_sop_setting.view.tvSpeedThresholdTitle @@ -789,6 +788,11 @@ internal class SOPSettingView @JvmOverloads constructor( View.VISIBLE else View.GONE + tvPullTimeTitle.visibility = + if(AppIdentityModeUtils.isTaxiDriver(FunctionBuildConfig.appIdentityMode)) + View.VISIBLE + else + View.GONE /** * 魔方sop运营相关配置 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml index cad768784f..92488dd246 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml @@ -586,7 +586,7 @@ android:textColor="@color/black" android:textSize="32dp" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/scLineRoutingVerify" /> + app:layout_constraintTop_toBottomOf="@id/scShowBagRecordWindow" /> Date: Thu, 7 Dec 2023 17:03:09 +0800 Subject: [PATCH 38/62] [6.2.4] [fix] [set value] --- .../src/main/java/com/mogo/och/data/bean/BusRoutesResult.java | 2 +- .../driver/src/main/java/com/mogo/och/bus/model/OrderModel.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusRoutesResult.java b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusRoutesResult.java index 59b6a1cc87..3e9a4cffc5 100644 --- a/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusRoutesResult.java +++ b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusRoutesResult.java @@ -57,7 +57,7 @@ public class BusRoutesResult { } public void setSite(List site) { - this.sites = sites; + this.sites = site; } public long getTaskTime() { diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java index 6ecc30ac08..b43791e1c5 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java @@ -700,7 +700,7 @@ public class OrderModel { beanPre.setLeaving(false); sites.set(currentIndex -1,beanPre); } - busRoutesResult.setSite(sites); + //busRoutesResult.setSite(sites); pushCacheTransferData(busRoutesResult); From 03eab8ba7f5ed0ee24c51a6a4f0cb1f31188aa0c Mon Sep 17 00:00:00 2001 From: yangyakun Date: Thu, 7 Dec 2023 19:30:46 +0800 Subject: [PATCH 39/62] =?UTF-8?q?[6.2.4]=20[charter]=20[=E8=BF=98=E8=BD=A6?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E5=90=8E=E9=80=80=E5=87=BA=E8=87=AA=E9=A9=BE?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt index a5dee16a6a..afa4cbcab6 100644 --- a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt +++ b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt @@ -632,6 +632,7 @@ class DriverM1Model { if (data != null && data.code == 0){ mOrderCallback?.updateReturnCarStatus(true) queryCurrentServiceStatus() + CallerAutoPilotControlManager.cancelAutoPilot() } } From 62fd8336d6fd330ca2f94fff376746695d702d23 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Fri, 8 Dec 2023 11:12:25 +0800 Subject: [PATCH 40/62] [6.2.4] code clean --- .../java/com/mogo/och/bus/BusProvider.java | 2 +- .../com/mogo/och/bus/view/SlidePanelView.java | 14 +- .../bus/passenger/MogoOCHBusPassenger.java | 2 +- .../java/com/mogo/och/bus/BusProvider.java | 2 +- .../och/sweepercloud/SweeperProvider.java | 2 +- .../com/mogo/och/sweeper/SweeperProvider.java | 2 +- .../mogo/och/sweeper/view/SlidePanelView.java | 15 +- .../java/com/mogo/och/taxi/TaxiProvider.java | 2 +- .../och/taxi/ui/TaxiGrabOrderFragment.java | 5 +- .../taxi/ui/TaxiPersonalDialogFragment.java | 24 +- .../taxi/passenger/MogoOCHTaxiPassenger.java | 2 +- .../taxi/passenger/MogoOCHTaxiPassenger.java | 2 +- .../eagle/core/function/smp/CarOverlay.java | 284 ------------------ .../core/data/map/entity/MarkerUserInfo.java | 2 +- .../eagle/core/utilcode/geometry/Real.java | 2 +- .../storage/lrucache/DiskCacheManager.java | 2 +- .../eagle/core/utilcode/util/CommonUtils.java | 11 +- .../eagle/core/utilcode/util/FileUtils.java | 1 - .../eagle/core/utilcode/util/ImageUtils.java | 6 +- .../eagle/core/utilcode/util/SpanUtils.java | 6 +- 20 files changed, 50 insertions(+), 338 deletions(-) delete mode 100644 core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/CarOverlay.java diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/BusProvider.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/BusProvider.java index 38a3fbd0b2..998d7b5d4b 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/BusProvider.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/BusProvider.java @@ -79,7 +79,7 @@ public class BusProvider implements IMogoOCH { @NotNull @Override public String getFunctionName() { - return null; + return TAG; } @Nullable diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/view/SlidePanelView.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/view/SlidePanelView.java index 7219b7b20d..0a80b20be0 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/view/SlidePanelView.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/view/SlidePanelView.java @@ -66,8 +66,8 @@ public class SlidePanelView extends View { private static int BLOCK_START_Y = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(),15); private static int NORMAL_TEXT_MARGIN_LEFT = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(),40); private static int NORMAL_TEXT_MARGIN_RIGHT = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(),60); - private static int SHORT_TEXT_MARGIN_LEFT = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(),60);; - private static int SHORT_TEXT_MARGIN_RIGHT = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(),70);; + private static int SHORT_TEXT_MARGIN_LEFT = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(),60); + private static int SHORT_TEXT_MARGIN_RIGHT = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(),70); private int textMarginLeft = NORMAL_TEXT_MARGIN_LEFT; private int textMarginRight = NORMAL_TEXT_MARGIN_RIGHT; @@ -247,10 +247,10 @@ public class SlidePanelView extends View { } private void startBlockBackAnim() { - ObjectAnimator blockBackanimator = ObjectAnimator.ofInt(this, "blockOffset", blockOffset, 0); - blockBackanimator.setInterpolator(new DecelerateInterpolator()); - blockBackanimator.setDuration(1000L * blockOffset / getWidth()); - blockBackanimator.start(); + ObjectAnimator blockBackAnimator = ObjectAnimator.ofInt(this, "blockOffset", blockOffset, 0); + blockBackAnimator.setInterpolator(new DecelerateInterpolator()); + blockBackAnimator.setDuration(1000L * blockOffset / getWidth()); + blockBackAnimator.start(); lastX = 0; } @@ -263,7 +263,7 @@ public class SlidePanelView extends View { gradientMatrix.setTranslate(matrixTranslate, 0); textGradient.setLocalMatrix(gradientMatrix); canvas.save(); - canvas.drawText(blockText, (float) (blockWidth + BLOCK_START_X + textMarginLeft), textOffset, textPaint); + canvas.drawText(blockText, (float) (blockWidth + BLOCK_START_X + textMarginLeft), (float) textOffset, textPaint); canvas.restore(); // 画滑块 canvas.drawBitmap(bmBlock, (float) (BLOCK_START_X + blockOffset), (float) BLOCK_START_Y, blockPaint); diff --git a/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java b/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java index cf1643aa61..336ba9d4c3 100644 --- a/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java +++ b/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java @@ -57,7 +57,7 @@ public class MogoOCHBusPassenger implements IMogoOCH { @NotNull @Override public String getFunctionName() { - return null; + return TAG; } @Override diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/BusProvider.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/BusProvider.java index 38a3fbd0b2..998d7b5d4b 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/BusProvider.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/BusProvider.java @@ -79,7 +79,7 @@ public class BusProvider implements IMogoOCH { @NotNull @Override public String getFunctionName() { - return null; + return TAG; } @Nullable diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/SweeperProvider.java b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/SweeperProvider.java index c24d2c0b49..e33ab7e207 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/SweeperProvider.java +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/SweeperProvider.java @@ -66,7 +66,7 @@ public class SweeperProvider implements IMogoOCH { @NotNull @Override public String getFunctionName() { - return null; + return TAG; } @Nullable diff --git a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/SweeperProvider.java b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/SweeperProvider.java index 6f14326a7c..f9224a03e0 100644 --- a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/SweeperProvider.java +++ b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/SweeperProvider.java @@ -66,7 +66,7 @@ public class SweeperProvider implements IMogoOCH { @NotNull @Override public String getFunctionName() { - return null; + return TAG; } @Nullable diff --git a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/view/SlidePanelView.java b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/view/SlidePanelView.java index f7171bce89..4579bb4e06 100644 --- a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/view/SlidePanelView.java +++ b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/view/SlidePanelView.java @@ -49,6 +49,7 @@ public class SlidePanelView extends View { NORMAL_TEXT_MARGIN_RIGHT = (int) mTypedArray.getDimension(R.styleable.SlidePanelView_NORMAL_TEXT_MARGIN_RIGHT, NORMAL_TEXT_MARGIN_RIGHT); SHORT_TEXT_MARGIN_LEFT = (int) mTypedArray.getDimension(R.styleable.SlidePanelView_SHORT_TEXT_MARGIN_LEFT, SHORT_TEXT_MARGIN_LEFT); SHORT_TEXT_MARGIN_RIGHT = (int) mTypedArray.getDimension(R.styleable.SlidePanelView_SHORT_TEXT_MARGIN_RIGHT, SHORT_TEXT_MARGIN_RIGHT); + mTypedArray.recycle(); init(); } @@ -87,7 +88,7 @@ public class SlidePanelView extends View { private ObjectAnimator matrixAnim; private String blockText = STRING_SLIDE_TO_RIGHT; - private Paint.FontMetrics blockTextMetrics = new Paint.FontMetrics(); + private final Paint.FontMetrics blockTextMetrics = new Paint.FontMetrics(); private static final int GRADIENT_OFFSET = 200; @@ -239,10 +240,10 @@ public class SlidePanelView extends View { } private void startBlockBackAnim() { - ObjectAnimator blockBackanimator = ObjectAnimator.ofInt(this, "blockOffset", blockOffset, 0); - blockBackanimator.setInterpolator(new DecelerateInterpolator()); - blockBackanimator.setDuration(1000 * blockOffset / getWidth()); - blockBackanimator.start(); + ObjectAnimator blockBackAnimator = ObjectAnimator.ofInt(this, "blockOffset", blockOffset, 0); + blockBackAnimator.setInterpolator(new DecelerateInterpolator()); + blockBackAnimator.setDuration(1000L * blockOffset / getWidth()); + blockBackAnimator.start(); lastX = 0; } @@ -255,10 +256,10 @@ public class SlidePanelView extends View { gradientMatrix.setTranslate(matrixTranslate, 0); textGradient.setLocalMatrix(gradientMatrix); canvas.save(); - canvas.drawText(blockText, blockWidth + BLOCK_START_X + textMarginLeft, textOffset, textPaint); + canvas.drawText(blockText, (float) (blockWidth + BLOCK_START_X + textMarginLeft), (float) textOffset, textPaint); canvas.restore(); // 画滑块 - canvas.drawBitmap(bmBlock, BLOCK_START_X + blockOffset, BLOCK_START_Y, blockPaint); + canvas.drawBitmap(bmBlock, (float) (BLOCK_START_X + blockOffset), (float) BLOCK_START_Y, blockPaint); } public interface OnSlidePanelMoveToEndListener { diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/TaxiProvider.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/TaxiProvider.java index 793ef8c8e1..4e8031561a 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/TaxiProvider.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/TaxiProvider.java @@ -79,7 +79,7 @@ class TaxiProvider implements IMogoOCH { @NotNull @Override public String getFunctionName() { - return null; + return TAG; } @Nullable diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiGrabOrderFragment.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiGrabOrderFragment.java index 9ae6438b8f..8850cc35ef 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiGrabOrderFragment.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiGrabOrderFragment.java @@ -83,7 +83,6 @@ public class TaxiGrabOrderFragment extends BaseTaxiUIFragment implements View.On }else if (v.getId() == R.id.grab_order_tv){ if (!mOrderGrabBt.getText().toString().equals("抢单中...")){ getOchTaxiFragment().grabOrder(); - return; } } } @@ -151,7 +150,7 @@ public class TaxiGrabOrderFragment extends BaseTaxiUIFragment implements View.On } mGrabSuccessAnim.start(); //开启动画结束的监听 - long delayMillis = mGrabSuccessAnim.getDuration(0) * mGrabSuccessAnim.getNumberOfFrames(); + long delayMillis = (long) mGrabSuccessAnim.getDuration(0) * mGrabSuccessAnim.getNumberOfFrames(); UiThreadHandler.postDelayed(new Runnable() { @Override public void run() { @@ -174,7 +173,7 @@ public class TaxiGrabOrderFragment extends BaseTaxiUIFragment implements View.On mGrabFailureAnim = (AnimationDrawable)mGrabResultAnimView.getDrawable(); mGrabFailureAnim.start(); //开启动画结束的监听 - long delayMillis = mGrabFailureAnim.getDuration(0) * mGrabFailureAnim.getNumberOfFrames(); + long delayMillis = (long) mGrabFailureAnim.getDuration(0) * mGrabFailureAnim.getNumberOfFrames(); UiThreadHandler.postDelayed(new Runnable() { @Override public void run() { diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiPersonalDialogFragment.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiPersonalDialogFragment.java index e9a8752287..4286999c29 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiPersonalDialogFragment.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiPersonalDialogFragment.java @@ -68,12 +68,11 @@ public class TaxiPersonalDialogFragment extends private ViewPager mOperationViewPager; private OrderAdapter mAdapter; private ConstraintLayout mNoDatas; - private List orders = new ArrayList<>(); - private String[] mTabTitles = {"在线时长","订单完成数"}; - private List fragments = new ArrayList<>(); + private final List orders = new ArrayList<>(); + private final String[] mTabTitles = {"在线时长","订单完成数"}; + private final List fragments = new ArrayList<>(); private int mNextPage = 1;//订单列表分页从1开始 - private int mPerPageSize = 10; - private static TaxiFragment mTaxiFragment; + private final int mPerPageSize = 10; private static boolean serverHadNoData = false; @NonNull @@ -177,7 +176,6 @@ public class TaxiPersonalDialogFragment extends } } mOperationTab.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override public void onTabSelected(TabLayout.Tab tab) { mOperationViewPager.setCurrentItem(tab.getPosition()); @@ -185,7 +183,6 @@ public class TaxiPersonalDialogFragment extends fragments.get(tab.getPosition()).setmType(tab.getPosition()); } - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override public void onTabUnselected(TabLayout.Tab tab) { changeOperationTabLayoutTabUI(tab,false); @@ -311,17 +308,14 @@ public class TaxiPersonalDialogFragment extends public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { if (viewType == ORDER_DETAIL_ITEM){ View view = LayoutInflater.from(context).inflate(R.layout.taxi_orders_list_item,parent,false); - OrderDetailViewHolder viewHolder = new OrderDetailViewHolder(view); - return viewHolder; + return new OrderDetailViewHolder(view); }else if (viewType == DAY_GROUP_ITEM){ View view = LayoutInflater.from(context).inflate(R.layout.taxi_orders_list_day_item,parent,false); - DayGroupViewHolder viewHolder = new DayGroupViewHolder(view); - return viewHolder; + return new DayGroupViewHolder(view); } return null; } - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { OrderQueryRespBean.Result queryRespBean = orders.get(position); @@ -383,8 +377,7 @@ public class TaxiPersonalDialogFragment extends String currentDate = DateTimeUtil.getYMDTime(orders.get(position).createTime);//获取当前订单时间 int nextIndex = position + 1; String preDate = DateTimeUtil.getYMDTime(orders.get(nextIndex).createTime); - boolean isDifferent = preDate.equals(currentDate);//订单跟后一个订单是否是同一天 - return isDifferent;//一样有划分线, 不一样没有划分线 + return preDate.equals(currentDate);//一样有划分线, 不一样没有划分线 } } @@ -393,7 +386,6 @@ public class TaxiPersonalDialogFragment extends return orders.size(); } - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void bindOrderDetailData(OrderQueryRespBean.Result queryRespBean, TextView orderTimeTv, TextView startStationTv, TextView endStationTv, Button orderStatusBt, Button orderTypeBt, TextView orderNumTv){ Calendar calendar= Calendar.getInstance(); @@ -406,7 +398,6 @@ public class TaxiPersonalDialogFragment extends orderNumTv.setText("订单编号:"+String.valueOf(queryRespBean.orderNo)); } - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private String getOrderStatus(int status, Button button){ TaxiOrderStatusEnum orderStatus = TaxiOrderStatusEnum.valueOf(status); switch (orderStatus){ @@ -422,7 +413,6 @@ public class TaxiPersonalDialogFragment extends } } - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private String getOrderType(int type, Button button){ if (type == TaxiOrderTypeEnum.Reserved.getType()){ button.setBackground(context.getDrawable(R.drawable.taxi_order_button_type_reserver_bg)); diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java index a0c0677371..018eefbf95 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java @@ -82,7 +82,7 @@ class MogoOCHTaxiPassenger implements IMogoOCH { @NotNull @Override public String getFunctionName() { - return null; + return TAG; } @Nullable diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java index 7d3b5ed99f..2f93c78131 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java @@ -78,7 +78,7 @@ public class MogoOCHTaxiPassenger implements IMogoOCH { @NotNull @Override public String getFunctionName() { - return null; + return TAG; } @Nullable diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/CarOverlay.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/CarOverlay.java deleted file mode 100644 index 277d473123..0000000000 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/CarOverlay.java +++ /dev/null @@ -1,284 +0,0 @@ -package com.mogo.eagle.core.function.smp; - -import android.content.Context; -import android.graphics.BitmapFactory; - -import com.amap.api.maps.AMap; -import com.amap.api.maps.CameraUpdateFactory; -import com.amap.api.maps.TextureMapView; -import com.amap.api.maps.model.BitmapDescriptor; -import com.amap.api.maps.model.BitmapDescriptorFactory; -import com.amap.api.maps.model.CameraPosition; -import com.amap.api.maps.model.LatLng; -import com.amap.api.maps.model.Marker; -import com.amap.api.maps.model.MarkerOptions; -import com.amap.api.maps.model.Polyline; -import com.autonavi.amap.mapcore.IPoint; -import com.mogo.eagle.core.function.map.R; - -import java.util.concurrent.ScheduledExecutorService; - -/** - * 包名: com.amap.api.navi.core - *

- * 创建时间:2018/3/1 - * 项目名称:AndroidNavigationSDK - * - * @author guibao.ggb - * @email guibao.ggb@alibaba-inc.com - *

- * 类说明:自车位置管理Overlay类 - */ -public class CarOverlay { - - protected static final int CAR_MOVE_ANIMATION_PERIOD = 50; - protected int carMoveAnimationFrameNum = 2; - protected boolean mIsLock = true; - protected IPoint mapAnchorBackup = null; - protected double dXOffStep; - protected double dYOffStep; - protected float dAngleOffStep; - protected int currentFrameIndex; - protected float angleStart = 0; - protected boolean isMoveStarted = false; - protected float newAngle = 0; - protected BitmapDescriptor carDescriptor = null; - protected BitmapDescriptor fourCornersDescriptor = null; - protected Marker carMarker; - protected Marker directionMarker; - protected AMap mAmap = null; - protected TextureMapView mapView; - protected boolean isDirectionVisible = true; - protected LatLng endLatLng = null; - protected Polyline leaderLine = null; - protected final int DISTANCE_OFFSET = 150;// 默认 500 偏差 - - // API 默认 1800 UI 默认 360 - protected int angleModValue = 1800; - - - private ScheduledExecutorService executorService; - - public CarOverlay(Context context, TextureMapView mapView) { - this.mapView = mapView; - -// fourCornersDescriptor = BitmapDescriptorFactory.fromBitmap(BitmapFactory -// .decodeResource(context.getResources(), -// R.drawable.module_small_map_navi_direction)); - - carDescriptor = BitmapDescriptorFactory.fromBitmap(BitmapFactory - .decodeResource(context.getResources(), - R.drawable.module_small_map_view_my_location_logo)); - angleModValue = 1800; - - } - - /** - * 设置自车状态 - * - * @param lock true 锁车 false 非锁车 - */ - public void setLock(boolean lock) { - mIsLock = lock; - if (carMarker == null) { - return; - } - if (mAmap == null) { - return; - } - if (directionMarker == null) { - return; - } - carMarker.setFlat(true); - directionMarker.setGeoPoint(carMarker.getGeoPoint()); - carMarker.setGeoPoint(carMarker.getGeoPoint()); - carMarker.setRotateAngle(carMarker.getRotateAngle()); - if (mIsLock) { - CameraPosition cameraPosition = new CameraPosition.Builder().target(carMarker.getPosition()).bearing(newAngle).tilt(0).zoom(16).build(); - mAmap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); - } - } - - public void reset() { - if (carMarker != null) { - carMarker.remove(); - } - if (directionMarker != null) { - directionMarker.remove(); - } - if (leaderLine != null) { - leaderLine.remove(); - } - leaderLine = null; - carMarker = null; - directionMarker = null; - - if (executorService != null) { - if (!executorService.isShutdown()) { - executorService.shutdown(); - } - isMoveStarted = false; - - executorService = null; - } - } - - /** - * 绘制自车 - * - * @param aMap - * @param mLatLng - * @param bearing - */ - public void draw(AMap aMap, LatLng mLatLng, float bearing) { - if (aMap == null || mLatLng == null || carDescriptor == null) { - return; - } - mAmap = aMap; - try { - if (carMarker == null) { - carMarker = aMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f).setFlat(true).icon(carDescriptor).position(mLatLng)); - } - - if (directionMarker == null) { - directionMarker = aMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f).setFlat(true).icon(fourCornersDescriptor).position(mLatLng)); - directionMarker.setVisible(isDirectionVisible); - } - carMarker.setVisible(true); - newAngle = bearing; - IPoint resultGeoPnt = IPoint.obtain(); -// resultGeoPnt = NaviUtil.lonlat2Geo(mLatLng.latitude, mLatLng.longitude, 20); - updateCarPosition(resultGeoPnt); - resultGeoPnt.recycle(); - - } catch (Throwable e) { - e.printStackTrace(); - } - } - - - private void updateCarPosition(IPoint p) { - carMarker.setGeoPoint(p); - carMarker.setFlat(true); - carMarker.setRotateAngle(360 - newAngle); - if (directionMarker != null) { - directionMarker.setGeoPoint(p); - } - - if (mIsLock) { - CameraPosition cameraPosition = new CameraPosition.Builder().target(carMarker.getPosition()).bearing(newAngle).tilt(0).zoom(16).build(); - mAmap.moveCamera(CameraUpdateFactory.changeBearingGeoCenter(newAngle, p)); - } - } - - - public void setEndPoi(LatLng latlng) { - endLatLng = latlng; - } - - /** - * 释放自车资源 - */ - public void destroy() { - if (carMarker != null) { - carMarker.remove(); - carMarker = null; - } - if (directionMarker != null) { - directionMarker.remove(); - directionMarker = null; - } - carDescriptor = null; - - if (executorService != null && !executorService.isShutdown()) { - executorService.shutdown(); - isMoveStarted = false; - - executorService = null; - } - } - - private void calculateCarSmoothMoveOffset(IPoint newCenter, float newAngle) { - if (carMarker == null) { - return; - } - IPoint currentAnchorGeoPoint = carMarker.getGeoPoint(); - if (currentAnchorGeoPoint == null || currentAnchorGeoPoint.x == 0 || currentAnchorGeoPoint.y == 0) { - currentAnchorGeoPoint = newCenter; - } - currentFrameIndex = 0; - mapAnchorBackup = currentAnchorGeoPoint; - dXOffStep = (newCenter.x - currentAnchorGeoPoint.x) / carMoveAnimationFrameNum; - dYOffStep = (newCenter.y - currentAnchorGeoPoint.y) / carMoveAnimationFrameNum; - // 获取当前的旋转角度 - angleStart = carMarker.getRotateAngle(); - boolean isFirst = false; - - if (Float.compare(angleStart, newAngle) == 0) { - isFirst = true; - } else { - angleStart = 360 - angleStart; - } - // 校正旋转角度问题 - float dAngleDelta = newAngle - angleStart; - if (isFirst) { - dAngleDelta = 0; - } - if (dAngleDelta > 180) { - dAngleDelta = dAngleDelta - 360; - } - else if (dAngleDelta < -180) { - dAngleDelta = dAngleDelta + 360; - } - dAngleOffStep = dAngleDelta / carMoveAnimationFrameNum; - isMoveStarted = true; - } - -// protected void startSmoothMoveTimer() { -// if (executorService == null) { -// executorService = new ScheduledThreadPoolExecutor(1, new BasicThreadFactory.Builder().namingPattern("caroverlay-schedule-pool-%d").daemon(true).build()); -// -// executorService.scheduleAtFixedRate(new Runnable() { -// long currentSeconds; -// @Override -// public void run() { -// try{ -// currentSeconds = System.currentTimeMillis(); -// mapSmoothMoveTimerTick(); -// } catch(Throwable e){ -// e.printStackTrace(); -// } -// } -// }, 0, CAR_MOVE_ANIMATION_PERIOD, TimeUnit.MILLISECONDS); -// } -// } - - private void mapSmoothMoveTimerTick() { - if (!isMoveStarted) { - return; - } - if (carMarker == null) { - return; - } - if (mAmap == null) { - return; - } - try { - IPoint p = carMarker.getGeoPoint(); - double newX, newY; - if (currentFrameIndex++ < carMoveAnimationFrameNum) { - newX = mapAnchorBackup.x + dXOffStep * currentFrameIndex; - newY = mapAnchorBackup.y + dYOffStep * currentFrameIndex; - newAngle = angleStart + dAngleOffStep * currentFrameIndex; - newAngle %= angleModValue; - if (newX != 0 || newY != 0) { - p = new IPoint((int)newX, (int)newY); - } - updateCarPosition(p); - } - } catch (Throwable e) { - e.printStackTrace(); - } - } - -} diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/entity/MarkerUserInfo.java b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/entity/MarkerUserInfo.java index d38a08955b..ae3377d20c 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/entity/MarkerUserInfo.java +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/entity/MarkerUserInfo.java @@ -40,7 +40,7 @@ public class MarkerUserInfo implements Serializable { int year = cal.get(Calendar.YEAR); //2020-30=1990 - double ageDiffer = year - getAgeNumber(); + double ageDiffer = (double) (year - getAgeNumber()); String ageStr = "" + ageDiffer; char[] ageChars = ageStr.toCharArray(); diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/geometry/Real.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/geometry/Real.java index db5e9ebc77..e20bdf8e9b 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/geometry/Real.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/geometry/Real.java @@ -63,7 +63,7 @@ strictfp class Real extends Number { epsilon *= 0.5; } while (1.0 + epsilon != 1.0); int mantissaBits = (int) Math.round(-Math.log(epsilon) / Math.log(2)); - SPLITTER = (1 << ((mantissaBits + 1) / 2)) + 1; + SPLITTER = (double) (1 << ((mantissaBits + 1) / 2)) + 1; } /** Returns the result of a + b, without loss of precision. */ diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/storage/lrucache/DiskCacheManager.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/storage/lrucache/DiskCacheManager.java index 42b6cfaa21..fa51210023 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/storage/lrucache/DiskCacheManager.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/storage/lrucache/DiskCacheManager.java @@ -24,7 +24,7 @@ public class DiskCacheManager { private static DiskLruCache mDiskLruCache = null; private DiskLruCache.Editor mEditor = null; private DiskLruCache.Snapshot mSnapshot = null; - public static final long CACHE_MAXSIZE = 10 * 1024 * 1024; + public static final long CACHE_MAXSIZE = 10L * 1024 * 1024; public DiskCacheManager( Context context, String uniqueName) { try { diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/CommonUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/CommonUtils.java index b9808d3a2f..a95d476c64 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/CommonUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/CommonUtils.java @@ -540,8 +540,12 @@ public class CommonUtils { try { packageName = TextUtils.isEmpty(packageName) ? context.getPackageName() : packageName; PackageManager packageManager = context.getPackageManager(); - PackageInfo packInfo = packageManager.getPackageInfo(packageName, 0); - return packInfo.versionName; + if(packageManager != null){ + PackageInfo packInfo = packageManager.getPackageInfo(packageName, 0); + return packInfo.versionName; + }else { + return ""; + } } catch (Exception e) { return ""; } @@ -558,6 +562,9 @@ public class CommonUtils { try { packageName = TextUtils.isEmpty(packageName) ? context.getPackageName() : packageName; PackageManager packageManager = context.getPackageManager(); + if(packageManager == null){ + return 0; + } PackageInfo packInfo = packageManager.getPackageInfo(packageName, 0); return packInfo.versionCode; } catch (Exception e) { diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/FileUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/FileUtils.java index 3016a6c36a..0f5e4eb7d1 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/FileUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/FileUtils.java @@ -114,7 +114,6 @@ public final class FileUtils { Uri uri = Uri.parse(filePath); ContentResolver cr = Utils.getApp().getContentResolver(); AssetFileDescriptor afd = cr.openAssetFileDescriptor(uri, "r"); - if (afd == null) return false; try { afd.close(); } catch (IOException ignore) { diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/ImageUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/ImageUtils.java index 13a2bcdf12..4690e0442b 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/ImageUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/ImageUtils.java @@ -1072,17 +1072,17 @@ public final class ImageUtils { Bitmap ret = Bitmap.createBitmap(srcWidth, srcHeight + reflectionHeight, src.getConfig()); Canvas canvas = new Canvas(ret); canvas.drawBitmap(src, 0, 0, null); - canvas.drawBitmap(reflectionBitmap, 0, srcHeight + REFLECTION_GAP, null); + canvas.drawBitmap(reflectionBitmap, 0, (float) (srcHeight + REFLECTION_GAP), null); Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); LinearGradient shader = new LinearGradient( 0, srcHeight, - 0, ret.getHeight() + REFLECTION_GAP, + 0, (float) (ret.getHeight() + REFLECTION_GAP), 0x70FFFFFF, 0x00FFFFFF, Shader.TileMode.MIRROR); paint.setShader(shader); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); - canvas.drawRect(0, srcHeight + REFLECTION_GAP, srcWidth, ret.getHeight(), paint); + canvas.drawRect(0, (float) (srcHeight + REFLECTION_GAP), srcWidth, ret.getHeight(), paint); if (!reflectionBitmap.isRecycled()) reflectionBitmap.recycle(); if (recycle && !src.isRecycled() && ret != src) src.recycle(); return ret; diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/SpanUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/SpanUtils.java index 35ba5f0437..98d53eb5cc 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/SpanUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/SpanUtils.java @@ -1158,7 +1158,7 @@ public final class SpanUtils { p.setStyle(Paint.Style.FILL); p.setColor(this.color); - c.drawRect(x, top, x + dir * stripeWidth, bottom, p); + c.drawRect(x, top, (float) (x + dir * stripeWidth), bottom, p); p.setStyle(style); p.setColor(color); @@ -1388,9 +1388,9 @@ public final class SpanUtils { } else if (mVerticalAlignment == ALIGN_CENTER) { transY = (bottom + top - rect.height()) / 2.0f; } else if (mVerticalAlignment == ALIGN_BASELINE) { - transY = y - rect.height(); + transY = (float) (y - rect.height()); } else { - transY = bottom - rect.height(); + transY = (float) (bottom - rect.height()); } canvas.translate(x, transY); } else { From 072180b507b9e02761f992a9c71f67eee4d52328 Mon Sep 17 00:00:00 2001 From: wangyanjun Date: Fri, 8 Dec 2023 15:58:08 +0800 Subject: [PATCH 41/62] =?UTF-8?q?[map-sdk]=E8=87=AA=E8=BD=A6=E7=BC=A9?= =?UTF-8?q?=E6=94=BE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../java/com/zhidaoauto/map/sdk/inner/map/MapController.kt | 2 +- .../com/zhidaoauto/map/sdk/open/marker/MarkerOptions.kt | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index f4ab603a58..ff898a8de0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -81,7 +81,7 @@ MOGO_LOCATION_VERSION=1.4.7.20 MOGO_TELEMATIC_VERSION=1.4.7.20 ######## MogoAiCloudSDK Version ######## # 自研地图 -MAP_SDK_VERSION=3.3.0.10 +MAP_SDK_VERSION=3.3.2.1 MAP_SDK_DATA_VERSION=1.0.0.7 MAP_SDK_OPERATION_VERSION=1.1.4.1 # websocket diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/map/MapController.kt b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/map/MapController.kt index bf85e7c9dc..1e828eadd5 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/map/MapController.kt +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/map/MapController.kt @@ -709,7 +709,7 @@ class MapController(private var context: Context?, private val mMapView: IMapVie if(!isSurfaceCreated()) { return } - setMarkerScale() +// setMarkerScale() val currentZoom = zoomIndex if (DEBUG) { Log.d(TAG, "styleop--dispatchZoomChanged: currentZoom:${currentZoom},lastZoom:${lastZoom} ${mMapView.isTouching()}") diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/marker/MarkerOptions.kt b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/marker/MarkerOptions.kt index 61cba0d860..dd4fa0fc03 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/marker/MarkerOptions.kt +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/marker/MarkerOptions.kt @@ -63,7 +63,7 @@ class MarkerOptions { @JSONField(name = "alpha") private var alpha: Float = 1.0F - var scale: Float = 0.7F + var scale: Float = 1F private var offsetX: Int = 0 private var offsetY: Int = 0 var period: Int = 0 @@ -138,7 +138,7 @@ class MarkerOptions { id="" offsetX = 0 offsetY = 0 - scale = 0.7f + scale = 1f anchorColor = "" rotateAngle = 0f visible = true @@ -584,7 +584,7 @@ class MarkerOptions { } fun scale(scale: Float): MarkerOptions { - this.scale = 0.7f*scale + this.scale = scale return this } From 31ec814578f6e9caff0fd0861ce281c2077e507a Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Mon, 11 Dec 2023 16:24:12 +0800 Subject: [PATCH 42/62] =?UTF-8?q?[6.2.4]=E5=BD=95=E5=8C=85=E6=88=AA?= =?UTF-8?q?=E5=9B=BE=E5=A2=9E=E5=8A=A0=E8=B5=B7=E5=A7=8B=E7=82=B9=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/InitiativeBadCaseWindow.kt | 4 ++-- .../badcase/biz/PassiveBadCaseWindow.kt | 4 ++-- .../badcase/util/RecordBitmapUtils.kt | 5 +++-- .../autopilot/CallerAutoPilotStatusListenerManager.kt | 8 ++++++++ 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index 7371773efb..b9d63b1296 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -665,9 +665,9 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList else->"自驾状态:未知" } val speed = "当前车速:${BadCaseConfig.currentSpeed}" + val site = "起点:${CallerAutoPilotStatusListenerManager.getLineStartName()};终点:${CallerAutoPilotStatusListenerManager.getLineEndName()}" - - val outBitmap = RecordBitmapUtils.drawTextOnBitmap(bitmap,time,lineId,state,speed, + val outBitmap = RecordBitmapUtils.drawTextOnBitmap(bitmap,time,lineId,state,speed,site, BadCaseConfig.gpsStatus,BadCaseConfig.tracingStatus,BadCaseConfig.socketStatus ,BadCaseConfig.newFMInfoMsg,BadCaseConfig.newReportEntity) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt index 007c329b0f..b13cb793d2 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt @@ -632,9 +632,9 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene else->"自驾状态:未知" } val speed = "当前车速:${BadCaseConfig.currentSpeed}" + val site = "起点:${CallerAutoPilotStatusListenerManager.getLineStartName()};终点:${CallerAutoPilotStatusListenerManager.getLineEndName()}" - - val outBitmap = RecordBitmapUtils.drawTextOnBitmap(bitmap,time,lineId,state,speed, + val outBitmap = RecordBitmapUtils.drawTextOnBitmap(bitmap,time,lineId,state,speed,site, BadCaseConfig.gpsStatus,BadCaseConfig.tracingStatus,BadCaseConfig.socketStatus ,BadCaseConfig.newFMInfoMsg,BadCaseConfig.newReportEntity) //图片保存本地 diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt index 4bba14ca95..9020546532 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt @@ -76,8 +76,8 @@ object RecordBitmapUtils { /** * 在指定Bitmap中绘制文字 */ - fun drawTextOnBitmap(bitmap: Bitmap, time: String,lineId: String,state: String,currentSpeed: String - ,gpsStatus: String?,tracingStatus: String?,socketStatus: String? + fun drawTextOnBitmap(bitmap: Bitmap, time: String,lineId: String,state: String,currentSpeed: String, + site: String,gpsStatus: String?,tracingStatus: String?,socketStatus: String? ,fm: FMInfoMsg?,report: ReportEntity? ): Bitmap? { val mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true) @@ -90,6 +90,7 @@ object RecordBitmapUtils { canvas.drawText(lineId,100f,200f,paint) canvas.drawText(state,100f,300f,paint) canvas.drawText(currentSpeed,100f,400f,paint) + canvas.drawText(site,100f,500f,paint) gpsStatus?.let { canvas.drawText(it,1000f,100f,paint) diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt index 5ede15519a..6ac2ab06b3 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt @@ -83,6 +83,14 @@ object CallerAutoPilotStatusListenerManager : CallerBase Date: Mon, 11 Dec 2023 16:45:58 +0800 Subject: [PATCH 43/62] =?UTF-8?q?[6.2.4]=E4=BF=AE=E5=A4=8D=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=87=87=E9=9B=86=E9=A6=96=E6=AC=A1=E5=BD=95=E5=8C=85?= =?UTF-8?q?=E6=9C=AA=E9=80=89=E6=8B=A9=E5=88=86=E7=B1=BB=EF=BC=8C=E5=9C=A8?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=88=97=E8=A1=A8=E4=B8=AD=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E4=B8=8A=E6=8A=A5=E5=88=86=E7=B1=BB=E6=A8=A1=E7=89=88=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/BadCaseManagerView.kt | 14 +++++++++++++- .../badcase/biz/adapter/BagManagerListAdapter.kt | 8 +++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt index ae9c652dfa..14cd988e10 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt @@ -185,7 +185,7 @@ class BadCaseManagerView @JvmOverloads constructor( } override fun uploadBI(bagInfoEntity: BagInfoEntity) { - //展示上报弹窗 + //展示主动上报弹窗 val initiativeBadCaseWindow = InitiativeBadCaseWindow(context as Activity) initiativeBadCaseWindow.setClickListener(object: InitiativeBadCaseWindow.ClickListener{ override fun closeWindow() { @@ -195,6 +195,18 @@ class BadCaseManagerView @JvmOverloads constructor( initiativeBadCaseWindow.showReportBIWindow(bagInfoEntity) } + override fun upLoadAiData(bagInfoEntity: BagInfoEntity) { + //展示AI数据采集上报弹窗 + val aiDataCollectWindow = AIDataCollectWindow(context as Activity) + aiDataCollectWindow.setClickListener(object : + AIDataCollectWindow.ClickListener { + override fun closeWindow() { + aiDataCollectWindow.hideFloatWindow() + } + }) + aiDataCollectWindow.showFloatWindow() + } + override fun editDescription(key: Long, description: BagDescriptionEntity) { //编辑Bag包描述信息 isNameModify = true diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt index 8c8d421184..be12285f4e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt @@ -134,7 +134,11 @@ class BagManagerListAdapter: RecyclerView.Adapter() { holder.tvBagReportStatus.setBackgroundResource(R.drawable.bag_report_button_bg) holder.tvBagReportStatus.isClickable = true holder.tvBagReportStatus.setOnClickListener { - bagClickListener?.uploadBI(bagInfoEntity) + if(!aiDataSet.isNullOrEmpty() && aiDataSet!!.contains(bagInfoEntity.key.toString())){ + bagClickListener?.upLoadAiData(bagInfoEntity) + }else{ + bagClickListener?.uploadBI(bagInfoEntity) + } } holder.ivMapScreen.setOnClickListener { bagInfoEntity.description?.let { @@ -242,6 +246,8 @@ class BagManagerListAdapter: RecyclerView.Adapter() { fun onClick(bagInfoEntity: BagInfoEntity, isChecked: Boolean) //上报BI平台 fun uploadBI(bagInfoEntity: BagInfoEntity) + //AI数据采集上报 + fun upLoadAiData(bagInfoEntity: BagInfoEntity) //编辑Bag包描述信息 fun editDescription(key: Long,description: BagDescriptionEntity) //听录音 From b906901b70e40e80809371ab45f38b8a82826f75 Mon Sep 17 00:00:00 2001 From: renwj Date: Mon, 11 Dec 2023 17:54:33 +0800 Subject: [PATCH 44/62] =?UTF-8?q?[6.2.4][View=E7=82=B9=E5=87=BB=E6=80=81]?= =?UTF-8?q?=20=E6=B7=BB=E5=8A=A0View=E7=9A=84=E7=82=B9=E5=87=BB=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lancet/ViewPressedStateLancet.java | 191 ++++++++++++++++++ .../mogo-core-res/src/main/res/values/ids.xml | 4 + .../src/main/res/values/styles.xml | 4 + gradle/bytex/bytex_lancetx.gradle | 3 + 4 files changed, 202 insertions(+) create mode 100644 app/src/main/java/com/mogo/launcher/lancet/ViewPressedStateLancet.java create mode 100644 core/mogo-core-res/src/main/res/values/ids.xml diff --git a/app/src/main/java/com/mogo/launcher/lancet/ViewPressedStateLancet.java b/app/src/main/java/com/mogo/launcher/lancet/ViewPressedStateLancet.java new file mode 100644 index 0000000000..3ebd92187f --- /dev/null +++ b/app/src/main/java/com/mogo/launcher/lancet/ViewPressedStateLancet.java @@ -0,0 +1,191 @@ +package com.mogo.launcher.lancet; + +import android.content.Context; +import android.content.res.ColorStateList; +import android.content.res.TypedArray; +import android.graphics.Color; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.StateListDrawable; +import android.os.Build; +import android.util.AttributeSet; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.core.view.ViewCompat; +import com.knightboost.lancet.api.Origin; +import com.knightboost.lancet.api.Scope; +import com.knightboost.lancet.api.annotations.Group; +import com.knightboost.lancet.api.annotations.ImplementedInterface; +import com.knightboost.lancet.api.annotations.Insert; +import com.knightboost.lancet.api.annotations.ReplaceInvoke; +import com.knightboost.lancet.api.annotations.TargetClass; +import com.knightboost.lancet.api.annotations.TargetMethod; +import com.knightboost.lancet.api.annotations.Weaver; +import com.mogo.launcher.R; + +@Weaver +@Group("view_pressed_state") +public class ViewPressedStateLancet { + + @TargetClass(value = "android.view.View", scope = Scope.ALL) + @TargetMethod(methodName = "setOnClickListener") + @ReplaceInvoke + public static void setOnClickListener(View view, View.OnClickListener listener) { + Object tag = view.getTag(R.id.click_pressed_attr_id); + checkSetBgIfNeed(view, tag == null ? null : (AttributeSet) tag); + view.setOnClickListener(listener); + } + + @TargetClass(value = "android.view.View", scope = Scope.ALL) + @TargetMethod(methodName = "setOnLongClickListener") + @ReplaceInvoke + public static void setOnLongClickListener(View view, View.OnLongClickListener listener) { + Object tag = view.getTag(R.id.click_pressed_attr_id); + checkSetBgIfNeed(view, tag == null ? null : (AttributeSet) tag); + view.setOnLongClickListener(listener); + } + + @ImplementedInterface(value = "android.view.LayoutInflater$Factory", scope = Scope.LEAF) + @Insert(mayCreateSuper = true) + @TargetMethod(methodName = "onCreateView") + public View onCreateView(String name, Context context, AttributeSet attrs) { + View view = (View) Origin.call(); + checkSetBgIfNeed(view, attrs); + return view; + } + + @ImplementedInterface(value = "android.view.LayoutInflater$Factory2", scope = Scope.LEAF) + @Insert(mayCreateSuper = true) + @TargetMethod(methodName = "onCreateView") + public View onCreateView(View parent, String name, Context context, AttributeSet attrs) { + View view = (View) Origin.call(); + checkSetBgIfNeed(view, attrs); + return view; + } + + private static void checkSetBgIfNeed(View view, AttributeSet attr) { + try { + TypedArray t = null; + float alpha; + boolean enabled; + try { + if (view == null) { + return; + } + Context context = view.getContext(); + if (context == null) { + return; + } + if (attr == null) { + return; + } + t = context.obtainStyledAttributes(attr, R.styleable.ClickPressedStyle); + enabled = t.getBoolean(R.styleable.ClickPressedStyle_pressed_enabled, true); + if (!enabled) { + return; + } + alpha = t.getFloat(R.styleable.ClickPressedStyle_pressed_alpha, 0.6f); + if (alpha > 1.0f) { + throw new AssertionError("view custom attr: alpha > 1.0f, must be in [0.0, 1.0]"); + } + view.setTag(R.id.click_pressed_attr_id, attr); + } finally { + if (t != null) { + t.recycle(); + } + } + if (view instanceof ImageView) { + ImageView image = (ImageView) view; + Drawable replaced = checkAndReplaceDrawable(image.getBackground(), alpha); + if (replaced != null) { + ViewCompat.setBackground(image, replaced); + return; + } + replaced = checkAndReplaceDrawable(image.getDrawable(), alpha); + if (replaced != null) { + image.setImageDrawable(replaced); + return; + } + } + if (view instanceof TextView) { + TextView text = (TextView) view; + Drawable replaced = checkAndReplaceDrawable(text.getBackground(), alpha); + if (replaced != null) { + ViewCompat.setBackground(text, replaced); + return; + } + ColorStateList textColor = text.getTextColors(); + if (textColor != null) { + int pressed = textColor.getColorForState(new int[]{ android.R.attr.state_pressed }, Integer.MIN_VALUE); + if (pressed != Integer.MIN_VALUE) { + return; + } + int defaultColor = textColor.getDefaultColor(); + int pressedColor = Color.argb((int)(Color.alpha(defaultColor) * alpha), Color.red(defaultColor), Color.green(defaultColor), Color.blue(defaultColor)); + ColorStateList newColor = new ColorStateList(new int[][] { new int[] { -android.R.attr.state_pressed }, new int[] { android.R.attr.state_pressed }}, new int[] { defaultColor, pressedColor }); + text.setTextColor(newColor); + } + } + } catch (Throwable t) { + t.printStackTrace(); + } + } + + private static Drawable checkAndReplaceDrawable(Drawable old, float alpha) { + if (old == null) { + return null; + } + if (old instanceof StateListDrawable) { + StateListDrawable drawable = (StateListDrawable) old; + int[] states = drawable.getState(); + boolean hasPressed = false; + int index = 0; + int targetIndex = -1; + for (int state : states) { + if (!hasPressed && state == android.R.attr.state_pressed) { + hasPressed = true; + } + if (targetIndex == -1 && state != -android.R.attr.state_enabled) { + targetIndex = index; + } + if (hasPressed && targetIndex != -1) { + break; + } + index ++; + } + if (hasPressed) { + return null; + } + if (targetIndex != -1) { + Drawable origin= null; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + origin = drawable.getStateDrawable(targetIndex); + } else { + origin = drawable.getCurrent(); + } + if (origin != null) { + Drawable.ConstantState constantState = origin.getConstantState(); + if (constantState != null) { + Drawable pressed = DrawableCompat.wrap(constantState.newDrawable().mutate()); + pressed.setAlpha((int)(255 * alpha)); + drawable.addState(new int[] {android.R.attr.state_pressed}, pressed); + return drawable; + } + } + return null; + } + return null; + } + Drawable.ConstantState constantState = old.getConstantState(); + if (constantState != null) { + StateListDrawable result = new StateListDrawable(); + result.addState(new int[] { -android.R.attr.state_pressed }, old); + Drawable pressed = DrawableCompat.wrap(constantState.newDrawable().mutate()); + pressed.setAlpha((int)(255 * alpha)); + result.addState(new int[] { android.R.attr.state_pressed }, pressed); + return result; + } + return null; + } +} diff --git a/core/mogo-core-res/src/main/res/values/ids.xml b/core/mogo-core-res/src/main/res/values/ids.xml new file mode 100644 index 0000000000..fc995c989e --- /dev/null +++ b/core/mogo-core-res/src/main/res/values/ids.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/core/mogo-core-res/src/main/res/values/styles.xml b/core/mogo-core-res/src/main/res/values/styles.xml index d983a865a0..e6496d2029 100644 --- a/core/mogo-core-res/src/main/res/values/styles.xml +++ b/core/mogo-core-res/src/main/res/values/styles.xml @@ -13,4 +13,8 @@ + + + + \ No newline at end of file diff --git a/gradle/bytex/bytex_lancetx.gradle b/gradle/bytex/bytex_lancetx.gradle index d4cbbd960e..9f9ed05765 100644 --- a/gradle/bytex/bytex_lancetx.gradle +++ b/gradle/bytex/bytex_lancetx.gradle @@ -30,6 +30,9 @@ LancetX { main_block_check { enable rootProject.isJunkDetectEnable() } + view_pressed_state { + enable true + } } } From 6493114e7b4adcf83dccd85ee30b428e875c4260 Mon Sep 17 00:00:00 2001 From: renwj Date: Mon, 11 Dec 2023 17:59:48 +0800 Subject: [PATCH 45/62] =?UTF-8?q?[6.2.4][Apm]=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=87=8D=E5=90=AF=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt index d391927509..1eb915f91b 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt @@ -69,7 +69,9 @@ class ApmEnvProviderImpl: IApmEnvProvider, CoroutineScope { var dockerVersionChanged = false val version = ApmEnvConfig.getDockerVersion() if (!TextUtils.isEmpty(version) && !TextUtils.isEmpty(dockerVersion) && version != dockerVersion) { - dockerVersionChanged = version?.endsWith("release", true) == true || dockerVersion.endsWith("release", true) + val f1 = version?.endsWith("release", true) == true + val f2 = dockerVersion.endsWith("release", true) + dockerVersionChanged = if (f1 && f2) false else f1 || f2 if (dockerVersionChanged) { ApmEnvConfig.setDockerVersion(dockerVersion) } From 8a5e722cc37e6e1dda9ef5395866ebf1a0886334 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Mon, 11 Dec 2023 18:44:11 +0800 Subject: [PATCH 46/62] =?UTF-8?q?[6.2.4]=E5=BD=95=E5=8C=85=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E6=9C=AC=E5=9C=B0=E6=95=B0=E6=8D=AE=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/BadCaseManager.kt | 23 +++++++++++++++++++ .../biz/adapter/BagManagerListAdapter.kt | 3 --- .../badcase/consts/BadCaseConfig.kt | 15 ++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index 4c3ffe9e2e..f2d2c83040 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -38,6 +38,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA import com.mogo.eagle.core.utilcode.mogo.toast.TipToast import com.mogo.eagle.core.utilcode.util.* +import com.mogo.eagle.core.utilcode.util.FileUtils.millis2String import com.mogo.tts.base.SpeechUtils import com.zhjt.mogo_core_function_devatools.badcase.biz.* import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig @@ -69,6 +70,28 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis // 云socket连接状态 MogoStatusManager.getInstance() .registerStatusChangedListener(TAG, StatusDescriptor.CLOUD_SOCKET, this) + checkDelete() + } + + /** + * 检查删除录包记录在本地的信息 + */ + private fun checkDelete(){ + //获取当天时间 + val currentDay = millis2String(System.currentTimeMillis(), TimeUtils.getMdFormat()) + //和上次启动时间做对比,如果不是一天,则判断主动、采集和录包失败列表数量,数量过多的时候进行清除 + if(BadCaseConfig.getStartTime() != currentDay){ + if(BadCaseConfig.getInitiativeRecordSet().size > 190){ + BadCaseConfig.getInitiativeRecordSet().clear() + } + if(BadCaseConfig.getAiDataSet().size > 190){ + BadCaseConfig.getAiDataSet().clear() + } + if(BadCaseConfig.getRecordFailSet().size >190){ + BadCaseConfig.getRecordFailSet().clear() + } + BadCaseConfig.setStartTime(currentDay) + } } /** diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt index be12285f4e..2f20730b5c 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt @@ -12,11 +12,8 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.mogo.eagle.core.data.deva.badcase.BagDescriptionEntity import com.mogo.eagle.core.data.deva.badcase.BagInfoEntity -import com.mogo.eagle.core.utilcode.util.FileUtils.millis2String -import com.mogo.eagle.core.utilcode.util.TimeUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.zhjt.mogo_core_function_devatools.R -import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig import com.zhjt.mogo_core_function_devatools.badcase.util.RecordBitmapUtils import java.text.DecimalFormat diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt index ec26cca0c7..b5868dbb3d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt @@ -61,6 +61,21 @@ object BadCaseConfig { private const val resourceInitiative = "RESOURCE_INITIATIVE" //录包来源为主动录包 private const val resourceAiData = "RESOURCE_AI_DATA" //录包来源为AI数据采集 private const val recordFail = "RECORD_FAIL" //录包失败 + private const val startTime = "RECORD_START_TIME" //启动时间 + + /** + * 获取上一次启动日期 + */ + fun getStartTime(): String{ + return SPUtils.getInstance().getString(startTime,"") + } + + /** + * 记录启动日期 + */ + fun setStartTime(startDay: String){ + SPUtils.getInstance().put(startTime,startDay) + } /** * 获取主动录包集合 From 4507cfc64089ffcee554936a05239ba1f5423285 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Tue, 12 Dec 2023 14:17:04 +0800 Subject: [PATCH 47/62] [6.2.4] fix bug npe of bindcar --- .../binding/BindingCarNetWorkManager.kt | 44 ++++++++++++++----- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt index 778cc13a1e..fd16b4f50e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt @@ -4,10 +4,10 @@ import android.content.Context import com.mogo.commons.constants.HostConst import com.mogo.commons.constants.SharedPrefsConstants import com.mogo.commons.debug.DebugConfig +import com.mogo.eagle.core.data.config.HdMapBuildConfig import com.mogo.eagle.core.data.deva.bindingcar.BindingCarInfo import com.mogo.eagle.core.data.deva.bindingcar.BindingCarRequest import com.mogo.eagle.core.data.deva.bindingcar.ModifyBindingcarInfo -import com.mogo.eagle.core.data.config.HdMapBuildConfig import com.mogo.eagle.core.data.deva.chain.ChainConstant import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showBindingCarDialog import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showModifyBindingCarDialog @@ -74,8 +74,19 @@ class BindingCarNetWorkManager private constructor() { .subscribe(object : Observer { override fun onSubscribe(d: Disposable) {} override fun onNext(info: BindingCarInfo) { - if (info != null && info.getData() != null) { - bindLog(mapOf("bindResult" to true,"carType" to getDefaultId(),"msg" to info)) + if (info?.getData() != null) { + if ((info.code != 0 && info.code != 200)) { + bindLog(mapOf("bindResult" to false, "msg" to info.toString())) + return + } + + bindLog( + mapOf( + "bindResult" to true, + "carType" to getDefaultId(), + "msg" to info + ) + ) SharedPrefsMgr.getInstance(context).putString( SharedPrefsConstants.CAR_INFO, GsonUtils.toJson(info.getData()) @@ -87,15 +98,22 @@ class BindingCarNetWorkManager private constructor() { } updateCarVrIconRes(info.getData().brandId) } else { - SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.CAR_INFO, "") - e(SceneConstant.M_DEVA + TAG, "getBindingCarInfo data = null ---getDefaultId() : ${getDefaultId()} ") + SharedPrefsMgr.getInstance(context) + .putString(SharedPrefsConstants.CAR_INFO, "") + e( + SceneConstant.M_DEVA + TAG, + "getBindingCarInfo data = null ---getDefaultId() : ${getDefaultId()} " + ) } } override fun onError(e: Throwable) { SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.CAR_INFO, "") - bindLog(mapOf("bindResult" to false,"msg" to e.toString())) - e(SceneConstant.M_DEVA + TAG, "getBindingCarInfo onError e = " + e.toString() + "---e.getMessage = " + e.message + "---getDefaultId() : ${getDefaultId()}") + bindLog(mapOf("bindResult" to false, "msg" to e.toString())) + e( + SceneConstant.M_DEVA + TAG, + "getBindingCarInfo onError e = " + e.toString() + "---e.getMessage = " + e.message + "---getDefaultId() : ${getDefaultId()}" + ) } override fun onComplete() {} @@ -131,14 +149,18 @@ class BindingCarNetWorkManager private constructor() { override fun onSubscribe(d: Disposable) {} override fun onNext(info: ModifyBindingcarInfo) { if (info != null) { + if ((info.code != 0 && info.code != 200)) { + bindLog(mapOf("bindingStatus" to false, "bindMsg" to info.toString())) + return + } callBack.invoke(info) - bindLog(mapOf("bindingStatus" to true,"bindMsg" to info)) + bindLog(mapOf("bindingStatus" to true, "bindMsg" to info)) updateCarVrIconRes(info.data.brandId) } } override fun onError(e: Throwable) { - bindLog(mapOf("bindingStatus" to false,"bindMsg" to e.toString())) + bindLog(mapOf("bindingStatus" to false, "bindMsg" to e.toString())) } override fun onComplete() {} @@ -147,7 +169,7 @@ class BindingCarNetWorkManager private constructor() { private fun updateCarVrIconRes(brandId: String?) { d(SceneConstant.M_DEVA + TAG, "CarModelChange : ${DebugConfig.isCarModelChange()}") - if(!DebugConfig.isCarModelChange()){ + if (!DebugConfig.isCarModelChange()) { return } if (brandId == null || brandId.isEmpty()) { @@ -188,7 +210,7 @@ class BindingCarNetWorkManager private constructor() { nodeAliasCode = ChainConstant.CHAIN_CODE_BINDING_CAR, paramIndexes = [0] ) - private fun bindLog(msg:Map){ + private fun bindLog(msg: Map) { d(SceneConstant.M_DEVA + TAG, "bindLog : $msg") } From fa485afe868c11bf673afce980872dc559203dc8 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Tue, 12 Dec 2023 15:26:28 +0800 Subject: [PATCH 48/62] =?UTF-8?q?[6.2.4]=E8=B0=83=E6=95=B4=E5=BD=95?= =?UTF-8?q?=E5=8C=85=E6=88=AA=E5=9B=BE=E6=96=87=E5=AD=97=E9=A2=9C=E8=89=B2?= =?UTF-8?q?=E4=B8=BA=E7=99=BD=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/util/RecordBitmapUtils.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt index 9020546532..b65884d61d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/util/RecordBitmapUtils.kt @@ -83,7 +83,7 @@ object RecordBitmapUtils { val mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true) val canvas = Canvas(mutableBitmap) val paint = Paint() - paint.color = Color.RED + paint.color = Color.WHITE paint.textSize = 50f paint.isAntiAlias = true canvas.drawText(time, 100f, 100f, paint) From 2b2157a7858b82f4046bbe4253755498ec58dc31 Mon Sep 17 00:00:00 2001 From: renwj Date: Mon, 11 Dec 2023 17:54:33 +0800 Subject: [PATCH 49/62] =?UTF-8?q?[6.2.4][View=E7=82=B9=E5=87=BB=E6=80=81]?= =?UTF-8?q?=20=E6=B7=BB=E5=8A=A0View=E7=9A=84=E7=82=B9=E5=87=BB=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lancet/ViewPressedStateLancet.java | 191 ++++++++++++++++++ .../mogo-core-res/src/main/res/values/ids.xml | 4 + .../src/main/res/values/styles.xml | 4 + gradle/bytex/bytex_lancetx.gradle | 3 + 4 files changed, 202 insertions(+) create mode 100644 app/src/main/java/com/mogo/launcher/lancet/ViewPressedStateLancet.java create mode 100644 core/mogo-core-res/src/main/res/values/ids.xml diff --git a/app/src/main/java/com/mogo/launcher/lancet/ViewPressedStateLancet.java b/app/src/main/java/com/mogo/launcher/lancet/ViewPressedStateLancet.java new file mode 100644 index 0000000000..3ebd92187f --- /dev/null +++ b/app/src/main/java/com/mogo/launcher/lancet/ViewPressedStateLancet.java @@ -0,0 +1,191 @@ +package com.mogo.launcher.lancet; + +import android.content.Context; +import android.content.res.ColorStateList; +import android.content.res.TypedArray; +import android.graphics.Color; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.StateListDrawable; +import android.os.Build; +import android.util.AttributeSet; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.core.view.ViewCompat; +import com.knightboost.lancet.api.Origin; +import com.knightboost.lancet.api.Scope; +import com.knightboost.lancet.api.annotations.Group; +import com.knightboost.lancet.api.annotations.ImplementedInterface; +import com.knightboost.lancet.api.annotations.Insert; +import com.knightboost.lancet.api.annotations.ReplaceInvoke; +import com.knightboost.lancet.api.annotations.TargetClass; +import com.knightboost.lancet.api.annotations.TargetMethod; +import com.knightboost.lancet.api.annotations.Weaver; +import com.mogo.launcher.R; + +@Weaver +@Group("view_pressed_state") +public class ViewPressedStateLancet { + + @TargetClass(value = "android.view.View", scope = Scope.ALL) + @TargetMethod(methodName = "setOnClickListener") + @ReplaceInvoke + public static void setOnClickListener(View view, View.OnClickListener listener) { + Object tag = view.getTag(R.id.click_pressed_attr_id); + checkSetBgIfNeed(view, tag == null ? null : (AttributeSet) tag); + view.setOnClickListener(listener); + } + + @TargetClass(value = "android.view.View", scope = Scope.ALL) + @TargetMethod(methodName = "setOnLongClickListener") + @ReplaceInvoke + public static void setOnLongClickListener(View view, View.OnLongClickListener listener) { + Object tag = view.getTag(R.id.click_pressed_attr_id); + checkSetBgIfNeed(view, tag == null ? null : (AttributeSet) tag); + view.setOnLongClickListener(listener); + } + + @ImplementedInterface(value = "android.view.LayoutInflater$Factory", scope = Scope.LEAF) + @Insert(mayCreateSuper = true) + @TargetMethod(methodName = "onCreateView") + public View onCreateView(String name, Context context, AttributeSet attrs) { + View view = (View) Origin.call(); + checkSetBgIfNeed(view, attrs); + return view; + } + + @ImplementedInterface(value = "android.view.LayoutInflater$Factory2", scope = Scope.LEAF) + @Insert(mayCreateSuper = true) + @TargetMethod(methodName = "onCreateView") + public View onCreateView(View parent, String name, Context context, AttributeSet attrs) { + View view = (View) Origin.call(); + checkSetBgIfNeed(view, attrs); + return view; + } + + private static void checkSetBgIfNeed(View view, AttributeSet attr) { + try { + TypedArray t = null; + float alpha; + boolean enabled; + try { + if (view == null) { + return; + } + Context context = view.getContext(); + if (context == null) { + return; + } + if (attr == null) { + return; + } + t = context.obtainStyledAttributes(attr, R.styleable.ClickPressedStyle); + enabled = t.getBoolean(R.styleable.ClickPressedStyle_pressed_enabled, true); + if (!enabled) { + return; + } + alpha = t.getFloat(R.styleable.ClickPressedStyle_pressed_alpha, 0.6f); + if (alpha > 1.0f) { + throw new AssertionError("view custom attr: alpha > 1.0f, must be in [0.0, 1.0]"); + } + view.setTag(R.id.click_pressed_attr_id, attr); + } finally { + if (t != null) { + t.recycle(); + } + } + if (view instanceof ImageView) { + ImageView image = (ImageView) view; + Drawable replaced = checkAndReplaceDrawable(image.getBackground(), alpha); + if (replaced != null) { + ViewCompat.setBackground(image, replaced); + return; + } + replaced = checkAndReplaceDrawable(image.getDrawable(), alpha); + if (replaced != null) { + image.setImageDrawable(replaced); + return; + } + } + if (view instanceof TextView) { + TextView text = (TextView) view; + Drawable replaced = checkAndReplaceDrawable(text.getBackground(), alpha); + if (replaced != null) { + ViewCompat.setBackground(text, replaced); + return; + } + ColorStateList textColor = text.getTextColors(); + if (textColor != null) { + int pressed = textColor.getColorForState(new int[]{ android.R.attr.state_pressed }, Integer.MIN_VALUE); + if (pressed != Integer.MIN_VALUE) { + return; + } + int defaultColor = textColor.getDefaultColor(); + int pressedColor = Color.argb((int)(Color.alpha(defaultColor) * alpha), Color.red(defaultColor), Color.green(defaultColor), Color.blue(defaultColor)); + ColorStateList newColor = new ColorStateList(new int[][] { new int[] { -android.R.attr.state_pressed }, new int[] { android.R.attr.state_pressed }}, new int[] { defaultColor, pressedColor }); + text.setTextColor(newColor); + } + } + } catch (Throwable t) { + t.printStackTrace(); + } + } + + private static Drawable checkAndReplaceDrawable(Drawable old, float alpha) { + if (old == null) { + return null; + } + if (old instanceof StateListDrawable) { + StateListDrawable drawable = (StateListDrawable) old; + int[] states = drawable.getState(); + boolean hasPressed = false; + int index = 0; + int targetIndex = -1; + for (int state : states) { + if (!hasPressed && state == android.R.attr.state_pressed) { + hasPressed = true; + } + if (targetIndex == -1 && state != -android.R.attr.state_enabled) { + targetIndex = index; + } + if (hasPressed && targetIndex != -1) { + break; + } + index ++; + } + if (hasPressed) { + return null; + } + if (targetIndex != -1) { + Drawable origin= null; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + origin = drawable.getStateDrawable(targetIndex); + } else { + origin = drawable.getCurrent(); + } + if (origin != null) { + Drawable.ConstantState constantState = origin.getConstantState(); + if (constantState != null) { + Drawable pressed = DrawableCompat.wrap(constantState.newDrawable().mutate()); + pressed.setAlpha((int)(255 * alpha)); + drawable.addState(new int[] {android.R.attr.state_pressed}, pressed); + return drawable; + } + } + return null; + } + return null; + } + Drawable.ConstantState constantState = old.getConstantState(); + if (constantState != null) { + StateListDrawable result = new StateListDrawable(); + result.addState(new int[] { -android.R.attr.state_pressed }, old); + Drawable pressed = DrawableCompat.wrap(constantState.newDrawable().mutate()); + pressed.setAlpha((int)(255 * alpha)); + result.addState(new int[] { android.R.attr.state_pressed }, pressed); + return result; + } + return null; + } +} diff --git a/core/mogo-core-res/src/main/res/values/ids.xml b/core/mogo-core-res/src/main/res/values/ids.xml new file mode 100644 index 0000000000..fc995c989e --- /dev/null +++ b/core/mogo-core-res/src/main/res/values/ids.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/core/mogo-core-res/src/main/res/values/styles.xml b/core/mogo-core-res/src/main/res/values/styles.xml index d983a865a0..e6496d2029 100644 --- a/core/mogo-core-res/src/main/res/values/styles.xml +++ b/core/mogo-core-res/src/main/res/values/styles.xml @@ -13,4 +13,8 @@ + + + + \ No newline at end of file diff --git a/gradle/bytex/bytex_lancetx.gradle b/gradle/bytex/bytex_lancetx.gradle index d4cbbd960e..9f9ed05765 100644 --- a/gradle/bytex/bytex_lancetx.gradle +++ b/gradle/bytex/bytex_lancetx.gradle @@ -30,6 +30,9 @@ LancetX { main_block_check { enable rootProject.isJunkDetectEnable() } + view_pressed_state { + enable true + } } } From be6a75eb3fd07ef9d36cb60424507c98bde4f060 Mon Sep 17 00:00:00 2001 From: renwj Date: Mon, 11 Dec 2023 17:59:48 +0800 Subject: [PATCH 50/62] =?UTF-8?q?[6.2.4][Apm]=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=87=8D=E5=90=AF=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt index d391927509..1eb915f91b 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt @@ -69,7 +69,9 @@ class ApmEnvProviderImpl: IApmEnvProvider, CoroutineScope { var dockerVersionChanged = false val version = ApmEnvConfig.getDockerVersion() if (!TextUtils.isEmpty(version) && !TextUtils.isEmpty(dockerVersion) && version != dockerVersion) { - dockerVersionChanged = version?.endsWith("release", true) == true || dockerVersion.endsWith("release", true) + val f1 = version?.endsWith("release", true) == true + val f2 = dockerVersion.endsWith("release", true) + dockerVersionChanged = if (f1 && f2) false else f1 || f2 if (dockerVersionChanged) { ApmEnvConfig.setDockerVersion(dockerVersion) } From 3e0dfc8e78013cc6e5ae9962dcc2a9ea56026bd5 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Tue, 12 Dec 2023 16:15:52 +0800 Subject: [PATCH 51/62] =?UTF-8?q?[6.2.4]=E4=BF=AE=E5=A4=8D=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=87=87=E9=9B=86=E5=BD=95bag=E6=97=B6=E4=B8=8D?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=8E=9F=E5=9B=A0=EF=BC=8C=E5=9C=A8=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=88=97=E8=A1=A8=E4=B8=AD=E5=86=8D=E6=AC=A1=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E5=8E=9F=E5=9B=A0=E4=B8=8A=E6=8A=A5=E4=BC=9A=E4=BA=A7?= =?UTF-8?q?=E7=94=9F=E6=96=B0=E7=9A=84=E5=BD=95=E5=8C=85=E8=80=8C=E9=9D=9E?= =?UTF-8?q?=E5=9C=A8=E5=8E=9F=E5=BD=95=E5=8C=85=E4=B8=8A=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/AIDataCollectWindow.kt | 31 ++++++++++++++----- .../badcase/biz/BadCaseManagerView.kt | 2 +- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt index 5a653f02b9..361d7639bb 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt @@ -13,6 +13,7 @@ import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.deva.badcase.AiDataEntity import com.mogo.eagle.core.data.deva.badcase.BagDescriptionEntity +import com.mogo.eagle.core.data.deva.badcase.BagInfoEntity import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.api.devatools.badcase.BadCaseNetListener @@ -114,13 +115,6 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener "时间:${millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())}" //采集结果回调监听 CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(), this) - //开始录制AI数据采集Bag包 - CallerAutoPilotControlManager.recordPackage( - 99, - Random(SystemClock.elapsedRealtime()).nextInt(), - 20, - 12 - ) val linearLayoutManager = LinearLayoutManager(mActivity) linearLayoutManager.orientation = LinearLayoutManager.VERTICAL rvCollectList?.layoutManager = linearLayoutManager @@ -262,6 +256,29 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener mWindowParams!!.y = metrics.heightPixels - BarUtils.getStatusBarHeight() - 950 mWindowManager!!.addView(mFloatLayout, mWindowParams) } + //开始录制AI数据采集Bag包 + CallerAutoPilotControlManager.recordPackage( + 99, + Random(SystemClock.elapsedRealtime()).nextInt(), + 20, + 12 + ) + } + + fun showReportBIWindow(bagInfoEntity: BagInfoEntity){ + if (mFloatLayout.parent == null) { + val metrics = DisplayMetrics() + // 默认固定位置,靠屏幕右边缘的中间 + mWindowManager!!.defaultDisplay.getMetrics(metrics) + mWindowParams!!.x = metrics.widthPixels + mWindowParams!!.y = metrics.heightPixels - BarUtils.getStatusBarHeight() - 950 + mWindowManager!!.addView(mFloatLayout, mWindowParams) + } + //已经录包无需再次启动录包,只要将录包信息同步到弹窗 + bagInfoEntity.let { + recordKey = it.key + recordFileName = it.bagPath + } } fun hideFloatWindow() { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt index 14cd988e10..91a9798b34 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt @@ -204,7 +204,7 @@ class BadCaseManagerView @JvmOverloads constructor( aiDataCollectWindow.hideFloatWindow() } }) - aiDataCollectWindow.showFloatWindow() + aiDataCollectWindow.showReportBIWindow(bagInfoEntity) } override fun editDescription(key: Long, description: BagDescriptionEntity) { From 44817e500d039b5164d825e2170d8cf8c123932a Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Tue, 12 Dec 2023 17:10:50 +0800 Subject: [PATCH 52/62] =?UTF-8?q?[6.2.4]=E6=95=B0=E6=8D=AE=E9=87=87?= =?UTF-8?q?=E9=9B=86=E9=80=89=E6=8B=A9=E4=B8=A4=E4=B8=AA=E4=BB=A5=E4=B8=8A?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=97=B6=EF=BC=8C=E5=9C=A8=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=B8=AD=E5=90=8D=E7=A7=B0=E6=98=AF=E6=B2=A1=E6=9C=89=E5=88=86?= =?UTF-8?q?=E5=BC=80=E7=9A=84=EF=BC=8C=E5=BB=BA=E8=AE=AE=E4=BD=BF=E7=94=A8?= =?UTF-8?q?&=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/AIDataCollectWindow.kt | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt index 361d7639bb..72a59048dc 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt @@ -42,6 +42,7 @@ import org.json.JSONObject import record_cache.RecordPanelOuterClass import java.lang.StringBuilder import java.util.* +import kotlin.collections.ArrayList /** * @author XuXinChao @@ -66,6 +67,7 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener private lateinit var tvCollectCancel: TextView //取消按钮 private var collectReason: StringBuilder = StringBuilder() + private var collectList = ArrayList() private var aiDataListAdapter: AiDataListAdapter?= null @@ -122,10 +124,13 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener aiDataListAdapter?.setListener(object: AiDataListAdapter.AiDataClickListener{ override fun onClick(reason: String, isChecked: Boolean) { if(isChecked){ - collectReason.append(reason) + if(!collectList.contains(reason)){ + collectList.add(reason) + } }else{ - val index = collectReason.indexOf(reason) - collectReason.delete(index,index+reason.length) + if(collectList.contains(reason)){ + collectList.remove(reason) + } } } }) @@ -137,10 +142,17 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener //上报 tvCollectReport.setOnClickListener { - if(collectReason.isBlank()){ + if(collectList.isEmpty()){ ToastUtils.showShort("请选择最少一个原因") return@setOnClickListener } + collectReason.clear() + for(index in collectList.indices){ + if(index!=0){ + collectReason.append("&") + } + collectReason.append(collectList[index]) + } //上报到工控机 CallerAutoPilotControlManager.recordCause(recordKey.toString(),recordFileName,"", collectReason.toString()) From dd2fe9a9ab74675d2db109fd23d58c1ea6beb24b Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Tue, 12 Dec 2023 17:37:36 +0800 Subject: [PATCH 53/62] =?UTF-8?q?[6.2.4]=E5=BD=95=E5=8C=85=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E5=8E=9F=E5=9B=A0=E7=94=A8&=E5=88=86=E5=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/InitiativeBadCaseWindow.kt | 20 +++++++++++++++---- .../badcase/biz/PassiveBadCaseWindow.kt | 19 ++++++++++++++---- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index b9d63b1296..7a5dfc75e0 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -72,6 +72,7 @@ import org.json.JSONObject import record_cache.RecordPanelOuterClass import java.io.File import java.util.* +import kotlin.collections.ArrayList /** @@ -111,6 +112,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList private var audioFileName:String?=null //录音文件名称 private var uploadReason: StringBuilder = StringBuilder() //上报原因,标签 + private var uploadList = ArrayList() //上报原因列表 private var reasonDetail: String = "" //语音转写 private var uploadReasonTotal: String = "" @Volatile @@ -180,10 +182,13 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList badReasonListAdapter?.setListener(object: BadReasonListAdapter.ReasonClickListener{ override fun onClick(reason: String, isChecked: Boolean) { if(isChecked){ - uploadReason.append(reason) + if(!uploadList.contains(reason)){ + uploadList.add(reason) + } }else{ - val index = uploadReason.indexOf(reason) - uploadReason.delete(index,index+reason.length) + if(uploadList.contains(reason)){ + uploadList.remove(reason) + } } } }) @@ -214,10 +219,17 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList //上报 tvInitiativeReport.setOnClickListener { - if(uploadReason.isBlank()){ + if(uploadList.isEmpty()){ ToastUtils.showShort("请选择最少一个原因") return@setOnClickListener } + uploadReason.clear() + for(index in uploadList.indices){ + if(index!=0){ + uploadReason.append("&") + } + uploadReason.append(uploadList[index]) + } tvInitiativeReport.text = "上报中..." if(audioStatus){ audioStatus = false diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt index b13cb793d2..442d2b6b29 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt @@ -89,6 +89,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene private var bagManagerEntity: BagManagerEntity = BagManagerEntity() private var uploadReason: StringBuilder = StringBuilder() //上报原因,标签 + private var uploadList = ArrayList() //上报原因列表 private var recordKey: String?=null //录制bag包key private var recordFileName: String?=null //录制文件包名 private var receiveTime: String ?= null //接收时间 @@ -171,10 +172,13 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene override fun onClick(reason: String, isChecked: Boolean) { hasOperated = true if(isChecked){ - uploadReason.append(reason) + if(!uploadList.contains(reason)){ + uploadList.add(reason) + } }else{ - val index = uploadReason.indexOf(reason) - uploadReason.delete(index,index+reason.length) + if(uploadList.contains(reason)){ + uploadList.remove(reason) + } } } }) @@ -203,10 +207,17 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene tvPassiveReport.setOnClickListener { hasOperated = true - if(uploadReason.isEmpty()){ + if(uploadList.isEmpty()){ TipToast.shortTip("请选择至少一个Case") return@setOnClickListener } + uploadReason.clear() + for(index in uploadList.indices){ + if(index!=0){ + uploadReason.append("&") + } + uploadReason.append(uploadList[index]) + } tvPassiveReport.text = "上报中..." if(audioStatus){ audioStatus = !audioStatus From f899a08ee09c7caf7e2687268483352cb69fda88 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Tue, 12 Dec 2023 17:45:30 +0800 Subject: [PATCH 54/62] =?UTF-8?q?[6.2.4]=E8=B7=AF=E7=BA=BF=E8=B5=B7?= =?UTF-8?q?=E5=A7=8B=E7=82=B9=E4=B8=BA=E7=A9=BA=E6=97=B6=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=EF=BC=9A=E8=B7=AF=E7=BA=BF=E8=B5=B7=E5=A7=8B=E7=82=B9=E6=97=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/InitiativeBadCaseWindow.kt | 6 +++++- .../badcase/biz/PassiveBadCaseWindow.kt | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index 7a5dfc75e0..7e1db01243 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -677,7 +677,11 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList else->"自驾状态:未知" } val speed = "当前车速:${BadCaseConfig.currentSpeed}" - val site = "起点:${CallerAutoPilotStatusListenerManager.getLineStartName()};终点:${CallerAutoPilotStatusListenerManager.getLineEndName()}" + val site = if(CallerAutoPilotStatusListenerManager.getLineStartName().isNullOrEmpty() || CallerAutoPilotStatusListenerManager.getLineEndName().isNullOrEmpty()){ + "路线起始点:无" + }else{ + "路线起点:${CallerAutoPilotStatusListenerManager.getLineStartName()};终点:${CallerAutoPilotStatusListenerManager.getLineEndName()}" + } val outBitmap = RecordBitmapUtils.drawTextOnBitmap(bitmap,time,lineId,state,speed,site, BadCaseConfig.gpsStatus,BadCaseConfig.tracingStatus,BadCaseConfig.socketStatus diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt index 442d2b6b29..7c9a477c5b 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt @@ -643,7 +643,11 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene else->"自驾状态:未知" } val speed = "当前车速:${BadCaseConfig.currentSpeed}" - val site = "起点:${CallerAutoPilotStatusListenerManager.getLineStartName()};终点:${CallerAutoPilotStatusListenerManager.getLineEndName()}" + val site = if(CallerAutoPilotStatusListenerManager.getLineStartName().isNullOrEmpty() || CallerAutoPilotStatusListenerManager.getLineEndName().isNullOrEmpty()){ + "路线起始点:无" + }else{ + "路线起点:${CallerAutoPilotStatusListenerManager.getLineStartName()};终点:${CallerAutoPilotStatusListenerManager.getLineEndName()}" + } val outBitmap = RecordBitmapUtils.drawTextOnBitmap(bitmap,time,lineId,state,speed,site, BadCaseConfig.gpsStatus,BadCaseConfig.tracingStatus,BadCaseConfig.socketStatus From 2b01260b5c57f681e0654ddcedaa72f15ae52faf Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Tue, 12 Dec 2023 18:12:19 +0800 Subject: [PATCH 55/62] =?UTF-8?q?[6.2.4]=E5=BD=95=E5=8C=85=E7=AE=A1?= =?UTF-8?q?=E7=90=86=EF=BC=8C=E5=B7=B2=E7=BB=8F=E4=B8=8A=E6=8A=A5=E7=9A=84?= =?UTF-8?q?Bag=E4=B8=8D=E5=86=8D=E6=94=AF=E6=8C=81=E7=BC=96=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E7=BC=96=E8=BE=91=E6=8C=89=E9=92=AE=E7=BD=AE=E7=81=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/adapter/BagManagerListAdapter.kt | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt index 2f20730b5c..f8e597809a 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BagManagerListAdapter.kt @@ -1,5 +1,6 @@ package com.zhjt.mogo_core_function_devatools.badcase.biz.adapter +import android.os.Build import android.text.Editable import android.text.TextWatcher import android.view.LayoutInflater @@ -125,6 +126,12 @@ class BagManagerListAdapter: RecyclerView.Adapter() { //已上报的Bag不支持再查看,图标置为灰色,并且不可点击 holder.ivMapScreen.alpha = 0.5f holder.ivMapScreen.isClickable = false + //已上报的Bag不能再进行编辑,编辑图标置灰,并且不可点击 + holder.ivEditReason.alpha = 0.5f + holder.ivEditReason.isClickable = false + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + holder.etBagNameEdit.focusable = View.NOT_FOCUSABLE + } }else{ //未上报 holder.tvBagReportStatus.text = "上报" @@ -147,6 +154,15 @@ class BagManagerListAdapter: RecyclerView.Adapter() { } } } + + //编辑文字按钮 + holder.ivEditReason.setOnClickListener { + holder.etBagNameEdit.requestFocus() + holder.etBagNameEdit.performClick() + //调起软键盘 + bagClickListener?.startEdit(holder.etBagNameEdit) + } + } } if(des.description.isEmpty()){ @@ -173,13 +189,7 @@ class BagManagerListAdapter: RecyclerView.Adapter() { holder.tvBagResource.setBackgroundResource(R.drawable.bag_auto_button_bg) } - //编辑文字按钮 - holder.ivEditReason.setOnClickListener { - holder.etBagNameEdit.requestFocus() - holder.etBagNameEdit.performClick() - //调起软键盘 - bagClickListener?.startEdit(holder.etBagNameEdit) - } + if(bagInfoEntity.description?.hasAudio == true){ holder.ivBagAudio.visibility = View.VISIBLE From b7972e5b06a92c6321cbcc74abc7a1919077498e Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Tue, 12 Dec 2023 18:48:45 +0800 Subject: [PATCH 56/62] =?UTF-8?q?[6.2.4]=E4=BF=AE=E5=A4=8DAI=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=87=87=E9=9B=86=E6=95=B0=E6=8D=AE=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/AIDataCollectWindow.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt index 72a59048dc..91ba40f715 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt @@ -136,7 +136,7 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener }) rvCollectList?.adapter = aiDataListAdapter //注册网络接口获取数据监听 - CallerDevaToolsNetManager.addListener(TAG,this) + CallerDevaToolsNetManager.addListener(this.hashCode().toString(),this) //获取数据 BadCaseNetManager.badCaseNetManager.getAiData() @@ -297,7 +297,7 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener //注销采集结果回调监听 CallerAutopilotRecordListenerManager.removeListener(this.hashCode().toString()) //注销网络接口监听 - CallerDevaToolsNetManager.removeListener(this) + CallerDevaToolsNetManager.removeListener(this.hashCode().toString()) // 移除 ADAS车辆状态&定位 监听 CallerChassisLocationWGS84ListenerManager.removeListener(this.hashCode().toString()) if (mFloatLayout.parent != null) mWindowManager!!.removeView(mFloatLayout) From e3207d62a34dae7c9a6c3a83ec54d6434f08559d Mon Sep 17 00:00:00 2001 From: renwj Date: Tue, 12 Dec 2023 19:13:24 +0800 Subject: [PATCH 57/62] =?UTF-8?q?[6.2.4][View=E7=82=B9=E5=87=BB=E6=80=81]?= =?UTF-8?q?=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lancet/ViewPressedStateLancet.java | 42 +++++++++++++++++-- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/mogo/launcher/lancet/ViewPressedStateLancet.java b/app/src/main/java/com/mogo/launcher/lancet/ViewPressedStateLancet.java index 3ebd92187f..4fa3bdd617 100644 --- a/app/src/main/java/com/mogo/launcher/lancet/ViewPressedStateLancet.java +++ b/app/src/main/java/com/mogo/launcher/lancet/ViewPressedStateLancet.java @@ -32,6 +32,9 @@ public class ViewPressedStateLancet { @TargetMethod(methodName = "setOnClickListener") @ReplaceInvoke public static void setOnClickListener(View view, View.OnClickListener listener) { + if (view == null) { + return; + } Object tag = view.getTag(R.id.click_pressed_attr_id); checkSetBgIfNeed(view, tag == null ? null : (AttributeSet) tag); view.setOnClickListener(listener); @@ -41,6 +44,9 @@ public class ViewPressedStateLancet { @TargetMethod(methodName = "setOnLongClickListener") @ReplaceInvoke public static void setOnLongClickListener(View view, View.OnLongClickListener listener) { + if (view == null) { + return; + } Object tag = view.getTag(R.id.click_pressed_attr_id); checkSetBgIfNeed(view, tag == null ? null : (AttributeSet) tag); view.setOnLongClickListener(listener); @@ -86,8 +92,8 @@ public class ViewPressedStateLancet { return; } alpha = t.getFloat(R.styleable.ClickPressedStyle_pressed_alpha, 0.6f); - if (alpha > 1.0f) { - throw new AssertionError("view custom attr: alpha > 1.0f, must be in [0.0, 1.0]"); + if (alpha < 0.0f || alpha > 1.0f) { + throw new AssertionError("view custom attr \\'alpha\\' must be in [0.0, 1.0]"); } view.setTag(R.id.click_pressed_attr_id, attr); } finally { @@ -107,6 +113,7 @@ public class ViewPressedStateLancet { image.setImageDrawable(replaced); return; } + return; } if (view instanceof TextView) { TextView text = (TextView) view; @@ -121,11 +128,38 @@ public class ViewPressedStateLancet { if (pressed != Integer.MIN_VALUE) { return; } - int defaultColor = textColor.getDefaultColor(); + int color = textColor.getColorForState(new int[] { android.R.attr.state_enabled }, Integer.MIN_VALUE); + int defaultColor = color; + if (color == Integer.MIN_VALUE) { + defaultColor = textColor.getDefaultColor(); + } int pressedColor = Color.argb((int)(Color.alpha(defaultColor) * alpha), Color.red(defaultColor), Color.green(defaultColor), Color.blue(defaultColor)); - ColorStateList newColor = new ColorStateList(new int[][] { new int[] { -android.R.attr.state_pressed }, new int[] { android.R.attr.state_pressed }}, new int[] { defaultColor, pressedColor }); + int disableColor = textColor.getColorForState(new int[] { -android.R.attr.state_enabled }, Integer.MIN_VALUE); + int size = 2; + if (disableColor != Integer.MIN_VALUE) { + size += 1; + } + int[][] states = new int[size][1]; + int[] colors = new int[size]; + states[0] = new int[] { android.R.attr.state_pressed }; + colors[0] = pressedColor; + if (size > 2) { + states[1] = new int[] { -android.R.attr.state_enabled }; + colors[1] = disableColor; + states[2] = new int[] { android.R.attr.state_enabled }; + colors[2] = defaultColor; + } else { + states[1] = new int[] { -android.R.attr.state_pressed }; + colors[1] = defaultColor; + } + ColorStateList newColor = new ColorStateList(states, colors); text.setTextColor(newColor); } + return; + } + Drawable replaced = checkAndReplaceDrawable(view.getBackground(), alpha); + if (replaced != null) { + ViewCompat.setBackground(view, replaced); } } catch (Throwable t) { t.printStackTrace(); From e931d50159d16b93f867b86975c36ccf42db988d Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 13 Dec 2023 12:10:08 +0800 Subject: [PATCH 58/62] =?UTF-8?q?[6.2.4][=E8=98=91=E6=96=B9]=20=E5=8D=87?= =?UTF-8?q?=E7=BA=A7sdk=E7=89=88=E6=9C=AC=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=94=B5=E9=87=8F=E5=BF=83=E8=B7=B3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.gradle b/config.gradle index 79f837af88..bb0e778323 100644 --- a/config.gradle +++ b/config.gradle @@ -221,7 +221,7 @@ ext { weak_network : "com.mogo.weak:network:1.0.1", btrace : "com.bytedance.btrace:rhea-core:2.0.0", - mofang_runtime : "com.mogo.eagle.core.mofang:runtime:2.0.7", + mofang_runtime : "com.mogo.eagle.core.mofang:runtime:2.0.10", log_runtime : "com.mogo.eagle.core.log.record:runtime:1.0.30", // 安全证书 From d611c93dbcb659f4c7aed74a7cb27da3ac78e5cd Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 13 Dec 2023 15:56:09 +0800 Subject: [PATCH 59/62] =?UTF-8?q?[6.2.4][View=E7=82=B9=E5=87=BB=E6=80=81]?= =?UTF-8?q?=20=E6=9A=82=E6=97=B6=E5=85=B3=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/bytex/bytex_lancetx.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/bytex/bytex_lancetx.gradle b/gradle/bytex/bytex_lancetx.gradle index 9f9ed05765..6120e724c7 100644 --- a/gradle/bytex/bytex_lancetx.gradle +++ b/gradle/bytex/bytex_lancetx.gradle @@ -31,7 +31,7 @@ LancetX { enable rootProject.isJunkDetectEnable() } view_pressed_state { - enable true + enable false } } } From 9e195d380754f160c73a74eb6572a36a3fc8fff0 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 14 Dec 2023 18:37:24 +0800 Subject: [PATCH 60/62] =?UTF-8?q?[6.2.4]=E4=BF=AE=E6=94=B9=E4=B9=98?= =?UTF-8?q?=E5=AE=A2=E5=B1=8F=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index 3837fc450e..523f8358b7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -152,25 +152,25 @@ NOOP_DRIVER_VERSION=3.2.0 # 公交模式司机端版本号 BUS_DRIVER_VERSION=6.2.4 # 公交模式乘客端端版本号 -BUS_PASSENGER_VERSION=5.2.0 +BUS_PASSENGER_VERSION=5.2.4 # 接驳模式司机端版本号 SHUTTLE_DRIVER_VERSION=6.2.4 # 接驳模式乘客端端版本号 -SHUTTLE_PASSENGER_VERSION=5.2.0 +SHUTTLE_PASSENGER_VERSION=5.2.4 # 出租车模式司机端版本号 TAXI_DRIVER_VERSION=6.2.4 # 出租车模式乘客端端版本号 -TAXI_PASSENGER_VERSION=5.2.0 +TAXI_PASSENGER_VERSION=5.2.4 # 出租车模式司机端版本号 TAXIUNMANNED_DRIVER_VERSION=6.2.4 # 出租车模式乘客端端版本号 -TAXIUNMANNED_PASSENGER_VERSION=5.2.0 +TAXIUNMANNED_PASSENGER_VERSION=5.2.4 # 包车模式司机端版本号 CHARTER_DRIVER_VERSION=6.2.4 # 包车模式乘客端端版本号 -CHARTER_PASSENGER_VERSION=5.2.0 +CHARTER_PASSENGER_VERSION=5.2.4 # 支持云控清扫车模式司机端版本号 SWEEPERCLOUD_DRIVER_VERSION=6.2.4 # 清扫车模式司机端版本号 From 3d884f38be150f4dbf22daf245f4a869f0538622 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Fri, 15 Dec 2023 15:35:08 +0800 Subject: [PATCH 61/62] [6.2.4] note the origin planningobj trace --- .../eagle/function/biz/v2x/v2n/V2XEventManager.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt index 3d79f2ef56..e12c0b4ef1 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt @@ -183,12 +183,12 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, } @RequiresApi(Build.VERSION_CODES.N) - @ChainLog( - linkChainLog = CHAIN_TYPE_STATUS, - linkCode = CHAIN_SOURCE_ADAS, - nodeAliasCode = CHAIN_CODE_V2X_MSG, - paramIndexes = [0] - ) +// @ChainLog( +// linkChainLog = CHAIN_TYPE_STATUS, +// linkCode = CHAIN_SOURCE_ADAS, +// nodeAliasCode = CHAIN_CODE_V2X_MSG, +// paramIndexes = [0] +// ) override fun onAutopilotIdentifyPlanningObj(planningObjects: List?) { super.onAutopilotIdentifyPlanningObj(planningObjects) planningObjects?.let { From e60d0bfe3830295c3d4a4cf9f815107ea44e2094 Mon Sep 17 00:00:00 2001 From: wangyanjun Date: Fri, 15 Dec 2023 16:30:57 +0800 Subject: [PATCH 62/62] =?UTF-8?q?[map-sdk]=E8=87=AA=E8=BD=A6=E7=BC=A9?= =?UTF-8?q?=E5=B0=8F=E5=88=B090%?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../com/zhidaoauto/map/sdk/open/location/MyLocationStyle.kt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 523f8358b7..a996b0b75f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -81,7 +81,7 @@ MOGO_LOCATION_VERSION=1.4.7.20 MOGO_TELEMATIC_VERSION=1.4.7.20 ######## MogoAiCloudSDK Version ######## # 自研地图 -MAP_SDK_VERSION=3.3.2.1 +MAP_SDK_VERSION=3.3.2.2 MAP_SDK_DATA_VERSION=1.0.0.7 MAP_SDK_OPERATION_VERSION=1.1.4.1 # websocket diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/location/MyLocationStyle.kt b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/location/MyLocationStyle.kt index c0acb1a24b..368431d0a2 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/location/MyLocationStyle.kt +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/location/MyLocationStyle.kt @@ -220,6 +220,7 @@ class MyLocationStyle( .setGps(true) .position(LonLatPoint(lon, lat)) .marker3DIcon(resId, mMapController) + .scale(0.9f) .displayAnimEnable(isDisplayAnim) .zIndex(zIndex) .title("self")