[statusbar、debugView]
This commit is contained in:
yangyakun
2023-07-20 17:21:04 +08:00
parent b334ff38b8
commit 264cd644cd
25 changed files with 316 additions and 42 deletions

View File

@@ -1,13 +0,0 @@
package com.mogo.och.bus.passenger.presenter
import com.mogo.och.bus.passenger.ui.dialogfragment.DebugViewWatchDogFragment
import com.mogo.och.bus.passenger.ui.dialogfragment.M1CarUserNoOrderFragment
class DebugWatchDogPresenter(view: DebugViewWatchDogFragment?) :
BusBasePassengerFunctionDevicePresenter<DebugViewWatchDogFragment?>(view){
companion object {
private const val TAG = "BusPassengerFunctionPresenter"
}
}

View File

@@ -9,7 +9,6 @@ import com.amap.api.maps.model.LatLng
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.mvp.MvpFragment
import com.mogo.eagle.core.data.config.HdMapBuildConfig
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController
import com.mogo.eagle.core.function.hmi.ui.msgbox.MMsgBoxButtonView
import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView
@@ -25,7 +24,7 @@ import com.mogo.och.bus.passenger.bean.event.EventLineSites
import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse
import com.mogo.och.bus.passenger.model.CharterPassengerModel
import com.mogo.och.bus.passenger.presenter.BusPassengerPresenter
import com.mogo.och.bus.passenger.ui.dialogfragment.DebugViewWatchDogFragment
import com.mogo.och.common.module.manager.debug.DebugViewWatchDogFragment
import com.mogo.och.bus.passenger.ui.dialogfragment.M1CarUserNoOrderFragment
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
import com.mogo.och.bus.passenger.ui.dialogfragment.NoviceGuidanceFragment

View File

@@ -25,6 +25,7 @@ import com.mogo.och.bus.passenger.ui.view.bottom.BottomBar
import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import com.mogo.och.common.module.manager.debug.DebugViewWatchDogFragment
import kotlinx.android.synthetic.main.m1_contain_fragment.*
import org.greenrobot.eventbus.EventBus

View File

