diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartAgainWindow.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartAgainWindow.kt new file mode 100644 index 0000000000..54d9b9b6fd --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartAgainWindow.kt @@ -0,0 +1,118 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.animation.Animator +import android.animation.AnimatorSet +import android.animation.ObjectAnimator +import android.app.Activity +import android.graphics.PixelFormat +import android.util.DisplayMetrics +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.WindowManager +import android.view.animation.DecelerateInterpolator +import android.view.animation.LinearInterpolator +import android.widget.LinearLayout +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.commons.AbsMogoApplication +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer +import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder +import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack +import me.jessyan.autosize.utils.AutoSizeUtils + +/** + * 打开app后首次与域控链接或与域控断连1min后,需要回到界面并呈现一遍流程 + */ +class ColdStartAgainWindow constructor(activity: Activity){ + + private var mActivity: Activity = activity + private var mWindowParams: WindowManager.LayoutParams? = null + private var mWindowManager: WindowManager? = null + private lateinit var mFloatLayout: View + + private lateinit var clColdStartAgain: ConstraintLayout + private lateinit var svpColdStart: SimpleVideoPlayer + private lateinit var coldStart: ColdStartView + + private val gsyVideoOptionBuilder = GSYVideoOptionBuilder() + + init { + initFloatWindow() + } + + private fun initFloatWindow(){ + mFloatLayout = LayoutInflater.from(mActivity).inflate(R.layout.window_cold_start_again, null) as View + clColdStartAgain = mFloatLayout.findViewById(R.id.cl_cold_start_again) + svpColdStart = mFloatLayout.findViewById(R.id.svp_cold_start) + coldStart = mFloatLayout.findViewById(R.id.view_cold_start_again) + + val videoUrl:String = if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) { + svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_taxi_start) + "android.resource://" + mActivity.packageName + "/" + R.raw.biz_login_taxi_bg + }else{ + svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_bus_start) + "android.resource://" + mActivity.packageName + "/" + R.raw.biz_login_bus_bg + } + svpColdStart.setIsTouchWiget(false) + svpColdStart.setIsTouchWigetFull(false) + svpColdStart.enableshowProgressDialog = false + svpColdStart.enableDoubleClick = false + + coldStart.setColdStartResultListener(object: ColdStartView.ColdStartResultListener{ + override fun coldStartSuccess() { + gsyVideoOptionBuilder.setUrl(videoUrl) + .setCacheWithPlay(false) + .setPlayTag("TaxiPassengerArrivedView") + .build(svpColdStart) + + svpColdStart.setVideoAllCallBack(object : GSYSampleCallBack() { + override fun onAutoComplete(url: String?, vararg objects: Any?) { + if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) { + svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_taxi_end) + }else{ + svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_bus_end) + } + this@ColdStartAgainWindow.hideFloatWindow() + } + }) + svpColdStart.startPlayLogic() + } + + override fun coldStartFail() { + + } + + }) + + mWindowParams = WindowManager.LayoutParams() + mWindowManager = mActivity.windowManager + mWindowParams?.let { + it.format = PixelFormat.RGBA_8888 + it.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE + it.gravity = Gravity.START or Gravity.TOP + it.width = WindowManager.LayoutParams.MATCH_PARENT + it.height = WindowManager.LayoutParams.MATCH_PARENT + it.alpha = 1.0f + } + } + + fun showFloatWindow() { + if (mFloatLayout.parent == null) { + val metrics = DisplayMetrics() + mWindowManager!!.defaultDisplay.getMetrics(metrics) + mWindowParams!!.x = 0 + mWindowParams!!.y = 0 + mWindowManager!!.addView(mFloatLayout, mWindowParams) + } + + } + + fun hideFloatWindow() { + if (mFloatLayout.parent != null) mWindowManager!!.removeView(mFloatLayout) + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt index 9a7b4a6459..9ff75c45eb 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt @@ -503,10 +503,6 @@ class ColdStartView @JvmOverloads constructor( * 隐藏冷启动视图 */ private fun hideColdStartView(){ -// UiThreadHandler.postDelayed({ -// this@ColdStartView.visibility = View.GONE -// coldStartResultListener?.coldStartSuccess() -// }, 2000) // 假设view是你想要淡出的视图 this@ColdStartView.animate().alpha(0.0f).setDuration(1000).start() coldStartResultListener?.coldStartSuccess() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/window_cold_start_again.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/window_cold_start_again.xml new file mode 100644 index 0000000000..6384ebf47f --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/window_cold_start_again.xml @@ -0,0 +1,22 @@ + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/angle/MoGoVisualAngleChangeProvider.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/angle/MoGoVisualAngleChangeProvider.kt index c942ef6173..c0f26e90e5 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/angle/MoGoVisualAngleChangeProvider.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/angle/MoGoVisualAngleChangeProvider.kt @@ -10,6 +10,7 @@ import com.mogo.eagle.core.data.constants.MogoServicePaths import com.mogo.eagle.core.data.map.* import com.mogo.eagle.core.function.angle.scenes.CrossRoad import com.mogo.eagle.core.function.angle.scenes.Default +import com.mogo.eagle.core.function.angle.scenes.LongSight import com.mogo.eagle.core.function.angle.scenes.Roma import com.mogo.eagle.core.function.api.map.angle.* import com.mogo.eagle.core.function.api.map.angle.IMoGoVisualAngleChangeProvider.OnMoGoVisualAngleSceneChangeListener @@ -42,6 +43,8 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider { private val prevScene by lazy { AtomicReference() } + private var timerJob: Job? = null + private val listener = object : IMoGoMapRoadListener { private val roadId = AtomicReference() private val triggerRoadId = AtomicReference() @@ -187,7 +190,7 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider { private fun doChangeAngle(target: Scene) { val angle = target.getVisualAngleMode() - CallerMapUIServiceManager.getMapUIController()?.also { + CallerMapUIServiceManager.getMapUIController()?.also { itx -> Log.d(TAG, "--- doChangeAngle ---: $target") val prev = prevScene.get() try { @@ -204,7 +207,23 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider { DOWN -> CallerMapUIServiceManager.getMapUIController()?.setScreenToOriginDis(5.0f) } if (target !is Roma) { - it.changeMapVisualAngle(angle, null) + if (target is LongSight) { + timerJob?.safeCancel() + scope.launch { + CallerMapUIServiceManager.getMapUIController()?.setAllGesturesEnabled(false) + itx.changeMapVisualAngle(angle, null) + delay(3000) + CallerMapUIServiceManager.getMapUIController()?.setAllGesturesEnabled(true) + }.also { + it.invokeOnCompletion { + CallerMapUIServiceManager.getMapUIController()?.setAllGesturesEnabled(true) + } + timerJob = it + } + } else { + timerJob?.safeCancel() + itx.changeMapVisualAngle(angle, null) + } } } finally { if (prev == null || prev.javaClass != target.javaClass) { diff --git a/OCH/common/biz/src/main/res/drawable-nodpi/biz_login_bg_bus_end.webp b/core/mogo-core-res/src/main/res/drawable-nodpi/biz_login_bg_bus_end.webp similarity index 100% rename from OCH/common/biz/src/main/res/drawable-nodpi/biz_login_bg_bus_end.webp rename to core/mogo-core-res/src/main/res/drawable-nodpi/biz_login_bg_bus_end.webp diff --git a/OCH/common/biz/src/main/res/drawable-nodpi/biz_login_bg_bus_start.webp b/core/mogo-core-res/src/main/res/drawable-nodpi/biz_login_bg_bus_start.webp similarity index 100% rename from OCH/common/biz/src/main/res/drawable-nodpi/biz_login_bg_bus_start.webp rename to core/mogo-core-res/src/main/res/drawable-nodpi/biz_login_bg_bus_start.webp diff --git a/OCH/common/biz/src/main/res/drawable-nodpi/biz_login_bg_taxi_end.webp b/core/mogo-core-res/src/main/res/drawable-nodpi/biz_login_bg_taxi_end.webp similarity index 100% rename from OCH/common/biz/src/main/res/drawable-nodpi/biz_login_bg_taxi_end.webp rename to core/mogo-core-res/src/main/res/drawable-nodpi/biz_login_bg_taxi_end.webp diff --git a/OCH/common/biz/src/main/res/drawable-nodpi/biz_login_bg_taxi_start.webp b/core/mogo-core-res/src/main/res/drawable-nodpi/biz_login_bg_taxi_start.webp similarity index 100% rename from OCH/common/biz/src/main/res/drawable-nodpi/biz_login_bg_taxi_start.webp rename to core/mogo-core-res/src/main/res/drawable-nodpi/biz_login_bg_taxi_start.webp diff --git a/OCH/common/biz/src/main/res/raw/biz_login_bus_bg.mp4 b/core/mogo-core-res/src/main/res/raw/biz_login_bus_bg.mp4 similarity index 100% rename from OCH/common/biz/src/main/res/raw/biz_login_bus_bg.mp4 rename to core/mogo-core-res/src/main/res/raw/biz_login_bus_bg.mp4 diff --git a/OCH/common/biz/src/main/res/raw/biz_login_taxi_bg.mp4 b/core/mogo-core-res/src/main/res/raw/biz_login_taxi_bg.mp4 similarity index 100% rename from OCH/common/biz/src/main/res/raw/biz_login_taxi_bg.mp4 rename to core/mogo-core-res/src/main/res/raw/biz_login_taxi_bg.mp4