From 79f1279cae2d7fc6f13bbb2712a9440c01c3699b Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Mon, 4 Dec 2023 10:34:08 +0800 Subject: [PATCH 01/14] =?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/14] =?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/14] =?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/14] =?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/14] =?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/14] =?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/14] =?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/14] [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/14] =?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/14] =?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/14] =?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/14] =?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/14] =?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/14] =?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信息对照表