@@ -1,4 +1,4 @@
package com.mogo.och.bus.passenger.ui.dialogfragment
package com.mogo.och.common.module.manager.debug
import android.content.DialogInterface
import android.os.Bundle
@@ -17,10 +17,8 @@ import com.mogo.eagle.core.utilcode.util.AppStateManager
import com.mogo.eagle.core.utilcode.util.BarUtils
import com.mogo.eagle.core.utilcode.util.ClickUtils
import com.mogo.eagle.core.utilcode.util.KeyboardUtils
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
import com.mogo.och.bus.passenger.R
import com.mogo.och.bus.passenger.presenter.DebugWatchDogPresenter
import com.mogo.och.bus.passenger.ui.MainFragment
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.R
import kotlinx.android.synthetic.main.m1_debugview_pass.*
/**
@@ -45,7 +43,7 @@ class DebugViewWatchDogFragment :
actv_password_submit.setOnClickListener {
val text = acet_close.text
if(text==null||text.isEmpty()){
ToastCharterUtils.showShort("请输入密码")
ToastUtils.showShort("请输入密码")
}else{
if(text.toString() == "123987"){
dismissAllowingStateLoss()
@@ -54,7 +52,7 @@ class DebugViewWatchDogFragment :
}
ToggleDebugView.toggleDebugView.toggle(requireContext())
}else{
ToastCharterUtils.showShort("请输入正确密码")
ToastUtils.showShort("请输入正确密码")
}
}
}

View File

@@ -0,0 +1,12 @@
package com.mogo.och.common.module.manager.debug
import com.mogo.commons.mvp.Presenter
class DebugWatchDogPresenter(view: DebugViewWatchDogFragment?) :
Presenter<DebugViewWatchDogFragment?>(view){
companion object {
private const val TAG = "BusPassengerFunctionPresenter"
}
}

View File

@@ -2,5 +2,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/dp_22"/>
<solid android:color="@color/bus_p_m1_e0efff"/>
<solid android:color="@color/common_e0efff"/>
</shape>

View File

@@ -2,5 +2,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/dp_16"/>
<solid android:color="@color/bus_p_m1_b8c2d7"/>
<solid android:color="@color/common_b8c2d7"/>
</shape>

View File

@@ -2,5 +2,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/dp_22"/>
<solid android:color="@color/bus_p_m1_b8c2d8"/>
<solid android:color="@color/common_b8c2d8"/>
</shape>

View File

@@ -2,5 +2,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/dp_16"/>
<solid android:color="@color/bus_p_m1_1466FB"/>
<solid android:color="@color/common_1466FB"/>
</shape>

View File

@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bus_p_m1_80000000"
android:background="@color/common_80000000"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<androidx.appcompat.widget.AppCompatImageView

View File

@@ -14,4 +14,10 @@
<color name="qr_line_bg_color">#66B8BFE8</color>
<color name="qr_bg_color">#3B4577</color>
<color name="common_80000000">#80000000</color>
<color name="common_1466FB">#1466FB</color>
<color name="common_e0efff">#E0EFFF</color>
<color name="common_b8c2d7">#B8C2D7</color>
<color name="common_b8c2d8">#B8C2D8</color>
</resources>

View File

@@ -0,0 +1,33 @@
package com.mogo.och.taxi.passenger.provider;
import android.content.Context;
import android.view.View;
import androidx.annotation.NonNull;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.eagle.core.function.api.hmi.view.IStatusViewLayout;
import com.mogo.och.taxi.passenger.ui.statusview.StatusBarView;
/**
* @author congtaowang
* @since 2020-01-06
* <p>
* 根据优先级控制显示 window view.
*/
@Route( path = MogoServicePaths.PATH_STATUS_VIEW_MANAGER )
public class StatusViewManager implements IStatusViewLayout {
@NonNull
@Override
public View getStatusView(Context context) {
return new StatusBarView(context);
}
@Override
public void init(Context context) {
}
}

View File

