diff --git a/app/src/androidTest/java/com/mogo/functions/test/ReminderTest.kt b/app/src/androidTest/java/com/mogo/functions/test/ReminderTest.kt index e600531b94..725ffc4de2 100644 --- a/app/src/androidTest/java/com/mogo/functions/test/ReminderTest.kt +++ b/app/src/androidTest/java/com/mogo/functions/test/ReminderTest.kt @@ -5,7 +5,6 @@ import android.app.Activity import android.content.Context import android.content.Intent import android.graphics.Color -import android.text.TextUtils import android.view.Gravity import android.view.View import android.view.ViewGroup @@ -17,7 +16,6 @@ import androidx.lifecycle.lifecycleScope import androidx.test.core.app.ActivityScenario import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.LargeTest -import com.mogo.commons.voice.AIAssist import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener import com.mogo.eagle.core.function.hmi.notification.WarningFloat import com.mogo.eagle.core.function.hmi.notification.anim.DefaultAnimator @@ -25,7 +23,6 @@ import com.mogo.eagle.core.function.hmi.notification.enums.SidePattern import com.mogo.eagle.core.function.hmi.ui.widget.V2XNotificationView import com.mogo.eagle.core.function.main.MainLauncherActivity import com.mogo.eagle.core.utilcode.kotlin.shape -import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.reminder.Reminder import com.mogo.eagle.core.utilcode.reminder.api.impl.ActivityReminder import com.mogo.eagle.core.utilcode.reminder.api.impl.PopupWindowReminder diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index 877c144f7e..f2f3864957 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -582,70 +582,68 @@ class MoGoHmiFragment : MvpFragment * @param tag tag绑定弹窗的标志 */ @Synchronized - override fun showWarningV2X(v2xType: Int, alertContent: String?, ttsContent: String?, tag: String?, listenerIMoGo: IMoGoWarningStatusListener?, playTts: Boolean, expireTime: Long) { - activity?.let { - val floatWindow = mWarningFloat - val showTag = floatWindow?.config?.floatTag - if (floatWindow == null || TextUtils.isEmpty(showTag)) { - val notificationView = V2XNotificationView(it) - notificationView.setWarningIcon(EventTypeEnum.getWarningIcon(v2xType.toString())) - val warningContent = alertContent ?: EventTypeEnum.getWarningContent(v2xType.toString()) - if (warningContent.isEmpty()) { - Logger.e(TAG, "Show warningContent is null or empty!") - return + override fun showWarningV2X(v2xType: Int, alertContent: CharSequence?, ttsContent: String?, tag: String?, listenerIMoGo: IMoGoWarningStatusListener?, playTts: Boolean, expireTime: Long) { + lifecycleScope.launchWhenResumed { + activity?.let { + val floatWindow = mWarningFloat + val showTag = floatWindow?.config?.floatTag + if (floatWindow == null || TextUtils.isEmpty(showTag) || !floatWindow.isShow()) { + val notificationView = V2XNotificationView(it) + notificationView.setWarningIcon(EventTypeEnum.getWarningIcon(v2xType.toString())) + val warningContent = alertContent ?: EventTypeEnum.getWarningContent(v2xType.toString()) + if (warningContent.isEmpty()) { + Logger.e(TAG, "Show warningContent is null or empty!") + return@launchWhenResumed + } else { + notificationView.setWarningContent(warningContent) + } + if (mWarningFloat != null && mWarningFloat!!.config.floatTag != tag) { + WarningFloat.dismiss(mWarningFloat!!.config.floatTag, true) + } + mWarningFloat = WarningFloat.with(it) + .setTag(tag) + .setLayout(notificationView) + .setSidePattern(SidePattern.RESULT_TOP) + .setCountDownTime(expireTime) + .setGravity(Gravity.CENTER_HORIZONTAL, offsetY = 110) + .setImmersionStatusBar(true) + .isEnqueue(true) + .addWarningStatusListener(listenerIMoGo) + .addWarningStatusListener(object : IMoGoWarningStatusListener { + override fun onShow() { + // 创建弹窗成功才进行TTS播报 + Logger.d( + "MoGoWarningFragment", + "mWarningFloat = $mWarningFloat---ttsContent = $ttsContent" + ) + if (mWarningFloat != null && !TextUtils.isEmpty(ttsContent) && playTts) { + Logger.d("MoGoWarningFragment", "---> ttsContent = $ttsContent") + AIAssist.getInstance(activity) + .speakTTSVoice(ttsContent) + } + } + }) + .setAnimator(object : DefaultAnimator() { + override fun enterAnim( + view: View, + params: WindowManager.LayoutParams, + windowManager: WindowManager, + sidePattern: SidePattern + ): Animator? = + super.enterAnim(view, params, windowManager, sidePattern)?.apply { + interpolator = OvershootInterpolator() + } + + override fun exitAnim( + view: View, + params: WindowManager.LayoutParams, + windowManager: WindowManager, + sidePattern: SidePattern + ): Animator? = + super.exitAnim(view, params, windowManager, sidePattern)?.setDuration(200) + }) + .show() } else { - notificationView.setWarningContent(warningContent) - } - - if (mWarningFloat != null && mWarningFloat!!.config.floatTag != tag) { - WarningFloat.dismiss(mWarningFloat!!.config.floatTag, true) - } - - mWarningFloat = WarningFloat.with(it) - .setTag(tag) - .setLayout(notificationView) - .setSidePattern(SidePattern.RESULT_TOP) - .setCountDownTime(expireTime) - .setGravity(Gravity.CENTER_HORIZONTAL, offsetY = 110) - .setImmersionStatusBar(true) - .isEnqueue(true) - .addWarningStatusListener(listenerIMoGo) - .addWarningStatusListener(object : IMoGoWarningStatusListener { - override fun onShow() { - // 创建弹窗成功才进行TTS播报 - Logger.d( - "MoGoWarningFragment", - "mWarningFloat = $mWarningFloat---ttsContent = $ttsContent" - ) - if (mWarningFloat != null && !TextUtils.isEmpty(ttsContent) && playTts) { - Logger.d("MoGoWarningFragment", "---> ttsContent = $ttsContent") - AIAssist.getInstance(activity) - .speakTTSVoice(ttsContent) - } - } - }) - .setAnimator(object : DefaultAnimator() { - override fun enterAnim( - view: View, - params: WindowManager.LayoutParams, - windowManager: WindowManager, - sidePattern: SidePattern - ): Animator? = - super.enterAnim(view, params, windowManager, sidePattern)?.apply { - interpolator = OvershootInterpolator() - } - - override fun exitAnim( - view: View, - params: WindowManager.LayoutParams, - windowManager: WindowManager, - sidePattern: SidePattern - ): Animator? = - super.exitAnim(view, params, windowManager, sidePattern)?.setDuration(200) - }) - .show() - } else { - if (floatWindow.isShow()) { val notification = floatWindow.config.layoutView as? V2XNotificationView if (alertContent?.isNotEmpty() == true) { notification?.setWarningContent(alertContent) @@ -747,6 +745,10 @@ class MoGoHmiFragment : MvpFragment flV2XWarningView?.showWarning(direction, closeTime) } + override fun dismissWarning(direction: WarningDirectionEnum) { + flV2XWarningView?.dismissWarning(direction) + } + /** * 展示云公告顶部弹窗 * @param trafficStylePushData diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/V2XNotificationView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/V2XNotificationView.kt index 24cc46d07e..fa3cc75639 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/V2XNotificationView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/V2XNotificationView.kt @@ -39,7 +39,7 @@ class V2XNotificationView @JvmOverloads constructor( } } - fun setWarningContent(@Nullable warningContent: String) { + fun setWarningContent(@Nullable warningContent: CharSequence) { UiThreadHandler.post { tvWaringContent.text = warningContent } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/V2XWarningView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/V2XWarningView.kt index e3b412d190..b18e526cf9 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/V2XWarningView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/V2XWarningView.kt @@ -2,10 +2,21 @@ package com.mogo.eagle.core.function.hmi.ui.widget import android.content.Context import android.util.AttributeSet +import android.util.Log import android.view.LayoutInflater import android.view.View import android.widget.RelativeLayout import com.mogo.eagle.core.data.enums.WarningDirectionEnum +import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_ALL +import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_BOTTOM +import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT +import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT +import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_LEFT +import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_NON +import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_RIGHT +import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_TOP +import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_TOP_LEFT +import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.util.UiThreadHandler @@ -25,7 +36,7 @@ class V2XWarningView @JvmOverloads constructor( private val closeWarningTask: Runnable = Runnable { Logger.d("V2XWarningView", "预警红边:倒计时结束") - showWarning(WarningDirectionEnum.ALERT_WARNING_NON) + showWarning(ALERT_WARNING_NON) } init { @@ -52,67 +63,67 @@ class V2XWarningView @JvmOverloads constructor( UiThreadHandler.post { // 如果传入的不是关闭显示,则设置倒计时,定时关闭红框警示 - if (direction != WarningDirectionEnum.ALERT_WARNING_NON) { + if (direction != ALERT_WARNING_NON) { removeCallbacks(closeWarningTask) postDelayed(closeWarningTask, closeTime) } when (direction) { - WarningDirectionEnum.ALERT_WARNING_NON -> { + ALERT_WARNING_NON -> { removeCallbacks(closeWarningTask) hmiWarningTopImg.visibility = View.GONE hmiWarningRightImg.visibility = View.GONE hmiWarningBottomImg.visibility = View.GONE hmiWarningLeftImg.visibility = View.GONE } - WarningDirectionEnum.ALERT_WARNING_TOP -> { + ALERT_WARNING_TOP -> { hmiWarningTopImg.visibility = View.VISIBLE hmiWarningRightImg.visibility = View.GONE hmiWarningBottomImg.visibility = View.GONE hmiWarningLeftImg.visibility = View.GONE } - WarningDirectionEnum.ALERT_WARNING_RIGHT -> { + ALERT_WARNING_RIGHT -> { hmiWarningTopImg.visibility = View.GONE hmiWarningRightImg.visibility = View.VISIBLE hmiWarningBottomImg.visibility = View.GONE hmiWarningLeftImg.visibility = View.GONE } - WarningDirectionEnum.ALERT_WARNING_BOTTOM -> { + ALERT_WARNING_BOTTOM -> { hmiWarningTopImg.visibility = View.GONE hmiWarningRightImg.visibility = View.GONE hmiWarningBottomImg.visibility = View.VISIBLE hmiWarningLeftImg.visibility = View.GONE } - WarningDirectionEnum.ALERT_WARNING_LEFT -> { + ALERT_WARNING_LEFT -> { hmiWarningTopImg.visibility = View.GONE hmiWarningRightImg.visibility = View.GONE hmiWarningBottomImg.visibility = View.GONE hmiWarningLeftImg.visibility = View.VISIBLE } - WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT -> { + ALERT_WARNING_TOP_RIGHT -> { hmiWarningTopImg.visibility = View.VISIBLE hmiWarningRightImg.visibility = View.VISIBLE hmiWarningBottomImg.visibility = View.GONE hmiWarningLeftImg.visibility = View.GONE } - WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT -> { + ALERT_WARNING_BOTTOM_RIGHT -> { hmiWarningTopImg.visibility = View.GONE hmiWarningRightImg.visibility = View.VISIBLE hmiWarningBottomImg.visibility = View.VISIBLE hmiWarningLeftImg.visibility = View.GONE } - WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT -> { + ALERT_WARNING_BOTTOM_LEFT -> { hmiWarningTopImg.visibility = View.GONE hmiWarningRightImg.visibility = View.GONE hmiWarningBottomImg.visibility = View.VISIBLE hmiWarningLeftImg.visibility = View.VISIBLE } - WarningDirectionEnum.ALERT_WARNING_TOP_LEFT -> { + ALERT_WARNING_TOP_LEFT -> { hmiWarningTopImg.visibility = View.VISIBLE hmiWarningRightImg.visibility = View.GONE hmiWarningBottomImg.visibility = View.GONE hmiWarningLeftImg.visibility = View.VISIBLE } - WarningDirectionEnum.ALERT_WARNING_ALL -> { + ALERT_WARNING_ALL -> { hmiWarningTopImg.visibility = View.VISIBLE hmiWarningRightImg.visibility = View.VISIBLE hmiWarningBottomImg.visibility = View.VISIBLE @@ -121,4 +132,50 @@ class V2XWarningView @JvmOverloads constructor( } } } + + fun dismissWarning(direction: WarningDirectionEnum) { + if (direction == ALERT_WARNING_NON) { + return + } + removeCallbacks(closeWarningTask) + when (direction) { + ALERT_WARNING_TOP -> { + hmiWarningTopImg.visibility = View.GONE + } + ALERT_WARNING_RIGHT -> { + hmiWarningRightImg.visibility = View.GONE + } + ALERT_WARNING_BOTTOM -> { + hmiWarningBottomImg.visibility = View.GONE + } + ALERT_WARNING_LEFT -> { + hmiWarningLeftImg.visibility = View.GONE + } + ALERT_WARNING_TOP_RIGHT -> { + hmiWarningTopImg.visibility = View.GONE + hmiWarningRightImg.visibility = View.GONE + } + ALERT_WARNING_BOTTOM_RIGHT -> { + hmiWarningRightImg.visibility = View.GONE + hmiWarningBottomImg.visibility = View.GONE + } + ALERT_WARNING_BOTTOM_LEFT -> { + hmiWarningBottomImg.visibility = View.GONE + hmiWarningLeftImg.visibility = View.GONE + } + ALERT_WARNING_TOP_LEFT -> { + hmiWarningTopImg.visibility = View.GONE + hmiWarningLeftImg.visibility = View.GONE + } + ALERT_WARNING_ALL -> { + hmiWarningTopImg.visibility = View.GONE + hmiWarningRightImg.visibility = View.GONE + hmiWarningBottomImg.visibility = View.GONE + hmiWarningLeftImg.visibility = View.GONE + } + else -> { + Log.d("XXX", "Not Support Direction") + } + } + } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt index f38f896b2e..20086e42d8 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt @@ -35,7 +35,6 @@ import com.mogo.eagle.core.function.v2x.events.network.V2XRefreshCallback import com.mogo.eagle.core.function.v2x.events.observer.V2XOptimalRouteObserver import com.mogo.eagle.core.function.v2x.events.receiver.SceneBroadcastReceiver import com.mogo.eagle.core.function.v2x.events.scenario.impl.V2XScenarioManager -import com.mogo.eagle.core.function.v2x.events.scenario.scene.park.V2XIllegalParkWindow import com.mogo.eagle.core.function.v2x.events.utils.* import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.utilcode.util.ThreadUtils @@ -133,12 +132,6 @@ object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallb return false } }) - it.registerMogoMarkerClickListener(MODULE_NAME, object : IMogoMarkerClickListener { - override fun onMarkerClicked(marker: IMogoMarker?): Boolean { - handleIllegalParkMarkerClick(marker) - return true - } - }) } BridgeApi.statusManager()?.let { it.registerStatusChangedListener(MODULE_NAME, ACC_STATUS, this) @@ -187,22 +180,6 @@ object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallb return accState == 1 } - private fun handleIllegalParkMarkerClick(marker: IMogoMarker?) { - try { - marker ?: return - val markerExploreWay = (marker.getObject() as? MarkerShowEntity)?.bindObj as? MarkerExploreWay - Logger.d(MODULE_NAME, "V2X===违章停车:onMarkerClicked=$markerExploreWay") - - //直接展示弹窗 - markerExploreWay?.let { - val parkScenario = V2XIllegalParkWindow() - parkScenario.show(it, false) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - private fun handleRoadConditionMarkerClick(marker: IMogoMarker?) { Log.d(TAG, "onMarkerClicked2222") //点击的marker的具体数据 //点击的marker的具体数据 diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/V2XRoadEventAdapter.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/V2XRoadEventAdapter.java deleted file mode 100644 index 51b80912b1..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/V2XRoadEventAdapter.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.adapter; - -import android.view.ViewGroup; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.mogo.eagle.core.function.v2x.events.adapter.holder.V2XEventUgcVH; -import com.mogo.eagle.core.function.v2x.events.adapter.holder.V2XFatigueDrivingVH; -import com.mogo.eagle.core.function.v2x.events.adapter.holder.V2XIllegalParkVH; -import com.mogo.eagle.core.function.v2x.events.adapter.holder.V2XLiveVideoVH; -import com.mogo.eagle.core.function.v2x.events.adapter.holder.V2XOtherSeekHelpVH; -import com.mogo.eagle.core.function.v2x.events.adapter.holder.V2XPushEventVH; -//import com.mogo.eagle.core.function.v2x.events.adapter.holder.V2XRoadEventVH; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.v2x.adapter.holder.V2XRecommendRouteVH; -import java.util.List; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/3/11 4:05 PM - * desc : V2X 场景事件列表中的数据适配器 - * version: 1.0 - */ -public class V2XRoadEventAdapter extends RecyclerView.Adapter { - - private List itemList; - - // 当前展示条目绑定的window - private IV2XWindow mV2XWindow; - - public V2XRoadEventAdapter(List itemList, IV2XWindow v2XWindow) { - this.itemList = itemList; - this.mV2XWindow = v2XWindow; - } - - @NonNull - @Override - public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - RecyclerView.ViewHolder holder = null; - switch (viewType) { - // 直播 - case V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_LIVE_CAR_WARNING: - holder = new V2XLiveVideoVH(parent, mV2XWindow); - break; -// //道路事件详情 -// case V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_WARNING: -// holder = new V2XRoadEventVH(parent, mV2XWindow); -// break; - //违章停车 - case V2XMessageEntity.V2XTypeEnum.ALERT_ILLEGAL_PARK_WARNING: - holder = new V2XIllegalParkVH(parent, mV2XWindow); - break; - //推送展示 - case V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_WINDOW_WARNING: - holder = new V2XPushEventVH(parent, mV2XWindow); - break; - //疲劳驾驶 - case V2XMessageEntity.V2XTypeEnum.ALERT_FATIGUE_DRIVING: - holder = new V2XFatigueDrivingVH(parent, mV2XWindow); - break; - //他人故障求助 - case V2XMessageEntity.V2XTypeEnum.ALERT_SEEK_WARNING: - holder = new V2XOtherSeekHelpVH(parent, mV2XWindow); - break; - //道路事件UGC - case V2XMessageEntity.V2XTypeEnum.ALERT_EVENT_UGC_WARNING: - holder = new V2XEventUgcVH(parent, mV2XWindow); - break; - //线路推荐 - case V2XMessageEntity.V2XTypeEnum.ALERT_RECOMMEND_ROUTE: - holder = new V2XRecommendRouteVH(parent, mV2XWindow); - break; - } - return holder; - } - - @Override - public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { - if (holder instanceof V2XLiveVideoVH) { - ((V2XLiveVideoVH) holder).initView(itemList.get(position)); - } -// if (holder instanceof V2XRoadEventVH) { -// ((V2XRoadEventVH) holder).initView(itemList.get(position)); -// } - if (holder instanceof V2XIllegalParkVH) { - ((V2XIllegalParkVH) holder).initView(itemList.get(position)); - } - if (holder instanceof V2XPushEventVH) { - ((V2XPushEventVH) holder).initView(itemList.get(position)); - } - if (holder instanceof V2XFatigueDrivingVH) { - ((V2XFatigueDrivingVH) holder).initView(itemList.get(position)); - } - if (holder instanceof V2XEventUgcVH) { - ((V2XEventUgcVH) holder).initView(itemList.get(position)); - } - if (holder instanceof V2XOtherSeekHelpVH) { - ((V2XOtherSeekHelpVH) holder).initView(itemList.get(position)); - } - if (holder instanceof V2XRecommendRouteVH) { - ((V2XRecommendRouteVH) holder).initView(itemList.get(position)); - } - } - - @Override - public int getItemViewType(int position) { - return itemList.get(position).getViewType(); - } - - @Override - public int getItemCount() { - return itemList == null ? 0 : itemList.size(); - } - -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/V2XShareEventAdapter.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/V2XShareEventAdapter.java deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XBaseViewHolder.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XBaseViewHolder.java deleted file mode 100644 index 1a6361adff..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XBaseViewHolder.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.adapter.holder; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.util.Log; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.alibaba.android.arouter.launcher.ARouter; -import com.mogo.commons.voice.AIAssist; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; -import com.mogo.eagle.core.function.v2x.events.network.V2XRefreshModel; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.function.v2x.events.utils.ChartingUtil; -import com.mogo.eagle.core.function.v2x.events.utils.RoadConditionUtils; -import com.mogo.eagle.core.function.v2x.events.utils.TrackUtils; -import com.mogo.eagle.core.function.v2x.events.utils.V2XSQLiteUtils; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; -import com.mogo.eagle.core.utilcode.mogo.toast.TipToast; -import com.mogo.eagle.core.utilcode.util.TimeUtils; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.map.navi.IMogoNaviListener; -import com.mogo.map.navi.MogoNaviInfo; -import com.mogo.module.common.entity.MarkerExploreWay; -import com.mogo.module.common.entity.MarkerLocation; -import com.mogo.module.common.entity.V2XEventZanData; -import com.mogo.service.module.IMogoRegisterCenter; -import com.zhidao.carchattingprovider.CallChattingProviderConstant; -import com.zhidao.carchattingprovider.ICarsChattingProvider; -import com.zhidao.carchattingprovider.MogoDriverInfo; - -/** - * V2X展示视图公用的实现 - * - * @author donghongyu - */ -public abstract class V2XBaseViewHolder - extends RecyclerView.ViewHolder - implements IMogoNaviListener { - - private static final String TAG = "V2XBaseViewHolder"; - private ICarsChattingProvider mCarsChattingProvider; - - // 当前展示条目绑定的window - protected IV2XWindow mV2XWindow; - - public V2XBaseViewHolder(@NonNull View itemView, IV2XWindow v2XWindow) { - super(itemView); - mV2XWindow = v2XWindow; - } - - /** - * 填充View视图 - * - * @param viewData 与视图绑定的数据 - */ - public abstract void initView(T viewData); - - /** - * 延迟关闭窗体视图 - */ - public void delayedCloseWindow() { - itemView.post(() -> { - if (mV2XWindow != null) { - mV2XWindow.close(); - } - }); - } - - /** - * 点赞 - */ - public void triggerZan(MarkerExploreWay noveltyInfo) { - try { - AIAssist.getInstance(Utils.getApp()).speakTTSVoice("已点赞", null); - showTip("已点赞"); - if (noveltyInfo != null) { - // 调用网络API接口 - - V2XRefreshModel refreshModel = BridgeApi.INSTANCE.refreshModel(); - if (refreshModel != null) { - refreshModel.giveLikeLiveVideo(null, noveltyInfo.getSn()); - } - V2XEventZanData v2XEventZanData = new V2XEventZanData(); - v2XEventZanData.setEventId(noveltyInfo.getInfoId()); - v2XEventZanData.setTriggerTime(TimeUtils.getNowMills()); - V2XSQLiteUtils.saveEventZanLocalStory(v2XEventZanData); - - - // 上报数据统计 - TrackUtils.trackV2xRoadEvent( - noveltyInfo.getInfoId(), - noveltyInfo.getSn(), - V2XConst.V2X_ROAD_ZAN); - } - } catch (Exception e) { - e.printStackTrace(); - } - delayedCloseWindow(); - } - - public void triggerIVReportHead(MarkerExploreWay noveltyInfo) { - Log.d(TAG, "点击头像" + mCarsChattingProvider); - try { - mCarsChattingProvider = (ICarsChattingProvider) ARouter.getInstance().build(CallChattingProviderConstant.CAR_CALL_PROVIDER).navigation(); - MogoDriverInfo mogoDriverInfo = new MogoDriverInfo(); - int ageNumber = noveltyInfo.getUserInfo().getAgeNumber(); - mogoDriverInfo.setAge(ageNumber); - String gender = noveltyInfo.getUserInfo().getGender(); - mogoDriverInfo.setGender(gender); - String sn = noveltyInfo.getUserInfo().getSn(); - mogoDriverInfo.setSn(sn != null ? sn : ""); - String name = noveltyInfo.getUserInfo().getUserName(); - mogoDriverInfo.setUserName(name != null ? name : ""); - mogoDriverInfo.setUserHead(noveltyInfo.getUserInfo().getUserHead()); - if (mCarsChattingProvider != null) { - mCarsChattingProvider.showUserWindow(MODULE_NAME, mogoDriverInfo, this.itemView.getContext()); - } - - } catch (Exception e) { - Log.d(TAG, "点击头像发生错误--triggerIVReportHead" + e); - e.printStackTrace(); - } - } - - /** - * 打电话 - */ - public void triggerCallChart(MarkerExploreWay noveltyInfo) { - try { - MarkerLocation location = new MarkerLocation(); - location.setLat(noveltyInfo.getLocation().getLat()); - location.setLon(noveltyInfo.getLocation().getLon()); - - ChartingUtil.callChatting(noveltyInfo.getUserInfo(), location); - - TrackUtils.trackV2xRoadEvent( - noveltyInfo.getInfoId(), - noveltyInfo.getSn(), - V2XConst.V2X_ROAD_CHAT); - } catch (Exception e) { - e.printStackTrace(); - TipToast.tip("用户信息异常"); - } - delayedCloseWindow(); - } - - /** - * 反馈路况错误 - */ - public void triggerReportErr(MarkerExploreWay noveltyInfo) { - try { - RoadConditionUtils.sendShareReceiverInfo( - noveltyInfo.getInfoId(), - noveltyInfo.getPoiType(), - 3); - - TrackUtils.trackV2xRoadEvent( - noveltyInfo.getInfoId(), - noveltyInfo.getSn(), - V2XConst.V2X_ROAD_REPORT_ERROR); - } catch (Exception e) { - e.printStackTrace(); - TipToast.tip("路况信息异常"); - } - delayedCloseWindow(); - } - - /** - * 反馈路况正确 - */ - public void triggerReportTrue(MarkerExploreWay noveltyInfo) { - try { - RoadConditionUtils.sendShareReceiverInfo( - noveltyInfo.getInfoId(), - noveltyInfo.getPoiType(), - 2); - - TrackUtils.trackV2xRoadEvent( - noveltyInfo.getInfoId(), - noveltyInfo.getSn(), - V2XConst.V2X_ROAD_REPORT_RIGHT); - } catch (Exception e) { - e.printStackTrace(); - TipToast.tip("路况信息异常"); - } - delayedCloseWindow(); - } - - public void triggerCancel(){ - delayedCloseWindow(); - } - - - /** - * 显示自定义 Toast - * - * @param msg - */ - public void showTip(String msg) { - TipToast.tip(msg); - } - - @Override - public void onInitNaviFailure() { - - } - - @Override - public void onInitNaviSuccess() { - - } - - @Override - public void onNaviInfoUpdate(MogoNaviInfo naviinfo) { - - } - - @Override - public void onStartNavi() { - - } - - @Override - public void onStopNavi() { - - } - - @Override - public void onCalculateSuccess() { - Logger.w(TAG, "onCalculateSuccess"); - IMogoRegisterCenter registerCenter = BridgeApi.INSTANCE.registerCenter(); - - if (registerCenter != null) { - registerCenter.unregisterMogoNaviListener(MODULE_NAME); - } - } - - @Override - public void onoCalculateFailed() { - - } - -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XEventUgcVH.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XEventUgcVH.java deleted file mode 100644 index 1aa3f6afde..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XEventUgcVH.java +++ /dev/null @@ -1,209 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.adapter.holder; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import com.mogo.commons.voice.AIAssist; -import com.mogo.commons.voice.IMogoVoiceCmdCallBack; -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; -import com.mogo.eagle.core.function.v2x.events.network.V2XRefreshModel; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants; -import com.mogo.eagle.core.network.utils.GsonUtil; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.module.common.entity.MarkerExploreWay; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XRoadEventEntity; -import com.mogo.module.common.enums.EventTypeEnum; -import com.mogo.module.v2x.voice.V2XVoiceManager; -import com.mogo.service.analytics.IMogoAnalytics; - -import java.util.HashMap; -import java.util.Map; - -/** - * e-mail : 1358506549@qq.com - * date : 2020/3/11 4:35 PM - * desc : 道路事件UGC - * 需求地址 - * http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=42321443 - * - * @author donghongyu - */ -public class V2XEventUgcVH extends V2XBaseViewHolder { - private final String TAG = "V2XEventUgcVH"; - - // 语音控制反馈 YES - private V2XVoiceCallbackListener mFeedBackYes = (command, intent) -> manualMarkingTrafficJam(1); - // 语音控制反馈 NO - private V2XVoiceCallbackListener mFeedBackNo = (command, intent) -> manualMarkingTrafficJam(0); - - - private ImageView ivEventTypeIcon; - private TextView tvEventUgcTitle; - private ImageView ivEventReportTrue; - private ImageView ivEventReportErr; - - // 当前的新鲜事儿信息 - private MarkerExploreWay mNoveltyInfo; - private V2XRoadEventEntity mV2XRoadEventEntity; - private V2XEventShowEntity mV2XEventShowEntity; - - public V2XEventUgcVH(ViewGroup viewGroup, IV2XWindow v2XWindow) { - super(LayoutInflater.from(viewGroup.getContext()) - .inflate(R.layout.item_v2x_event_ugc, viewGroup, false) - , v2XWindow); - ivEventTypeIcon = itemView.findViewById(R.id.ivEventTypeIcon); - tvEventUgcTitle = itemView.findViewById(R.id.tvEventUgcTitle); - ivEventReportTrue = itemView.findViewById(R.id.ivEventReportTrue); - ivEventReportErr = itemView.findViewById(R.id.ivEventReportErr); - - // 设置视图状态监听 - itemView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { - @Override - public void onViewAttachedToWindow(View v) { - //Logger.w(MODULE_NAME, "列表View V2XPushEventDetailVH 触发 onViewAttachedToWindow"); - } - - @Override - public void onViewDetachedFromWindow(View v) { - //Logger.w(MODULE_NAME, "列表View V2XPushEventDetailVH 触发 onViewDetachedFromWindow"); - unRegisterVoice(); - } - }); - } - - void unRegisterVoice() { - // 反注册语音交互 - V2XVoiceManager.INSTANCE - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_YONG_DU_YES_UN_WAKEUP) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_YONG_DU_NO_UN_WAKEUP) - - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_FENG_LU_YES_UN_WAKEUP) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_FENG_LU_NO_UN_WAKEUP) - - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GU_YES_UN_WAKEUP) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GU_NO_UN_WAKEUP) - - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GONG_YES_UN_WAKEUP) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GONG_NO_UN_WAKEUP); - } - - @Override - public void initView(V2XEventShowEntity v2XEventShowEntity) { - try { - Log.w(MODULE_NAME + "_" + TAG, "v2XEventShowEntity=" + GsonUtil.jsonFromObject(v2XEventShowEntity)); - if (v2XEventShowEntity == null) { - return; - } - mV2XEventShowEntity = v2XEventShowEntity; - mV2XRoadEventEntity = v2XEventShowEntity.getV2XRoadEventEntity(); - - if (mV2XRoadEventEntity == null) { - return; - } - mNoveltyInfo = mV2XRoadEventEntity.getNoveltyInfo(); - - if (mNoveltyInfo != null) { - - Object[] ugcTitleStr = EventTypeEnum.getUgcTitleStr(mNoveltyInfo.getPoiType()); - - if (ugcTitleStr != null) { - tvEventUgcTitle.setText(((String) ugcTitleStr[0]).replace("####", mNoveltyInfo.getAddr())); - AIAssist.getInstance(Utils.getApp()).speakTTSVoice((String) ugcTitleStr[1], new IMogoVoiceCmdCallBack() { - @Override - public void onSpeakEnd(String speakText) { - // 注册语音交互 - V2XVoiceManager.INSTANCE - .registerUnWakeVoice((String) ugcTitleStr[3], mFeedBackYes) - .registerUnWakeVoice((String) ugcTitleStr[4], mFeedBackNo); - } - }); - ivEventTypeIcon.setImageResource((Integer) ugcTitleStr[2]); - - // UGC 问答数据统计 - Map properties = new HashMap<>(); - properties.put("content", (String) ugcTitleStr[1]); - IMogoAnalytics analytics = BridgeApi.INSTANCE.analytics(); - if (analytics != null) { - analytics.track(V2XConst.V2X_ASK_ALERT, properties); - } - } - - - ivEventReportTrue.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - manualMarkingTrafficJam(1); - } - }); - ivEventReportErr.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - manualMarkingTrafficJam(0); - } - }); - } - - } catch (Exception e) { - e.printStackTrace(); - } - } - - // UGC 提问回答或消失 - private void dataStatistics(int result) { - IMogoAnalytics analytics = BridgeApi.INSTANCE.analytics(); - if (analytics == null) { - return; - } - Map properties = new HashMap<>(); - properties.put("result", result); - analytics.track(V2XConst.V2X_ASK_RESULT, properties); - } - - /** - * 对道路事件进行反馈 - */ - void manualMarkingTrafficJam(int status) { - unRegisterVoice(); - - if (status == 1) { -// // 上报事故 -// TanluUploadParams params = -// new TanluUploadParams( -// mNoveltyInfo.getPoiType(), -// IMogoTanluProvider.UPLOAD_FROM_STRATEGY_UGC, -// mNoveltyInfo.getInfoIdInt(), -// new MogoLatLng(mNoveltyInfo.getLocation().getLat(), -// mNoveltyInfo.getLocation().getLon()) -// ); -// IMogoTanluProvider tanlu = BridgeApi.INSTANCE.tanlu(); -// if (tanlu != null) { -// tanlu.uploadRoadCondition(params); -// } - dataStatistics(1); - } else if (status == 0) { - dataStatistics(2); - } - - AIAssist.getInstance(Utils.getApp()).speakTTSVoice("谢谢,您的反馈将帮助更多车友。", null); - V2XRefreshModel v2XRefreshModel = BridgeApi.INSTANCE.refreshModel(); - v2XRefreshModel - .manualMarkingTrafficJam( - mNoveltyInfo.getInfoId(), - status, - "0"); - delayedCloseWindow(); - } - -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XFatigueDrivingVH.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XFatigueDrivingVH.java deleted file mode 100644 index f9c8dc2dff..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XFatigueDrivingVH.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.adapter.holder; - -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import com.mogo.eagle.core.data.map.MogoLatLng; -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.function.v2x.events.utils.LocationUtils; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants; -import com.mogo.eagle.core.utilcode.util.SpanUtils; -import com.mogo.module.common.entity.MarkerExploreWay; -import com.mogo.module.common.entity.MarkerLocation; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.module.service.Utils; -import com.mogo.module.v2x.voice.V2XVoiceManager; - -/** - * e-mail : 1358506549@qq.com - * date : 2020/3/11 4:35 PM - * desc : 疲劳驾驶 - * version: 1.0 - * - * @author donghongyu - */ -public class V2XFatigueDrivingVH extends V2XBaseViewHolder { - - private TextView mTvAddress, mTvAddressDistance; - private ImageView mIvClose; - private MarkerExploreWay mNoveltyInfo; - private V2XPushMessageEntity mV2XPushMessageEntity; - - // 语音控制导航 - private V2XVoiceCallbackListener mNaviCancel = (command, intent) -> triggerCancel(); - - public V2XFatigueDrivingVH(ViewGroup viewGroup, IV2XWindow v2XWindow) { - super(LayoutInflater.from(viewGroup.getContext()) - .inflate(R.layout.item_v2x_fatigue_driving, viewGroup, false) - , v2XWindow); - mTvAddress = itemView.findViewById(R.id.tvAddress); - mTvAddressDistance = itemView.findViewById(R.id.tvAddressDistance); - mIvClose = itemView.findViewById(R.id.ivClose); - mIvClose.setOnClickListener(v -> delayedCloseWindow()); - - // 设置视图状态监听 - itemView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { - @Override - public void onViewAttachedToWindow(View v) { - //Logger.w(MODULE_NAME, "列表View V2XPushEventDetailVH 触发 onViewAttachedToWindow"); - V2XVoiceManager.INSTANCE - .registerUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_CANCEL_NAVI_UN_WAKEUP,mNaviCancel); - - } - - @Override - public void onViewDetachedFromWindow(View v) { - //Logger.w(MODULE_NAME, "列表View V2XPushEventDetailVH 触发 onViewDetachedFromWindow"); - // 反注册语音交互 - V2XVoiceManager.INSTANCE - .unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_NAVI) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_NAVI_UN_WAKEUP); - V2XVoiceManager.INSTANCE - .unRegisterWakeCmd(V2XVoiceConstants.COMMAND_V2X_CANCEL_NAVI_UN_WAKEUP) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_CANCEL_NAVI_UN_WAKEUP); - } - }); - } - - @Override - public void initView(V2XEventShowEntity v2XEventShowEntity) { - mV2XPushMessageEntity = v2XEventShowEntity.getV2XPushMessageEntity(); - try { - MarkerLocation markerLocation = new MarkerLocation(); - markerLocation.setLon(mV2XPushMessageEntity.getLon()); - markerLocation.setLat(mV2XPushMessageEntity.getLat()); - mNoveltyInfo = new MarkerExploreWay(); - mNoveltyInfo.setLocation(markerLocation); - } catch (Exception e) { - e.printStackTrace(); - } - - if (!TextUtils.isEmpty(mV2XPushMessageEntity.getAddress())) { - mTvAddress.setText(mV2XPushMessageEntity.getAddress()); - } else { - mTvAddress.setText(""); - } - // 计算距离 - float calculateDistance = Utils.calculateLineDistance( - new MogoLatLng(mV2XPushMessageEntity.getLat(), mV2XPushMessageEntity.getLon()), - LocationUtils.getCurrentLatLon() - ); - mV2XPushMessageEntity.setDistance(calculateDistance); - - SpanUtils.with(mTvAddressDistance) - .append("" + (int) mV2XPushMessageEntity.getDistance()) - .setFontSize((int) itemView.getResources().getDimension(R.dimen.module_v2x_event_distance_text)) - .append("米") - .setFontSize((int) itemView.getResources().getDimension(R.dimen.module_v2x_event_distance_title)) - .create(); - } - - -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XIllegalParkVH.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XIllegalParkVH.java deleted file mode 100644 index 512d217e97..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XIllegalParkVH.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.adapter.holder; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.function.v2x.events.utils.RoadConditionUtils; -import com.mogo.eagle.core.function.v2x.events.utils.V2XSQLiteUtils; -import com.mogo.eagle.core.function.v2x.events.view.HeartLikeView; -import com.mogo.eagle.core.function.v2x.events.view.HeartUnLikeView; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants; -import com.mogo.eagle.core.network.utils.GsonUtil; -import com.mogo.module.common.entity.MarkerExploreWay; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XHistoryScenarioData; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.v2x.voice.V2XVoiceManager; -import com.mogo.service.module.IMogoRegisterCenter; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; - -/** - * e-mail : 1358506549@qq.com - * date : 2020/3/11 4:35 PM - * desc : 违章停车弹窗 - * version: 1.0 - * - * @author donghongyu - */ -public class V2XIllegalParkVH extends V2XBaseViewHolder { - private TextView mAddressTv; - private TextView mIllegalNumTv; - private HeartLikeView mIlIllegalParkingLike; - private HeartUnLikeView mIIllegalParkingUnLike; - - private MarkerExploreWay mExploreWay; - - // 反馈按钮语音操控 - private V2XVoiceCallbackListener v2XVoiceCallbackYouYongListener = (command, intent) -> roadReportTrue(); - private V2XVoiceCallbackListener v2XVoiceCallbackMeiYongListener = (command, intent) -> roadReportErr(); - - public V2XIllegalParkVH(ViewGroup viewGroup, IV2XWindow v2XWindow) { - super(LayoutInflater.from(viewGroup.getContext()) - .inflate(BridgeApi.INSTANCE.statusManager() != null && BridgeApi.INSTANCE.statusManager().isVrMode() ? - R.layout.item_v2x_illegal_parking_vr : - R.layout.item_v2x_illegal_parking, viewGroup, false) - , v2XWindow); - - mAddressTv = itemView.findViewById(R.id.tvAddress); - mIllegalNumTv = itemView.findViewById(R.id.tvIllegalNum); - mIlIllegalParkingLike = itemView.findViewById(R.id.llIllegalParkingLike); - mIIllegalParkingUnLike = itemView.findViewById(R.id.llIllegalParkingUnLike); - - // 设置视图状态监听 - itemView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { - @Override - public void onViewAttachedToWindow(View v) { - //Logger.w(MODULE_NAME, "列表View V2XPushEventDetailVH 触发 onViewAttachedToWindow"); - // 注册语音交互 - V2XVoiceManager.INSTANCE - .registerUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_ILLEGAL_PARKMARKER_FEEDBACK_YOUYONG_UN_WAKEUP, - v2XVoiceCallbackYouYongListener) - .registerUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_ILLEGAL_PARKMARKER_FEEDBACK_MEIYONG_UN_WAKEUP, - v2XVoiceCallbackMeiYongListener); - } - - @Override - public void onViewDetachedFromWindow(View v) { - //Logger.w(MODULE_NAME, "列表View V2XPushEventDetailVH 触发 onViewDetachedFromWindow"); - IMogoRegisterCenter registerCenter = BridgeApi.INSTANCE.registerCenter(); - if (registerCenter != null) { - registerCenter.unregisterMogoNaviListener(MODULE_NAME); - } - // 反注册语音交互 - V2XVoiceManager.INSTANCE - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_ILLEGAL_PARKMARKER_FEEDBACK_YOUYONG_UN_WAKEUP) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_ILLEGAL_PARKMARKER_FEEDBACK_MEIYONG_UN_WAKEUP); - } - }); - } - - @Override - public void initView(V2XEventShowEntity v2XEventShowEntity) { - mExploreWay = v2XEventShowEntity.getV2XIllegalPark(); - mAddressTv.setText(mExploreWay.getAddr()); - try { - mIllegalNumTv.setText("违章人数:" + (int) mExploreWay.getItems().get(0).getIllegalCount()); - } catch (Exception e) { - e.printStackTrace(); - } - - mIlIllegalParkingLike.setOnClickCallListener(v -> { - Logger.d(V2XConst.MODULE_NAME, "反馈有用"); - roadReportTrue(); - }); - - mIIllegalParkingUnLike.setOnClickCallListener(v -> { - Logger.d(V2XConst.MODULE_NAME, "反馈无用"); - roadReportErr(); - }); - } - - /** - * 延迟关闭窗体 - */ - @Override - public void delayedCloseWindow() { - V2XHistoryScenarioData v2XHistoryScenarioData = new V2XHistoryScenarioData(); - v2XHistoryScenarioData.setScenarioType(V2XMessageEntity.V2XTypeEnum.ALERT_ILLEGAL_PARK_WARNING); - v2XHistoryScenarioData.setEventJsonData(GsonUtil.jsonFromObject(mExploreWay)); - v2XHistoryScenarioData.setEventJsonDataHashCode(mExploreWay.hashCode()); - //V2XSQLiteUtils.updateScenarioHistoryDataIsDispose(v2XHistoryScenarioData); - super.delayedCloseWindow(); - } - - /** - * 反馈路况正确 - */ - private void roadReportTrue() { - if (mExploreWay != null) { - RoadConditionUtils.sendShareReceiverInfo( - mExploreWay.getInfoId(), - mExploreWay.getPoiType(), - 2); - } - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - if (!isVrMode) { - delayedCloseWindow(); - } else { - mIlIllegalParkingLike.setClickable(false); - } - } - - /** - * 反馈路况错误 - */ - private void roadReportErr() { - if (mExploreWay != null) { - RoadConditionUtils.sendShareReceiverInfo( - mExploreWay.getInfoId(), - mExploreWay.getPoiType(), - 3); - } - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - if (!isVrMode) { - delayedCloseWindow(); - } else { - mIIllegalParkingUnLike.setClickable(false); - } - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XLiveVideoVH.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XLiveVideoVH.java deleted file mode 100644 index cce132276f..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XLiveVideoVH.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.adapter.holder; - -import android.view.LayoutInflater; -import android.view.ViewGroup; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.function.v2x.events.utils.TrackUtils; -import com.mogo.eagle.core.function.v2x.events.view.V2XLiveGSYVideoView; -import com.mogo.module.common.entity.MarkerCarInfo; -import com.mogo.module.common.entity.MarkerUserInfo; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XLiveCarInfoEntity; -import com.mogo.module.common.entity.V2XRoadEventEntity; -import com.mogo.service.imageloader.MogoImageView; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/3/11 4:35 PM - * desc : 直播类型的卡片 - * version: 1.0 - * - * @author donghongyu - */ -public class V2XLiveVideoVH extends V2XBaseViewHolder { - - private V2XLiveGSYVideoView videoPlayer; - private MogoImageView ivReportHead; - - // 上传事件的用户信息 - private MarkerUserInfo mUserInfo = new MarkerUserInfo(); - // 直播车机数据 - private V2XLiveCarInfoEntity mV2XLiveCarEntity; - // 预警的道路事件数据 - private V2XRoadEventEntity mV2XRoadEventEntity; - - public V2XLiveVideoVH(ViewGroup viewGroup, IV2XWindow v2XWindow) { - super(LayoutInflater.from(viewGroup.getContext()).inflate(BridgeApi.INSTANCE.statusManager() != null && BridgeApi.INSTANCE.statusManager().isVrMode() ? - R.layout.item_v2x_live_video_vr : R.layout.item_v2x_live_video, viewGroup, false), v2XWindow); - videoPlayer = itemView.findViewById(R.id.videoPlayer); - ivReportHead = itemView.findViewById(R.id.ivReportHead); - } - - @Override - public void initView(V2XEventShowEntity v2XLiveCarEntity) { - mV2XRoadEventEntity = v2XLiveCarEntity.getV2XRoadEventEntity(); - mV2XLiveCarEntity = v2XLiveCarEntity.getV2XLiveCarInfoRes(); - initView(mV2XLiveCarEntity); - } - - public void initView(V2XLiveCarInfoEntity v2XLiveCarEntity) { - mV2XLiveCarEntity = v2XLiveCarEntity; - // 由于车机自身推流的原因,这里为了浪费用户不必要的流量,用户滑动到了那个view展示了再进行直播信息的获取及展示 - MarkerCarInfo.CarLiveInfo carLiveInfo = new MarkerCarInfo.CarLiveInfo(); - carLiveInfo.setVideoSn(v2XLiveCarEntity.getSn()); - videoPlayer.setCarLiveInfo(carLiveInfo); - TrackUtils.trackV2xRoadEvent(mV2XRoadEventEntity.getNoveltyInfo().getInfoId(), v2XLiveCarEntity.getSn(), V2XConst.V2X_ROAD_VIDEO); - } - -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XOtherSeekHelpVH.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XOtherSeekHelpVH.java deleted file mode 100644 index 3a0aad5820..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XOtherSeekHelpVH.java +++ /dev/null @@ -1,231 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.adapter.holder; - -import static android.view.View.GONE; -import static android.view.View.VISIBLE; - -import android.content.Context; -import android.content.res.Resources; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.mogo.commons.debug.DebugConfig; -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.network.V2XRefreshModel; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.function.v2x.events.utils.ChartingUtil; -import com.mogo.eagle.core.function.v2x.events.utils.V2XUtils; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants; -import com.mogo.eagle.core.utilcode.mogo.glide.GlideRoundedCornersTransform; -import com.mogo.eagle.core.utilcode.util.SpanUtils; -import com.mogo.module.common.entity.MarkerExploreWay; -import com.mogo.module.common.entity.MarkerLocation; -import com.mogo.module.common.entity.MarkerUserInfo; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.module.v2x.voice.V2XVoiceManager; -import com.mogo.service.imageloader.IMogoImageloader; -import com.mogo.service.imageloader.MogoImageView; -import com.mogo.service.statusmanager.IMogoStatusManager; - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; - -/** - * e-mail : 1358506549@qq.com - * date : 2020/3/11 4:35 PM - * desc : 他人故障求助Window - * version: 1.0 - * - * @author donghongyu - */ -public class V2XOtherSeekHelpVH extends V2XBaseViewHolder { - - private Context mContext; - private MogoImageView ivHead; - private TextView tvName; - private TextView tvDistance; - private TextView tvEventTime; - private ImageView ivCall; - - private V2XPushMessageEntity mV2XPushMessageEntity; - private MarkerExploreWay mNoveltyInfo; - - // 上传事件的用户信息 - private MarkerUserInfo mUserInfo = new MarkerUserInfo(); - // 语音控制拨打电话 - private V2XVoiceCallbackListener mCallChartingCb = (command, intent) -> { - try { - mNoveltyInfo.setUserInfo(mUserInfo); - triggerCallChart(mNoveltyInfo); - } catch (Exception e) { - e.printStackTrace(); - } - }; - // 查看车辆信息 - private V2XVoiceCallbackListener mVoiceOpenCarInfoLis = ((command, intent) -> triggerIVReportHead(mNoveltyInfo)); - - public V2XOtherSeekHelpVH(ViewGroup viewGroup, IV2XWindow v2XWindow) { - super(LayoutInflater.from(viewGroup.getContext()) - .inflate(BridgeApi.INSTANCE.statusManager() != null && BridgeApi.INSTANCE.statusManager().isVrMode() ? - R.layout.item_v2x_fault_help_vr : - R.layout.item_v2x_fault_help, viewGroup, false) - , v2XWindow); - mContext = viewGroup.getContext(); - ivHead = itemView.findViewById(R.id.ivFaultHelpHead); - tvName = itemView.findViewById(R.id.tvFaultHelpName); - tvDistance = itemView.findViewById(R.id.tvFaultHelpDistance); - tvEventTime = itemView.findViewById(R.id.tvFaultHelpEventTime); - ivCall = itemView.findViewById(R.id.ivFaultHelpEventCall); - - // 设置视图状态监听 - itemView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { - @Override - public void onViewAttachedToWindow(View v) { - //Logger.w(MODULE_NAME, "列表View V2XPushEventDetailVH 触发 onViewAttachedToWindow"); - // 注册语音交互 - V2XVoiceManager.INSTANCE - .registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CALL_CHATTING, - mCallChartingCb) - .registerUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CHAT_MORE_UN_WAKEUP, - mCallChartingCb) - .registerUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_OPEN_CAR_INFO_UN_WAKEUP, - mVoiceOpenCarInfoLis); - } - - @Override - public void onViewDetachedFromWindow(View v) { - //Logger.w(MODULE_NAME, "列表View V2XPushEventDetailVH 触发 onViewDetachedFromWindow"); - // 反注册语音交互 - V2XVoiceManager.INSTANCE - .unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CALL_CHATTING) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CHAT_MORE_UN_WAKEUP) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_OPEN_CAR_INFO_UN_WAKEUP); - } - }); - } - - @Override - public void initView(V2XEventShowEntity v2XEventShowEntity) { - mV2XPushMessageEntity = v2XEventShowEntity.getV2XPushMessageEntity(); - try { - mUserInfo.setSn(mV2XPushMessageEntity.getSn()); - mUserInfo.setUserHead(mV2XPushMessageEntity.getHeadImgUrl()); - mUserInfo.setUserName(mV2XPushMessageEntity.getDisplayName()); - mUserInfo.setGender(mV2XPushMessageEntity.getSex()); - mUserInfo.setAge(30); - - MarkerLocation markerLocation = new MarkerLocation(); - markerLocation.setLon(mV2XPushMessageEntity.getLon()); - markerLocation.setLat(mV2XPushMessageEntity.getLat()); - mNoveltyInfo = new MarkerExploreWay(); - mNoveltyInfo.setLocation(markerLocation); - mNoveltyInfo.setUserInfo(mUserInfo); - } catch (Exception e) { - e.printStackTrace(); - } - - // M1低配车机限制 - // 不展示打电话按钮 - // 不能查看用户详情 - if (DebugConfig.isMapBased()) { - ivHead.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - triggerIVReportHead(mNoveltyInfo); - } - }); - // 只有自研车机才会 有车聊聊通话 - if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) { - // 判断是否可以打电话 - ChartingUtil.isCanCall(b -> { - if (b) { - // 判断是否可以打电话 - ChartingUtil.isOnLine(mV2XPushMessageEntity.getSn(), b1 -> { - if (b1) { - ivCall.setVisibility(VISIBLE); - } else { - ivCall.setVisibility(GONE); - } - }); - } else { - ivCall.setVisibility(GONE); - } - }); - - ivCall.setOnClickListener(v -> { - V2XRefreshModel v2XRefreshModel = BridgeApi.INSTANCE.refreshModel(); - if (v2XRefreshModel != null) { - v2XRefreshModel.respondingToHelp(mUserInfo.getSn()); - } - - if (!V2XUtils.isFastClick()) { - try { - triggerCallChart(mNoveltyInfo); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - } - } - try { - if (!TextUtils.isEmpty(mV2XPushMessageEntity.getHeadImgUrl())) { - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - if (isVrMode) { - Glide.with(mContext).load(mV2XPushMessageEntity.getHeadImgUrl()).apply(RequestOptions.bitmapTransform( - new GlideRoundedCornersTransform(20, GlideRoundedCornersTransform.CornerType.LEFT))).into(ivHead); - } else { - IMogoImageloader imageLoader = BridgeApi.INSTANCE.imageLoader(); - if (imageLoader != null) { - imageLoader.displayImage(mV2XPushMessageEntity.getHeadImgUrl(), ivHead); - } - } - } - tvName.setText(mV2XPushMessageEntity.getDisplayName()); - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - if (mV2XPushMessageEntity.getDistance() > 1000) { - - SpanUtils.with(tvDistance) - .append("" + (int) mV2XPushMessageEntity.getDistance() / 1000) - .setFontSize((int) itemView.getResources().getDimension(isVrMode ? R.dimen.module_v2x_fault_help_distance_text_size : R.dimen.module_v2x_event_distance_text)) - .append("公里") - .setFontSize((int) itemView.getResources().getDimension(isVrMode ? R.dimen.dp_42 : R.dimen.module_v2x_event_distance_title)) - .create(); - } else { - SpanUtils.with(tvDistance) - .append("" + (int) mV2XPushMessageEntity.getDistance()) - .setFontSize((int) itemView.getResources().getDimension(isVrMode ? R.dimen.module_v2x_fault_help_distance_text_size : R.dimen.module_v2x_event_distance_text)) - .append("米") - .setFontSize((int) itemView.getResources().getDimension( - isVrMode ? - R.dimen.dp_42 : R.dimen.module_v2x_event_distance_title)) - .create(); - } - SimpleDateFormat sdf = new SimpleDateFormat("HH:mm", Locale.CHINA); - String eventTime = String.format("%s发布求助信息", - sdf.format(new Date(mV2XPushMessageEntity.getCreateTime()))); - tvEventTime.setText(eventTime); - - } catch (Resources.NotFoundException e) { - e.printStackTrace(); - } - } - -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XPushEventVH.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XPushEventVH.java deleted file mode 100644 index dd5e3af218..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XPushEventVH.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.adapter.holder; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants; -import com.mogo.module.common.entity.MarkerExploreWay; -import com.mogo.module.common.entity.MarkerLocation; -import com.mogo.module.common.entity.MarkerUserInfo; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.module.v2x.voice.V2XVoiceManager; -import com.mogo.service.imageloader.IMogoImageloader; -import com.mogo.service.imageloader.MogoImageView; -import com.mogo.service.module.IMogoRegisterCenter; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/3/11 4:35 PM - * desc : TODO 这里是前瞻演示需求,推送的消息, - * version: 1.0 - * - * @author donghongyu - */ -public class V2XPushEventVH extends V2XBaseViewHolder { - private MogoImageView ivImg; - private MogoImageView ivReportHead; - - // 控制按钮 - private ImageView ivRoadReportTrue; - private ImageView ivRoadReportErr; - private ImageView ivRoadCallChart; - private ImageView ivRoadEventLike; - - // 上传事件的用户信息 - private MarkerUserInfo mUserInfo = new MarkerUserInfo(); - - private V2XPushMessageEntity mV2XRoadEventEntity; - private MarkerExploreWay mNoveltyInfo; - - // 语音控制拨打电话 - private V2XVoiceCallbackListener mCallChartingCb = (command, intent) -> { - try { - mUserInfo.setSn(mV2XRoadEventEntity.getSn()); - mUserInfo.setUserHead(mV2XRoadEventEntity.getHeadImgUrl()); - mUserInfo.setUserName("蘑菇用户"); - mUserInfo.setGender("男"); - mUserInfo.setAge(30); - mNoveltyInfo.setUserInfo(mUserInfo); - triggerCallChart(mNoveltyInfo); - } catch (Exception e) { - e.printStackTrace(); - } - }; - // 点赞语音回调 - private V2XVoiceCallbackListener v2XVoiceCallbackLickListener = (command, intent) -> triggerZan(mNoveltyInfo); - - public V2XPushEventVH(ViewGroup viewGroup, IV2XWindow v2XWindow) { - super(LayoutInflater.from(viewGroup.getContext()) - .inflate(R.layout.item_v2x_push_event_detail, viewGroup, false) - , v2XWindow); - ivImg = itemView.findViewById(R.id.ivImg); - ivReportHead = itemView.findViewById(R.id.ivReportHead); - - ivRoadReportTrue = itemView.findViewById(R.id.ivRoadReportTrue); - ivRoadReportErr = itemView.findViewById(R.id.ivRoadReportErr); - ivRoadCallChart = itemView.findViewById(R.id.ivRoadCallChart); - ivRoadEventLike = itemView.findViewById(R.id.ivRoadEventLike); - - ivRoadCallChart.setOnClickListener(v -> { - try { - mUserInfo.setSn(mV2XRoadEventEntity.getSn()); - mUserInfo.setUserHead(mV2XRoadEventEntity.getHeadImgUrl()); - mUserInfo.setUserName("蘑菇用户"); - mUserInfo.setGender("男"); - mUserInfo.setAge(30); - mNoveltyInfo.setUserInfo(mUserInfo); - triggerCallChart(mNoveltyInfo); - } catch (Exception e) { - e.printStackTrace(); - } - }); - ivRoadEventLike.setOnClickListener(v -> triggerZan(mNoveltyInfo)); - - // 设置视图状态监听 - itemView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { - @Override - public void onViewAttachedToWindow(View v) { - //Logger.w(MODULE_NAME, "列表View V2XPushEventDetailVH 触发 onViewAttachedToWindow"); - // 注册语音交互 - V2XVoiceManager.INSTANCE - .registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CALL_CHATTING, - mCallChartingCb) - .registerUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CHAT_MORE_UN_WAKEUP, - mCallChartingCb) - .registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_ZAN, - v2XVoiceCallbackLickListener) - .registerUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_ZAN_UN_WAKEUP, - v2XVoiceCallbackLickListener); - } - - @Override - public void onViewDetachedFromWindow(View v) { - //Logger.w(MODULE_NAME, "列表View V2XPushEventDetailVH 触发 onViewDetachedFromWindow"); - IMogoRegisterCenter registerCenter = BridgeApi.INSTANCE.registerCenter(); - if (registerCenter != null) { - registerCenter.unregisterMogoNaviListener(MODULE_NAME); - } - // 反注册语音交互 - V2XVoiceManager.INSTANCE - .unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CLOSE_WINDOW) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CLOSE_WINDOW_UN_WAKEUP) - .unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CALL_CHATTING) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CHAT_MORE_UN_WAKEUP) - .unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_ZAN) - .unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_REPORT) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_ZAN_UN_WAKEUP) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_FEEDBACK_TRUE) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_FEEDBACK_ERROR) - .unRegisterPagingCallback(); - } - }); - } - - @Override - public void initView(V2XEventShowEntity v2XEventShowEntity) { - mV2XRoadEventEntity = v2XEventShowEntity.getV2XPushMessageEntity(); - mNoveltyInfo = new MarkerExploreWay(); - mNoveltyInfo.setSn(mV2XRoadEventEntity.getSn()); - mNoveltyInfo.setInfoId(mV2XRoadEventEntity.getSceneId()); - MarkerLocation location = new MarkerLocation(); - location.setLat(mV2XRoadEventEntity.getLat()); - location.setLon(mV2XRoadEventEntity.getLon()); - mNoveltyInfo.setLocation(location); - - if (!TextUtils.isEmpty(mV2XRoadEventEntity.getMsgImgUrl())) { - IMogoImageloader imageloader = BridgeApi.INSTANCE.imageLoader(); - if (imageloader != null) { - imageloader.displayImage(mV2XRoadEventEntity.getMsgImgUrl(), ivImg); - } - } - if (!TextUtils.isEmpty(mV2XRoadEventEntity.getHeadImgUrl())) { - IMogoImageloader imageloader = BridgeApi.INSTANCE.imageLoader(); - if (imageloader != null) { - imageloader.displayImage(mV2XRoadEventEntity.getHeadImgUrl(), ivReportHead); - } - } - - switch (mV2XRoadEventEntity.getSceneId()) { - case "100015"://取快递 - case "100016"://顺风车 - ivRoadCallChart.setVisibility(View.VISIBLE); - ivRoadReportTrue.setVisibility(View.GONE); - ivRoadReportErr.setVisibility(View.GONE); - ivRoadEventLike.setVisibility(View.GONE); - break; - - case "100017"://政府公告 - case "100018"://故障车辆推送 - ivRoadEventLike.setVisibility(View.VISIBLE); - ivRoadCallChart.setVisibility(View.GONE); - ivRoadReportTrue.setVisibility(View.GONE); - ivRoadReportErr.setVisibility(View.GONE); - break; - } - } - -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XRecommendRouteVH.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XRecommendRouteVH.kt deleted file mode 100644 index eb38f3905a..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/adapter/holder/V2XRecommendRouteVH.kt +++ /dev/null @@ -1,89 +0,0 @@ -package com.mogo.module.v2x.adapter.holder - -import android.content.Intent -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import com.mogo.commons.voice.AIAssist -import com.mogo.commons.voice.VoicePreemptType -import com.mogo.eagle.core.function.v2x.R -import com.mogo.eagle.core.function.v2x.events.adapter.holder.V2XBaseViewHolder -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants -import com.mogo.eagle.core.utilcode.util.Utils -import com.mogo.module.common.entity.MarkerExploreWay -import com.mogo.module.common.entity.MarkerLocation -import com.mogo.module.common.entity.V2XEventShowEntity -import com.mogo.module.v2x.voice.V2XVoiceManager.registerUnWakeVoice -import com.mogo.module.v2x.voice.V2XVoiceManager.unRegisterUnWakeVoice -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch - -/** - * created by wujifei on 2020/12/31 16:10 - * describe: - */ -class V2XRecommendRouteVH(viewGroup: ViewGroup, v2XWindow: IV2XWindow<*>) : V2XBaseViewHolder( - LayoutInflater.from(viewGroup.context).inflate(R.layout.item_v2x_recommend_route, viewGroup, false), v2XWindow), V2XVoiceCallbackListener { - private var mTvAddress: TextView? = null - private var mIvClose: ImageView? = null - private var mNoveltyInfo: MarkerExploreWay? = null - private val mainScope = MainScope() - - init { - mTvAddress = itemView.findViewById(R.id.tvAddress) - mIvClose = itemView.findViewById(R.id.ivClose) - mIvClose?.setOnClickListener { delayedCloseWindow() } - itemView.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener { - override fun onViewAttachedToWindow(view: View) { - registerUnwakeNavi() - mainScope.launch { - delay(1000 * 20) - delayedCloseWindow() - } - } - - override fun onViewDetachedFromWindow(view: View) { - unRegisterUnwakeNavi() - AIAssist.getInstance(Utils.getApp()).breakOffSpeak() - mainScope.cancel() - } - }) - } - - - override fun initView(viewData: V2XEventShowEntity?) { - viewData?.let { - val markerLocation = MarkerLocation() - markerLocation.lon = it.getV2XRecommendRouteEntity().toPoint.get(0) - markerLocation.lat = it.getV2XRecommendRouteEntity().toPoint.get(1) - mNoveltyInfo = MarkerExploreWay() - mNoveltyInfo?.setLocation(markerLocation) - mTvAddress!!.text = "前往 ${it.getV2XRecommendRouteEntity().formatAddress}" - AIAssist.getInstance(Utils.getApp()).speakTTSVoice(it.getV2XRecommendRouteEntity().tts, VoicePreemptType.PREEMPT_TYPE_IMMEADIATELY, null) - } - - } - - override fun onCallback(command: String?, intent: Intent?) { - when (command) { - V2XVoiceConstants.V2X_CANCLE_ACTION -> delayedCloseWindow() - } - } - - - private fun registerUnwakeNavi() { - registerUnWakeVoice(V2XVoiceConstants.V2X_CONFIRM_ACTION, this) - registerUnWakeVoice(V2XVoiceConstants.V2X_CANCLE_ACTION, this) - } - - private fun unRegisterUnwakeNavi() { - unRegisterUnWakeVoice(V2XVoiceConstants.V2X_CONFIRM_ACTION) - unRegisterUnWakeVoice(V2XVoiceConstants.V2X_CANCLE_ACTION) - } -} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/alarm/V2XAlarmServer.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/alarm/V2XAlarmServer.java index 79342c5958..f59972dee1 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/alarm/V2XAlarmServer.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/alarm/V2XAlarmServer.java @@ -1,10 +1,6 @@ package com.mogo.eagle.core.function.v2x.events.alarm; -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - import android.text.TextUtils; - -import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.v2x.events.utils.DrivingDirectionUtils; import com.mogo.eagle.core.utilcode.constant.TimeConstants; @@ -12,9 +8,6 @@ import com.mogo.eagle.core.utilcode.util.TimeUtils; import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.MarkerLocation; import com.mogo.module.common.entity.V2XRoadEventEntity; -import com.mogo.module.service.Utils; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; -import java.util.ArrayList; import java.util.HashMap; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; @@ -39,65 +32,6 @@ public class V2XAlarmServer { // 记录违章停车播报事件 private static final HashMap mAlertIllegalParkEventList = new HashMap<>(); - /** - * 获取车辆的前方的违章停车事件 - */ - public static MarkerExploreWay getIllegalParkAlarmEvent( - ArrayList v2XExploreWayEntityList, - MogoLocation currentLocation) { - try { - Logger.w(MODULE_NAME, "V2X预警--车辆状态:" + currentLocation); - // 60(km/h) - if (currentLocation != null && v2XExploreWayEntityList != null) { - // 因为集合是按照距离排序后的所以这里检索出来第一个就发出警告 - for (MarkerExploreWay markerExploreWay : v2XExploreWayEntityList) { - // 计算车辆距离 - float distance = Utils.calculateLineDistance( - new MogoLatLng(markerExploreWay.getLocation().getLat(), markerExploreWay.getLocation().getLon()), - new MogoLatLng(currentLocation.getLatitude(), currentLocation.getLongitude()) - ); - - Logger.w(MODULE_NAME, "V2X预警--车辆与违章道路信息:" + - "\n当前车辆距离违章停车点:" + distance); - - // 判断是否到达了触发距离,50 米 - if (distance <= 50) { - Logger.w(MODULE_NAME, "V2X预警--车辆与违章道路信息:" + - "\n违章道路名称:" + markerExploreWay.getAddr() + - "\n车头角度:" + currentLocation.getBearing()); - - // 判断是否已经提示过道路事件 - boolean isAlreadyAlert = false; - String lastTime = mAlertIllegalParkEventList.get(markerExploreWay); - Logger.w(MODULE_NAME, - "V2X预警--事件ID:" + markerExploreWay.getInfoId() + - "\n上一次预警时间:" + lastTime); - if (!TextUtils.isEmpty(lastTime)) { - long timeSpan = Math.abs(TimeUtils.getTimeSpanByNow(lastTime, TimeConstants.MIN)); - Logger.w(MODULE_NAME, - "V2X预警--事件ID:" + markerExploreWay.getInfoId() + - "\n距离当前时间:" + timeSpan); - // 5分钟内不重复提醒 - if (timeSpan < 5) { - isAlreadyAlert = true; - } - } - // 进行提醒 - if (!isAlreadyAlert) { - mAlertIllegalParkEventList.put(markerExploreWay, TimeUtils.getNowString()); - return markerExploreWay; - } - return null; - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - /** * 获取当前车辆前方距离最近的道路事件 */ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/bridge/BridgeApi.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/bridge/BridgeApi.kt index 48f97029b2..b8c8bae37b 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/bridge/BridgeApi.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/bridge/BridgeApi.kt @@ -73,8 +73,6 @@ internal object BridgeApi { fun statusManager(): IMogoStatusManager? = apis?.statusManagerApi - fun topViewManager() = apis?.topViewManager - fun analytics() = apis?.analyticsApi fun overlay() = apis?.mapServiceApi?.getOverlayManager(context()) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/consts/MoGoV2XServicePaths.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/consts/MoGoV2XServicePaths.java index 97601cc470..fc6b4757c6 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/consts/MoGoV2XServicePaths.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/consts/MoGoV2XServicePaths.java @@ -48,14 +48,4 @@ public class MoGoV2XServicePaths { */ @Keep public static final String PATH_V2X_STOP_POLYLINE_MANAGER = "/v2xStopPolylineManager/api"; - - - /** - * V2X 云端数据处理 - */ - @Keep - public static final String PATH_V2X_WARN_CLOUND_DATA_MANAGER = "/v2xWarnCloundDataManager/api"; - - - } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/consts/V2XConst.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/consts/V2XConst.java index 8015ca05c3..1be40996cc 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/consts/V2XConst.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/consts/V2XConst.java @@ -9,21 +9,10 @@ package com.mogo.eagle.core.function.v2x.events.consts; */ public class V2XConst { - public static final String T_SCENARIO_HISTORY = "t_search_poi"; /** * V2X面板名称 */ public static final String MODULE_NAME = "V2X_UI"; - /** - * V2X模块地址 - */ - public static final String PATH_V2X_UI = "/v2x/ui"; - - /** - * 事件面板名称 - */ - public static final String MODULE_NAME_EVENT_PANEL = "MODULE_EVENT_PANEL"; - /** * V2X 场景广播 Action @@ -38,7 +27,6 @@ public class V2XConst { public static final String BROADCAST_SCENE_ACTION = "com.v2x.scene_local_broadcast"; - public static final String SEEK_HELP_TIME = "seek_help_time"; public static final String V2X_ACC_ON_TIME_STR = "v2x_acc_on_time_str"; public static final String V2X_ACC_OFF_TIME_STR = "v2x_acc_off_time_str"; public static final String V2X_STRATEGY_PUSH = "v2x_strategy_push"; @@ -51,83 +39,23 @@ public class V2XConst { public static final String V2X_ROAD_EVET = "v2x_road_event"; public static final String V2X_ROAD_EVET_HISTORY_BUTTON = "V2X_button_click"; public static final String V2X_ROAD_PRODUCE = "v2x_road_produce"; - public static final String V2X_ASK_ALERT = "v2x_ask_alert";//UGC 提问 - public static final String V2X_ASK_RESULT = "v2x_ask_result";//UGC 提问回答或消失 public static final String LAUNCHER_ICON_CLICK = "Launcher_Icon_Click"; - /** - * V2X 道路事件操作类型 - */ - public static final String V2X_ROAD_ZAN = "1"; - public static final String V2X_ROAD_CHAT = "2"; - public static final String V2X_ROAD_VIDEO = "3"; - public static final String V2X_ROAD_NAVI = "4"; - public static final String V2X_ROAD_REPORT_RIGHT = "5"; - public static final String V2X_ROAD_REPORT_ERROR = "6"; - - /** - * V2X 地图上发出警告的POI - */ - public static final String V2X_ILLEGAL_PARK_POI = "V2X_ILLEGAL_PARK_POI"; /** * V2X 地图上发出警告的POI */ public static final String V2X_EVENT_ALARM_POI = "V2X_EVENT_ALARM_POI"; - /** - * V2X 探路数据 - */ - public static final String V2X_CARD_TYPE_ROAD_CONDITION = "V2X_CARD_TYPE_ROAD_CONDITION"; - - /** - * V2X 用户数据 - */ - public static final String V2X_CARD_TYPE_USER_DATA = "V2X_CARD_TYPE_USER_DATA"; - - /** - * V2X 新鲜事 - */ - public static final String V2X_CARD_TYPE_NOVELTY = "V2X_CARD_TYPE_NOVELTY"; - /** * V2X 特殊车辆 */ public static final String V2X_MARKER_SPECIAL_CAR = "V2X_MARKER_SPECIAL_CAR"; - /** - * V2X 可直播车辆 - */ - public static final String V2X_MARKER_LIVE_CAR = "V2X_MARKER_LIVE_CAR"; - - /** - * V2X 取快递 - */ - public static final String V2X_MARKER_EXPRESS = "V2X_MARKER_EXPRESS"; - - /** - * V2X 顺风车 - */ - public static final String V2X_MARKER_TAXI = "V2X_MARKER_TAXI"; - - /** - * V2X 政府推送消息 - */ - public static final String V2X_MARKER_GOVERNMENT = "V2X_MARKER_GOVERNMENT"; - - /** - * 绿波车速marker - */ - public static final String V2X_OPTIMAL_SPEED_MARKER = "V2X_OPTIMAL_SPEED_MARKER"; - /* *V2X 车路云前方预警-识别物 * */ public static final String V2X_FRONT_WARNING_MARKER = "V2X_FRONT_WARNING_MARKER"; - /* - *V2X 车路云前方预警-线 - * */ - public static final String V2X_FRONT_STOP_LINE = "V2X_FRONT_STOP_LINE"; /** * V2X预警日志tag */ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/fragment/V2XScenarioHistoryFragment.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/fragment/V2XScenarioHistoryFragment.kt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/fragment/V2XSurroundingFragment.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/fragment/V2XSurroundingFragment.java deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/AdapterCallback.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/AdapterCallback.java deleted file mode 100644 index f439c373cb..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/AdapterCallback.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.listener; - -/** - * @author liujing - */ -public interface AdapterCallback { - //分享列表加载更多 - void loadMoreShareEventList(); - //分享列表首次刷新 - void getShareEventResponse(); -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/SurroundingDetailItemListener.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/SurroundingDetailItemListener.java deleted file mode 100644 index f2a7a34540..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/SurroundingDetailItemListener.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.listener; - -import android.view.View; -import com.mogo.module.common.entity.MarkerExploreWay; - -/** - * @author lixiaopeng - * @description - * @since 2020/8/10 - */ -public interface SurroundingDetailItemListener { - - void onItemClickListener(View v, int position, MarkerExploreWay exploreWay); -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/SurroundingItemClickListener.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/SurroundingItemClickListener.java deleted file mode 100644 index fa67e9ba60..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/SurroundingItemClickListener.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.listener; - -import android.view.View; - -import com.mogo.eagle.core.function.v2x.events.entity.panel.SurroundingConstruction; - -/** - * @author lixiaopeng - * @description - * @since 2020/8/10 - */ -public interface SurroundingItemClickListener { - void onItemClickListener(View v, int position, SurroundingConstruction construction); -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/V2XMarkerClickListener.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/V2XMarkerClickListener.java deleted file mode 100644 index 11a2f3c75d..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/V2XMarkerClickListener.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.listener; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.text.TextUtils; - -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XMarkerManager; -import com.mogo.eagle.core.function.v2x.events.utils.ChartingUtil; -import com.mogo.map.marker.IMogoMarker; -import com.mogo.map.marker.IMogoMarkerClickListener; -import com.mogo.module.common.entity.MarkerExploreWay; -import com.mogo.module.common.entity.MarkerLocation; -import com.mogo.module.common.entity.MarkerOnlineCar; -import com.mogo.module.common.entity.MarkerShowEntity; -import com.mogo.module.common.entity.V2XRoadEventEntity; -import com.mogo.module.common.enums.EventTypeEnum; -import com.mogo.module.service.ServiceConst; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/4/7 7:13 PM - * desc : - * version: 1.0 - */ -public class V2XMarkerClickListener implements IMogoMarkerClickListener { - - private static V2XMarkerClickListener markerClickListener; - - // 最后一次选中的气泡 - private IMogoMarker mLastCheckMarker; - - private V2XMarkerClickListener() { - } - - public synchronized static V2XMarkerClickListener getInstance() { - synchronized (V2XMarkerClickListener.class) { - if (markerClickListener == null) { - markerClickListener = new V2XMarkerClickListener(); - } - } - return markerClickListener; - } - - @Override - public boolean onMarkerClicked(IMogoMarker marker) { - try { - if (mLastCheckMarker != null) { - // 判断点击的是否是同一个 - if (marker.equals(mLastCheckMarker)) { - Logger.d(MODULE_NAME, "onMarkerClicked 与上一次点击的Marker一样,不做处理:" + marker); - // 判断是在线车辆的时候处理打电话场景 - try { - Object object = marker.getObject(); - if (object != null) { - // 修改数据 - MarkerShowEntity showEntity = (MarkerShowEntity) object; - if (showEntity.getMarkerType().equals(ServiceConst.CARD_TYPE_USER_DATA)) { - Object bindObj = showEntity.getBindObj(); - if (bindObj instanceof MarkerOnlineCar) { - MarkerLocation location = new MarkerLocation(); - location.setLon(marker.getPosition().getLon()); - location.setLat(marker.getPosition().getLat()); - ChartingUtil.callChatting( - ((MarkerOnlineCar) bindObj).getUserInfo(), - location - ); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - return true; - } - // 关闭上次的气泡 - IMoGoV2XMarkerManager v2xMarker = BridgeApi.INSTANCE.v2xMarker(); - if (v2xMarker != null) { - v2xMarker.closeMarker(BridgeApi.INSTANCE.context(), mLastCheckMarker); - } - } - // 将当前的Marker设置为选中 - IMoGoV2XMarkerManager v2xMarker = BridgeApi.INSTANCE.v2xMarker(); - if (v2xMarker != null) { - mLastCheckMarker = v2xMarker.openMarker(BridgeApi.INSTANCE.context(), marker); - } - - // marker点击展示上半部分的浮窗,只加了道路事件 - Object nov = marker.getObject(); - Logger.d(MODULE_NAME, "marker点击====" + nov); - if (nov != null) { - MarkerShowEntity showEntity = (MarkerShowEntity) nov; - if (showEntity.getMarkerType().equals(ServiceConst.CARD_TYPE_NOVELTY)) { - Object bindObj = showEntity.getBindObj(); - if (bindObj instanceof MarkerExploreWay) { - MarkerExploreWay noveltyInfo = (MarkerExploreWay) bindObj; - Logger.d(MODULE_NAME, "新鲜事marker点击===" + bindObj); - V2XRoadEventEntity v2XRoadEventEntity = new V2XRoadEventEntity(); - v2XRoadEventEntity.setLocation(noveltyInfo.getLocation()); - v2XRoadEventEntity.setPoiType(noveltyInfo.getPoiType()); - v2XRoadEventEntity.setNoveltyInfo(noveltyInfo); - v2XRoadEventEntity.setExpireTime(20000); - v2XRoadEventEntity.setDistance(1000); - //V2XServiceManager.getMoGoV2XScenarioManager().showRoadEventWindow(v2XRoadEventEntity, false); - return true; - } - } else if (showEntity.getMarkerType().equals(ServiceConst.CARD_TYPE_ROAD_CONDITION)) { - Object bindObj = showEntity.getBindObj(); - if (bindObj instanceof MarkerExploreWay) { - MarkerExploreWay markerExploreWay = (MarkerExploreWay) bindObj; - if (markerExploreWay.getItems().size() > 0 - && !TextUtils.isEmpty(markerExploreWay.getItems().get(0).getUrl())) { - Logger.d(MODULE_NAME, "MarkerExploreWay点击===" + bindObj); - // 记录道路事件 - V2XRoadEventEntity v2XRoadEventEntity = new V2XRoadEventEntity(); - v2XRoadEventEntity.setLocation(markerExploreWay.getLocation()); - // 探路目前只有上报拥堵 - v2XRoadEventEntity.setPoiType(EventTypeEnum.FOURS_BLOCK_UP.getPoiType()); - - v2XRoadEventEntity.setDistance(1000); - v2XRoadEventEntity.setNoveltyInfo(markerExploreWay); - v2XRoadEventEntity.setExpireTime(20000); - //V2XServiceManager.getMoGoV2XScenarioManager().showRoadEventWindow(v2XRoadEventEntity, false); - return true; - } - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - return true; - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/V2XWindowStatusListener.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/V2XWindowStatusListener.java deleted file mode 100644 index 610c3cfad9..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/listener/V2XWindowStatusListener.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.listener; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/4/15 10:20 AM - * desc : V2X 窗体状态回调 - * version: 1.0 - */ -public interface V2XWindowStatusListener { - void onViewShow(); - - void onViewClose(); -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/receiver/TestPanelBroadcastReceiver.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/receiver/TestPanelBroadcastReceiver.java index 3f1f8049e9..d254f074b9 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/receiver/TestPanelBroadcastReceiver.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/receiver/TestPanelBroadcastReceiver.java @@ -3,16 +3,13 @@ package com.mogo.eagle.core.function.v2x.events.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; - import androidx.localbroadcastmanager.content.LocalBroadcastManager; - import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.function.call.map.CallerSmpManager; import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; import com.mogo.eagle.core.function.v2x.events.entity.net.V2XOptimalRouteDataRes; import com.mogo.eagle.core.function.v2x.events.entity.net.V2XSpecialCarRes; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.livecar.V2XVoiceCallLiveBiz; import com.mogo.eagle.core.function.v2x.events.utils.TestOnLineCarUtils; import com.mogo.eagle.core.function.v2x.events.utils.V2XSQLiteUtils; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; @@ -23,9 +20,7 @@ import com.mogo.module.common.entity.V2XRoadEventEntity; import com.mogo.service.statusmanager.IMogoStatusManager; import com.zhidao.carchattingprovider.ICarsChattingProvider; import com.zhidao.carchattingprovider.MogoDriverInfo; - import java.util.List; - import static android.text.style.TtsSpan.GENDER_MALE; /** @@ -104,9 +99,9 @@ public class TestPanelBroadcastReceiver extends BroadcastReceiver { intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity); LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent); } else if (sceneType == 6) {//查看前车直播 - V2XVoiceCallLiveBiz.getInstance().getFrontCarLive(); + //V2XVoiceCallLiveBiz.getInstance().getFrontCarLive(); } else if (sceneType == 7) {//查看前方路口直播 - V2XVoiceCallLiveBiz.getInstance().getOpenRoadCameraLive(); + //V2XVoiceCallLiveBiz.getInstance().getOpenRoadCameraLive(); } else if (sceneType == 8) {//触发疲劳驾驶 V2XMessageEntity v2XMessageEntity = TestOnLineCarUtils.getV2XScenarioFatigueDrivingData(); diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/IV2XScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/IV2XScenario.java index 9839ac732f..d442e28196 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/IV2XScenario.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/IV2XScenario.java @@ -1,6 +1,5 @@ package com.mogo.eagle.core.function.v2x.events.scenario; -import com.mogo.commons.voice.IMogoVoiceCmdCallBack; import com.mogo.module.common.entity.V2XMessageEntity; /** @@ -22,26 +21,6 @@ public interface IV2XScenario { */ void close(); - /** - * 展示Window - */ - void showWindow(); - - /** - * 关闭Window - */ - void closeWindow(); - - /** - * 展示按钮 - */ - default void showButton() {} - - /** - * 关闭按钮 - */ - default void closeButton() {} - /** * 绘制POI */ @@ -59,13 +38,4 @@ public interface IV2XScenario { * @return true-相同的场景,false-不同场景 */ boolean isSameScenario(V2XMessageEntity v2XMessageEntity); - - /** - * 调用小智语音播放TTS - * - * @param msg 消息 - * @param callBack 播放回调 - */ - void speakTTSVoice(String msg, IMogoVoiceCmdCallBack callBack); - } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/AbsV2XScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/AbsV2XScenario.java index 561d24058c..2e0b285fb9 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/AbsV2XScenario.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/AbsV2XScenario.java @@ -24,8 +24,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.Logger; */ public abstract class AbsV2XScenario implements IV2XScenario { protected String TAG = "AbsV2XScenario"; - private IV2XWindow mV2XWindow; - private IV2XButton mV2XButton; private IV2XMarker mV2XMarker; private V2XMessageEntity mV2XMessageEntity; @@ -36,8 +34,6 @@ public abstract class AbsV2XScenario implements IV2XScenario { @Override public void close() { - closeButton(); - closeWindow(); clearPOI(); } @@ -46,39 +42,13 @@ public abstract class AbsV2XScenario implements IV2XScenario { */ public void release() { mV2XMessageEntity = null; - mV2XWindow = null; - mV2XButton = null; mV2XMarker = null; } - @Override - public void speakTTSVoice(@Nullable String msg, IMogoVoiceCmdCallBack callBack) { - if (!TextUtils.isEmpty(msg)) { - Logger.d(TAG, "调用TTS播放语音:" + msg); - AIAssist.getInstance(Utils.getApp()).speakTTSVoice(msg, VoicePreemptType.PREEMPT_TYPE_IMMEADIATELY, callBack); - } - } - - public IV2XWindow getV2XWindow() { - return mV2XWindow; - } - - public void setV2XWindow(@Nullable IV2XWindow mV2XWindow) { - this.mV2XWindow = mV2XWindow; - } - public IV2XMarker getV2XMarker() { return mV2XMarker; } - public IV2XButton getV2XButton() { - return mV2XButton; - } - - public void setV2XButton(@Nullable IV2XButton mV2XButton) { - this.mV2XButton = mV2XButton; - } - public void setV2XMarker(@Nullable IV2XMarker mV2XMarker) { this.mV2XMarker = mV2XMarker; } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/V2XScenarioManager.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/V2XScenarioManager.java index 89e222a7d6..19893f72e7 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/V2XScenarioManager.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/V2XScenarioManager.java @@ -1,25 +1,16 @@ package com.mogo.eagle.core.function.v2x.events.scenario.impl; import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; -import static com.mogo.module.common.entity.V2XMessageEntity.V2XTypeEnum.ALERT_RECOMMEND_PARKING; - import android.content.Intent; - import androidx.localbroadcastmanager.content.LocalBroadcastManager; +import com.mogo.eagle.core.data.enums.WarningDirectionEnum; +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; import com.mogo.eagle.core.function.v2x.events.scenario.IV2XScenarioManager; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.fatigue.V2XFatigueDrivingScenario; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.help.V2XCarForHelpScenario; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.livecar.V2XPushLiveCarScenario; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.livecar.V2XVoiceCallLiveScenario; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.park.V2XIllegalParkScenario; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.push.V2XPushEventScenario; import com.mogo.eagle.core.function.v2x.events.scenario.scene.road.V2XRoadEventScenario; import com.mogo.eagle.core.function.v2x.events.scenario.scene.route.V2XOptimalRouteVREventScenario; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.seek.V2XSeekHelpScenario; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.ugc.V2XEventUgcScenario; import com.mogo.eagle.core.function.v2x.events.scenario.scene.warning.V2XFrontWarningScenario; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; import com.mogo.eagle.core.utilcode.mogo.toast.TipToast; @@ -28,7 +19,6 @@ import com.mogo.eagle.core.utilcode.util.Utils; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.uicontroller.VisualAngleMode; import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.v2x.scenario.scene.destination.V2XRecommendRouteScenario; import com.mogo.service.statusmanager.IMogoStatusManager; /** @@ -76,39 +66,6 @@ public class V2XScenarioManager implements IV2XScenarioManager { case V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_WARNING: mV2XScenario = new V2XRoadEventScenario(); break; - case V2XMessageEntity.V2XTypeEnum.ALERT_SEEK_WARNING: - mV2XScenario = new V2XSeekHelpScenario(); - break; - case V2XMessageEntity.V2XTypeEnum.ALERT_FATIGUE_DRIVING: - case ALERT_RECOMMEND_PARKING: - mV2XScenario = new V2XFatigueDrivingScenario(); - break; - case V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_WINDOW_WARNING: - mV2XScenario = new V2XPushEventScenario(); - break; - case V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_LIVE_CAR_WARNING: - mV2XScenario = new V2XPushLiveCarScenario(); - break; - case V2XMessageEntity.V2XTypeEnum.ALERT_CAR_FOR_HELP: - mV2XScenario = new V2XCarForHelpScenario(); - break; - case V2XMessageEntity.V2XTypeEnum.ALERT_ILLEGAL_PARK_WARNING: - mV2XScenario = new V2XIllegalParkScenario(); - break; - case V2XMessageEntity.V2XTypeEnum.ALERT_EVENT_UGC_WARNING: - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - mV2XScenario = isVrMode ? null : new V2XEventUgcScenario(); - break; - case V2XMessageEntity.V2XTypeEnum.ALERT_VOICE_CALL_FOR_LIVECAR_SHOW: - mV2XScenario = new V2XVoiceCallLiveScenario(); - break; - case V2XMessageEntity.V2XTypeEnum.ALERT_RECOMMEND_ROUTE: - mV2XScenario = new V2XRecommendRouteScenario(); - break; case V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_VR_SHOW: mV2XScenario = new V2XOptimalRouteVREventScenario(); break; @@ -130,12 +87,8 @@ public class V2XScenarioManager implements IV2XScenarioManager { TipToast.tip("当前V2X消息类型未定义"); return; } - // 展示最新的消息 if (mV2XScenario != null) { - if (v2XMessageEntity.getType() != V2XMessageEntity.V2XTypeEnum.ALERT_CAR_FOR_HELP) { - hidOtherPanel(); - } mV2XScenario.init(v2XMessageEntity); } } @@ -156,8 +109,4 @@ public class V2XScenarioManager implements IV2XScenarioManager { mapUiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); } } - - private void hidOtherPanel() { - - } } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/V2XBasWindow.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/V2XBasWindow.java index 52ec517567..9141641c45 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/V2XBasWindow.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/V2XBasWindow.java @@ -2,19 +2,14 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene; import android.content.Context; import android.util.AttributeSet; -import android.util.Log; import android.widget.RelativeLayout; - -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.service.v2x.IV2XWindowManagerListener; -import com.mogo.service.windowview.IMogoTopViewManager; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; /** * @author donghongyu * @date 12/11/20 10:35 AM */ -public class V2XBasWindow extends RelativeLayout implements IV2XWindowManagerListener { +public class V2XBasWindow extends RelativeLayout { private final String TAG = "V2XBasWindow"; public V2XBasWindow(Context context) { @@ -48,13 +43,4 @@ public class V2XBasWindow extends RelativeLayout implements IV2XWindowManagerLis protected void release() { Logger.w(TAG, "release……"); } - - @Override - public void removeTipWindowByListener() { - Log.d(TAG, "removeAllTipWindow"); - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.removeView(this); - } - } } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/destination/V2XRecommendRouteScenario.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/destination/V2XRecommendRouteScenario.kt deleted file mode 100644 index a2c38fce9c..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/destination/V2XRecommendRouteScenario.kt +++ /dev/null @@ -1,66 +0,0 @@ -package com.mogo.module.v2x.scenario.scene.destination - -import android.view.ViewGroup -import com.mogo.eagle.core.function.v2x.R -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi -import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario -import com.mogo.eagle.core.utilcode.util.Utils -import com.mogo.module.common.entity.V2XMessageEntity -import com.mogo.module.common.entity.V2XRecommendRouteEntity - -/** - * created by wujifei on 2020/12/29 17:57 - * describe:基于目的地预判的道路事件提醒、路线推荐 - */ -class V2XRecommendRouteScenario : AbsV2XScenario() { - - init { - v2XWindow = V2XRecommendRouteWindow() - } - - override fun init(v2XMessageEntity: V2XMessageEntity?) { - v2XMessageEntity?.content?.let { - if (v2XMessageEntity.isShowState) { - if (!isSameScenario(v2XMessageEntity)) { - setV2XMessageEntity(v2XMessageEntity) - show() - } else { - setV2XMessageEntity(v2XMessageEntity) - } - } else { - close() - } - } - } - - - override fun show() { - if (BridgeApi.statusManager()?.isMainPageOnResume == true) { - showWindow() - } - } - - override fun showWindow() { - v2XWindow?.let { - val layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, - Utils.getApp().resources.getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground).toInt()) - BridgeApi.topViewManager()?.addView(it.view, layoutParams) - it.show(v2XMessageEntity.content) - - } - } - - override fun closeWindow() { - v2XWindow?.let { - it.close() - } - } - - override fun showButton() {} - - override fun closeButton() {} - - override fun drawPOI() {} - - override fun clearPOI() {} -} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/destination/V2XRecommendRouteWindow.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/destination/V2XRecommendRouteWindow.kt deleted file mode 100644 index e4541ce5ce..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/destination/V2XRecommendRouteWindow.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.mogo.module.v2x.scenario.scene.destination - -import android.content.Context -import android.util.AttributeSet -import android.view.LayoutInflater -import android.view.View -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.PagerSnapHelper -import androidx.recyclerview.widget.RecyclerView -import com.mogo.eagle.core.function.v2x.R -import com.mogo.eagle.core.function.v2x.events.adapter.V2XRoadEventAdapter -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi -import com.mogo.eagle.core.function.v2x.events.listener.V2XWindowStatusListener -import com.mogo.eagle.core.function.v2x.events.scenario.scene.V2XBasWindow -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow -import com.mogo.module.common.entity.V2XEventShowEntity -import com.mogo.module.common.entity.V2XMessageEntity -import com.mogo.module.common.entity.V2XRecommendRouteEntity - -/** - * created by wujifei on 2020/12/25 11:45 - * describe:基于目的地预判的道路事件场景弹窗 - */ -class V2XRecommendRouteWindow @JvmOverloads constructor( - context: Context = BridgeApi.context(), - attrs: AttributeSet? = null, - defStyleAttr: Int = 0) : V2XBasWindow(context, attrs, defStyleAttr), IV2XWindow { - - private var rvRoadEventList: RecyclerView? = null - private var mV2XRoadEventAdapter: V2XRoadEventAdapter? = null - - // 列表展示 - private val mItemList = mutableListOf() - - init { - initView(context) - } - - private fun initView(context: Context) { - // 填充布局 - LayoutInflater.from(context).inflate(R.layout.window_fault_help, this) - rvRoadEventList = findViewById(R.id.rvRoadEventList); - mV2XRoadEventAdapter = V2XRoadEventAdapter(mItemList, this) - rvRoadEventList?.setAdapter(mV2XRoadEventAdapter) - // 设置切换样式 - PagerSnapHelper().attachToRecyclerView(rvRoadEventList) - // 配置列表朝向 - val layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) - rvRoadEventList?.setLayoutManager(layoutManager) - } - - - override fun close() { - //移除窗体 - BridgeApi.topViewManager()?.removeView(this) - } - - override fun getView(): View { - return this - } - - override fun setWindowStatusListener(listener: V2XWindowStatusListener) { - - } - - override fun show(entity: V2XRecommendRouteEntity?) { - entity.let { - // 清空数据 - mItemList.clear() - val v2XEventShowEntity = V2XEventShowEntity() - v2XEventShowEntity.v2XRecommendRouteEntity = entity - v2XEventShowEntity.viewType = V2XMessageEntity.V2XTypeEnum.ALERT_RECOMMEND_ROUTE - mItemList.add(v2XEventShowEntity) - // 刷新列表 - mV2XRoadEventAdapter?.notifyDataSetChanged() - } - } -} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/fatigue/V2XFatigueDrivingScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/fatigue/V2XFatigueDrivingScenario.java deleted file mode 100644 index a3d952412b..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/fatigue/V2XFatigueDrivingScenario.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.fatigue; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.Nullable; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XStatusManager; -import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.mogo.service.windowview.IMogoTopViewStatusListener; - - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/5/15 5:37 PM - * desc : 疲劳驾驶/目的地停车场推荐场景 - * 目的地停车场他推荐:http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=48958095 - * version: 1.0 - */ -public class V2XFatigueDrivingScenario extends AbsV2XScenario implements IMogoTopViewStatusListener { - - public V2XFatigueDrivingScenario() { - setV2XWindow(new V2XFatigueDrivingWindow()); - } - - @Override - public void init(@Nullable V2XMessageEntity v2XMessageEntity) { - boolean isVrMode = false; - boolean isMainPageOnResume = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - isMainPageOnResume = statusManager.isMainPageOnResume(); - } - if (isVrMode) { - return; - } - if (!isSameScenario(v2XMessageEntity)) { - setV2XMessageEntity(v2XMessageEntity); - if (v2XMessageEntity != null) { - if (v2XMessageEntity.isShowState() - && isMainPageOnResume) { - show(); - } - } - } else { - setV2XMessageEntity(v2XMessageEntity); - Logger.w(MODULE_NAME, "疲劳驾驶场景,要处理的场景已经存在,丢弃这次初始化"); - } - } - - @Override - public void show() { - showWindow(); - } - - @Override - public void showWindow() { - if (getV2XWindow() != null) { - ViewGroup.LayoutParams layoutParams = - new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - (int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground)); - - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.addView(getV2XWindow().getView(), layoutParams, this); - } - getV2XWindow().show(getV2XMessageEntity().getContent()); - - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setFatigueDrivingWindowShow(TAG, true); - } - } - } - - @Override - public void closeWindow() { - if (getV2XWindow() != null) { - getV2XWindow().close(); - } - } - - @Override - public void showButton() { - } - - @Override - public void closeButton() { - } - - @Override - public void drawPOI() { - } - - @Override - public void clearPOI() { - } - - @Override - public void onViewAdded(View view) { - Logger.d(MODULE_NAME, "疲劳驾驶场景 展示 Window 动画结束"); - } - - @Override - public void onViewRemoved(View view) { - Logger.d(MODULE_NAME, "疲劳驾驶场景 关闭 Window 动画结束"); - } - - @Override - public void beforeViewAddAnim(View view) { - Logger.d(MODULE_NAME, "疲劳驾驶场景 展示 Window 开始"); - - } - - @Override - public void beforeViewRemoveAnim(View view) { - Logger.d(MODULE_NAME, "疲劳驾驶场景 关闭 Window 开始"); - // 重置场景提示的消息 - setV2XMessageEntity(null); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setFatigueDrivingWindowShow(TAG, false); - } - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/fatigue/V2XFatigueDrivingWindow.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/fatigue/V2XFatigueDrivingWindow.java deleted file mode 100644 index d4e70a5453..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/fatigue/V2XFatigueDrivingWindow.java +++ /dev/null @@ -1,160 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.fatigue; - -import android.content.Context; -import android.os.Handler; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.PagerSnapHelper; -import androidx.recyclerview.widget.RecyclerView; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.adapter.V2XRoadEventAdapter; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.listener.V2XWindowStatusListener; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.V2XBasWindow; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.service.windowview.IMogoTopViewManager; - -import java.util.ArrayList; -import java.util.List; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/4/24 11:34 AM - * desc : 疲劳驾驶场景Window - * version: 1.0 - */ -public class V2XFatigueDrivingWindow extends V2XBasWindow - implements IV2XWindow { - // 展示列表 - private RecyclerView mRecyclerView; - // 列表数据适配器 - private V2XRoadEventAdapter mV2XRoadEventAdapter; - // 列表展示 - private List mItemList = new ArrayList<>(); - - // 直播30秒自动关闭 - private static Handler handlerV2XEvent = new Handler(); - private static Runnable runnableV2XEvent; - - // 推荐的停车场 - private V2XPushMessageEntity mV2XPushMessageEntity; - - public V2XFatigueDrivingWindow() { - this(BridgeApi.INSTANCE.context(), null); - } - - public V2XFatigueDrivingWindow(Context context) { - this(context, null); - } - - public V2XFatigueDrivingWindow(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public V2XFatigueDrivingWindow(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initView(context); - } - - public void initView(Context context) { - //Logger.w(MODULE_NAME, "V2X-初始化疲劳驾驶"); - LayoutInflater.from(context).inflate(R.layout.window_fault_help, this); - // 详情列表 - mRecyclerView = findViewById(R.id.rvRoadEventList); - mV2XRoadEventAdapter = new V2XRoadEventAdapter(mItemList,this); - mRecyclerView.setAdapter(mV2XRoadEventAdapter); - // 设置切换样式 - new PagerSnapHelper().attachToRecyclerView(mRecyclerView); - // 配置列表朝向 - LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false); - mRecyclerView.setLayoutManager(layoutManager); - mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { - super.onScrollStateChanged(recyclerView, newState); - if (recyclerView.getChildCount() > 0) { - if (newState == RecyclerView.SCROLL_STATE_IDLE) { - // 用户处于交互的时候延后隐藏时间 - countDownV2XEvent(); - } - } - } - }); - } - - - /** - * 展示道路事件详情Windows - */ - @Override - public void show(V2XPushMessageEntity entity) { - if (entity != null) { - mV2XPushMessageEntity = entity; - // 清空数据 - mItemList.clear(); - //Logger.d(MODULE_NAME, "V2X===推送消息:" + v2XRoadEventEntity); - V2XEventShowEntity v2XEventShowEntity = new V2XEventShowEntity(); - v2XEventShowEntity.setV2XPushMessageEntity(mV2XPushMessageEntity); - v2XEventShowEntity.setViewType(V2XMessageEntity.V2XTypeEnum.ALERT_FATIGUE_DRIVING); - mItemList.add(v2XEventShowEntity); - // 刷新列表 - mV2XRoadEventAdapter.notifyDataSetChanged(); - - countDownV2XEvent(); - } - } - - @Override - public void close() { - // 停止倒计时 - if (handlerV2XEvent != null && runnableV2XEvent != null) { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - runnableV2XEvent = null; - } - - //移除窗体 - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.removeView(this); - } - } - - @Override - public View getView() { - return this; - } - - @Override - public void setWindowStatusListener(V2XWindowStatusListener listener) { - } - - /** - * 窗体倒计时 - */ - public void countDownV2XEvent() { - if (mV2XPushMessageEntity != null) { - // 倒计时 - if (runnableV2XEvent == null) { - runnableV2XEvent = () -> { - //Logger.d(MODULE_NAME, "V2X=== Window 30秒倒计时结束。。。"); - // 移出Window详细信息 - close(); - }; - } else { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - } - int expireTime = mV2XPushMessageEntity.getExpireTime(); - //Logger.d(MODULE_NAME, "V2X=== Window 展示开始倒计时:" + expireTime); - handlerV2XEvent.postDelayed(runnableV2XEvent, expireTime); - } - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/help/V2XCarForHelpScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/help/V2XCarForHelpScenario.java deleted file mode 100644 index c332f69da9..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/help/V2XCarForHelpScenario.java +++ /dev/null @@ -1,232 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.help; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.os.CountDownTimer; - -import androidx.annotation.Nullable; - -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XMarkerManager; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XPolylineManager; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XStatusManager; -import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; -import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; -import com.mogo.eagle.core.utilcode.util.ThreadUtils; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.v2x.voice.V2XVoiceManager; -import com.mogo.service.statusmanager.IMogoStatusChangedListener; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.statusmanager.StatusDescriptor; - -/** - * @ProjectName: MoGoModulSafeDriving - * @Package: com.mogo.module.v2x.scenario.scene - * @ClassName: V2XCarForHelpScenario - * @Description: 自车求助场景 - * @Author: fenghl - * @CreateDate: 2020/5/25 11:44 - * @UpdateUser: 更新者: - * @UpdateDate: 2020/5/25 11:44 - * @UpdateRemark: 更新说明: - * @Version: 1.0 - */ -public class V2XCarForHelpScenario extends AbsV2XScenario implements IMogoStatusChangedListener { - private static final String TAG = MODULE_NAME + "_" + V2XCarForHelpScenario.class.getSimpleName(); - private volatile static V2XCarForHelpScenario mV2XCarForHelpScenario; - private CountDownTimer mMySeekHelpCountDown; - private V2XSeekHelpDialog v2xFaultHelpDialog; - private V2XSeekHelpButton mV2XSeekHelpButton; - - public V2XCarForHelpScenario() { - mV2XSeekHelpButton = new V2XSeekHelpButton(); - setV2XButton(mV2XSeekHelpButton); - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - statusManager.registerStatusChangedListener(TAG, StatusDescriptor.SEEK_HELPING, this); - statusManager.registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, this); - } - } - - @Override - public void init(@Nullable V2XMessageEntity v2XMessageEntity) { - // 设置Button的显示 - if (v2XMessageEntity == null) { - return; - } - setV2XMessageEntity(v2XMessageEntity); - Boolean isShow = getV2XMessageEntity().getContent(); - if (isShow) { - showButton(); - mySeekHelpCountDownTimerCancel(); - mySeekHelpCountDownTimerStart(); - unregisterSeekHelpButtonCmd(); - V2XVoiceManager.INSTANCE.registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CANCEL_HELP, cancelCb); - V2XVoiceManager.INSTANCE.registerUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CANCEL_FOR_HELP_UN_WAKEUP, cancelCb); - } else { - closeButton(); - } - } - - @Override - public void show() { - showButton(); - } - - @Override - public void showWindow() { - } - - @Override - public void closeWindow() { - } - - private V2XVoiceCallbackListener cancelCb = null; - - @Override - public void showButton() { - Logger.d(TAG, "打开自车求助按钮!"); - // 设置Button的显示 - ThreadUtils.runOnUiThread(() -> { - if (getV2XButton() != null) { - getV2XButton().setOnActionListener(this::showDialog); - getV2XButton().show(); - // V2XServiceManager.getMogoEntranceButtonController().showLeftNoticeByType(IMogoEntranceButtonController.NOTICE_TYPE_SEEK_HELP, R.drawable.module_v2x_left_notice_seek_help, "正在发起求助..."); - } - }); - } - - @Override - public void closeButton() { - boolean isSeekHelping = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isSeekHelping = statusManager.isSeekHelping(); - } - if (isSeekHelping) { - Logger.d(TAG, "关闭自车求助按钮!"); - statusManager.setSeekHelping(TAG, false); - if (getV2XButton() != null) { - getV2XButton().close(); - SharedPrefsMgr.getInstance(Utils.getApp()).putLong(V2XConst.SEEK_HELP_TIME, 0); - } - - mySeekHelpCountDownTimerCancel(); - } - boolean isOtherSeekHelpPOIShow = false; - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - isOtherSeekHelpPOIShow = v2xStatus.isOtherSeekHelpPOIShow(); - } - if (isOtherSeekHelpPOIShow) { - // 移除线 - IMoGoV2XPolylineManager v2xPolyline = BridgeApi.INSTANCE.v2xPolyline(); - if (v2xPolyline != null) { - v2xPolyline.clearLine(); - } - - IMoGoV2XMarkerManager v2xMarker = BridgeApi.INSTANCE.v2xMarker(); - if (v2xMarker != null) { - // 绘制上次的数据 - v2xMarker.drawableLastAllPOI(); - } - } - } - - - @Override - public void drawPOI() { - //无Poi - } - - @Override - public void clearPOI() { - //无Poi - } - - - private void mySeekHelpCountDownTimerStart() { - long seekHelpTimeStart = SharedPrefsMgr.getInstance(BridgeApi.INSTANCE.context()).getLong(V2XConst.SEEK_HELP_TIME, 0); - if (seekHelpTimeStart == 0) { - return; - } - long curTime = System.currentTimeMillis(); - long timeOut = 10 * 60_000; - //超时时间 - if (curTime - seekHelpTimeStart < timeOut) { - long min30 = 30 * 60 * 1000; - //long min30 = 10_000; - long countDown = seekHelpTimeStart + min30 - curTime; - //从自车故障时间起 30分钟后弹框提醒 - if (mMySeekHelpCountDown == null) { - mMySeekHelpCountDown = new CountDownTimer(countDown, countDown) { - @Override - public void onTick(long millisUntilFinished) { - - } - - @Override - public void onFinish() { - showDialog(); - } - }; - mMySeekHelpCountDown.start(); - } - } - } - - private void mySeekHelpCountDownTimerCancel() { - if (mMySeekHelpCountDown != null) { - mMySeekHelpCountDown.cancel(); - mMySeekHelpCountDown = null; - } - } - - - public void showDialog() { - if (v2xFaultHelpDialog == null) { - v2xFaultHelpDialog = new V2XSeekHelpDialog(BridgeApi.INSTANCE.context()); - } -// v2xFaultHelpDialog.setOnClickListener(new V2XSeekHelpDialog.OnClickListener() { -// @Override -// public void onClickLeft() { -// //放弃求助 -// /* if (V2XServiceManager.getMoGoStatusManager().isSeekHelping()) { -// V2XServiceManager.getMoGoStatusManager().setSeekHelping(TAG, false); -// }*/ -// closeButton(); -// v2xFaultHelpDialog.dismiss(); -// } -// -// @Override -// public void onClickRight() { -// //继续求助 -// v2xFaultHelpDialog.dismiss(); -// -// } -// }); -// v2xFaultHelpDialog.show(); - closeButton(); - - } - - private void unregisterSeekHelpButtonCmd() { - V2XVoiceManager.INSTANCE.unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CANCEL_HELP); - V2XVoiceManager.INSTANCE.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CANCEL_FOR_HELP_UN_WAKEUP); - } - - @Override - public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { - if (descriptor == StatusDescriptor.SEEK_HELPING) { - V2XMessageEntity entity = new V2XMessageEntity<>(); - entity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_CAR_FOR_HELP); - entity.setContent(isTrue); - init(entity); - } - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/help/V2XSeekHelpButton.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/help/V2XSeekHelpButton.java deleted file mode 100644 index 3469b9681a..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/help/V2XSeekHelpButton.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.help; - -import android.content.Intent; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.mogo.commons.voice.AIAssist; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.network.V2XRefreshCallback; -import com.mogo.eagle.core.function.v2x.events.network.V2XRefreshModel; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XButton; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XButtonListener; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.module.v2x.voice.V2XVoiceManager; -import com.mogo.service.windowview.IMogoTopViewManager; - -/** - * @ProjectName: MoGoModulSafeDriving - * @Package: com.mogo.module.v2x.scenario.view - * @ClassName: V2XSeekHelpButton - * @Description: 自车求助按钮 - * @Author: fenghl - * @CreateDate: 2020/5/18 10:46 - * @UpdateUser: 更新者: - * @UpdateDate: 2020/5/18 10:46 - * @UpdateRemark: 更新说明: - * @Version: 1.0 - */ -public class V2XSeekHelpButton implements IV2XButton { - private TextView tv; - private IV2XButtonListener mListener; - private V2XVoiceCallbackListener cancelCb = (String command, Intent intent) -> { - doAction(); - }; - private View topView; - - - private void doAction() { - if (mListener != null) { - mListener.onAction(); - } - } - - @Override - public void setOnActionListener(IV2XButtonListener listener) { - mListener = listener; - } - - @Override - public void show() { - registerVoice(); - } - - public void showTopView() { - topView = View.inflate(BridgeApi.INSTANCE.context(), R.layout.window_carforhelp_detail, null); - TextView tvCancel = topView.findViewById(R.id.tv_cancel); - tvCancel.setOnClickListener(v -> { - doAction(); - }); - ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, - (int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_car_for_help_window_height)); - - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.addView(topView, layoutParams); - } - } - - public void closeTopView() { - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.removeView(topView); - } - } - - @Override - public void close() { - if (tv != null) { - AIAssist.getInstance(Utils.getApp()).speakTTSVoice("已取消", null); - tv.setVisibility(View.GONE); - closeTopView(); - V2XRefreshModel v2XRefreshModel = BridgeApi.INSTANCE.refreshModel(); - v2XRefreshModel.cancelHelpSignal(new V2XRefreshCallback() { - @Override - public void onSuccess(BaseData result) { - tv.setVisibility(View.GONE); - closeTopView(); - } - - @Override - public void onFail(String msg) { - tv.setVisibility(View.VISIBLE); - showTopView(); - } - }); - mListener = null; - } - unRegisterVoice(); - } - - @Override - public void registerVoice() { - V2XVoiceManager.INSTANCE.registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CANCEL_HELP, cancelCb); - } - - @Override - public void unRegisterVoice() { - V2XVoiceManager.INSTANCE.unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CANCEL_HELP); - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/help/V2XSeekHelpDialog.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/help/V2XSeekHelpDialog.java deleted file mode 100644 index 3423005940..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/help/V2XSeekHelpDialog.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.help; - -import android.content.Context; -import android.content.Intent; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.TextView; - -import androidx.constraintlayout.widget.ConstraintLayout; - -import com.mogo.commons.voice.AIAssist; -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.module.common.wm.WindowManagerView; -import com.mogo.module.v2x.voice.V2XVoiceManager; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; - -/** - * @ProjectName: MoGoModulSafeDriving - * @Package: com.mogo.module.v2x.window - * @ClassName: V2XDialog - * @Description: java类作用描述 - * @Author: fenghl - * @CreateDate: 2020/4/22 14:27 - * @UpdateUser: 更新者: - * @UpdateDate: 2020/4/22 14:27 - * @UpdateRemark: 更新说明: - * @Version: 1.0 - */ -public class V2XSeekHelpDialog extends ConstraintLayout implements View.OnClickListener { - public static final String TAG = "V2XDialog"; - private TextView tvContent; - private TextView tvLeft; - private TextView tvRight; - private Context mContext; - - public V2XSeekHelpDialog(Context context) { - this(context, null); - } - - public V2XSeekHelpDialog(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public V2XSeekHelpDialog(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - - init(context); - } - - private void init(Context context) { - mContext = context; - LayoutInflater.from(context).inflate(R.layout.dialog_v2x_seek_help, this); - tvContent = findViewById(R.id.tvDialogContent); - tvLeft = findViewById(R.id.tvDialogLeft); - tvRight = findViewById(R.id.tvDialogRight); - tvContent.setText("确定解除求助状态?"); - tvLeft.setText("确定"); - tvRight.setText("取消"); - tvLeft.setOnClickListener(this); - tvRight.setOnClickListener(this); - - } - - private OnClickListener mListener; - - public void setOnClickListener(OnClickListener listener) { - mListener = listener; - } - - public interface OnClickListener { - void onClickLeft(); - - void onClickRight(); - } - - private WindowManagerView windowManager; - - public void show() { - try { - Logger.d(TAG, "使用windowManager实现"); -// if ( windowManager == null ) { -// windowManager = new WindowManagerView.Builder( -// V2XServiceManager.getMogoEntranceButtonController().getButton(ButtonIndex.BUTTON2).getContext() -// ).contentView(this).build(); -// } -// AIAssist.getInstance(Utils.getApp()).speakTTSVoice("确定要解除求助状态吗"); -// unRegisterVoiceCmd(); -// registerVoiceCmd(); -// windowManager.show(); - handleLeft(); - AIAssist.getInstance(Utils.getApp()).speakTTSVoice("已取消"); - - } catch (Exception e) { - e.printStackTrace(); - } - } - - private V2XVoiceCallbackListener voiceRightCb = (String command, Intent intent) -> { - //继续求助 - handleRight(); - }; - private V2XVoiceCallbackListener voiceLeftCb = (String command, Intent intent) -> { - - //放弃求助 - handleLeft(); - }; - - public void dismiss() { - if (windowManager != null) { - windowManager.dismiss(); - } - windowManager = null; - } - - //放弃求助 - private void handleLeft() { - if (mListener != null) { - mListener.onClickLeft(); - } -// unRegisterVoiceCmd(); - } - - //继续求助 - private void handleRight() { - if (mListener != null) { - mListener.onClickRight(); - } -// unRegisterVoiceCmd(); - } - - private void registerVoiceCmd() { - V2XVoiceManager.INSTANCE.registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_COMMON_CONFIRM, voiceLeftCb); - V2XVoiceManager.INSTANCE.registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_COMMON_CANCEL, voiceRightCb); - V2XVoiceManager.INSTANCE.registerUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CONFIRM_UN_WAKEUP, voiceLeftCb); - V2XVoiceManager.INSTANCE.registerUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CANCEL_UN_WAKEUP, voiceRightCb); - } - - private void unRegisterVoiceCmd() { - V2XVoiceManager.INSTANCE.unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_COMMON_CONFIRM); - V2XVoiceManager.INSTANCE.unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_COMMON_CANCEL); - V2XVoiceManager.INSTANCE.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CONFIRM_UN_WAKEUP); - V2XVoiceManager.INSTANCE.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CANCEL_UN_WAKEUP); - } - - @Override - public void onClick(View v) { - int vId = v.getId(); - if (vId == R.id.tvDialogLeft) { - handleLeft(); - } else if (vId == R.id.tvDialogRight) { - handleRight(); - } - } -} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XPushLiveCarScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XPushLiveCarScenario.java deleted file mode 100644 index 03bdb51329..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XPushLiveCarScenario.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.livecar; - -import android.text.TextUtils; -import android.view.View; -import android.view.ViewGroup; -import androidx.annotation.Nullable; -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XStatusManager; -import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario; -import com.mogo.eagle.core.function.v2x.events.utils.ADASUtils; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.mogo.service.windowview.IMogoTopViewStatusListener; -import com.mogo.eagle.core.utilcode.mogo.toast.TipToast; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/5/15 5:37 PM - * desc : TODO 推送直播场景 非演示 - * version: 1.0 - */ -public class V2XPushLiveCarScenario extends AbsV2XScenario implements IMogoTopViewStatusListener { - - public V2XPushLiveCarScenario() { - setV2XWindow(new V2XPushLiveCarWindow()); - } - - @Override - public void init(@Nullable V2XMessageEntity v2XMessageEntity) { - boolean isMainPageOnResume = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isMainPageOnResume = statusManager.isMainPageOnResume(); - } - if (!isSameScenario(v2XMessageEntity) - && isMainPageOnResume) { - setV2XMessageEntity(v2XMessageEntity); - if (v2XMessageEntity != null && - (v2XMessageEntity.getContent().getVideoSn() != null || - !TextUtils.isEmpty(v2XMessageEntity.getContent().getVideoUrl()))) { - show(); - } else { - TipToast.shortTip("附近没有可直播车机"); - } - } else { - setV2XMessageEntity(v2XMessageEntity); - } - } - - @Override - public void show() { - showWindow(); - } - - @Override - public void showWindow() { - if (getV2XWindow() != null) { - - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - int width = (int) Utils.getApp().getResources().getDimension(isVrMode ? - R.dimen.module_v2x_event_window_width_vr : R.dimen.module_v2x_event_window_width); - int height = (int) Utils.getApp().getResources().getDimension(isVrMode ? - R.dimen.module_v2x_event_see_live_window_height_vr : R.dimen.module_v2x_event_see_live_window_height); - ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(width, height); - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (isVrMode) { - if (topViewManager != null) { - topViewManager.addViewNoLinkage(getV2XWindow().getView(), layoutParams, this); - } - } else { - if (topViewManager != null) { - topViewManager.addView(getV2XWindow().getView(), layoutParams, this); - } - } - getV2XWindow().show(getV2XMessageEntity().getContent()); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setLiveCarWindowShow(TAG,true); - } - } - } - - @Override - public void closeWindow() { - if (getV2XWindow() != null) { - getV2XWindow().close(); - } - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setLiveCarWindowShow(TAG, false); - } - } - - @Override - public void showButton() { - if (getV2XButton() != null) { - getV2XButton().show(); - } - } - - @Override - public void closeButton() { - if (getV2XButton() != null) { - getV2XButton().close(); - } - } - - @Override - public void drawPOI() { - if (getV2XMarker() != null) { - getV2XMarker().drawPOI(getV2XMessageEntity().getContent()); - } - } - - @Override - public void clearPOI() { - if (getV2XMarker() != null) { - getV2XMarker().clearPOI(); - } - } - - @Override - public void onViewAdded(View view) { - ADASUtils.broadcastToADAS(BridgeApi.INSTANCE.context(), getV2XMessageEntity().getContent()); - } - - @Override - public void onViewRemoved(View view) { - } - - @Override - public void beforeViewAddAnim(View view) { - } - - @Override - public void beforeViewRemoveAnim(View view) { - // 重置场景提示的消息 - setV2XMessageEntity(null); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setLiveCarWindowShow(TAG, false); - } - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XPushLiveCarWindow.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XPushLiveCarWindow.java deleted file mode 100644 index 1685e208ed..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XPushLiveCarWindow.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.livecar; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.content.Context; -import android.os.Handler; -import android.text.TextUtils; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.ImageView; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.listener.V2XWindowStatusListener; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.V2XBasWindow; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.function.v2x.events.view.V2XLiveGSYVideoView; -import com.mogo.map.uicontroller.IMogoMapUIController; -import com.mogo.module.common.entity.MarkerCarInfo; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.service.imageloader.IMogoImageloader; -import com.mogo.service.imageloader.MogoImageView; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/4/24 11:34 AM - * version: 1.0 - */ -public class V2XPushLiveCarWindow extends V2XBasWindow implements IV2XWindow { - - private V2XLiveGSYVideoView mV2XLiveGSYVideoView; - private MogoImageView mIvReportHead; - - // 弹窗状态监听 - private V2XWindowStatusListener mV2XWindowStatusListener; - - // 直播30秒自动关闭 - private static final Handler handlerV2XEvent = new Handler(); - private static Runnable runnableV2XEvent; - - public V2XPushLiveCarWindow() { - this(BridgeApi.INSTANCE.context(), null); - } - - public V2XPushLiveCarWindow(Context context) { - this(context, null); - } - - public V2XPushLiveCarWindow(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public V2XPushLiveCarWindow(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initView(context); - } - - public void initView(Context context) { - //Logger.w(MODULE_NAME, "初始化直播小窗口View。。。。。"); - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - LayoutInflater.from(context).inflate(isVrMode - ? R.layout.item_v2x_push_live_video_vr - : R.layout.item_v2x_push_live_video, this); - // 详情列表 - mV2XLiveGSYVideoView = findViewById(R.id.videoPlayer); - mIvReportHead = findViewById(R.id.ivReportHead); - ImageView pushVideoClose = findViewById(R.id.pushVideoClose); - pushVideoClose.setOnClickListener(v -> close()); - } - - /** - * 展示道路事件详情Windows - */ - @Override - public void show(V2XPushMessageEntity entity) { - if (entity != null) { - //Logger.w(MODULE_NAME, "更新直播信息。。。。。" + entity); - - if (!TextUtils.isEmpty(entity.getHeadImgUrl())) { - mIvReportHead.setVisibility(VISIBLE); - IMogoImageloader imageLoader = BridgeApi.INSTANCE.imageLoader(); - if (imageLoader != null) { - imageLoader.displayImage(entity.getHeadImgUrl(), mIvReportHead); - } - } - // 启动播放 - MarkerCarInfo.CarLiveInfo carLiveInfo = new MarkerCarInfo.CarLiveInfo(); - carLiveInfo.setVideoChannel(entity.getVideoChannel()); - carLiveInfo.setVideoSn(entity.getVideoSn()); - carLiveInfo.setVideoUrl(entity.getVideoUrl()); - mV2XLiveGSYVideoView.startLive(carLiveInfo); - countDownV2XEvent(entity); - - if (mV2XWindowStatusListener != null) { - mV2XWindowStatusListener.onViewShow(); - } - } - } - - @Override - public void close() { - // 修改地图比例 - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - statusManager.setUserInteractionStatus(MODULE_NAME, true, false); - } - // 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随 - IMogoMapUIController mapUiController = BridgeApi.INSTANCE.mapUiController(); - if (mapUiController != null) { - mapUiController.loseLockMode(); - } - // 如果窗体处于展示的时候 - if (mV2XWindowStatusListener != null) { - mV2XWindowStatusListener.onViewClose(); - } - // 停止倒计时 - if (runnableV2XEvent != null) { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - runnableV2XEvent = null; - } - remove(); - } - - @Override - public View getView() { - return this; - } - - @Override - public void setWindowStatusListener(V2XWindowStatusListener listener) { - this.mV2XWindowStatusListener = listener; - } - - /** - * 窗体倒计时 - */ - public void countDownV2XEvent(V2XPushMessageEntity v2XPushMessageEntity) { - // 倒计时 - if (runnableV2XEvent == null) { - //Logger.d(MODULE_NAME, "V2X=== Window 30秒倒计时结束。。。"); - //移出Window详细信息 - runnableV2XEvent = this::close; - } else { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - } - int expireTime = v2XPushMessageEntity.getExpireTime(); - //Logger.d(MODULE_NAME, "V2X=== Window 展示开始倒计时:" + expireTime); - handlerV2XEvent.postDelayed(runnableV2XEvent, expireTime); - } - - //移除窗体 - private void remove(){ - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (isVrMode) { - if (topViewManager != null) { - topViewManager.removeViewNoLinkage(this); - } - } else { - if (topViewManager != null) { - topViewManager.removeView(this); - } - } - } - -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XRoadLiveCarScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XRoadLiveCarScenario.java deleted file mode 100644 index 55d9f3075c..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XRoadLiveCarScenario.java +++ /dev/null @@ -1,174 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.livecar; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.util.Log; -import android.view.View; -import android.view.ViewGroup; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XMarkerManager; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XStatusManager; -import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.mogo.service.windowview.IMogoTopViewStatusListener; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; - -import java.util.List; - - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/5/29 11:16 AM - * desc : 道路预警中的直播场景 - * version: 1.0 - */ -public class V2XRoadLiveCarScenario extends AbsV2XScenario> implements IMogoTopViewStatusListener { - private static final String TAG = "V2XRoadEventScenario"; - private static V2XRoadLiveCarScenario mV2XRoadLiveCarScenario; - - private V2XRoadLiveCarScenario() { - } - - public static V2XRoadLiveCarScenario getInstance() { - if (mV2XRoadLiveCarScenario == null) { - synchronized (V2XRoadLiveCarScenario.class) { - if (mV2XRoadLiveCarScenario == null) { - mV2XRoadLiveCarScenario = new V2XRoadLiveCarScenario(); - } - } - } - return mV2XRoadLiveCarScenario; - } - - @Override - public void init(V2XMessageEntity> v2XMessageEntity) { - try { - List v2XRoadEventEntity = v2XMessageEntity.getContent(); - if (v2XRoadEventEntity != null) { - if (v2XMessageEntity.isShowState()) { - mV2XRoadLiveCarScenario.setV2XWindow(new V2XRoadLiveCarWindow()); - setV2XMessageEntity(v2XMessageEntity); - show(); - } else { - close(); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Override - public void show() { - if (getV2XMessageEntity() != null && getV2XMessageEntity().getContent() != null) { - showWindow(); - } - } - - @Override - public void showWindow() { - IV2XWindow window = getV2XWindow(); - Log.d(TAG, window.toString()); - if (window != null) { - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - boolean isVrMode = false; - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - int width = (int) Utils.getApp().getResources().getDimension(isVrMode ? - R.dimen.module_v2x_event_window_width_vr : R.dimen.module_v2x_event_window_width); - int height = (int) Utils.getApp().getResources().getDimension(isVrMode ? - R.dimen.module_v2x_event_see_live_window_height_vr : R.dimen.module_v2x_event_see_live_window_height); - ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(width, height); - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.addViewNoLinkage(window.getView(), layoutParams, this); - } - window.show(getV2XMessageEntity().getContent()); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setRoadLiveCarWindowShow(TAG, true); - } - } - } - - @Override - public void closeWindow() { - if (getV2XWindow() != null) { - getV2XWindow().close(); - } - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setRoadLiveCarWindowShow(TAG, false); - } - } - - @Override - public void showButton() { - if (getV2XButton() != null) { - getV2XButton().show(); - } - } - - @Override - public void closeButton() { - if (getV2XButton() != null) { - getV2XButton().close(); - } - } - - @Override - public void drawPOI() { - if (getV2XMarker() != null) { - getV2XMarker().drawPOI(getV2XMessageEntity().getContent()); - } - } - - @Override - public void clearPOI() { - if (getV2XMarker() != null) { - getV2XMarker().clearPOI(); - } - } - - @Override - public void onViewAdded(View view) { - Logger.d(MODULE_NAME, "展示 Window 动画结束"); - } - - @Override - public void onViewRemoved(View view) { - Logger.d(MODULE_NAME, "关闭 Window 动画结束"); - - } - - @Override - public void beforeViewAddAnim(View view) { - Logger.d(MODULE_NAME, "展示 Window 开始"); - } - - @Override - public void beforeViewRemoveAnim(View view) { - Logger.d(MODULE_NAME, "关闭 Window 开始"); - // 警报状态,true-警报中,false-警报结束 - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setRoadLiveCarWindowShow(TAG, false); - } - // 打开直播后,窗口倒计时暂停关闭,直播被关闭后继续倒计时 -// V2XRoadEventWindow window = (V2XRoadEventWindow) V2XRoadEventScenario.getInstance().getV2XWindow(); -// window.startCountDown(); - // 重置场景提示的消息 - setV2XMessageEntity(null); - // 关闭场景提示 - clearPOI(); - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XRoadLiveCarWindow.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XRoadLiveCarWindow.java deleted file mode 100644 index 8411912ae5..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XRoadLiveCarWindow.java +++ /dev/null @@ -1,235 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.livecar; - -import android.content.Context; -import android.os.Handler; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.TextView; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.PagerSnapHelper; -import androidx.recyclerview.widget.RecyclerView; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.adapter.V2XRoadEventAdapter; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.listener.V2XWindowStatusListener; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.V2XBasWindow; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoicePagingListener; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.v2x.voice.V2XVoiceManager; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; - -import java.util.ArrayList; -import java.util.List; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/4/24 11:34 AM - * desc : 道路预警中的直播场景 - * version: 1.0 - */ -public class V2XRoadLiveCarWindow extends V2XBasWindow - implements IV2XWindow> { - private String TAG = "V2XRoadEventDetailWindow"; - private TextView mTvEventStubClose; - // 展示列表 - private RecyclerView mRecyclerView; - // 列表数据适配器 - private V2XRoadEventAdapter mV2XRoadEventAdapter; - // 列表展示 - private List mItemList = new ArrayList<>(); - // 当前展示的位置 - private int mCurPosition; - // 处理道路事件,30秒倒计时 - private Handler handlerV2XEvent = new Handler(); - private Runnable runnableV2XEvent; - private int countDownTime = 30; - // 关闭弹窗回调 - private V2XVoiceCallbackListener v2XVoiceCallbackCloseWindowListener = (command, intent) -> close(); - // 翻页回调监听 - private V2XVoicePagingListener v2XVoicePagingCallbackListener = new V2XVoicePagingListener() { - - @Override - public void onNextCallback() { - if (mRecyclerView != null && mCurPosition >= 0 && mCurPosition < mV2XRoadEventAdapter.getItemCount() - 1) { - mRecyclerView.scrollToPosition(mCurPosition + 1); - } - } - - @Override - public void onPrevCallback() { - if (mRecyclerView != null && mCurPosition > 0 && mCurPosition <= mV2XRoadEventAdapter.getItemCount() - 1) { - mRecyclerView.scrollToPosition(mCurPosition - 1); - } - } - }; - - public V2XRoadLiveCarWindow() { - this(BridgeApi.INSTANCE.context(), null); - } - - public V2XRoadLiveCarWindow(Context context) { - this(context, null); - } - - public V2XRoadLiveCarWindow(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public V2XRoadLiveCarWindow(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initView(context); - } - - /** - * 初始化视图 - */ - private void initView(Context context) { - //Logger.w(MODULE_NAME, "V2X===初始化道路直播视图"); - // 填充布局 - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - LayoutInflater.from(context).inflate(isVrMode ? - R.layout.item_v2x_road_live_car_detail_vr : R.layout.item_v2x_road_live_car_detail, this); - mTvEventStubClose = findViewById(R.id.tvEventStubClose); - mRecyclerView = findViewById(R.id.rvRoadEventList); - mTvEventStubClose.setOnClickListener(v -> { - close(); - }); - - mV2XRoadEventAdapter = new V2XRoadEventAdapter(mItemList, this); - mRecyclerView.setAdapter(mV2XRoadEventAdapter); - // 设置切换样式 - new PagerSnapHelper().attachToRecyclerView(mRecyclerView); - // 配置列表朝向 - LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false); - mRecyclerView.setLayoutManager(layoutManager); - mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { - super.onScrollStateChanged(recyclerView, newState); - if (recyclerView.getChildCount() > 0) { - if (newState == RecyclerView.SCROLL_STATE_IDLE) { - //获得当前显示在第一个item的位置 - mCurPosition = layoutManager.findFirstCompletelyVisibleItemPosition(); - // 用户处于交互的时候延后隐藏时间 - countDownV2XEvent(30000); - } - } - } - }); - } - - /** - * 展示道路事件详情Windows - */ - @Override - public void show(List entity) { - //Logger.d(MODULE_NAME, "V2X===道路事件直播:展示 Window :" + GsonUtil.jsonFromObject(entity)); - // 注册语音交互 - V2XVoiceManager.INSTANCE - .registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CLOSE_WINDOW, - v2XVoiceCallbackCloseWindowListener) - .registerUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CLOSE_WINDOW_UN_WAKEUP, - v2XVoiceCallbackCloseWindowListener) - .registerUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CLOSE_LIVE_UN_WAKEUP, - v2XVoiceCallbackCloseWindowListener) - .registerPagingCallback(v2XVoicePagingCallbackListener); - // 更新头部的窗体视图 - updateTopWindowInfo(entity); - // 倒计时 - countDownV2XEvent(30000); - } - - /** - * 更新头部的窗体视图 - */ - private void updateTopWindowInfo(List v2XRoadEventEntity) { - // 清空数据 - mItemList.clear(); - mItemList.addAll(v2XRoadEventEntity); - // 刷新列表 - mV2XRoadEventAdapter.notifyDataSetChanged(); - } - - /** - * 关闭详情展示框 - */ - @Override - public void close() { - //Logger.d(MODULE_NAME, "V2X===关闭Window"); - - // 注册语音交互 - V2XVoiceManager.INSTANCE.unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CLOSE_WINDOW); - V2XVoiceManager.INSTANCE.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CLOSE_WINDOW_UN_WAKEUP); - V2XVoiceManager.INSTANCE.unRegisterPagingCallback(); - V2XVoiceManager.INSTANCE - .unRegisterWakeCmd( - V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CALL_CHATTING) - .unRegisterWakeCmd( - V2XVoiceConstants.COMMAND_ZHIDAO_V2X_ZAN) - .unRegisterWakeCmd( - V2XVoiceConstants.COMMAND_ZHIDAO_V2X_REPORT) - .unRegisterUnWakeVoice( - V2XVoiceConstants.COMMAND_V2X_TO_CHAT_MORE_UN_WAKEUP) - .unRegisterUnWakeVoice( - V2XVoiceConstants.COMMAND_V2X_TO_ZAN_UN_WAKEUP) - .unRegisterUnWakeVoice( - V2XVoiceConstants.COMMAND_V2X_TO_FEEDBACK_TRUE) - .unRegisterUnWakeVoice( - V2XVoiceConstants.COMMAND_V2X_TO_FEEDBACK_ERROR); - - // 停止倒计时 - if (handlerV2XEvent != null && runnableV2XEvent != null) { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - runnableV2XEvent = null; - } - - //移除窗体 - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.removeView(this); - } - } - - @Override - public View getView() { - return this; - } - - @Override - public void setWindowStatusListener(V2XWindowStatusListener listener) { - } - - /** - * 窗体倒计时 - */ - public void countDownV2XEvent(int expireTime) { - // 倒计时 - if (runnableV2XEvent == null) { - runnableV2XEvent = () -> { - // 移出Window详细信息 - mTvEventStubClose.setText((countDownTime--) + "s"); - handlerV2XEvent.postDelayed(runnableV2XEvent, 1000); - if (countDownTime <= 0) { - close(); - } - }; - } else { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - } - //Logger.d(MODULE_NAME, "V2X=== Window 展示开始倒计时:" + expireTime); - handlerV2XEvent.postDelayed(runnableV2XEvent, 1000); - } -} - diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XVoiceCallLiveBiz.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XVoiceCallLiveBiz.java deleted file mode 100644 index d64333e2e9..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XVoiceCallLiveBiz.java +++ /dev/null @@ -1,242 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.livecar; - -import android.content.Context; -import android.text.TextUtils; -import android.util.Log; - -import com.mogo.cloud.live.manager.LiveStreamManagerImpl; -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.cloud.trafficlive.api.ITrafficIntersectionLiveCallBack; -import com.mogo.cloud.trafficlive.api.MoGoAiCloudTrafficLive; -import com.mogo.commons.AbsMogoApplication; -import com.mogo.commons.voice.AIAssist; -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.scenario.impl.V2XScenarioManager; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener; -import com.mogo.eagle.core.utilcode.util.ToastUtils; -import com.mogo.eagle.core.data.map.MogoLocation; -import com.mogo.map.location.IMogoLocationClient; -import com.mogo.map.marker.IMogoMarker; -import com.mogo.map.marker.IMogoMarkerClickListener; -import com.mogo.map.uicontroller.IMogoMapUIController; -import com.mogo.map.uicontroller.VisualAngleMode; -import com.mogo.module.common.MogoApisHandler; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.module.v2x.voice.V2XVoiceManager; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.statusmanager.StatusDescriptor; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; -import static com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants.COMMAND_ZHIDAO_V2X_AHEAD_LIVE; -import static com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CALL_FRONT_CAR_DEMO_UN_WAKEUP; -import static com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CROSSROADS_LIVE; -import static com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants.COMMAND_ZHIDAO_V2X_OPEN_ROAD_CAMERA_LIVE_UN_WAKEUP; -import static com.mogo.map.marker.MarkerType.MAP_STATIC; -import static com.mogo.map.marker.MarkerType.MAP_STATIC_TRAFFIC; -import static com.mogo.service.statusmanager.StatusDescriptor.MAIN_PAGE_RESUME; - -/** - * author : unknown - * desc : 语音呼叫查看直播车辆 或者 路口实况 业务模块 - */ -public class V2XVoiceCallLiveBiz implements IMogoMarkerClickListener { - - private static final String REGISTER_LIFECYCLE_TAG = "V2XVoiceCallLiveBiz"; - - private V2XVoiceCallLiveBiz() { - - } - - private static volatile V2XVoiceCallLiveBiz mV2XVoiceCallLiveBiz; - - public static V2XVoiceCallLiveBiz getInstance() { - if (mV2XVoiceCallLiveBiz == null) { - synchronized (V2XVoiceCallLiveBiz.class) { - if (mV2XVoiceCallLiveBiz == null) { - mV2XVoiceCallLiveBiz = new V2XVoiceCallLiveBiz(); - } - } - } - return mV2XVoiceCallLiveBiz; - } - - private Context mContext; - - //语音词指令 查看前车视频回调 - private final V2XVoiceCallbackListener v2XVoiceCallbackFrontLiveCarListener = (command, intent) -> { - Logger.d(MODULE_NAME, "语音词指令 查看前车视频回调"); - getFrontCarLive(); - }; - - //语音词指令 查看路口实况回调 - private final V2XVoiceCallbackListener v2XVoiceCallbackOpenRoadCameraListener = (command, intent) -> { - Logger.d(MODULE_NAME, "语音词指令 查看路口实况回调"); - AIAssist.getInstance(mContext).speakTTSVoice(mContext.getString(R.string.v2x_voice_see_crossroad_live)); - getOpenRoadCameraLive(); - }; - - public void init(Context context) { - Logger.d(MODULE_NAME, "init"); - this.mContext = context; - registerLifecycleChange(); - registerVoice(); - registerMarkerClick(); - } - - private void registerMarkerClick() { - MogoApisHandler.getInstance().getApis().getRegisterCenterApi().registerMogoStaticMarkerClickListener(MAP_STATIC, this); - } - - /** - * 地图上静态marker点击,现在仅点击摄像头 - * - * @param marker - * @return - */ - @Override - public boolean onStaticMarkerClicked(IMogoMarker marker) { - Log.d(REGISTER_LIFECYCLE_TAG, "onStaticMarkerClicked marker"); - boolean isLongSight = false; - IMogoMapUIController mapUiController = BridgeApi.INSTANCE.mapUiController(); - if (mapUiController != null) { - isLongSight = mapUiController.getCurrentMapVisualAngle().isLongSight(); - } - if (isLongSight) { - Log.d(REGISTER_LIFECYCLE_TAG, "onStaticMarkerClicked marker is on LongSight, so don't response"); - return false; - } - //拉近地图视角为近景 - if (mapUiController != null) { - mapUiController.changeMapVisualAngle(VisualAngleMode.MODE_CLOSE_SIGHT, marker.getPosition()); - } - String assInfo = marker.getMarkerAssInfo(); - Log.d(REGISTER_LIFECYCLE_TAG, "onStaticMarkerClicked marker assInfo : " + assInfo); - if (TextUtils.isEmpty(assInfo) || !assInfo.contains(MAP_STATIC_TRAFFIC)) { - return false; - } else { - //点击地图上marker返回assInfo,得到路口摄像头Id,获取直播 - getSpecifiedOpenCameraLive(assInfo); - return true; - } - } - - private void registerLifecycleChange() { - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - statusManager.registerStatusChangedListener(REGISTER_LIFECYCLE_TAG, MAIN_PAGE_RESUME, (descriptor, isTrue) -> { - if (descriptor == StatusDescriptor.MAIN_PAGE_RESUME) { - if (isTrue) { - registerVoice(); - } else { - unRegisterVoice(); - } - } - }); - } - } - - private void registerVoice() { - V2XVoiceManager.INSTANCE.registerUnWakeVoice(COMMAND_ZHIDAO_V2X_CALL_FRONT_CAR_DEMO_UN_WAKEUP, v2XVoiceCallbackFrontLiveCarListener) - .registerUnWakeVoice(COMMAND_ZHIDAO_V2X_OPEN_ROAD_CAMERA_LIVE_UN_WAKEUP, v2XVoiceCallbackOpenRoadCameraListener) - .registerWakeCmd(COMMAND_ZHIDAO_V2X_AHEAD_LIVE, v2XVoiceCallbackFrontLiveCarListener) - .registerWakeCmd(COMMAND_ZHIDAO_V2X_CROSSROADS_LIVE, v2XVoiceCallbackOpenRoadCameraListener); - } - - private void unRegisterVoice() { - V2XVoiceManager.INSTANCE.unRegisterUnWakeVoice(COMMAND_ZHIDAO_V2X_CALL_FRONT_CAR_DEMO_UN_WAKEUP) - .unRegisterUnWakeVoice(COMMAND_ZHIDAO_V2X_OPEN_ROAD_CAMERA_LIVE_UN_WAKEUP) - .unRegisterWakeCmd(COMMAND_ZHIDAO_V2X_AHEAD_LIVE).unRegisterWakeCmd(COMMAND_ZHIDAO_V2X_CROSSROADS_LIVE); - } - - /** - * 查看前方车辆直播,同方向角 200米范围 - */ - public void getFrontCarLive() { - LiveStreamManagerImpl.getInstance(AbsMogoApplication.getApp(), - MoGoAiCloudClientConfig.getInstance().getThirdPartyDeviceId(), false); - V2XMessageEntity v2XMessageEntity = buildCallLiveParams(null, null, V2XMessageEntity.V2XTypeEnum.ALERT_VOICE_CALL_FOR_LIVECAR_SHOW); - V2XScenarioManager.getInstance().handlerMessage(v2XMessageEntity); - } - - /** - * 查看前方路口摄像头直播,同方向角 1公里范围 - */ - public void getOpenRoadCameraLive() { - IMogoLocationClient locationClient = BridgeApi.INSTANCE.locationClient(); - if (locationClient == null) { - return; - } - MogoLocation mogoLocation = locationClient.getLastKnowLocation(); - MoGoAiCloudTrafficLive.viewFrontIntersectionLive(mogoLocation.getLatitude(), mogoLocation.getLongitude(), ((int) mogoLocation.getBearing()), new ITrafficIntersectionLiveCallBack() { - @Override - public void liveUrlResult(String liveUrl) { - if (!TextUtils.isEmpty(liveUrl)) { - V2XMessageEntity v2XMessageEntity = buildCallLiveParams(null, liveUrl, V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_LIVE_CAR_WARNING); - V2XScenarioManager.getInstance().handlerMessage(v2XMessageEntity); - } else { - Logger.d(MODULE_NAME, "getOpenRoadCameraLive 路口实况直播地址为空"); - ToastUtils.showShort(R.string.v2x_front_live_url_null); - } - } - - @Override - public void onError(String errorMsg) { - Logger.d(MODULE_NAME, "getOpenRoadCameraLive : " + errorMsg); - ToastUtils.showShort(R.string.v2x_front_live_url_null); - } - }); - } - - /** - * 获取特定路口摄像头直播 - * - * @param assInfo 路口摄像头Id - */ - private void getSpecifiedOpenCameraLive(String assInfo) { - MoGoAiCloudTrafficLive.viewDesignativeIntersectionLive(assInfo, new ITrafficIntersectionLiveCallBack() { - @Override - public void liveUrlResult(String liveUrl) { - if (!TextUtils.isEmpty(liveUrl)) { - V2XMessageEntity v2XMessageEntity = buildCallLiveParams(null, liveUrl, V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_LIVE_CAR_WARNING); - V2XScenarioManager.getInstance().handlerMessage(v2XMessageEntity); - } else { - Logger.d(MODULE_NAME, "getOpenRoadCameraLive 路口实况直播地址为空"); - ToastUtils.showShort(R.string.v2x_specific_live_url_null); - } - } - - @Override - public void onError(String errorMsg) { - Logger.d(MODULE_NAME, "getSpecifiedOpenCameraLive : " + errorMsg); - ToastUtils.showShort(R.string.v2x_specific_live_url_null); - } - }); - } - - /** - * 构建直播参数 - * - * @param sn 直播车机sn - * @param liveUrl 直播Url - * @return {@link V2XMessageEntity} - */ - private V2XMessageEntity buildCallLiveParams(String sn, String liveUrl, int type) { - V2XPushMessageEntity v2XPushMessageEntity = new V2XPushMessageEntity(); - v2XPushMessageEntity.setVideoSn(sn); - v2XPushMessageEntity.setVideoUrl(liveUrl); - v2XPushMessageEntity.setShowWindow(true); - v2XPushMessageEntity.setExpireTime(1000 * 30); - V2XMessageEntity v2XMessageEntity = new V2XMessageEntity<>(); - v2XMessageEntity.setType(type); - v2XMessageEntity.setContent(v2XPushMessageEntity); - v2XMessageEntity.setShowState(true); - return v2XMessageEntity; - } - - public void onDestroy() { - MogoApisHandler.getInstance().getApis().getRegisterCenterApi().unregisterMogoStaticMarkerClickListener(MAP_STATIC, this); - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XVoiceCallLiveCarWindow.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XVoiceCallLiveCarWindow.java deleted file mode 100644 index 707bf4ce1a..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XVoiceCallLiveCarWindow.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.livecar; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.content.Context; -import android.os.Handler; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.listener.V2XWindowStatusListener; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.V2XBasWindow; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.function.v2x.events.view.CarZegoLiveVideoView; -import com.mogo.module.common.entity.MarkerCarInfo; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; - -public class V2XVoiceCallLiveCarWindow extends V2XBasWindow - implements IV2XWindow { - - private static final int COUNT_DOWN_TIMER = 1_000; - private static final int ALL_EXPIRE_TIMER = 1_000 * 30; - private static int EXPIRE_TIMER = ALL_EXPIRE_TIMER; - - private TextView tvCountDown; - private ImageView ivVideoPlayingSign; - private boolean isVideoPlay = false; - - // 处理道路事件,30秒倒计时 - private final Handler handlerV2XEvent = new Handler(); - private Runnable runnableV2XEvent; - - public V2XVoiceCallLiveCarWindow() { - this(BridgeApi.INSTANCE.context(), null); - } - - public V2XVoiceCallLiveCarWindow(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public V2XVoiceCallLiveCarWindow(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initView(context); - } - - private void initView(Context context) { - Logger.w(MODULE_NAME, "V2X===初始化语音呼叫直播视图"); - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - - LayoutInflater.from(context).inflate(isVrMode - ? R.layout.window_see_carlive_video_vr - : R.layout.window_see_carlive_video, this); - CarZegoLiveVideoView mV2XCarLiveVideoView = findViewById(R.id.videoPlayer); - tvCountDown = findViewById(R.id.tvCountDown); -// ImageView ivLiveVideoClose = findViewById(R.id.liveVideoClose); - ivVideoPlayingSign = findViewById(R.id.ivVideoPlayingSign); - mV2XCarLiveVideoView.addOnVideoStatusChangeListener(videoPlaying -> { - isVideoPlay = videoPlaying; - if (isVideoPlay) { - startCountDown(); - } else { - stopCountDown(); - } - }); -// ivLiveVideoClose.setOnClickListener(v -> close()); - } - - @Override - public void show(V2XPushMessageEntity entity) { - if (entity != null) { - Logger.w(MODULE_NAME, "更新直播信息。。。。。" + entity); - // 启动播放 - MarkerCarInfo.CarLiveInfo carLiveInfo = new MarkerCarInfo.CarLiveInfo(); - carLiveInfo.setVideoChannel(entity.getVideoChannel()); - carLiveInfo.setVideoSn(entity.getVideoSn()); - carLiveInfo.setVideoUrl(entity.getVideoUrl()); - Logger.w(MODULE_NAME, "更新直播信息 END"); - if (isVideoPlay) { - startCountDown(); - } - } - } - - @Override - public void close() { - // 停止倒计时 - stopCountDown(); - remove(); - } - - @Override - public View getView() { - return this; - } - - @Override - public void setWindowStatusListener(V2XWindowStatusListener listener) { - - } - - /** - * 窗体倒计时 - */ - private void startCountDown() { - // 倒计时 - if (runnableV2XEvent == null) { - runnableV2XEvent = () -> { - EXPIRE_TIMER = EXPIRE_TIMER - COUNT_DOWN_TIMER; - tvCountDown.setVisibility(View.VISIBLE); - ivVideoPlayingSign.setVisibility(View.VISIBLE); - tvCountDown.setText(String.valueOf(EXPIRE_TIMER / COUNT_DOWN_TIMER)); - if (EXPIRE_TIMER > 0) { - handlerV2XEvent.postDelayed(runnableV2XEvent, COUNT_DOWN_TIMER); - } else { - close(); - } - }; - } else { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - } - handlerV2XEvent.postDelayed(runnableV2XEvent, COUNT_DOWN_TIMER); - } - - private void stopCountDown() { - if (handlerV2XEvent != null && runnableV2XEvent != null) { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - runnableV2XEvent = null; - tvCountDown.setVisibility(View.GONE); - ivVideoPlayingSign.setVisibility(View.GONE); - EXPIRE_TIMER = ALL_EXPIRE_TIMER; - } - } - - //移除窗体 - private void remove(){ - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - if (isVrMode) { - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.removeViewNoLinkage(this); - } - }else{ - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.removeView(this); - } - } - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XVoiceCallLiveScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XVoiceCallLiveScenario.java deleted file mode 100644 index 419d549ad8..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/livecar/V2XVoiceCallLiveScenario.java +++ /dev/null @@ -1,160 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.livecar; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.Nullable; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XStatusManager; -import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.mogo.service.windowview.IMogoTopViewStatusListener; -import com.mogo.eagle.core.utilcode.mogo.toast.TipToast; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; - -/** - * author : unknown - * desc : 语音呼叫查看直播场景,包括车辆直播 或者 路口实况 window,区分不同页面window逻辑实现,前方直播车辆由AICloudSdk中实现,上层仅传入SurfaceView和经纬度 - */ -public class V2XVoiceCallLiveScenario extends AbsV2XScenario implements IMogoTopViewStatusListener { - - public V2XVoiceCallLiveScenario() { - Logger.d(MODULE_NAME, "V2XVoiceCallLiveScenario new()" ); - setV2XWindow(new V2XVoiceCallLiveCarWindow()); - } - - @Override - public void init(@Nullable V2XMessageEntity v2XMessageEntity) { - if (v2XMessageEntity == null) { - TipToast.shortTip("附近没有可直播车机"); - return; - } - if (v2XMessageEntity.isShowState()) { - boolean isMainPageOnResume = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isMainPageOnResume = statusManager.isMainPageOnResume(); - } - if (!isSameScenario(v2XMessageEntity) - && isMainPageOnResume) { - setV2XMessageEntity(v2XMessageEntity); - Logger.d(MODULE_NAME, "v2XMessageEntity : " + v2XMessageEntity); - show(); - } else { - setV2XMessageEntity(v2XMessageEntity); - Logger.w(MODULE_NAME, "要处理的场景已经存在,丢弃这次初始化"); - } - } else { - close(); - } - } - - @Override - public void show() { - if (getV2XMessageEntity() != null && getV2XMessageEntity().getContent() != null) { - showWindow(); - } - } - - @Override - public void showWindow() { - if (getV2XWindow() != null) { - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - int width = (int) Utils.getApp().getResources().getDimension(isVrMode ? - R.dimen.module_v2x_event_window_width_vr : R.dimen.module_v2x_event_window_width); - int height = (int) Utils.getApp().getResources().getDimension(isVrMode ? - R.dimen.module_v2x_event_see_live_window_height_vr : R.dimen.module_v2x_event_see_live_window_height); - ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(width, height); - if (isVrMode) { - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.addViewNoLinkage(getV2XWindow().getView(), layoutParams, this); - } - } else { - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.addView(getV2XWindow().getView(), layoutParams, this); - } - } - getV2XWindow().show(getV2XMessageEntity().getContent()); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setLiveCarWindowShow(TAG, true); - } - } - } - - @Override - public void closeWindow() { - if (getV2XWindow() != null) { - getV2XWindow().close(); - } - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setLiveCarWindowShow(TAG, false); - } - } - - @Override - public void showButton() { - - } - - @Override - public void closeButton() { - - } - - @Override - public void drawPOI() { - - } - - @Override - public void clearPOI() { - - } - - @Override - public void onViewAdded(View view) { - Logger.d(MODULE_NAME, "展示 Window 动画结束"); - } - - @Override - public void onViewRemoved(View view) { - Logger.d(MODULE_NAME, "关闭 Window 动画结束"); - getV2XWindow().close(); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setLiveCarWindowShow(TAG, false); - } - } - - @Override - public void beforeViewAddAnim(View view) { - Logger.d(MODULE_NAME, "展示 Window 开始"); - } - - @Override - public void beforeViewRemoveAnim(View view) { - Logger.d(MODULE_NAME, "关闭 Window 开始"); - setV2XMessageEntity(null); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setLiveCarWindowShow(TAG, false); - } - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/park/V2XIllegalParkMarker.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/park/V2XIllegalParkMarker.java deleted file mode 100644 index ab630f76bf..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/park/V2XIllegalParkMarker.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.park; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.V2X_EVENT_ALARM_POI; - -import android.graphics.Bitmap; -import android.os.Handler; -import android.view.animation.AccelerateInterpolator; -import android.view.animation.LinearInterpolator; -import com.mogo.commons.AbsMogoApplication; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XMarkerManager; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XPolylineManager; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XMarker; -import com.mogo.map.marker.IMogoMarker; -import com.mogo.map.marker.IMogoMarkerManager; -import com.mogo.map.marker.MogoMarkerOptions; -import com.mogo.map.marker.anim.OnMarkerAnimationListener; -import com.mogo.map.uicontroller.IMogoMapUIController; -import com.mogo.module.common.drawer.MarkerDrawer; -import com.mogo.module.common.drawer.marker.IMarkerView; -import com.mogo.module.common.drawer.marker.MapMarkerAdapter; -import com.mogo.module.common.drawer.marker.RoadConditionInfoWindow3DAdapter; -import com.mogo.module.common.entity.MarkerExploreWay; -import com.mogo.module.common.entity.MarkerShowEntity; -import com.mogo.module.common.entity.V2XRoadEventEntity; -import com.mogo.module.service.ServiceConst; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.eagle.core.utilcode.util.ViewUtils; -import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler; -import java.util.ArrayList; -import java.util.List; - - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/6/19 17:37 PM - * desc : 违章停车场景POI绘制 - * version: 1.0 - */ -public class V2XIllegalParkMarker implements IV2XMarker> { - - public ArrayList mIllegalParkMarkerList; - - // 处理道路事件,30秒倒计时 - private Handler handlerV2XEvent = new Handler(); - private Runnable runnableV2XEvent; - private int mExpireTime = 30000; - - @Override - public void drawPOI(List entityList) { - try { - mIllegalParkMarkerList = new ArrayList<>(); - // 清除道路事件 - IMoGoV2XMarkerManager v2xMarker = BridgeApi.INSTANCE.v2xMarker(); - if (v2xMarker != null) { - v2xMarker.clearALLPOI(); - } - //清除连线 - IMoGoV2XPolylineManager v2xPolyline = BridgeApi.INSTANCE.v2xPolyline(); - if (v2xPolyline != null) { - v2xPolyline.clearLine(); - } - if (entityList != null) { - for (int i = 0; i < entityList.size(); i++) { - MarkerExploreWay markerExploreWay = entityList.get(i); - - // 道路事件,或者水波纹扩散效果 - MogoMarkerOptions optionsRipple = new MogoMarkerOptions() - .data(markerExploreWay) - .latitude(markerExploreWay.getLocation().getLat()) - .longitude(markerExploreWay.getLocation().getLon()); - optionsRipple.anchor(0.5f, 0.5f); - - MarkerShowEntity markerShowEntity = new MarkerShowEntity(); - markerShowEntity.setBindObj(markerExploreWay); - markerShowEntity.setChecked(false); - markerShowEntity.setTextContent(markerExploreWay.getAddr()); - markerShowEntity.setMarkerLocation(markerExploreWay.getLocation()); - markerShowEntity.setMarkerType(ServiceConst.CARD_TYPE_NOVELTY); - - // 进行数据转换,用于Marker展示 - V2XRoadEventEntity roadEventEntity = new V2XRoadEventEntity(); - roadEventEntity.setLocation(markerExploreWay.getLocation()); - roadEventEntity.setBindObj(markerExploreWay); - - WorkThreadHandler.getInstance().postDelayed(() -> { - IMogoMarker mogoMarker = null; - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - if (isVrMode) { - mogoMarker = MarkerDrawer.getInstance().drawMapMarkerImpl(markerShowEntity, MarkerDrawer.MARKER_Z_INDEX_HIGH, null); - mogoMarker.setInfoWindowAdapter(new RoadConditionInfoWindow3DAdapter(markerShowEntity, AbsMogoApplication.getApp(), mogoMarker.getMogoMarkerOptions())); - mogoMarker.showInfoWindow(); - } else { - IMarkerView markerView = MapMarkerAdapter.getMarkerView(AbsMogoApplication.getApp(), markerShowEntity, optionsRipple); - Bitmap bitmap = ViewUtils.fromView(markerView.getView()); - optionsRipple.icon(bitmap); - IMogoMarkerManager marker = BridgeApi.INSTANCE.marker(); - if (marker != null) { - mogoMarker = marker.addMarker(V2X_EVENT_ALARM_POI, optionsRipple); - } - - } - // 点击监听,天际弹窗展示详情 - if (mogoMarker != null) { - IMogoMarker finalMogoMarker = mogoMarker; - mogoMarker.startScaleAnimation(0, 1.2f, 0, 1.2f, 300, new AccelerateInterpolator(), new OnMarkerAnimationListener() { - @Override - public void onAnimStart() { - //Logger.d(MODULE_NAME, " onAnimStart ---1----> "); - } - - @Override - public void onAnimEnd() { - if (finalMogoMarker.isDestroyed()) { - return; - } - finalMogoMarker.startScaleAnimation(1.2f, 1, 1.2f, 1, 100, new LinearInterpolator(), null); - } - }); - mogoMarker.setOwner(MODULE_NAME); - mogoMarker.setObject(markerShowEntity); - mIllegalParkMarkerList.add(mogoMarker); - } - }, i * 100L); - } - } - - countDownV2XEvent(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Override - public void clearPOI() { - // 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随 - IMogoMapUIController mapUiController = BridgeApi.INSTANCE.mapUiController(); - if (mapUiController != null) { - mapUiController.loseLockMode(); - } - // 移除违章停车点 - IMogoMarkerManager marker = BridgeApi.INSTANCE.marker(); - if (marker != null) { - marker.removeMarkers(ServiceConst.CARD_TYPE_NOVELTY); - } - // 移除线 - IMoGoV2XPolylineManager v2xPolyline = BridgeApi.INSTANCE.v2xPolyline(); - if (v2xPolyline != null) { - v2xPolyline.clearLine(); - } - IMoGoV2XMarkerManager v2xMarker = BridgeApi.INSTANCE.v2xMarker(); - if (v2xMarker != null) { - // 移除事件POI - v2xMarker.clearAlarmPOI(); - // 绘制上次的数据 - v2xMarker.drawableLastAllPOI(); - } - } - - /** - * 倒计时 - */ - public void countDownV2XEvent() { - // 倒计时 - if (runnableV2XEvent == null) { - runnableV2XEvent = () -> { - //Logger.d(MODULE_NAME, "V2X===违章停车 30秒倒计时结束。。。"); - // 移出Window详细信息 - clearPOI(); - }; - } else { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - } - //Logger.d(MODULE_NAME, "V2X===违章停车 POI 展示开始倒计时:" + mExpireTime); - handlerV2XEvent.postDelayed(runnableV2XEvent, mExpireTime); - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/park/V2XIllegalParkScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/park/V2XIllegalParkScenario.java deleted file mode 100644 index 62eb3e0b96..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/park/V2XIllegalParkScenario.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.park; - -import androidx.annotation.Nullable; - -import com.mogo.eagle.core.function.v2x.events.alarm.V2XAlarmServer; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.manager.V2XStatusManager; -import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.function.v2x.events.utils.ADASUtils; -import com.mogo.eagle.core.function.v2x.events.utils.TrackUtils; -import com.mogo.eagle.core.function.v2x.events.utils.V2XSQLiteUtils; -import com.mogo.eagle.core.utilcode.util.ThreadUtils; -import com.mogo.module.common.entity.MarkerExploreWay; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.common.entity.V2XRoadEventEntity; -import com.mogo.module.common.enums.EventTypeEnum; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; - -import java.util.ArrayList; -import java.util.List; - - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/5/15 5:37 PM - * desc : 违章停车 - * version: 1.0 - */ -public class V2XIllegalParkScenario extends AbsV2XScenario> { - private static final String TAG = "V2XILLegalParkScenario"; - - public V2XIllegalParkScenario() { - setV2XWindow(new V2XIllegalParkWindow()); - setV2XMarker(new V2XIllegalParkMarker()); - } - - @Override - public void init(@Nullable V2XMessageEntity> v2XMessageEntity) { - setV2XMessageEntity(v2XMessageEntity); - show(); - } - - - @Override - public void show() { - boolean isMainPageOnResume = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isMainPageOnResume = statusManager.isMainPageOnResume(); - } - if (isMainPageOnResume) { - drawPOI(); - } - showWindow(); - } - - @Override - public void showWindow() { - MarkerExploreWay markerExploreWay = null; - if (getV2XMessageEntity().getContent() != null) { - markerExploreWay = V2XAlarmServer - .getIllegalParkAlarmEvent( - (ArrayList) getV2XMessageEntity().getContent(), - V2XStatusManager.getInstance().getLocation()); - } - if (markerExploreWay != null) { - //弹框 - // 设置要展开的违章停车事件 - //((V2XIllegalParkMarker) mV2XMarker).setOpenPoiId(markerExploreWay.getInfoId()); - // 广播给ADAS - V2XRoadEventEntity v2XRoadEventEntity = new V2XRoadEventEntity(); - v2XRoadEventEntity.setAlarmContent("违章停车"); - v2XRoadEventEntity.setExpireTime(20000); - v2XRoadEventEntity.setPoiType(EventTypeEnum.ALERT_ILLEGAL_PARK.getPoiType()); - boolean isMainPageOnResume = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isMainPageOnResume = statusManager.isMainPageOnResume(); - } - if (isMainPageOnResume) { - v2XRoadEventEntity.setTts(markerExploreWay.getAddr() + "可能被罚违章停车,您可以说,有用或没用来帮助其它车友。"); - ((V2XIllegalParkWindow) getV2XWindow()).show(markerExploreWay, true); - TrackUtils.trackV2xRoadShow(markerExploreWay.getInfoId(), EventTypeEnum.ALERT_ILLEGAL_PARK.getPoiType(), "1"); - } else { - v2XRoadEventEntity.setTts(markerExploreWay.getAddr() + "可能被罚违章停车"); - TrackUtils.trackV2xRoadShow(markerExploreWay.getInfoId(), EventTypeEnum.ALERT_ILLEGAL_PARK.getPoiType(), "2"); - } - ADASUtils.broadcastToADAS(BridgeApi.INSTANCE.context(), v2XRoadEventEntity); - saveLocalStory(V2XMessageEntity.V2XTypeEnum.ALERT_ILLEGAL_PARK_WARNING, - markerExploreWay); - } - } - - @Override - public void closeWindow() { - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - IV2XWindow window = getV2XWindow(); - - if (topViewManager != null && window != null && window.getView() != null) { - topViewManager.removeView(window.getView()); - } - } - - @Override - public void showButton() { - } - - @Override - public void closeButton() { - } - - @Override - public void drawPOI() { - if (getV2XMessageEntity() != null) { - getV2XMarker().drawPOI(getV2XMessageEntity().getContent()); - } - } - - @Override - public void clearPOI() { - } - - /** - * 存储本地数据 - * - * @param messageEntity 要存储的场景 - */ - private void saveLocalStory(int scenarioType, MarkerExploreWay messageEntity) { - ThreadUtils.getIoPool().execute(() -> { - try { - V2XSQLiteUtils.saveLocalStory(scenarioType, messageEntity, messageEntity.hashCode()); - } catch (Exception e) { - e.printStackTrace(); - } - }); - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/park/V2XIllegalParkWindow.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/park/V2XIllegalParkWindow.java deleted file mode 100644 index 607491dbb8..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/park/V2XIllegalParkWindow.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.park; - -import android.content.Context; -import android.os.Handler; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.PagerSnapHelper; -import androidx.recyclerview.widget.RecyclerView; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.adapter.V2XRoadEventAdapter; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.listener.V2XWindowStatusListener; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.V2XBasWindow; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.module.common.entity.MarkerExploreWay; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.service.windowview.IMogoTopViewManager; - -import java.util.ArrayList; -import java.util.List; - -/** - * 违章停车 - * 弹窗视图 - */ -public class V2XIllegalParkWindow extends V2XBasWindow implements IV2XWindow { - private static final String TAG = "V2XIllegalParkWindow"; - // 展示列表 - private RecyclerView mRecyclerView; - // 列表数据适配器 - private V2XRoadEventAdapter mV2XRoadEventAdapter; - // 列表展示 - private List mItemList = new ArrayList<>(); - - // 处理道路事件,20秒倒计时 - private Handler handlerV2XEvent = new Handler(); - private Runnable runnableV2XEvent; - private long mExpireTime = 20000; - private boolean mIsAutoClose = true; - - private MarkerExploreWay mExploreWay; - - public V2XIllegalParkWindow() { - this(BridgeApi.INSTANCE.context(), null); - } - - public V2XIllegalParkWindow(Context context) { - this(context, null); - } - - public V2XIllegalParkWindow(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public V2XIllegalParkWindow(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initView(context); - } - - /** - * 初始化视图 - */ - private void initView(Context context) { - LayoutInflater.from(context).inflate(R.layout.window_fault_help, this); - // 详情列表 - mRecyclerView = findViewById(R.id.rvRoadEventList); - mV2XRoadEventAdapter = new V2XRoadEventAdapter(mItemList, this); - mRecyclerView.setAdapter(mV2XRoadEventAdapter); - // 设置切换样式 - new PagerSnapHelper().attachToRecyclerView(mRecyclerView); - // 配置列表朝向 - LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false); - mRecyclerView.setLayoutManager(layoutManager); - mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { - super.onScrollStateChanged(recyclerView, newState); - if (recyclerView.getChildCount() > 0) { - if (newState == RecyclerView.SCROLL_STATE_IDLE) { - // 用户处于交互的时候延后隐藏时间 - countDownV2XEvent(); - } - } - } - }); - } - - public void show(MarkerExploreWay entity, boolean isAutoClose) { - mIsAutoClose = isAutoClose; - show(entity); - } - - /** - * 展示道路事件详情Windows - */ - @Override - public void show(MarkerExploreWay entity) { - mExploreWay = entity; - //Logger.d(V2XConst.MODULE_NAME, "V2X===违章停车:展示 Window=\n" + entity); - // 清空数据 - mItemList.clear(); - if (mExploreWay != null) { - //Logger.d(MODULE_NAME, "V2X===推送消息:" + v2XRoadEventEntity); - V2XEventShowEntity v2XEventShowEntity = new V2XEventShowEntity(); - v2XEventShowEntity.setV2XIllegalPark(mExploreWay); - v2XEventShowEntity.setViewType(V2XMessageEntity.V2XTypeEnum.ALERT_ILLEGAL_PARK_WARNING); - mItemList.add(v2XEventShowEntity); - } - // 刷新列表 - mV2XRoadEventAdapter.notifyDataSetChanged(); - // 倒计时 - if (mIsAutoClose) { - countDownV2XEvent(); - } - - ViewGroup.LayoutParams layoutParams = - new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - (int) Utils.getApp() - .getResources() - .getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground)); - - // 添加弹窗 - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.addView(this, layoutParams); - } - } - - /** - * 关闭详情展示框 - */ - @Override - public void close() { - mIsAutoClose = false; - // 停止倒计时 - if (handlerV2XEvent != null && runnableV2XEvent != null) { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - runnableV2XEvent = null; - } - - //移除窗体 - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.removeView(this); - } - } - - @Override - public View getView() { - return this; - } - - @Override - public void setWindowStatusListener(V2XWindowStatusListener listener) { - } - - /** - * 窗体倒计时 - */ - public void countDownV2XEvent() { - // 倒计时 - if (runnableV2XEvent == null) { - runnableV2XEvent = () -> { - //Logger.d(V2XConst.MODULE_NAME, "V2X===20秒倒计时结束。。。"); - // 移出Window详细信息 - close(); - }; - } else { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - } - //Logger.d(V2XConst.MODULE_NAME, "V2X===违章停车 Window 展示开始倒计时:" + mExpireTime); - handlerV2XEvent.postDelayed(runnableV2XEvent, mExpireTime); - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/push/V2XPushEventMarker.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/push/V2XPushEventMarker.java deleted file mode 100644 index 2d6a1532ea..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/push/V2XPushEventMarker.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.push; - -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.listener.V2XMarkerClickListener; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XMarkerManager; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XPolylineManager; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XMarker; -import com.mogo.map.uicontroller.IMogoMapUIController; -import com.mogo.module.common.entity.MarkerExploreWay; -import com.mogo.module.common.entity.MarkerExploreWayItem; -import com.mogo.module.common.entity.MarkerLocation; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.module.common.entity.V2XRoadEventEntity; -import com.mogo.module.common.enums.EventTypeEnum; -import java.util.ArrayList; -import java.util.List; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/5/15 5:37 PM - * desc : 推送场景 - * version: 1.0 - */ -public class V2XPushEventMarker implements IV2XMarker { - @Override - public void drawPOI(V2XPushMessageEntity entity) { - try { - // 清除道路事件 - IMoGoV2XMarkerManager v2xMarker = BridgeApi.INSTANCE.v2xMarker(); - if (v2xMarker != null) { - v2xMarker.clearALLPOI(); - } - // 位置信息 - MarkerLocation markerLocation = new MarkerLocation(); - markerLocation.setLon(entity.getLon()); - markerLocation.setLat(entity.getLat()); - - // 进行数据转换,用于Marker展示 - V2XRoadEventEntity v2XRoadEventEntity = new V2XRoadEventEntity(); - v2XRoadEventEntity.setLocation(markerLocation); - // 探路目前只有上报拥堵 - v2XRoadEventEntity.setPoiType(EventTypeEnum.ALERT_TRAFFIC_EXPRESS.getPoiType()); - - MarkerExploreWay markerNoveltyInfo = new MarkerExploreWay(); - - List items = new ArrayList<>(); - MarkerExploreWayItem exploreWayItem = new MarkerExploreWayItem(); - exploreWayItem.setThumbnail(entity.getMsgImgUrl()); - items.add(exploreWayItem); - markerNoveltyInfo.setPoiType(EventTypeEnum.ALERT_TRAFFIC_EXPRESS.getPoiType()); - markerNoveltyInfo.setItems(items); - markerNoveltyInfo.setUploadType("1"); - - v2XRoadEventEntity.setNoveltyInfo(markerNoveltyInfo); - v2XRoadEventEntity.setExpireTime(20000); - - if (v2xMarker != null) { - v2xMarker.drawableAlarmPOI(BridgeApi.INSTANCE.context(), - v2XRoadEventEntity, - V2XMarkerClickListener.getInstance()); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Override - public void clearPOI() { - // 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随 - IMogoMapUIController mapUiController = BridgeApi.INSTANCE.mapUiController(); - if (mapUiController != null) { - mapUiController.loseLockMode(); - } - // 移除线 - IMoGoV2XPolylineManager v2xPolyline = BridgeApi.INSTANCE.v2xPolyline(); - if (v2xPolyline != null) { - v2xPolyline.clearLine(); - } - IMoGoV2XMarkerManager v2xMarker = BridgeApi.INSTANCE.v2xMarker(); - if (v2xMarker != null) { - // 移除事件POI - v2xMarker.clearAlarmPOI(); - // 绘制上次的数据 - v2xMarker.drawableLastAllPOI(); - } - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/push/V2XPushEventScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/push/V2XPushEventScenario.java deleted file mode 100644 index b869242fe2..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/push/V2XPushEventScenario.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.push; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.Nullable; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XStatusManager; -import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario; -import com.mogo.eagle.core.network.utils.GsonUtil; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.mogo.service.windowview.IMogoTopViewStatusListener; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/5/15 5:37 PM - * desc : 推送场景 - * version: 1.0 - */ -public class V2XPushEventScenario extends AbsV2XScenario implements IMogoTopViewStatusListener { - - - public V2XPushEventScenario() { - setV2XMarker(new V2XPushEventMarker()); - setV2XWindow(new V2XPushEventWindow()); - } - - @Override - public void init(@Nullable V2XMessageEntity v2XMessageEntity) { - Logger.w(MODULE_NAME, "处理推送场景:" + GsonUtil.jsonFromObject(v2XMessageEntity)); - - boolean isMainPageOnResume = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isMainPageOnResume = statusManager.isMainPageOnResume(); - } - if (!isSameScenario(v2XMessageEntity) - && isMainPageOnResume) { - setV2XMessageEntity(v2XMessageEntity); - show(); - } else { - setV2XMessageEntity(v2XMessageEntity); - Logger.w(V2XConst.MODULE_NAME, "要处理的场景已经存在,丢弃这次初始化"); - } - } - - @Override - public void show() { - if (getV2XMessageEntity() != null && getV2XMessageEntity().getContent() != null) { - speakTTSVoice(getV2XMessageEntity().getContent().getTts(), null); - drawPOI(); - showWindow(); - } - } - - @Override - public void showWindow() { - if (getV2XWindow() != null) { - ViewGroup.LayoutParams layoutParams = - new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - (int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_event_window_height_ground)); - - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.addView(getV2XWindow().getView(), layoutParams, this); - } - getV2XWindow().show(getV2XMessageEntity().getContent()); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setPushWindowShow(TAG, true); - } - } - } - - @Override - public void closeWindow() { - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setPushWindowShow(TAG, false); - } - if (getV2XWindow() != null) { - getV2XWindow().close(); - } - } - - @Override - public void showButton() { - if (getV2XButton() != null) { - getV2XButton().show(); - } - } - - @Override - public void closeButton() { - if (getV2XButton() != null) { - getV2XButton().close(); - } - } - - @Override - public void drawPOI() { - if (getV2XMarker() != null) { - getV2XMarker().drawPOI(getV2XMessageEntity().getContent()); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setPushPOIShow(TAG, true); - } - } - } - - @Override - public void clearPOI() { - if (getV2XMarker() != null) { - getV2XMarker().clearPOI(); - } - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setPushPOIShow(TAG, false); - } - } - - //////////////////////////////////////////////////////////////////////////////////////////////////// - @Override - public void onViewAdded(View view) { - Logger.d(MODULE_NAME, "展示 Window 动画结束"); - } - - @Override - public void onViewRemoved(View view) { - Logger.d(MODULE_NAME, "关闭 Window 动画结束"); - } - - @Override - public void beforeViewAddAnim(View view) { - Logger.d(MODULE_NAME, "展示 Window 开始"); - } - - @Override - public void beforeViewRemoveAnim(View view) { - Logger.d(MODULE_NAME, "关闭 Window 开始"); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setPushWindowShow(TAG, false); - } - // 重置场景提示的消息 - setV2XMessageEntity(null); - clearPOI(); - } - //////////////////////////////////////////////////////////////////////////////////////////////////// - -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/push/V2XPushEventWindow.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/push/V2XPushEventWindow.java deleted file mode 100644 index 1c1eaa2ac8..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/push/V2XPushEventWindow.java +++ /dev/null @@ -1,209 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.push; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.PagerSnapHelper; -import androidx.recyclerview.widget.RecyclerView; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.adapter.V2XRoadEventAdapter; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.listener.V2XWindowStatusListener; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.V2XBasWindow; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener; -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.module.v2x.voice.V2XVoiceManager; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; - -import java.util.ArrayList; -import java.util.List; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/4/14 2:37 PM - * desc : - * TODO 目前前瞻推送使用的消息都在这里展示 - * version: 1.0 - */ -public class V2XPushEventWindow extends V2XBasWindow implements IV2XWindow { - private String TAG = "V2XPushEventDetailWindow"; - // 展示列表 - private RecyclerView mRecyclerView; - // 列表数据适配器 - private V2XRoadEventAdapter mV2XRoadEventAdapter; - // 列表展示 - private List mItemList = new ArrayList<>(); - // 处理道路事件,30秒倒计时 - private Handler handlerV2XEvent = new Handler(); - private Runnable runnableV2XEvent; - private int mExpireTime = 30000; - // 关闭弹窗回调 - private V2XVoiceCallbackListener v2XVoiceCallbackCloseWindowListener = (String command, Intent intent) -> { - close(); - }; - - public V2XPushEventWindow() { - this(BridgeApi.INSTANCE.context(), null); - } - - public V2XPushEventWindow(Context context) { - this(context, null); - } - - public V2XPushEventWindow(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public V2XPushEventWindow(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initView(context); - } - - /** - * 初始化视图 - */ - private void initView(Context context) { - Logger.w(MODULE_NAME, "V2X===初始化推送的消息小窗口View。。。。。"); - // 填充布局 - LayoutInflater.from(context).inflate(R.layout.window_push_event_detail, this); - // 详情列表 - mRecyclerView = findViewById(R.id.rvRoadEventList); - mV2XRoadEventAdapter = new V2XRoadEventAdapter(mItemList, this); - mRecyclerView.setAdapter(mV2XRoadEventAdapter); - // 设置切换样式 - new PagerSnapHelper().attachToRecyclerView(mRecyclerView); - // 配置列表朝向 - LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false); - mRecyclerView.setLayoutManager(layoutManager); - mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { - super.onScrollStateChanged(recyclerView, newState); - if (recyclerView.getChildCount() > 0) { - if (newState == RecyclerView.SCROLL_STATE_IDLE) { - // 用户处于交互的时候延后隐藏时间 - countDownV2XEvent(); - } - } - } - }); - - } - - /** - * 更新头部的窗体视图 - */ - private void updateTopWindowInfo(V2XPushMessageEntity v2XRoadEventEntity) { - // 清空数据 - mItemList.clear(); - if (v2XRoadEventEntity != null) { - //Logger.d(MODULE_NAME, "V2X===推送消息:" + v2XRoadEventEntity); - V2XEventShowEntity v2XEventShowEntity = new V2XEventShowEntity(); - v2XEventShowEntity.setV2XPushMessageEntity(v2XRoadEventEntity); - v2XEventShowEntity.setViewType(V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_WINDOW_WARNING); - mItemList.add(v2XEventShowEntity); - } - // 刷新列表 - mV2XRoadEventAdapter.notifyDataSetChanged(); - } - - /** - * 展示道路事件详情Windows - */ - @Override - public void show(V2XPushMessageEntity entity) { - Logger.d(MODULE_NAME, "V2X===推送消息:展示 Window=\n" + entity); - // 更新头部的窗体视图 - updateTopWindowInfo(entity); - // 倒计时 - mExpireTime = entity.getExpireTime(); - countDownV2XEvent(); - // 注册语音交互 - V2XVoiceManager.INSTANCE - .registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CLOSE_WINDOW, v2XVoiceCallbackCloseWindowListener) - .registerUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CLOSE_WINDOW_UN_WAKEUP, v2XVoiceCallbackCloseWindowListener); - } - - /** - * 关闭详情展示框 - */ - @Override - public void close() { - Logger.d(MODULE_NAME, "V2X===关闭Window"); - // 注册语音交互 - V2XVoiceManager.INSTANCE - .unRegisterWakeCmd( - V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CLOSE_WINDOW) - .unRegisterUnWakeVoice( - V2XVoiceConstants.COMMAND_V2X_TO_CLOSE_WINDOW_UN_WAKEUP) - .unRegisterPagingCallback() - .unRegisterWakeCmd( - V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CALL_CHATTING) - .unRegisterWakeCmd( - V2XVoiceConstants.COMMAND_ZHIDAO_V2X_ZAN) - .unRegisterWakeCmd( - V2XVoiceConstants.COMMAND_ZHIDAO_V2X_REPORT) - .unRegisterUnWakeVoice( - V2XVoiceConstants.COMMAND_V2X_TO_CHAT_MORE_UN_WAKEUP) - .unRegisterUnWakeVoice( - V2XVoiceConstants.COMMAND_V2X_TO_ZAN_UN_WAKEUP) - .unRegisterUnWakeVoice( - V2XVoiceConstants.COMMAND_V2X_TO_FEEDBACK_TRUE) - .unRegisterUnWakeVoice( - V2XVoiceConstants.COMMAND_V2X_TO_FEEDBACK_ERROR); - // 停止倒计时 - if (handlerV2XEvent != null && runnableV2XEvent != null) { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - runnableV2XEvent = null; - } - - //移除窗体 - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.removeView(this); - } - } - - @Override - public View getView() { - return this; - } - - @Override - public void setWindowStatusListener(V2XWindowStatusListener listener) { - } - - /** - * 窗体倒计时 - */ - public void countDownV2XEvent() { - // 倒计时 - if (runnableV2XEvent == null) { - runnableV2XEvent = () -> { - Logger.d(MODULE_NAME, "V2X===30秒倒计时结束。。。"); - // 移出Window详细信息 - close(); - }; - } else { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - } - Logger.d(MODULE_NAME, "V2X===推送消息 Window 展示开始倒计时:" + mExpireTime); - handlerV2XEvent.postDelayed(runnableV2XEvent, mExpireTime); - } - -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventScenario.java index b425350551..f4b6700dc7 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventScenario.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventScenario.java @@ -1,10 +1,10 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene.road; +import com.mogo.eagle.core.data.enums.WarningDirectionEnum; import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XStatusManager; import com.mogo.eagle.core.function.v2x.events.manager.V2XStatusManager; import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario; import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XMarker; @@ -12,10 +12,10 @@ import com.mogo.eagle.core.network.utils.GsonUtil; import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.common.entity.V2XRoadEventEntity; import com.mogo.service.analytics.IMogoAnalytics; -import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.TimeUnit; /** * author : donghongyu @@ -35,7 +35,6 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp public void init(V2XMessageEntity v2XMessageEntity) { try { Logger.d(V2XConst.MODULE_NAME, "v2XMessageEntity:" + GsonUtil.jsonFromObject(v2XMessageEntity)); - V2XRoadEventEntity v2XRoadEventEntity = v2XMessageEntity.getContent(); if (v2XRoadEventEntity != null) { if (v2XMessageEntity.isShowState()) { @@ -46,7 +45,6 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp } else { // 更新要提醒的数据 setV2XMessageEntity(v2XMessageEntity); - //Logger.w(V2XConst.MODULE_NAME, "要处理的场景已经存在,丢弃这次初始化"); } } else { close(); @@ -67,20 +65,14 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp // 设置TTS getV2XMessageEntity().getContent().getTts(false); } - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - boolean isMainPageOnResume = false; - if (statusManager != null && statusManager.isMainPageOnResume()) { - isMainPageOnResume = true; - showWindow(); - } + showWindow(); IMogoAnalytics analytics = BridgeApi.INSTANCE.analytics(); if (analytics != null) { - // 地图主动推送/触发消息 埋点 String poiType = getV2XMessageEntity().getContent().getPoiType(); String lat = String.valueOf(getV2XMessageEntity().getContent().getLocation().getLat()); String lon = String.valueOf(getV2XMessageEntity().getContent().getLocation().getLon()); String infoId = getV2XMessageEntity().getContent().getNoveltyInfo().getInfoId(); - String style = isMainPageOnResume ? "1" : "2"; + String style = "1"; Map properties = new HashMap<>(); properties.put("dbid", infoId); properties.put("type", poiType); @@ -94,36 +86,12 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp e.printStackTrace(); } } - - @Override - public void showWindow() { + private void showWindow() { V2XMessageEntity entity = getV2XMessageEntity(); V2XRoadEventEntity content = entity != null ? entity.getContent() : null; if (content != null) { - CallerHmiManager.INSTANCE.showWarningV2X(entity.getType(), content.getAlarmContent(), content.getTts(), TAG, null, !entity.isOnlyShow(), 5000L); - } - } - - @Override - public void closeWindow() { - if (getV2XWindow() != null) { - getV2XWindow().close(); - } - IMoGoV2XStatusManager statusManager = BridgeApi.INSTANCE.v2xStatus(); - if (statusManager != null) { - statusManager.setRoadEventWindowShow(TAG, false); - } - } - - @Override - public void showButton() { - if (getV2XButton() != null) { - getV2XButton().setOnActionListener(this::showWindow); - getV2XButton().show(); - IMoGoV2XStatusManager statusManager = BridgeApi.INSTANCE.v2xStatus(); - if (statusManager != null) { - statusManager.setRoadEventButtonShow(TAG, true); - } + //显示警告红边 + CallerHmiManager.INSTANCE.showWarningV2X(entity.getType(), content.getAlarmContent(), content.getTts(), TAG, this, !entity.isOnlyShow(), TimeUnit.SECONDS.toMillis(5)); } } @@ -148,10 +116,7 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp @Override public void onShow() { Logger.d(V2XConst.MODULE_NAME, "弹窗展示"); - IMoGoV2XStatusManager status = BridgeApi.INSTANCE.v2xStatus(); - if (status != null) { - status.setRoadEventWindowShow(TAG, true); - } + CallerHmiManager.INSTANCE.showWarning(WarningDirectionEnum.ALERT_WARNING_TOP, TimeUnit.HOURS.toMillis(1)); V2XMessageEntity entity = getV2XMessageEntity(); if (entity != null && entity.isNeedAddLine()) { drawPOI(); @@ -161,10 +126,7 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp @Override public void onDismiss() { Logger.d(V2XConst.MODULE_NAME, "弹窗消失"); - IMoGoV2XStatusManager status = BridgeApi.INSTANCE.v2xStatus(); - if (status != null) { - status.setRoadEventWindowShow(TAG, false); - } + CallerHmiManager.INSTANCE.dismissWarning(WarningDirectionEnum.ALERT_WARNING_TOP); clearPOI(); release(); } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadVideoCarScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadVideoCarScenario.java deleted file mode 100644 index 0708aae536..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadVideoCarScenario.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.road; - -import android.util.Log; -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.Nullable; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XStatusManager; -import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.mogo.service.windowview.IMogoTopViewStatusListener; - -import javax.security.auth.DestroyFailedException; -import javax.security.auth.Destroyable; - -public class V2XRoadVideoCarScenario extends AbsV2XScenario implements IMogoTopViewStatusListener, Destroyable { - - private static V2XRoadVideoCarScenario sV2XRoadVideoCarScenario; - private static String TAG = "V2XRoadVideoCarScenario"; - - public static V2XRoadVideoCarScenario getInstance() { - if (sV2XRoadVideoCarScenario == null) { - synchronized (V2XRoadVideoCarScenario.class) { - if (sV2XRoadVideoCarScenario == null) { - sV2XRoadVideoCarScenario = new V2XRoadVideoCarScenario(); - sV2XRoadVideoCarScenario.setV2XWindow(new V2XRoadVideoWindow()); - } - - } - } - return sV2XRoadVideoCarScenario; - } - - @Override - public void init(@Nullable V2XMessageEntity v2XMessageEntity) { - try { - setV2XMessageEntity(v2XMessageEntity); - show(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - @Override - public void show() { - showWindow(); - } - - @Override - public void showWindow() { - if (getV2XWindow() != null) { - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - - getV2XWindow().show(getV2XMessageEntity().getContent()); - ViewGroup.LayoutParams layoutParams = - new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - (int) Utils.getApp().getResources() - .getDimension(isVrMode ? R.dimen.dp_394:R.dimen.v2x_video_window_height)); - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.addViewNoLinkage(getV2XWindow().getView(), layoutParams, this); - } - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setV2XAnimationWindowShow(TAG, true); - } - } - } - - @Override - public void closeWindow() { - if (getV2XWindow() != null) { - getV2XWindow().close(); - } - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setV2XRoadVideoWindowShow(TAG, false); - } - } - - @Override - public void showButton() { - if (getV2XButton() != null) { - getV2XButton().show(); - } - } - - @Override - public void closeButton() { - if (getV2XButton() != null) { - getV2XButton().close(); - } - } - - @Override - public void drawPOI() { - - } - - @Override - public void clearPOI() { - Log.d(TAG, "clearPOI"); - } - - - @Override - public void destroy() throws DestroyFailedException { - //Log.d(TAG, "destroy"); - } - - @Override - public boolean isDestroyed() { - //Log.d(TAG, "isDestroyed"); - return false; - } - - @Override - public void onViewAdded(View view) { - //Log.d(TAG, "onViewAdded"); - } - - @Override - public void onViewRemoved(View view) { - //Log.d(TAG, "onViewRemoved"); - } - - @Override - public void beforeViewAddAnim(View view) { - - //Log.d(TAG, "beforeViewAddAnim"); - } - - @Override - public void beforeViewRemoveAnim(View view) { - //Log.d(TAG, "beforeViewRemoveAnim"); - ((V2XRoadVideoWindow) getV2XWindow()).pauseVideo(); - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadVideoWindow.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadVideoWindow.java deleted file mode 100644 index 08139f38d0..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadVideoWindow.java +++ /dev/null @@ -1,298 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.road; - -import android.content.Context; -import android.graphics.Bitmap; -import android.util.AttributeSet; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.ImageView; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.listener.V2XWindowStatusListener; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.V2XBasWindow; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.utilcode.util.BitmapHelper; -import com.mogo.map.IDestroyable; -import com.mogo.module.common.entity.MarkerExploreWayItem; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XRoadEventEntity; -import com.mogo.module.v2x.view.SimpleCoverVideoPlayer; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder; -import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack; -import com.shuyu.gsyvideoplayer.utils.GSYVideoType; -import com.shuyu.gsyvideoplayer.video.base.GSYVideoView; - -import java.util.ArrayList; - -import static com.shuyu.gsyvideoplayer.utils.GSYVideoType.SCREEN_MATCH_FULL; - -/** - * https://github.com/CarGuo/GSYVideoPlayer/tree/master/doc SimpleCoverVideoPlayer文档 - */ -public class V2XRoadVideoWindow extends V2XBasWindow implements - IV2XWindow, IDestroyable { - - private static final String TAG = "V2XRoadVideoWindow"; - private V2XWindowStatusListener mV2XWindowStatusListener; - private ImageView playImageView; - private ImageView thumbnailImage; - private ImageView closeImage; - - - private SimpleCoverVideoPlayer simpleCoverVideoPlayer; - private Context mContext; - - private GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder(); - - - public V2XRoadVideoWindow() { - this(BridgeApi.INSTANCE.context(), null); - } - - public V2XRoadVideoWindow(Context context) { - this(context, null); - mContext = context; - } - - public V2XRoadVideoWindow(Context context, AttributeSet attrs) { - this(context, attrs, 0); - mContext = context; - } - - public V2XRoadVideoWindow(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - mContext = context; - initView(mContext); - } - - private void initView(Context context) { - boolean isVrMode = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isVrMode = statusManager.isVrMode(); - } - LayoutInflater.from(mContext).inflate(isVrMode ? R.layout.window_road_video_layout_vr : R.layout.window_road_video_layout, this); - playImageView = this.findViewById(R.id.window_video_play); - thumbnailImage = this.findViewById(R.id.thumbnail_image); - simpleCoverVideoPlayer = this.findViewById(R.id.roadVideoView); - GSYVideoType.setShowType(SCREEN_MATCH_FULL); - closeImage = this.findViewById(R.id.roadVideoClose); - closeImage.setOnClickListener(v -> { - close(); - }); - simpleCoverVideoPlayer.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - if (simpleCoverVideoPlayer.getCurrentState() == GSYVideoView.CURRENT_STATE_PAUSE) {/*播放中*/ - resume(); - } else { - pause(); - } - } - }); - } - - /** - * 开始播放 - */ - private void startPlayWithVideoUrl(String videoUrl) { - gsyVideoOptionBuilder.setUrl(videoUrl).setCacheWithPlay(false).setPlayTag(TAG) - .build(simpleCoverVideoPlayer); - simpleCoverVideoPlayer.getStartButton().performClick(); - thumbnailImage.setVisibility(View.GONE); - playImageView.setVisibility(View.GONE); - } - - /** - * 暂停 - */ - private void pause() { - playImageView.setVisibility(View.VISIBLE); - thumbnailImage.setVisibility(View.GONE); - playImageView.setOnClickListener(v -> { - simpleCoverVideoPlayer.onVideoResume(); - }); - thumbnailImage.setOnClickListener(v -> { - simpleCoverVideoPlayer.onVideoResume(); - }); - } - - /** - * 继续 - */ - private void resume() { - playImageView.setImageResource(R.drawable.v2x_video_pause); - playImageView.setVisibility(View.GONE); - thumbnailImage.setVisibility(View.GONE); - } - - /** - * 播放结束后 - */ - private void complete(Bitmap firstbitmap, String path) { - thumbnailImage.setVisibility(View.VISIBLE); - thumbnailImage.setImageBitmap(firstbitmap); - playImageView.setImageResource(R.drawable.v2x_icon_event_play); - playImageView.setVisibility(View.VISIBLE); - playImageView.setOnClickListener(v -> { - startPlayWithVideoUrl(path); - }); - thumbnailImage.setOnClickListener(v -> { - startPlayWithVideoUrl(path); - }); - } - - @Override - public void show(Object entity) { - V2XEventShowEntity showEntity = (V2XEventShowEntity) entity; - V2XRoadEventEntity xRoadEventEntity = showEntity.getV2XRoadEventEntity(); - ArrayList list = (ArrayList) xRoadEventEntity.getNoveltyInfo().getItems(); - if (list.size() > 0) { - MarkerExploreWayItem item = (MarkerExploreWayItem) list.get(0); - String path = item.getUrl(); - if (path == null) { - return; - } - if (path.contains(".mp4")) { - startPlayWithVideoUrl(path); - new Thread(new Runnable() { - @Override - public void run() { - Bitmap firstBitmap = BitmapHelper.getVideoThumbnail(path);/*获取第一帧图*/ - simpleCoverVideoPlayer.setVideoAllCallBack(new VideoAllCallBack() { - @Override - public void onAutoComplete(String url, Object... objects) { - complete(firstBitmap, path); - } - - @Override - public void onClickResume(String url, Object... objects) { - thumbnailImage.setVisibility(View.GONE); - playImageView.setVisibility(View.GONE); - } - - @Override - public void onClickStop(String url, Object... objects) { - Log.d(TAG, "onClickStop"); - } - - @Override - public void onStartPrepared(String url, Object... objects) { - Log.d(TAG, "onStartPrepared"); - } - - @Override - public void onPrepared(String url, Object... objects) { - } - - @Override - public void onClickStartIcon(String url, Object... objects) { - } - - @Override - public void onClickStartError(String url, Object... objects) { - } - - @Override - public void onClickStopFullscreen(String url, Object... objects) { - } - - @Override - public void onClickResumeFullscreen(String url, Object... objects) { - } - - @Override - public void onClickSeekbar(String url, Object... objects) { - } - - @Override - public void onClickSeekbarFullscreen(String url, Object... objects) { - } - - @Override - public void onEnterFullscreen(String url, Object... objects) { - } - - @Override - public void onQuitFullscreen(String url, Object... objects) { - } - - @Override - public void onQuitSmallWidget(String url, Object... objects) { - } - - @Override - public void onEnterSmallWidget(String url, Object... objects) { - } - - @Override - public void onTouchScreenSeekVolume(String url, Object... objects) { - } - - @Override - public void onTouchScreenSeekPosition(String url, Object... objects) { - } - - @Override - public void onTouchScreenSeekLight(String url, Object... objects) { - } - - @Override - public void onPlayError(String url, Object... objects) { - } - - @Override - public void onClickStartThumb(String url, Object... objects) { - } - - @Override - public void onClickBlank(String url, Object... objects) { - } - - @Override - public void onClickBlankFullscreen(String url, Object... objects) { - Log.d(TAG, "onClickBlankFullscreen"); - - } - }); - } - }).start(); - } - } - } - - @Override - public void close() { - pauseVideo(); - //移除窗体 - IMogoTopViewManager iMogoTopViewManager = BridgeApi.INSTANCE.topViewManager(); - if (iMogoTopViewManager != null) { - iMogoTopViewManager.removeViewNoLinkage(this); - } - } - - public void pauseVideo() { - if (simpleCoverVideoPlayer != null) { - simpleCoverVideoPlayer.onVideoPause(); - } - } - - @Override - public View getView() { - return this; - } - - @Override - public void setWindowStatusListener(V2XWindowStatusListener listener) { - this.mV2XWindowStatusListener = listener; - } - - @Override - public void destroy() { - - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/route/V2XOptimalRouteVREventScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/route/V2XOptimalRouteVREventScenario.java index a6b10b9a75..cadfe7b91a 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/route/V2XOptimalRouteVREventScenario.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/route/V2XOptimalRouteVREventScenario.java @@ -1,23 +1,18 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene.route; -import android.view.View; -import android.view.ViewGroup; - import androidx.annotation.Nullable; - -import com.mogo.eagle.core.function.v2x.R; +import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener; +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; import com.mogo.eagle.core.function.v2x.events.entity.net.V2XOptimalRouteDataRes; import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XStatusManager; import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario; +import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XMarker; import com.mogo.eagle.core.network.utils.GsonUtil; -import com.mogo.eagle.core.utilcode.util.Utils; import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.mogo.service.windowview.IMogoTopViewStatusListener; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; +import java.util.concurrent.TimeUnit; /** * author : donghongyu @@ -29,28 +24,20 @@ import com.mogo.eagle.core.utilcode.mogo.logger.Logger; */ public class V2XOptimalRouteVREventScenario extends AbsV2XScenario - implements IMogoTopViewStatusListener { + implements IMoGoWarningStatusListener { private String TAG = "V2XPushVREventWindow"; public V2XOptimalRouteVREventScenario() { setV2XMarker(new V2XOptimalRouteVREventMarker()); - setV2XWindow(new V2XOptimalRouteVREventWindow()); } @Override public void init(@Nullable V2XMessageEntity v2XMessageEntity) { Logger.w(V2XConst.MODULE_NAME + "_" + TAG, "处理推送VR:" + GsonUtil.jsonFromObject(v2XMessageEntity)); - boolean isMainPageOnResume = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isMainPageOnResume = statusManager.isMainPageOnResume(); - } - if (!isSameScenario(v2XMessageEntity) - && isMainPageOnResume) { + if (!isSameScenario(v2XMessageEntity)) { setV2XMessageEntity(v2XMessageEntity); show(); } else { - closeWindow(); setV2XMessageEntity(v2XMessageEntity); show(); Logger.w(V2XConst.MODULE_NAME + "_" + TAG, "要处理的场景已经存在,丢弃这次初始化"); @@ -59,62 +46,20 @@ public class V2XOptimalRouteVREventScenario @Override public void show() { - if (getV2XMessageEntity() != null && getV2XMessageEntity().getContent() != null) { - speakTTSVoice("已为您选择最优路线", null); - drawPOI(); - showWindow(); - } - } - - @Override - public void showWindow() { - if (getV2XWindow() != null) { - ViewGroup.LayoutParams layoutParams = - new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - (int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_event_window_height_ground)); - - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.addView(getV2XWindow().getView(), layoutParams, this); + V2XMessageEntity entity = getV2XMessageEntity(); + if (entity != null) { + V2XOptimalRouteDataRes content = entity.getContent(); + if (content != null) { + CallerHmiManager.INSTANCE.showWarningV2X(entity.getType(), "为您推荐最优路线", "已为您选择最优路线", TAG, this, !entity.isOnlyShow(), TimeUnit.SECONDS.toMillis(30)); } - getV2XWindow().show(getV2XMessageEntity().getContent()); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setPushWindowShow(TAG, true); - } - } - } - - @Override - public void closeWindow() { - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setPushWindowShow(TAG, false); - } - if (getV2XWindow() != null) { - getV2XWindow().close(); - } - } - - @Override - public void showButton() { - if (getV2XButton() != null) { - getV2XButton().show(); - } - } - - @Override - public void closeButton() { - if (getV2XButton() != null) { - getV2XButton().close(); } } @Override public void drawPOI() { - if (getV2XMarker() != null) { - getV2XMarker().drawPOI(getV2XMessageEntity().getContent()); + IV2XMarker marker = getV2XMarker(); + if (marker != null) { + marker.drawPOI(getV2XMessageEntity().getContent()); IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); if (v2xStatus != null) { v2xStatus.setPushPOIShow(TAG, true); @@ -133,34 +78,13 @@ public class V2XOptimalRouteVREventScenario } } - //////////////////////////////////////////////////////////////////////////////////////////////////// @Override - public void onViewAdded(View view) { - Logger.d(V2XConst.MODULE_NAME + "_" + TAG, "展示 Window 动画结束"); + public void onShow() { + drawPOI(); } @Override - public void onViewRemoved(View view) { - Logger.d(V2XConst.MODULE_NAME + "_" + TAG, "关闭 Window 动画结束"); - } - - @Override - public void beforeViewAddAnim(View view) { - Logger.d(V2XConst.MODULE_NAME + "_" + TAG, "展示 Window 开始"); - } - - @Override - public void beforeViewRemoveAnim(View view) { - Logger.d(V2XConst.MODULE_NAME + "_" + TAG, "关闭 Window 开始"); - - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setPushWindowShow(TAG, false); - } - // 重置场景提示的消息 - setV2XMessageEntity(null); + public void onDismiss() { clearPOI(); } - //////////////////////////////////////////////////////////////////////////////////////////////////// - } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/route/V2XOptimalRouteVREventWindow.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/route/V2XOptimalRouteVREventWindow.java deleted file mode 100644 index 94152ce410..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/route/V2XOptimalRouteVREventWindow.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.route; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.content.Context; -import android.os.Handler; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.entity.net.V2XOptimalRouteDataRes; -import com.mogo.eagle.core.function.v2x.events.listener.V2XWindowStatusListener; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.V2XBasWindow; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/4/14 2:37 PM - * desc : - * TODO 只有VR演示场景使用 - * version: 1.0 - */ -public class V2XOptimalRouteVREventWindow - extends V2XBasWindow - implements IV2XWindow { - private String TAG = "V2XPushVREventWindow"; - - // 处理道路事件,30秒倒计时 - private Handler handlerV2XEvent = new Handler(); - private Runnable runnableV2XEvent; - private int mExpireTime = 30000; - - public V2XOptimalRouteVREventWindow() { - this(BridgeApi.INSTANCE.context()); - } - - public V2XOptimalRouteVREventWindow(Context context) { - this(context, null); - } - - public V2XOptimalRouteVREventWindow(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public V2XOptimalRouteVREventWindow(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - // 填充布局 - LayoutInflater.from(context).inflate(R.layout.vr_window_top_tips, this); - } - - /** - * 展示道路事件详情Windows - */ - @Override - public void show(V2XOptimalRouteDataRes entity) { - - countDownV2XEvent(); - } - - /** - * 关闭详情展示框 - */ - @Override - public void close() { - Logger.d(MODULE_NAME + "_" + TAG, "V2X==VR=关闭Window"); - // 停止倒计时 - if (handlerV2XEvent != null && runnableV2XEvent != null) { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - runnableV2XEvent = null; - } - - //移除窗体 - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.removeView(this); - } - } - - @Override - public View getView() { - return this; - } - - @Override - public void setWindowStatusListener(V2XWindowStatusListener listener) { - } - - /** - * 窗体倒计时 - */ - public void countDownV2XEvent() { - // 倒计时 - if (runnableV2XEvent == null) { - runnableV2XEvent = () -> { - Logger.d(MODULE_NAME + "_" + TAG, "V2X==VR=30秒倒计时结束。。。"); - // 移出Window详细信息 - close(); - }; - } else { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - } - Logger.d(MODULE_NAME + "_" + TAG, "V2X==VR=推送消息 Window 展示开始倒计时:" + mExpireTime); - handlerV2XEvent.postDelayed(runnableV2XEvent, mExpireTime); - } - -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/seek/V2XSeekHelpScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/seek/V2XSeekHelpScenario.java deleted file mode 100644 index 94ef8dc38a..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/seek/V2XSeekHelpScenario.java +++ /dev/null @@ -1,206 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.seek; - -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.Nullable; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.entity.net.V2XSpecialCarRes; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XStatusManager; -import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario; -import com.mogo.eagle.core.function.v2x.events.utils.ADASUtils; -import com.mogo.eagle.core.function.v2x.events.utils.V2XSQLiteUtils; -import com.mogo.eagle.core.utilcode.util.ThreadUtils; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.module.common.entity.V2XRoadEventEntity; -import com.mogo.module.common.enums.EventTypeEnum; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.mogo.service.windowview.IMogoTopViewStatusListener; - -import java.util.List; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/5/15 5:37 PM - * desc : 故障求助场景 - * version: 1.0 - */ -public class V2XSeekHelpScenario extends AbsV2XScenario> implements IMogoTopViewStatusListener { - - - public V2XSeekHelpScenario() { - setV2XWindow(new V2XSeekHelpWindow()); - // TODO 这里引起了地图的崩溃,由于本次交付不包含此功能,所以先注释掉 2021-12-13 - //setV2XMarker(new V2XSeekHelpMarker()); - } - - private List mMarkerEntity; - private V2XPushMessageEntity mV2XPushMessageEntity; - - @Override - public void init(@Nullable V2XMessageEntity> v2XMessageEntity) { - try { - setV2XMessageEntity(v2XMessageEntity); - - // 广播给ADAS和Launcher卡片 - V2XRoadEventEntity eventEntity = new V2XRoadEventEntity(); - eventEntity.setPoiType(EventTypeEnum.ALERT_CAR_TROUBLE_WARNING.getPoiType()); - eventEntity.setExpireTime(30000); - eventEntity.setTts("发现其他车主的求助信息"); - eventEntity.setAlarmContent("其他车主求助"); - ADASUtils.broadcastToADAS(BridgeApi.INSTANCE.context(), eventEntity); - - mMarkerEntity = getV2XMessageEntity().getContent(); - - V2XSpecialCarRes.V2XMarkerEntity markerEntity = mMarkerEntity.get(0); - mV2XPushMessageEntity = new V2XPushMessageEntity(); - mV2XPushMessageEntity.setLon(markerEntity.getLon()); - mV2XPushMessageEntity.setLat(markerEntity.getLat()); - mV2XPushMessageEntity.setDisplayName(markerEntity.getUserInfo().getDisplayName()); - mV2XPushMessageEntity.setHeadImgUrl(markerEntity.getUserInfo().getHeadImgUrl()); - mV2XPushMessageEntity.setSex(markerEntity.getUserInfo().getSex()); - mV2XPushMessageEntity.setSn(markerEntity.getUserInfo().getSn()); - mV2XPushMessageEntity.setCreateTime(markerEntity.getCreateTime()); - mV2XPushMessageEntity.setDistance(markerEntity.getDistance()); - mV2XPushMessageEntity.setExpireTime(20000); - saveLocalStory(V2XMessageEntity.V2XTypeEnum.ALERT_SEEK_WARNING, mV2XPushMessageEntity); - boolean isMainPageOnResume = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isMainPageOnResume = statusManager.isMainPageOnResume(); - } - boolean isOtherSeekHelpWindowShow = false; - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - isOtherSeekHelpWindowShow = v2xStatus.isOtherSeekHelpWindowShow(); - } - if (isMainPageOnResume) { - if (getV2XMessageEntity() != null && - !isOtherSeekHelpWindowShow) { - show(); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Override - public void show() { - showWindow(); - } - - @Override - public void showWindow() { - if (getV2XWindow() != null && mMarkerEntity != null) { - View view = getV2XWindow().getView(); - //Logger.d(MODULE_NAME, "添加window= " + view); - ViewGroup.LayoutParams layoutParams = - new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - (int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground)); - - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.addView(getV2XWindow().getView(), layoutParams, this); - } - getV2XWindow().show(mV2XPushMessageEntity); - } - } - - @Override - public void closeWindow() { - - boolean isOtherSeekHelpWindowShow = false; - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - isOtherSeekHelpWindowShow = v2xStatus.isOtherSeekHelpWindowShow(); - } - if (isOtherSeekHelpWindowShow) { - //Logger.d(MODULE_NAME, "关闭求助车辆的Window!"); - v2xStatus.setOtherSeekHelpWindowShow(TAG, false); - if (getV2XWindow() != null) { - View view = getV2XWindow().getView(); - //Logger.d(MODULE_NAME, "移除window= " + view); - getV2XWindow().close(); - } - } - } - - @Override - public void showButton() { - - } - - @Override - public void closeButton() { - - } - - @Override - public void drawPOI() { - if (getV2XMarker() != null && mMarkerEntity != null) { - getV2XMarker().drawPOI(mMarkerEntity); - } - } - - @Override - public void clearPOI() { - if (getV2XMarker() != null) { - getV2XMarker().clearPOI(); - } - } - - @Override - public void onViewAdded(View view) { - //Logger.d(MODULE_NAME, "展示 Window 动画结束"); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setOtherSeekHelpWindowShow(TAG, true); - } - drawPOI(); - } - - @Override - public void onViewRemoved(View view) { - //Logger.d(MODULE_NAME, "关闭 Window 动画结束"); - } - - @Override - public void beforeViewAddAnim(View view) { - //Logger.d(MODULE_NAME, "展示 Window 开始"); - } - - @Override - public void beforeViewRemoveAnim(View view) { - //Logger.d(MODULE_NAME, "关闭 Window 开始"); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setOtherSeekHelpWindowShow(TAG, false); - } - // 重置场景提示的消息 - setV2XMessageEntity(null); - clearPOI(); - } - - /** - * 存储本地数据 - * - * @param messageEntity 要存储的场景 - */ - private void saveLocalStory(int scenarioType, V2XPushMessageEntity messageEntity) { - ThreadUtils.getIoPool().execute(() -> { - try { - V2XSQLiteUtils.saveLocalStory(scenarioType, messageEntity, messageEntity.hashCode()); - } catch (Exception e) { - e.printStackTrace(); - } - }); - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/seek/V2XSeekHelpWindow.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/seek/V2XSeekHelpWindow.java deleted file mode 100644 index 869d6fa554..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/seek/V2XSeekHelpWindow.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.seek; - -import android.content.Context; -import android.os.Handler; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.PagerSnapHelper; -import androidx.recyclerview.widget.RecyclerView; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.adapter.V2XRoadEventAdapter; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.listener.V2XWindowStatusListener; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.V2XBasWindow; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.service.windowview.IMogoTopViewManager; - -import java.util.ArrayList; -import java.util.List; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/5/15 5:37 PM - * desc : 他人发起的故障求助 - * version: 1.0 - */ -public class V2XSeekHelpWindow extends V2XBasWindow implements IV2XWindow { - private static final String TAG = "V2XSeekHelpWindow"; - - // 展示列表 - private RecyclerView mRecyclerView; - // 列表数据适配器 - private V2XRoadEventAdapter mV2XRoadEventAdapter; - // 列表展示 - private List mItemList = new ArrayList<>(); - - // 直播30秒自动关闭 - private static Handler handlerV2XEvent = new Handler(); - private static Runnable runnableV2XEvent; - - // 推荐的停车场 - private V2XPushMessageEntity mV2XPushMessageEntity; - - public V2XSeekHelpWindow() { - this(BridgeApi.INSTANCE.context(), null); - } - - public V2XSeekHelpWindow(Context context) { - this(context, null); - } - - public V2XSeekHelpWindow(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public V2XSeekHelpWindow(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initView(context); - } - - private void initView(Context context) { - //Logger.w(MODULE_NAME, "初始化道路故障求助窗口View。。。。。"); - LayoutInflater.from(context).inflate(R.layout.window_fault_help, this); - // 详情列表 - mRecyclerView = findViewById(R.id.rvRoadEventList); - mV2XRoadEventAdapter = new V2XRoadEventAdapter(mItemList, this); - mRecyclerView.setAdapter(mV2XRoadEventAdapter); - // 设置切换样式 - new PagerSnapHelper().attachToRecyclerView(mRecyclerView); - // 配置列表朝向 - LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false); - mRecyclerView.setLayoutManager(layoutManager); - mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { - super.onScrollStateChanged(recyclerView, newState); - if (recyclerView.getChildCount() > 0) { - if (newState == RecyclerView.SCROLL_STATE_IDLE) { - // 用户处于交互的时候延后隐藏时间 - countDownV2XEvent(); - } - } - } - }); - } - - @Override - public void show(V2XPushMessageEntity xPushMessageEntity) { - if (xPushMessageEntity != null) { - mV2XPushMessageEntity = xPushMessageEntity; - // 清空数据 - mItemList.clear(); - //Logger.d(MODULE_NAME, "V2X===推送消息:" + v2XRoadEventEntity); - V2XEventShowEntity v2XEventShowEntity = new V2XEventShowEntity(); - v2XEventShowEntity.setV2XPushMessageEntity(xPushMessageEntity); - v2XEventShowEntity.setViewType(V2XMessageEntity.V2XTypeEnum.ALERT_SEEK_WARNING); - mItemList.add(v2XEventShowEntity); - // 刷新列表 - mV2XRoadEventAdapter.notifyDataSetChanged(); - countDownV2XEvent(); - } - } - - @Override - public void close() { - //Logger.d(TAG, "移除window= " + this); - // 停止倒计时 - if (handlerV2XEvent != null && runnableV2XEvent != null) { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - runnableV2XEvent = null; - } - //移除窗体 - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.removeView(this); - } - } - - @Override - public View getView() { - return this; - } - - @Override - public void setWindowStatusListener(V2XWindowStatusListener listener) { - } - - /** - * 窗体倒计时 - */ - public void countDownV2XEvent() { - if (mV2XPushMessageEntity != null) { - // 倒计时 - if (runnableV2XEvent == null) { - runnableV2XEvent = () -> { - //Logger.d(MODULE_NAME, "V2X=== Window 30秒倒计时结束。。。"); - // 移出Window详细信息 - close(); - }; - } else { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - } - int expireTime = mV2XPushMessageEntity.getExpireTime(); - //Logger.d(MODULE_NAME, "V2X=== Window 展示开始倒计时:" + expireTime); - handlerV2XEvent.postDelayed(runnableV2XEvent, expireTime); - } - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/ugc/V2XEventUgcScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/ugc/V2XEventUgcScenario.java deleted file mode 100644 index e011fe822e..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/ugc/V2XEventUgcScenario.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.ugc; - -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.Nullable; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XStatusManager; -import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.common.entity.V2XRoadEventEntity; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.mogo.service.windowview.IMogoTopViewStatusListener; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/5/15 5:37 PM - * desc : 道路事件UGC - * 需求地址 - * http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=42321443 - * version: 1.0 - */ -public class V2XEventUgcScenario extends AbsV2XScenario implements IMogoTopViewStatusListener { - - public V2XEventUgcScenario() { - setV2XWindow(new V2XEventUgcWindow()); - } - - @Override - public void init(@Nullable V2XMessageEntity v2XMessageEntity) { - if (!isSameScenario(v2XMessageEntity)) { - setV2XMessageEntity(v2XMessageEntity); - if (v2XMessageEntity != null) { - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - boolean isMainOnPageOnResume = false; - if (statusManager != null) { - isMainOnPageOnResume = statusManager.isMainPageOnResume(); - } - if (v2XMessageEntity.isShowState() - && isMainOnPageOnResume) { - show(); - } - } - } else { - setV2XMessageEntity(v2XMessageEntity); - Logger.w(V2XConst.MODULE_NAME, "疲劳驾驶场景,要处理的场景已经存在,丢弃这次初始化"); - } - } - - @Override - public void show() { - showWindow(); - } - - @Override - public void showWindow() { - if (getV2XWindow() != null) { - ViewGroup.LayoutParams layoutParams = - new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - (int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground)); - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.addView(getV2XWindow().getView(), layoutParams, this); - } - getV2XWindow().show(getV2XMessageEntity().getContent()); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setFatigueDrivingWindowShow(TAG, true); - } - } - } - - @Override - public void closeWindow() { - if (getV2XWindow() != null) { - getV2XWindow().close(); - } - } - - @Override - public void showButton() { - } - - @Override - public void closeButton() { - } - - @Override - public void drawPOI() { - } - - @Override - public void clearPOI() { - } - - @Override - public void onViewAdded(View view) { - //Logger.d(MODULE_NAME, "疲劳驾驶场景 展示 Window 动画结束"); - } - - @Override - public void onViewRemoved(View view) { - //Logger.d(MODULE_NAME, "疲劳驾驶场景 关闭 Window 动画结束"); - } - - @Override - public void beforeViewAddAnim(View view) { - //Logger.d(MODULE_NAME, "疲劳驾驶场景 展示 Window 开始"); - - } - - @Override - public void beforeViewRemoveAnim(View view) { - //Logger.d(MODULE_NAME, "疲劳驾驶场景 关闭 Window 开始"); - // 重置场景提示的消息 - setV2XMessageEntity(null); - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null) { - v2xStatus.setFatigueDrivingWindowShow(TAG, false); - } - } - -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/ugc/V2XEventUgcWindow.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/ugc/V2XEventUgcWindow.java deleted file mode 100644 index 5efa961028..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/ugc/V2XEventUgcWindow.java +++ /dev/null @@ -1,166 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.ugc; - -import static com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME; - -import android.content.Context; -import android.os.Handler; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.PagerSnapHelper; -import androidx.recyclerview.widget.RecyclerView; - -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.adapter.V2XRoadEventAdapter; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.listener.V2XWindowStatusListener; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.V2XBasWindow; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.common.entity.V2XRoadEventEntity; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; - -import java.util.ArrayList; -import java.util.List; - - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/4/24 11:34 AM - * desc : 道路事件UGC - * 需求地址 - * http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=42321443 - * version: 1.0 - */ -public class V2XEventUgcWindow extends V2XBasWindow - implements IV2XWindow { - // 展示列表 - private RecyclerView mRecyclerView; - // 列表数据适配器 - private V2XRoadEventAdapter mV2XRoadEventAdapter; - // 列表展示 - private List mItemList = new ArrayList<>(); - - // 直播30秒自动关闭 - private static Handler handlerV2XEvent = new Handler(); - private static Runnable runnableV2XEvent; - - // - private V2XRoadEventEntity mV2XRoadEventEntity; - - public V2XEventUgcWindow() { - this(BridgeApi.INSTANCE.context(), null); - } - - public V2XEventUgcWindow(Context context) { - this(context, null); - } - - public V2XEventUgcWindow(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public V2XEventUgcWindow(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initView(context); - } - - public void initView(Context context) { - Logger.w(MODULE_NAME, "V2X-初始化UGC的Window"); - LayoutInflater.from(context).inflate(R.layout.window_fault_help, this); - // 详情列表 - mRecyclerView = findViewById(R.id.rvRoadEventList); - mV2XRoadEventAdapter = new V2XRoadEventAdapter(mItemList, this); - mRecyclerView.setAdapter(mV2XRoadEventAdapter); - // 设置切换样式 - new PagerSnapHelper().attachToRecyclerView(mRecyclerView); - // 配置列表朝向 - LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false); - mRecyclerView.setLayoutManager(layoutManager); - mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { - super.onScrollStateChanged(recyclerView, newState); - if (recyclerView.getChildCount() > 0) { - if (newState == RecyclerView.SCROLL_STATE_IDLE) { - // 用户处于交互的时候延后隐藏时间 - countDownV2XEvent(); - } - } - } - }); - } - - - /** - * 展示道路事件详情Windows - */ - @Override - public void show(V2XRoadEventEntity entity) { - if (entity != null) { - mV2XRoadEventEntity = entity; - // 清空数据 - mItemList.clear(); - //Logger.d(MODULE_NAME, "V2X===推送消息:" + v2XRoadEventEntity); - V2XEventShowEntity v2XEventShowEntity = new V2XEventShowEntity(); - v2XEventShowEntity.setV2XRoadEventEntity(mV2XRoadEventEntity); - v2XEventShowEntity.setViewType(V2XMessageEntity.V2XTypeEnum.ALERT_EVENT_UGC_WARNING); - mItemList.add(v2XEventShowEntity); - // 刷新列表 - mV2XRoadEventAdapter.notifyDataSetChanged(); - - countDownV2XEvent(); - } - } - - @Override - public void close() { - // 停止倒计时 - if (handlerV2XEvent != null && runnableV2XEvent != null) { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - runnableV2XEvent = null; - } - - //移除窗体 - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.removeView(this); - } - } - - @Override - public View getView() { - return this; - } - - @Override - public void setWindowStatusListener(V2XWindowStatusListener listener) { - } - - /** - * 窗体倒计时 - */ - public void countDownV2XEvent() { - if (mV2XRoadEventEntity != null) { - // 倒计时 - if (runnableV2XEvent == null) { - runnableV2XEvent = () -> { - //Logger.d(MODULE_NAME, "V2X=== Window 30秒倒计时结束。。。"); - // 移出Window详细信息 - close(); - }; - } else { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - } - int expireTime = mV2XRoadEventEntity.getExpireTime(); - //Logger.d(MODULE_NAME, "V2X=== Window 展示开始倒计时:" + expireTime); - handlerV2XEvent.postDelayed(runnableV2XEvent, expireTime); - } - } -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XFrontWarningScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XFrontWarningScenario.java index 40977b9b87..96e66026a8 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XFrontWarningScenario.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XFrontWarningScenario.java @@ -1,35 +1,39 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene.warning; +import android.graphics.Color; +import android.text.Spannable; +import android.text.SpannableStringBuilder; +import android.text.style.ForegroundColorSpan; import android.util.Log; -import android.view.View; -import android.view.ViewGroup; - import androidx.annotation.Nullable; +import com.mogo.eagle.core.data.enums.WarningDirectionEnum; import com.mogo.eagle.core.data.map.MogoLocation; +import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener; import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener; -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario; -import com.mogo.eagle.core.utilcode.util.Utils; +import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XMarker; import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.common.entity.V2XWarningEntity; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.windowview.IMogoTopViewManager; -import com.mogo.service.windowview.IMogoTopViewStatusListener; + +import java.math.BigDecimal; +import java.util.Locale; +import java.util.concurrent.TimeUnit; /** * @author liujing * @description 车路云—场景预警-V1.0 前车/行人/摩托车/盲区碰撞预警 * @since: 2021/3/24 */ -public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopViewStatusListener ,IMoGoMapLocationListener{ +public class V2XFrontWarningScenario extends AbsV2XScenario implements IMoGoMapLocationListener, IMoGoWarningStatusListener { private static final String TAG = "V2XWarningMarker"; private V2XWarningEntity mMarkerEntity; static private V2XWarningMarker sV2XWarningMarker = new V2XWarningMarker(); + private WarningDirectionEnum mDirection; + public V2XFrontWarningScenario() { - setV2XWindow(new V2XWarningWindow()); setV2XMarker(sV2XWarningMarker); } @@ -37,18 +41,10 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopV public void init(@Nullable V2XMessageEntity v2XMessageEntity) { Log.d(TAG, "----- init -----:\n" + (v2XMessageEntity == null ? "null" : v2XMessageEntity.toString())); try { - if (v2XMessageEntity.getContent() != null) { - boolean isMainPageOnResume = false; - IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager(); - if (statusManager != null) { - isMainPageOnResume = statusManager.isMainPageOnResume(); - } - if (isMainPageOnResume) { - mMarkerEntity = (V2XWarningEntity) v2XMessageEntity.getContent(); - show(); - } - } else { - + setV2XMessageEntity(v2XMessageEntity); + if (v2XMessageEntity != null && v2XMessageEntity.getContent() instanceof V2XWarningEntity) { + mMarkerEntity = (V2XWarningEntity) v2XMessageEntity.getContent(); + show(); } } catch (Exception e) { e.printStackTrace(); @@ -57,46 +53,46 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopV @Override public void show() { - showWindow(); - } - - @Override - public void showWindow() { - Log.d(TAG, "----- showWindow --- 1 --:\n" + (mMarkerEntity == null ? "null" : mMarkerEntity.toString())); - if (getV2XWindow() != null && mMarkerEntity != null) { - Log.d(TAG, "----- showWindow --- 2 --:\n" + mMarkerEntity.toString()); - ViewGroup.LayoutParams layoutParams = - new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - (int) Utils.getApp().getResources().getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground)); - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.addView(getV2XWindow().getView(), layoutParams, this); + Log.d(TAG, "----- show --- 1 --:\n" + (mMarkerEntity == null ? "null" : mMarkerEntity.toString())); + if (mMarkerEntity != null) { + Log.d(TAG, "----- show --- 2 --:\n" + mMarkerEntity); + int v2xType = getV2XTypeForFrontWarning(mMarkerEntity); + V2XMessageEntity entity = getV2XMessageEntity(); + if (v2xType != 0) { + CallerHmiManager.INSTANCE.showWarningV2X(v2xType, getAlertContentForFrontWarning(mMarkerEntity), mMarkerEntity.getTts(), TAG, this, !entity.isOnlyShow(), TimeUnit.SECONDS.toMillis(3)); } - getV2XWindow().show(mMarkerEntity); - getV2XMarker().drawPOI(mMarkerEntity); } } - @Override - public void closeWindow() { - Log.d(TAG, "----- closeWindow -----:\n" + (mMarkerEntity == null ? "null" : mMarkerEntity.toString())); + private int getV2XTypeForFrontWarning(V2XWarningEntity entity) { + switch (entity.getType()) { + case 1: + case 11: + return 0X2B0201; + case 2: + case 4: + return 0X2B0202; + } + return 0; } - @Override - public void showButton() { - Log.d(TAG, "----- showButton -----:\n" + (mMarkerEntity == null ? "null" : mMarkerEntity.toString())); - } - - @Override - public void closeButton() { - Log.d(TAG, "----- closeButton -----:\n" + (mMarkerEntity == null ? "null" : mMarkerEntity.toString())); + private CharSequence getAlertContentForFrontWarning(V2XWarningEntity entity) { + double dis = entity.getDistance(); + //距离四舍五入保留整数 + BigDecimal bg = new BigDecimal(dis); + double disBig = bg.setScale(0, BigDecimal.ROUND_HALF_UP).doubleValue(); + String distance = String.format(Locale.getDefault(), "%.0f", disBig) + "米"; + String content = entity.getWarningContent(); + SpannableStringBuilder ssb = new SpannableStringBuilder(content + distance); + ssb.setSpan(new ForegroundColorSpan(Color.parseColor("#FF3036")), content.length(), ssb.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + return ssb; } @Override public void drawPOI() { - if (getV2XMarker() != null) { - getV2XMarker().drawPOI(mMarkerEntity); + IV2XMarker marker = getV2XMarker(); + if (marker != null && mMarkerEntity != null) { + marker.drawPOI(mMarkerEntity); Log.d(TAG, "drawPOI"); } } @@ -106,35 +102,42 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopV Log.d(TAG, "----- clearPOI -----"); } - @Override - public void onViewAdded(View view) { - - Log.d(TAG, "----- onViewAdded -----"); - } - - @Override - public void onViewRemoved(View view) { - Log.d(TAG, "----- onViewRemoved -----"); - } - - @Override - public void beforeViewAddAnim(View view) { - Log.d(TAG, "----- beforeViewAddAnim -----"); - } - - @Override - public void beforeViewRemoveAnim(View view) { - Log.d(TAG, "----- beforeViewRemoveAnim -----"); - } - -// @Override -// public void onCarLocationChanged2(Location latLng) { -// sV2XWarningMarker.onCarLocationChanged2(latLng); -// } - - @Override public void onLocationChanged(@org.jetbrains.annotations.Nullable MogoLocation location) { sV2XWarningMarker.onCarLocationChanged2(location); } + + @Override + public void onShow() { + //预警蒙层 + WarningDirectionEnum warningDirectionEnum = WarningDirectionEnum.ALERT_WARNING_ALL; + switch (mMarkerEntity.getDirection()) { + case 0: + warningDirectionEnum = WarningDirectionEnum.ALERT_WARNING_NON; + break; + case 1: + warningDirectionEnum = WarningDirectionEnum.ALERT_WARNING_TOP; + break; + case 2: + warningDirectionEnum = WarningDirectionEnum.ALERT_WARNING_BOTTOM; + break; + case 3: + warningDirectionEnum = WarningDirectionEnum.ALERT_WARNING_LEFT; + break; + case 4: + warningDirectionEnum = WarningDirectionEnum.ALERT_WARNING_RIGHT; + break; + } + CallerHmiManager.INSTANCE.showWarning(warningDirectionEnum, TimeUnit.HOURS.toMillis(1)); + mDirection = warningDirectionEnum; + drawPOI(); + } + + @Override + public void onDismiss() { + if (mDirection != null) { + CallerHmiManager.INSTANCE.dismissWarning(mDirection); + } + clearPOI(); + } } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningMarker.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningMarker.java index 835587d01e..b7285e9540 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningMarker.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningMarker.java @@ -136,27 +136,6 @@ public class V2XWarningMarker implements IV2XMarker { } clearAllLine(); - //预警蒙层 - WarningDirectionEnum warningDirectionEnum = WarningDirectionEnum.ALERT_WARNING_ALL; - switch (mCloundWarningInfo.getDirection()) { - case 0: - warningDirectionEnum = WarningDirectionEnum.ALERT_WARNING_NON; - break; - case 1: - warningDirectionEnum = WarningDirectionEnum.ALERT_WARNING_TOP; - break; - case 2: - warningDirectionEnum = WarningDirectionEnum.ALERT_WARNING_BOTTOM; - break; - case 3: - warningDirectionEnum = WarningDirectionEnum.ALERT_WARNING_LEFT; - break; - case 4: - warningDirectionEnum = WarningDirectionEnum.ALERT_WARNING_RIGHT; - break; - } - CallerHmiManager.INSTANCE.showWarning(warningDirectionEnum); - } /* diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningWindow.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningWindow.java deleted file mode 100644 index 9a4356e459..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningWindow.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.mogo.eagle.core.function.v2x.events.scenario.scene.warning; - -import android.content.Context; -import android.os.Handler; -import android.util.AttributeSet; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import com.mogo.commons.voice.AIAssist; -import com.mogo.eagle.core.function.v2x.R; -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; -import com.mogo.eagle.core.function.v2x.events.listener.V2XWindowStatusListener; -import com.mogo.eagle.core.function.v2x.events.scenario.scene.V2XBasWindow; -import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XWindow; -import com.mogo.eagle.core.utilcode.util.Utils; -import com.mogo.module.common.entity.V2XWarningEntity; -import com.mogo.service.windowview.IMogoTopViewManager; - -import java.math.BigDecimal; - -/** - * @author liujing - * @description 车路云—场景预警 http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=52829799 - * @since: 2021/3/25 - */ -public class V2XWarningWindow extends V2XBasWindow implements IV2XWindow { - private static final String TAG = "V2XWarningMarker"; - private ImageView typeImage; - private TextView warningTextView; - private TextView distance; - private V2XWarningEntity mV2XWarningEntity; - - //倒计时3s弹框取消 - private static Handler handlerV2XEvent = new Handler(); - private static Runnable runnableV2XEvent; - private static final int COUNT_DOWN_TIMER = 1_000; - private static final int ALL_EXPIRE_TIMER = 3_000; - private static int EXPIRE_TIMER = ALL_EXPIRE_TIMER; - - public V2XWarningWindow() { - this(BridgeApi.INSTANCE.context(), null); - } - - public V2XWarningWindow(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public V2XWarningWindow(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initView(context); - } - - private void initView(Context context) { - LayoutInflater.from(context).inflate(R.layout.v2x_road_front_warning_vr, this); - typeImage = findViewById(R.id.warning_type_image); - - warningTextView = findViewById(R.id.warning_content_text); - distance = findViewById(R.id.warning_distance); - } - - @Override - public void show(Object entity) { - if (entity != null) { - mV2XWarningEntity = (V2XWarningEntity) entity; - Log.d(TAG, mV2XWarningEntity.toString()); - //1行人/2自行车/4摩托车 - switch (mV2XWarningEntity.getType()) { - case 1: - case 11: - typeImage.setImageResource(R.drawable.v2x_road_front_p_warning); - break; - case 2: - case 4: - typeImage.setImageResource(R.drawable.v2x_road_front_m_warning); - break; - default: - break; - } - double dis = mV2XWarningEntity.getDistance(); - //距离四舍五入保留整数 - BigDecimal bg = new BigDecimal(dis); - double disBig = bg.setScale(0, BigDecimal.ROUND_HALF_UP).doubleValue(); - distance.setText(String.format("%.0f", disBig) + "米"); - warningTextView.setText(mV2XWarningEntity.getWarningContent());//验证云端数据是否 - AIAssist.getInstance(Utils.getApp()).speakTTSVoice(mV2XWarningEntity.getTts()); - } - //3秒后移除提示弹框 - if (runnableV2XEvent == null) { - runnableV2XEvent = () -> { - EXPIRE_TIMER = EXPIRE_TIMER - COUNT_DOWN_TIMER; - if (EXPIRE_TIMER > 0) { - handlerV2XEvent.postDelayed(runnableV2XEvent, COUNT_DOWN_TIMER); - } else { - stopCountDown(); - } - }; - } else { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - } - handlerV2XEvent.postDelayed(runnableV2XEvent, COUNT_DOWN_TIMER); - - } - - @Override - public void close() { - stopCountDown(); - } - - @Override - public View getView() { - return this; - } - - @Override - public void setWindowStatusListener(V2XWindowStatusListener listener) { - - } - - private void stopCountDown() { - if (handlerV2XEvent != null && runnableV2XEvent != null) { - handlerV2XEvent.removeCallbacks(runnableV2XEvent); - runnableV2XEvent = null; - EXPIRE_TIMER = ALL_EXPIRE_TIMER; - } - //移除窗体 - IMogoTopViewManager topViewManager = BridgeApi.INSTANCE.topViewManager(); - if (topViewManager != null) { - topViewManager.removeView(this); - } - } - -} diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/view/IV2XWindow.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/view/IV2XWindow.java index afcb13eae2..d6c1389110 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/view/IV2XWindow.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/view/IV2XWindow.java @@ -2,9 +2,6 @@ package com.mogo.eagle.core.function.v2x.events.scenario.view; import android.view.View; -import com.mogo.eagle.core.function.v2x.events.listener.V2XWindowStatusListener; - - /** * @ProjectName: MoGoModulSafeDriving * @Package: com.mogo.module.v2x.statusmanager @@ -35,11 +32,4 @@ public interface IV2XWindow { * @return 当前窗体 */ View getView(); - - /** - * 设置Window状态监听 - * - * @param listener 监听器 - */ - void setWindowStatusListener(V2XWindowStatusListener listener); } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/TestOnLineCarUtils.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/TestOnLineCarUtils.java index 8267396b79..9d0fe8e5de 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/TestOnLineCarUtils.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/TestOnLineCarUtils.java @@ -1,5 +1,7 @@ package com.mogo.eagle.core.function.v2x.events.utils; +import android.util.Log; + import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.function.v2x.R; import com.mogo.eagle.core.function.v2x.events.entity.net.V2XOptimalRouteDataRes; @@ -188,6 +190,7 @@ public class TestOnLineCarUtils { // 加载数据源 V2XWarningEntity warningEntity = GsonUtil.objectFromJson(baos.toString(), V2XWarningEntity.class); + Log.d("XXX", GsonUtil.jsonFromObject(warningEntity)); V2XMessageEntity messageEntity = new V2XMessageEntity(); messageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_THE_FRONT_WEAKNESS); messageEntity.setContent(warningEntity); diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/layout/vr_window_top_tips.xml b/core/function-impl/mogo-core-function-v2x/src/main/res/layout/vr_window_top_tips.xml index 446e5c311e..0dc3e11030 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/res/layout/vr_window_top_tips.xml +++ b/core/function-impl/mogo-core-function-v2x/src/main/res/layout/vr_window_top_tips.xml @@ -14,7 +14,7 @@ android:id="@+id/warning_type_image" android:layout_width="@dimen/module_v2x_event_warning_type_image_size" android:layout_height="@dimen/module_v2x_event_warning_type_image_size" - android:src="@drawable/v2x_optimal_route_warning" + android:src="@drawable/icon_warning_v2x_optimal_route" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt index a0aad8e182..e79b4250cc 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt @@ -52,7 +52,7 @@ interface IMoGoWaringProvider { * @param ttsContent tts语音播报消息 * @param tag tag绑定弹窗的标志 */ - fun showWarningV2X(v2xType: Int, alertContent: String?, ttsContent: String?, tag: String?, listenerIMoGo: IMoGoWarningStatusListener?, playTts: Boolean, expireTime: Long) + fun showWarningV2X(v2xType: Int, alertContent: CharSequence?, ttsContent: String?, tag: String?, listenerIMoGo: IMoGoWarningStatusListener?, playTts: Boolean, expireTime: Long) /** * 关闭指定floatTag 的 VR下V2X预警弹窗 @@ -126,6 +126,11 @@ interface IMoGoWaringProvider { */ fun showWarning(direction: WarningDirectionEnum, closeTime: Long) + /** + * 主动消失边框预警 + */ + fun dismissWarning(direction: WarningDirectionEnum) + /** * 呈现交警推送消息顶部弹框 * @@ -174,5 +179,4 @@ interface IMoGoWaringProvider { */ fun showAdUpgradeStatus(upgradeMode : Int,downloadStatus : Int,currentProgress : Int,totalProgress : Int ,downloadVersion : String,upgradeStatus : Int) - } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt index c9a76ce4de..a7145bc80f 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt @@ -74,7 +74,7 @@ object CallerHmiManager : CallerBase() { * @param ttsContent tts语音播报消息 * @param tag tag绑定弹窗的标志 */ - fun showWarningV2X(v2xType: Int, alertContent: String?, ttsContent: String?, tag: String?, listenerIMoGo: IMoGoWarningStatusListener?, playTts: Boolean, expireTime: Long = 5000L) { + fun showWarningV2X(v2xType: Int, alertContent: CharSequence?, ttsContent: String?, tag: String?, listenerIMoGo: IMoGoWarningStatusListener?, playTts: Boolean, expireTime: Long = 5000L) { waringProviderApi.showWarningV2X(v2xType, alertContent, ttsContent, tag, listenerIMoGo, playTts, expireTime) } @@ -174,6 +174,13 @@ object CallerHmiManager : CallerBase() { waringProviderApi.showWarning(direction, closeTime) } + /** + * 主动消失边框预警 + */ + fun dismissWarning(direction: WarningDirectionEnum) { + waringProviderApi.dismissWarning(direction) + } + /** * 呈现交通云公告弹窗(hmi) * diff --git a/core/mogo-core-res/src/main/function-hmi-res/drawable-xxhdpi/icon_warning_v2x_optimal_route.png b/core/mogo-core-res/src/main/function-hmi-res/drawable-xxhdpi/icon_warning_v2x_optimal_route.png new file mode 100644 index 0000000000..76ae6f035a Binary files /dev/null and b/core/mogo-core-res/src/main/function-hmi-res/drawable-xxhdpi/icon_warning_v2x_optimal_route.png differ diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/enums/EventTypeEnum.kt b/modules/mogo-module-common/src/main/java/com/mogo/module/common/enums/EventTypeEnum.kt index 809113e679..487157b473 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/enums/EventTypeEnum.kt +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/enums/EventTypeEnum.kt @@ -372,7 +372,10 @@ enum class EventTypeEnum( tts = "" ), - TYPE_VIP_IDENTIFICATION("10022", "", "", R.drawable.icon_warning_v2x_vip_turn_light, "VIP车辆优先通行", "已为您变灯,请优先通行"); + TYPE_VIP_IDENTIFICATION("10022", "", "", R.drawable.icon_warning_v2x_vip_turn_light, "VIP车辆优先通行", "已为您变灯,请优先通行"), + + TYPE_OPTIMAL_ROUTE_RECOMMEND("2000", "", "", R.drawable.icon_warning_v2x_optimal_route, "为您推荐最优路线", "已为您选择最优路线"); + companion object { @JvmStatic @@ -402,6 +405,7 @@ enum class EventTypeEnum( FOURS_NEALY.poiType -> FOURS_NEALY.poiTypeStr FOURS_LIVING.poiType -> FOURS_LIVING.poiTypeStr + else -> "其它道路事件" } } @@ -806,6 +810,7 @@ enum class EventTypeEnum( TYPE_USECASE_ID_ROAD_GIVE_WAY.poiType -> TYPE_USECASE_ID_ROAD_GIVE_WAY.poiTypeSrcVr TYPE_VIP_IDENTIFICATION.poiType -> TYPE_VIP_IDENTIFICATION.poiTypeSrcVr TYPE_ERROR.poiType -> TYPE_ERROR.poiTypeSrcVr + TYPE_OPTIMAL_ROUTE_RECOMMEND.poiType -> TYPE_OPTIMAL_ROUTE_RECOMMEND.poiTypeSrcVr else -> TYPE_ERROR.poiTypeSrcVr } } @@ -846,6 +851,7 @@ enum class EventTypeEnum( TYPE_VIP_IDENTIFICATION.poiType -> TYPE_VIP_IDENTIFICATION.content FOURS_ROAD_WORK.poiType -> FOURS_ROAD_WORK.content TYPE_ERROR.poiType -> TYPE_ERROR.content + TYPE_OPTIMAL_ROUTE_RECOMMEND.poiType -> TYPE_OPTIMAL_ROUTE_RECOMMEND.content else -> TYPE_ERROR.content } } @@ -886,6 +892,7 @@ enum class EventTypeEnum( TYPE_VIP_IDENTIFICATION.poiType -> TYPE_VIP_IDENTIFICATION.tts FOURS_ROAD_WORK.poiType -> FOURS_ROAD_WORK.tts TYPE_ERROR.poiType -> TYPE_ERROR.tts + TYPE_OPTIMAL_ROUTE_RECOMMEND.poiType -> TYPE_OPTIMAL_ROUTE_RECOMMEND.tts else -> TYPE_ERROR.tts } } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/v2x/IV2XWindowManagerListener.java b/services/mogo-service-api/src/main/java/com/mogo/service/v2x/IV2XWindowManagerListener.java deleted file mode 100644 index 5c9e520da9..0000000000 --- a/services/mogo-service-api/src/main/java/com/mogo/service/v2x/IV2XWindowManagerListener.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.mogo.service.v2x; - -/** - * @author liujing - * @description 描述 - * @since: 2021/6/4 - */ -public interface IV2XWindowManagerListener { - //移除v2x的所有道路事件及预警弹框 - void removeTipWindowByListener(); -}