@@ -8,6 +8,9 @@ import com.mogo.commons.voice.AIAssist
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI_P
import com.mogo.eagle.core.utilcode.util.DeviceUtils
import com.mogo.eagle.core.utilcode.util.OverlayViewUtils
import com.mogo.map.listener.IMogoMapListener
@@ -148,10 +151,6 @@ class TaxiPassengerBaseFragment() :
}
}
aciv_xiaozhi_normal.setImageResource(R.drawable.taxi_p_xioazhi_normal)
val anim = aciv_xiaozhi_normal.drawable as AnimationDrawable
anim.start()
}
private fun initCheckView() {
@@ -170,6 +169,12 @@ class TaxiPassengerBaseFragment() :
super.onResume()
mapBizView!!.onResume()
overMapView.onResume()
CallerLogger.d(M_TAXI_P + TAG, "onResume")
if (aciv_xiaozhi_normal.drawable is AnimationDrawable) {
val anim = aciv_xiaozhi_normal.drawable as AnimationDrawable
anim.start()
}
}
override fun createPresenter(): BaseTaxiPassengerPresenter {
@@ -190,6 +195,11 @@ class TaxiPassengerBaseFragment() :
super.onPause()
mapBizView!!.onPause()
overMapView?.onPause()
CallerLogger.d(M_TAXI_P + TAG, "onPause")
if (aciv_xiaozhi_normal.drawable is AnimationDrawable) {
val anim = aciv_xiaozhi_normal.drawable as AnimationDrawable
anim.stop()
}
}
override fun onDestroyView() {
@@ -198,10 +208,6 @@ class TaxiPassengerBaseFragment() :
super.onDestroyView()
}
override fun onMapVisualAngleChanged(visualAngleMode: VisualAngleMode) {
//todo ui 切换
}
/**
* 显示或隐藏订单信息
*

View File

@@ -0,0 +1,99 @@
package com.mogo.och.taxi.passenger.ui.statusview
import android.content.Context
import android.os.SystemClock
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.fragment.app.FragmentActivity
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager
import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView
import com.mogo.eagle.core.utilcode.util.ActivityUtils
import com.mogo.och.common.module.manager.debug.DebugViewWatchDogFragment
import com.mogo.och.taxi.passenger.R
import kotlinx.android.synthetic.main.taxi_p_statusview.view.iv_biz_icon
import me.jessyan.autosize.utils.AutoSizeUtils
import java.lang.ref.WeakReference
class StatusBarView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoAutopilotStatusListener {
companion object {
const val TAG = "StatusBarView"
private const val COUNTS = 4 // 点击次数
private const val DURATION: Long = 1000 // 规定有效时间
const val bizz = "bizz" // 业务debug
const val debugView = "debugView" // 业务debug
}
private var debugViewWatchDogFragment: WeakReference<DebugViewWatchDogFragment>? = null
private var mHits = LongArray(COUNTS)
private fun continuousClick(type:String) {
if (ToggleDebugView.toggleDebugView.isShowIng()) {
ToggleDebugView.toggleDebugView.dismiss()
return
}
//每次点击时,数组向前移动一位
System.arraycopy(mHits, 1, mHits, 0, mHits.size - 1)
//为数组最后一位赋值
mHits[mHits.size - 1] = SystemClock.uptimeMillis()
if (mHits[0] >= (SystemClock.uptimeMillis() - DURATION)) {
mHits = LongArray(COUNTS) //重新初始化数组
showDebugView()
}
}
init {
LayoutInflater.from(context).inflate(R.layout.taxi_p_statusview, this, true)
setBackgroundResource(R.drawable.taxi_p_status_bg)
isClickable = true
isFocusable = true
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
post {
val params: ViewGroup.LayoutParams = layoutParams
params.height = AutoSizeUtils.dp2px(context,120f)
layoutParams = params
}
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
// bizz_view.setOnClickListener { continuousClick(bizz) }
//
iv_biz_icon.setOnClickListener { continuousClick(debugView) }
}
private fun showDebugView() {
if (debugViewWatchDogFragment?.get() == null) {
debugViewWatchDogFragment = WeakReference(DebugViewWatchDogFragment.newInstance())
}
val debugViewFragment = debugViewWatchDogFragment?.get()
if (ActivityUtils.getTopActivity() is FragmentActivity) {
val fragmentActivity = ActivityUtils.getTopActivity() as FragmentActivity
DebugViewWatchDogFragment.showDebugView(fragmentActivity.supportFragmentManager,fragmentActivity.supportFragmentManager,debugViewFragment)
}
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
CallerHmiViewControlListenerManager.removeListener(TAG)
CallerSkinModeListenerManager.removeListener(TAG)
CallerDevaToolsManager.hideStatusBar()
}
}

View File

@@ -0,0 +1,66 @@
package com.mogo.och.taxi.passenger.ui.statusview
import android.annotation.SuppressLint
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.RelativeLayout
import com.mogo.eagle.core.function.api.devatools.mofang.IMoGoMoFangProvider
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.och.taxi.passenger.R
import kotlinx.android.synthetic.main.taxi_p_blue_tooth.view.mofangView
/**
* 魔戒蓝牙控件
* 放置于StatusBar右侧位置
* todo arrow
*/
class TaxiPBlueToothView : RelativeLayout, IMoGoMoFangProvider.OnMoFangStatusListener {
companion object{
const val TAG = "TaxiPBlueToothView"
}
constructor(context: Context) : this(context, null)
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : this(context, attrs, defStyleAttr, 0)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)
init {
LayoutInflater.from(context).inflate(R.layout.taxi_p_blue_tooth, this, true)
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
CallerDevaToolsManager.mofang()?.registerMoFangStatusListener(TAG, this)
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
CallerDevaToolsManager.mofang()?.unRegisterMoFangStatusListener(this)
}
override fun onMoFangConnected() {
mofangView.setImageResource(R.drawable.taxi_p_blue_tooth_close)
}
override fun onMoFangDisconnected() {
mofangView.setImageResource(R.drawable.taxi_p_blue_tooth_open)
}
@SuppressLint("SetTextI18n")
override fun onMoFangBatteryChanged(battery: Int) {
}
override fun onMoFangClicked(keyCode: Int) {}
override fun onMoFangLongClicked(keyCode: Int) {}
override fun onMoFangCombineClicked(vararg keyCodes: Int) {}
override fun onMoFangStatusError(msg: String) {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 930 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 925 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -110,10 +110,10 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="@dimen/dp_98"
android:src="@drawable/xiaozhi_safety_belt"
android:src="@drawable/xiaozhi_normal_001"
android:layout_marginBottom="@dimen/dp_30"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:layout_width="@dimen/dp_216"
android:layout_height="@dimen/dp_216"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -131,7 +131,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="@dimen/dp_82"
android:src="@drawable/xiaozhi_normal_001"
android:src="@drawable/taxi_p_xioazhi_normal"
android:layout_marginBottom="@dimen/dp_28"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/dp_18"
android:layout_height="@dimen/dp_26">
<ImageView
android:id="@+id/mofangView"
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_40"
android:scaleType="fitXY"
android:src="@drawable/taxi_p_blue_tooth_open"
tools:ignore="ContentDescription" />
</RelativeLayout>

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_120"
android:background="@drawable/taxi_p_status_bg"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
tools:ignore="MissingDefaultResource">
<!--Wifi状态-->
<com.mogo.eagle.core.function.hmi.ui.widget.WifiStateView
android:id="@+id/wifiStateView"
android:layout_width="@dimen/dp_54"
android:layout_height="@dimen/dp_54"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/gl_horizontal"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="@dimen/dp_237"
android:layout_gravity="center" />
<!--魔方连接状态-->
<com.mogo.och.taxi.passenger.ui.statusview.TaxiPBlueToothView
android:id="@+id/blueToothView"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/gl_horizontal"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="@dimen/dp_93"
android:layout_width="@dimen/dp_18"
android:layout_height="@dimen/dp_26"
android:src="@drawable/taxi_p_blue_tooth_open"
android:layout_gravity="center"/>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/gl_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintGuide_begin="@dimen/dp_70"
android:orientation="horizontal"/>
<View
android:id="@+id/iv_biz_icon"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_width="@dimen/dp_300"
android:layout_height="match_parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -14,20 +14,23 @@ project.android.productFlavors {
// ②连接的工控机IP地址
buildConfigField 'String', 'ADAS_CONNECT_IP', "\"192.168.1.102\""
// ③是否需要重写状态栏
buildConfigField 'boolean', 'IS_REPLACE_STATUSVIEW', 'false'
// ④构建 是否支持多屏异显异交互
buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false'
if (isCurrentDriver("taxi")) {
// 在启动的时候把Task给清空
manifestPlaceholders.put("ACTIVITY_ROOT", true)
// ③是否需要重写状态栏
buildConfigField 'boolean', 'IS_REPLACE_STATUSVIEW', 'false'
}else if (isCurrentPassenger("taxi")) {
// 在启动的时候把Task给清空
manifestPlaceholders.put("ACTIVITY_ROOT", false)
// ③是否需要重写状态栏
buildConfigField 'boolean', 'IS_REPLACE_STATUSVIEW', 'true'
}else {
manifestPlaceholders.put("ACTIVITY_ROOT", false)
// ③是否需要重写状态栏
buildConfigField 'boolean', 'IS_REPLACE_STATUSVIEW', 'false'
}
}
}