From 16c7bd9755d82414b7a396403bf3236972ec7f00 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 26 Oct 2022 14:13:44 +0800 Subject: [PATCH] add func of statusbar and func config wait to update --- .../module/biz/ui/TaxiLoginDialogFragment.kt | 95 ++++++------ .../taxi/passenger/ui/video/VideoActivity.kt | 64 +++++---- .../funcconfig/FuncConfigCenter.kt | 2 +- .../network/FuncConfigNetWorkModel.kt | 10 +- .../core/function/hmi/ui/MoGoHmiFragment.kt | 18 +++ .../hmi/ui/setting/DebugSettingView.kt | 2 + .../hmi/ui/widget/BatteryGroupView.kt | 92 ++++++++++++ .../function/hmi/ui/widget/BatteryView.kt | 135 ++++++++++++++++++ .../function/hmi/ui/widget/BlueToothView.kt | 23 +++ .../function/hmi/ui/widget/DemoModeView.kt | 23 +++ .../function/hmi/ui/widget/StatusBarView.kt | 89 ++++++++++++ .../function/hmi/ui/widget/WifiStateView.kt | 92 ++++++++++++ .../function/main/MainLauncherActivity.java | 8 +- .../src/main/res/drawable/battery_charge.png | Bin 0 -> 1254 bytes .../src/main/res/drawable/blue_tooth.png | Bin 0 -> 1146 bytes .../src/main/res/drawable/demo_mode.png | Bin 0 -> 1214 bytes .../res/drawable/wifi_light_state_close.png | Bin 0 -> 1562 bytes .../res/drawable/wifi_light_state_five.png | Bin 0 -> 1178 bytes .../res/drawable/wifi_light_state_four.png | Bin 0 -> 1203 bytes .../res/drawable/wifi_light_state_one.png | Bin 0 -> 1244 bytes .../res/drawable/wifi_light_state_three.png | Bin 0 -> 1219 bytes .../res/drawable/wifi_light_state_two.png | Bin 0 -> 1230 bytes .../src/main/res/layout/fragment_hmi.xml | 10 +- .../main/res/layout/view_battery_group.xml | 21 +++ .../src/main/res/layout/view_blue_tooth.xml | 14 ++ .../src/main/res/layout/view_demo_mode.xml | 14 ++ .../src/main/res/layout/view_status_bar.xml | 56 ++++++++ .../main/res/values-xhdpi-2560x1440/color.xml | 2 + .../src/main/res/values/color.xml | 3 + .../src/main/res/values/strings.xml | 2 +- .../api/hmi/warning/IMoGoWaringProvider.kt | 12 ++ .../function/call/hmi/CallerHmiManager.kt | 25 +++- .../eagle/core/utilcode/util/BarUtils.java | 9 ++ .../com/mogo/commons/mvp/MvpActivity.java | 3 +- 34 files changed, 730 insertions(+), 94 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryGroupView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/DemoModeView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WifiStateView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/blue_tooth.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/demo_mode.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_close.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_five.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_four.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_one.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_three.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_two.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_demo_mode.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt index 3ad8a1cfd2..e40bf14a9c 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt @@ -1,5 +1,6 @@ package com.mogo.och.common.module.biz.ui +import android.annotation.SuppressLint import android.content.DialogInterface import android.graphics.Rect import android.os.Bundle @@ -20,10 +21,10 @@ import com.alibaba.android.arouter.launcher.ARouter import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.debug.DebugConfig import com.mogo.commons.mvp.MvpDialogFragment +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager 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.util.BarUtils import com.mogo.eagle.core.utilcode.util.KeyboardUtils import com.mogo.och.common.module.R import com.mogo.och.common.module.biz.constant.OchCommonConst @@ -35,7 +36,8 @@ import com.mogo.och.common.module.biz.provider.LoginService * @author: yangyakun * @date: 2022/8/15 */ -class TaxiLoginDialogFragment : MvpDialogFragment(), +class TaxiLoginDialogFragment : + MvpDialogFragment(), DialogInterface.OnKeyListener { lateinit var clMain: ConstraintLayout @@ -54,14 +56,6 @@ class TaxiLoginDialogFragment : MvpDialogFragment - BarUtils.setNavBarVisibility(window,false) - } - } - } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -88,11 +82,8 @@ class TaxiLoginDialogFragment : MvpDialogFragment - BarUtils.setStatusBarColor( - it, - ContextCompat.getColor(contextIn, R.color.taxi_4D000000) - ) + context?.let { _ -> + CallerHmiManager.setStatusBarDarkOrLight(false) } } } @@ -108,23 +99,22 @@ class TaxiLoginDialogFragment : MvpDialogFragment { - closeSoftInput() - } + mRootView.setOnTouchListener { _, event -> + when (event?.action) { + MotionEvent.ACTION_DOWN -> { + closeSoftInput() } - return false } - }) + false + } acbtnLogin.onClick { val phone = aceLoginPhoneValue.text.toString() val code = acetPhoneCodeValue.text.toString() - mPresenter?.gotoLogin(phone,code) + mPresenter?.gotoLogin(phone, code) } actvWelcomeLoginTitle.setOnClickListener { continuousClick() @@ -148,7 +138,7 @@ class TaxiLoginDialogFragment : MvpDialogFragment - if(itEditable.isNotEmpty()){ + it?.let { itEditable -> + if (itEditable.isNotEmpty()) { inputPhoneNormal() } } @@ -175,28 +165,29 @@ class TaxiLoginDialogFragment : MvpDialogFragment= (SystemClock.uptimeMillis() - DURATION)) { mHits = LongArray(COUNTS) //重新初始化数组 - mPresenter?.gotoLogin("13288888888","8888") + mPresenter?.gotoLogin("13288888888", "8888") } } @@ -234,6 +238,7 @@ class TaxiLoginDialogFragment : MvpDialogFragment() - companion object{ + companion object { const val VIDEOTYPE = "VIDEOTYPE" const val VIDEOTYPE_CONSULT = 0 const val VIDEOTYPE_MOIES = 1 @@ -68,10 +63,10 @@ class VideoActivity : AppCompatActivity() { const val EVENT_FINISH = 0 - fun startActivity(context:Context,videoType:Int,sumDis:Int){ + fun startActivity(context: Context, videoType: Int, sumDis: Int) { val intent = Intent(context, VideoActivity::class.java) intent.putExtra(VIDEOTYPE, videoType) - intent.putExtra(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS,sumDis) + intent.putExtra(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS, sumDis) context.startActivity(intent) } } @@ -114,7 +109,7 @@ class VideoActivity : AppCompatActivity() { LeftMenuOpen.registerCallback(LeftMenuOpen.callBack) } - private fun initConsultData(){ + private fun initConsultData() { arrayListOf.clear() arrayListOf.add( TaxiPassengerVideoPlay( @@ -238,7 +233,7 @@ class VideoActivity : AppCompatActivity() { } indicatorView.onPageScrolled(currentIndex, fl, 0) } - val recyclerVideoAdapter = RecyclerVideoAdapter(this, arrayListOf,rvVideoPlaylist) + val recyclerVideoAdapter = RecyclerVideoAdapter(this, arrayListOf, rvVideoPlaylist) recyclerVideoAdapter.setOnThumbImageClilckListener { val (_: Int, player) = getPlayer(carouselLayoutManager) if (player is ConsultVideoPlayer) { @@ -280,24 +275,31 @@ class VideoActivity : AppCompatActivity() { override fun onAttachedToWindow() { super.onAttachedToWindow() - when (videotype){ + when (videotype) { VIDEOTYPE_CONSULT -> { - OverlayLeftViewUtils.showOverlayView(this,isOpen = false, checkIndex = OverlayLeftViewUtils.CONSULT) + OverlayLeftViewUtils.showOverlayView( + this, + isOpen = false, + checkIndex = OverlayLeftViewUtils.CONSULT + ) } VIDEOTYPE_MOIES -> { - OverlayLeftViewUtils.showOverlayView(this,isOpen = false, checkIndex = OverlayLeftViewUtils.MOVIE) + OverlayLeftViewUtils.showOverlayView( + this, + isOpen = false, + checkIndex = OverlayLeftViewUtils.MOVIE + ) } } val sumDis = intent.getIntExtra(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS, 0) - FloatingDistanceInfoUtils.showOverlayView(this,sumDis=sumDis) + FloatingDistanceInfoUtils.showOverlayView(this, sumDis = sumDis) } override fun onResume() { super.onResume() - BarUtils.setNavBarVisibility(window,false) val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager val (centerItemPosition: Int, player) = getPlayer(carouselLayoutManager) - if(centerItemPosition<0){ + if (centerItemPosition < 0) { setBackageAndPlayNext(arrayListOf[0]) } player?.let { @@ -325,12 +327,20 @@ class VideoActivity : AppCompatActivity() { override fun onError(e: Throwable?) {} override fun onNext(t: Long?) { if (!OverlayLeftViewUtils.getStatus()) { - when (videotype){ + when (videotype) { VIDEOTYPE_CONSULT -> { - OverlayLeftViewUtils.showOverlayView(this@VideoActivity,isOpen = false, checkIndex = OverlayLeftViewUtils.CONSULT) + OverlayLeftViewUtils.showOverlayView( + this@VideoActivity, + isOpen = false, + checkIndex = OverlayLeftViewUtils.CONSULT + ) } VIDEOTYPE_MOIES -> { - OverlayLeftViewUtils.showOverlayView(this@VideoActivity,isOpen = false, checkIndex = OverlayLeftViewUtils.MOVIE) + OverlayLeftViewUtils.showOverlayView( + this@VideoActivity, + isOpen = false, + checkIndex = OverlayLeftViewUtils.MOVIE + ) } } } @@ -356,7 +366,7 @@ class VideoActivity : AppCompatActivity() { } @Subscribe(threadMode = ThreadMode.MAIN) - fun finishActivity(event: FinishActivity){ + fun finishActivity(event: FinishActivity) { CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "finishActivity(event)") cancleSubscribe() val intent = Intent() @@ -379,21 +389,21 @@ class VideoActivity : AppCompatActivity() { cancleSubscribe() } - private fun cancleSubscribe(){ + private fun cancleSubscribe() { subscribe?.let { - if(!it.isUnsubscribed){ + if (!it.isUnsubscribed) { it.unsubscribe() } } } private fun releaseOnNewInstance() { - if (rvVideoPlaylist!=null&&rvVideoPlaylist?.layoutManager != null) { + if (rvVideoPlaylist != null && rvVideoPlaylist?.layoutManager != null) { val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager val (_: Int, player) = getPlayer(carouselLayoutManager) player?.let { - player.currentPlayer.release() - player.onVideoReset() + player.currentPlayer.release() + player.onVideoReset() } } FullVideoUtils.dismissOverlayView(true) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt index 4feb330166..7a68a09b7c 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt @@ -82,11 +82,11 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo clientPkFileName = "sn" ) private fun refreshConfig(funcConfig: FuncConfig) { - BizManager.updateBizConfigData(funcConfig) invokeUpdate(funcConfig) } private fun invokeUpdate(funcConfig: FuncConfig) { + BizManager.updateBizConfigData(funcConfig) funcConfig.business.forEach { business -> CallerDevaToolsFuncConfigListenerManager.invokeDevaToolsFuncConfigBizUpdate( business.biz.uppercase(), diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt index 84f786e521..25644cdc03 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt @@ -34,9 +34,13 @@ class FuncConfigNetWorkModel { if (error == null) { error = onError } - map["sn"] = MoGoAiCloudClientConfig.getInstance().sn - map["mac"] = mac - map["channelVersion"] = FuncConfigConst.getChannelCode() + //todo test +// map["sn"] = MoGoAiCloudClientConfig.getInstance().sn + map["sn"] = "X20202203105S688HZ" +// map["mac"] = DeviceUtils.getMacAddress() + map["mac"] = "48:b0:2d:3a:bc:78" +// map["channelVersion"] = FuncConfigConst.getChannelCode() + map["channelVersion"] = 1 } loader { apiCall { 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 79d4d8520d..f055703288 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 @@ -11,6 +11,7 @@ import android.text.TextUtils import android.transition.* import android.view.Gravity import android.view.View +import android.view.ViewGroup import android.view.WindowManager import android.view.WindowManager.LayoutParams import android.view.animation.* @@ -82,6 +83,7 @@ import com.mogo.eagle.core.function.hmi.ui.setting.SOPSettingView import com.mogo.eagle.core.function.hmi.ui.tools.AdUpgradeDialog import com.mogo.eagle.core.function.hmi.ui.tools.AutoPilotAndCheckView import com.mogo.eagle.core.function.hmi.ui.tools.MaskView +import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView import com.mogo.eagle.core.function.hmi.ui.widget.V2XNotificationView import com.mogo.eagle.core.utilcode.kotlin.* import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils @@ -192,6 +194,14 @@ class MoGoHmiFragment : MvpFragment(), override fun initViews() { initViewShowWithConfig() + + //设置StatusBar初始状态 + if (FunctionBuildConfig.isDemoMode) { + viewStatusBar.updateRightView(true, "demoMode", DemoModeView(requireContext())) + } else { + viewStatusBar.updateRightView(false, "demoMode", DemoModeView(requireContext())) + } + ivCameraIcon?.setOnClickListener { if (cameraViewFloat == null) { showCameraList(CallerMonitorManager.getCameraList()) @@ -413,6 +423,14 @@ class MoGoHmiFragment : MvpFragment(), busOperationStatus?.showBusOperation() } + override fun setStatusBarDarkOrLight(light: Boolean) { + viewStatusBar.setStatusBarDarkOrLight(light) + } + + override fun updateStatusBarRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) { + viewStatusBar.updateRightView(insert, tag, viewGroup) + } + /** * 设置 红绿灯 代理View */ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 9b8c6d67f0..4a20ce0775 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -62,6 +62,7 @@ import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.logcatch.ILogViewListener import com.mogo.eagle.core.function.hmi.ui.logcatch.LogInfoView import com.mogo.eagle.core.function.hmi.ui.upgrade.UpgradeListAdapter +import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel @@ -573,6 +574,7 @@ class DebugSettingView @JvmOverloads constructor( // 演示模式 tbIsDemoMode.setOnCheckedChangeListener { _, isChecked -> + CallerHmiManager.updateStatusBarRightView(isChecked,"demoMode", DemoModeView(context)) CallerAutoPilotManager.setDemoMode(isChecked) if (!isChecked) { //关闭美化模式时,通知工控机 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryGroupView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryGroupView.kt new file mode 100644 index 0000000000..95c72f7406 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryGroupView.kt @@ -0,0 +1,92 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.os.BatteryManager +import android.os.Handler +import android.os.Message +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import android.widget.ImageView +import android.widget.LinearLayout +import com.mogo.eagle.core.function.hmi.R +import java.lang.ref.WeakReference + +class BatteryGroupView : LinearLayout { + + constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 + ) : super(context, attrs, defStyleAttr) { + } + + private var batteryHandler: BatteryHandler = BatteryHandler(this) + private var view: View = + LayoutInflater.from(context).inflate(R.layout.view_battery_group, this, true) + private var batteryView: BatteryView = (view as BatteryGroupView).findViewById(R.id.viewBattery) + private var ivBatteryCharge: ImageView = (view as BatteryGroupView).findViewById(R.id.ivBatteryCharge) + + private val batteryStateReceiver: BroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + when (intent.action) { + Intent.ACTION_BATTERY_CHANGED -> { + val level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0) + val scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 0) + val charge = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1) + val percentage = (level * 100) / scale + val message = Message.obtain() + message.what = 0 + message.arg1 = percentage + message.arg2 = charge + batteryHandler.sendMessage(message) + } + } + } + } + + companion object { + class BatteryHandler(batteryGroupView: BatteryGroupView) : Handler() { + + //虚引用 + private var stateViewWeakReference: WeakReference? = null + + init { + stateViewWeakReference = WeakReference(batteryGroupView) + } + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val batteryGroupView = stateViewWeakReference?.get() + batteryGroupView?.let { + if (msg.what == 0) { + it.batteryView.setPower(msg.arg1) + val isCharging = msg.arg2 == BatteryManager.BATTERY_STATUS_CHARGING || + msg.arg2 == BatteryManager.BATTERY_STATUS_FULL + it.batteryView.setCharging(isCharging) + if (isCharging) { + it.ivBatteryCharge.visibility = View.VISIBLE + } else { + it.ivBatteryCharge.visibility = View.GONE + } + } + } + } + } + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + val intentFilter = IntentFilter() + intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED) + context.registerReceiver(batteryStateReceiver, intentFilter) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + context.unregisterReceiver(batteryStateReceiver) + } +} \ 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/BatteryView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryView.kt new file mode 100644 index 0000000000..0afbea73f0 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryView.kt @@ -0,0 +1,135 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.graphics.RectF +import android.util.AttributeSet +import android.view.View +import com.mogo.eagle.core.function.hmi.R +import kotlin.math.abs + + +class BatteryView : View { + + private val radius = context.resources.getDimension(R.dimen.dp_4) // 圆角角度 + private val border = context.resources.getDimension(R.dimen.dp_3) // 外边缘宽度 + private val margin = context.resources.getDimension(R.dimen.dp_6) // 边框与内部电量距离 + private val width = context.resources.getDimension(R.dimen.dp_57) // 电池宽度 + private val height = context.resources.getDimension(R.dimen.dp_28) // 电池高度 + private val headWidth = context.resources.getDimension(R.dimen.dp_3) // 电池头宽度 + private val headHeight = context.resources.getDimension(R.dimen.dp_8) // 电池头高度 + private val headRadius = context.resources.getDimension(R.dimen.dp_1) // 电池头圆角角度 + private val batteryNumSize = context.resources.getDimension(R.dimen.dp_20) // 电量显示文字大小 + private val batteryColor = context.resources.getColor(R.color.color_7FECECEC) // 电量内部颜色 + private val powerColor = Color.WHITE + + //默认满电 + private var mPower = 100 + + //是否充电 + private var mIsCharging = false + + constructor( + context: Context, + attrs: AttributeSet? = null + ) : super(context, attrs, 0) { + + } + + constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 + ) : super(context, attrs, defStyleAttr) { + } + + @SuppressLint("NewApi") + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + setMeasuredDimension(width.toInt(), height.toInt()) + } + + @SuppressLint("DrawAllocation") + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + //电池头 + val paint = Paint() + paint.style = Paint.Style.FILL + paint.strokeWidth = 0f + paint.isAntiAlias = true + paint.color = powerColor + + val rectHead = + RectF(width - headWidth, (height - headHeight) / 2, width, (height + headHeight) / 2) + canvas.drawRoundRect(rectHead, headRadius, headRadius, paint) + + //边框 + paint.strokeWidth = border + paint.style = Paint.Style.STROKE + val rectF = + RectF(radius / 2, radius / 2, width - headWidth - radius / 2, height - radius / 2) + canvas.drawRoundRect(rectF, radius, radius, paint) + + //文字画笔 + val textPaint = Paint() + textPaint.color = powerColor + textPaint.isAntiAlias = true + textPaint.textSize = batteryNumSize + textPaint.textAlign = Paint.Align.CENTER + //画数字 + val fontMetrics = textPaint.fontMetrics + canvas.drawText(mPower.toString(), rectF.centerX(), abs(fontMetrics.top), textPaint) + + //电池电量 + val powerValues = mPower / 100.0f + val paintPower = Paint(paint) + paintPower.style = Paint.Style.FILL + + //低电量 + val lowerPaint = Paint(paint) + lowerPaint.style = Paint.Style.FILL + lowerPaint.color = powerColor + if (mPower < 20) { + lowerPaint.color = Color.RED + } else { + lowerPaint.color = batteryColor + } + + //画电量 + if (powerValues != 0f) { + val right = (width - margin - headWidth) * powerValues + val bottom = height - margin + val rect = RectF(margin, margin, right, bottom) + //画矩形 + canvas.drawRoundRect(rect, radius, radius, lowerPaint) + } + } + + /** + * 设置当前电量 + */ + fun setPower(power: Int) { + if (this.mPower < 0) { + this.mPower = 0 + } + if (this.mPower > 100) { + this.mPower = 100 + } + this.mPower = power + if(isAttachedToWindow){ + invalidate() + } + } + + /** + * 是否充电中 + */ + fun setCharging(charging: Boolean) { + this.mIsCharging = charging + invalidate() + } + +} diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt new file mode 100644 index 0000000000..85649ffa64 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt @@ -0,0 +1,23 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.RelativeLayout +import com.mogo.eagle.core.function.hmi.R + +/** + * 魔戒蓝牙控件 + * 放置于StatusBar右侧位置 + */ +class BlueToothView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : RelativeLayout(context, attrs, defStyleAttr) { + + init { + LayoutInflater.from(context).inflate(R.layout.view_blue_tooth, this, true) + } + +} \ 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/DemoModeView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/DemoModeView.kt new file mode 100644 index 0000000000..f0a51a62f8 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/DemoModeView.kt @@ -0,0 +1,23 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.RelativeLayout +import com.mogo.eagle.core.function.hmi.R + +/** + * 演示模式控件 + * 放置于StatusBar右侧位置 + */ +class DemoModeView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : RelativeLayout(context, attrs, defStyleAttr) { + + init { + LayoutInflater.from(context).inflate(R.layout.view_demo_mode, this, true) + } + +} \ 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/StatusBarView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt new file mode 100644 index 0000000000..ef49f6f3d0 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt @@ -0,0 +1,89 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.ViewGroup +import android.widget.RelativeLayout +import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener +import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.BarUtils +import com.mogo.eagle.core.utilcode.util.ScreenUtils +import kotlinx.android.synthetic.main.view_status_bar.view.* + +class StatusBarView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : RelativeLayout(context, attrs, defStyleAttr), IMoGoSkinModeChangeListener { + + companion object { + const val TAG = "StatusBarView" + } + + init { + LayoutInflater.from(context).inflate(R.layout.view_status_bar, this, true) + } + + private val rightViewList = mutableListOf() + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + val layoutParamsLeft = + LayoutParams(ScreenUtils.getScreenWidth() / 3, BarUtils.getStatusBarHeight()) + viewStatusBarLeft.layoutParams = layoutParamsLeft + val layoutParamsRight = + LayoutParams(ScreenUtils.getScreenWidth() / 3 * 2, BarUtils.getStatusBarHeight()) + layoutParamsRight.addRule(ALIGN_PARENT_END) + layoutParamsRight.addRule(CENTER_HORIZONTAL) + layoutParamsRight.addRule(CENTER_IN_PARENT) + layoutParamsRight.marginEnd = context.resources.getDimension(R.dimen.dp_44).toInt() + viewStatusBarRight.layoutParams = layoutParamsRight + viewStatusBarRight.addView(BatteryGroupView(this.context)) + + // 添加换肤监听 + CallerSkinModeListenerManager.addListener(TAG, this) + } + + override fun onSkinModeChange(skinMode: Int) { + when (skinMode) { + 0 -> setStatusBarDarkOrLight(false) + 1 -> setStatusBarDarkOrLight(true) + } + } + + fun setStatusBarDarkOrLight(light: Boolean) { + if (light) { + setTextColor(resources.getColor(R.color.color_2C2E30)) + } else { + setTextColor(resources.getColor(R.color.color_FFFFFF)) + } + } + + fun updateRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) { + if (insert) { + rightViewList.add(0, tag) + viewStatusBarRight.addView(viewGroup, 0) + } else { + rightViewList.forEachIndexed { index, s -> + if (s == tag) { + rightViewList.removeAt(index) + viewStatusBarRight.removeViewAt(index) + } + } + } + } + + private fun setTextColor(color: Int) { + viewTextClock.setTextColor(color) + viewStatusBarTag.setTextColor(color) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerSkinModeListenerManager.removeListener(TAG) + } + +} + diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WifiStateView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WifiStateView.kt new file mode 100644 index 0000000000..5e45d6c065 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WifiStateView.kt @@ -0,0 +1,92 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.net.wifi.WifiManager +import android.os.Handler +import android.os.Message +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatImageView +import com.mogo.eagle.core.function.hmi.R +import java.lang.ref.WeakReference + + +class WifiStateView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : AppCompatImageView(context, attrs, defStyleAttr) { + + companion object { + const val TAG = "WifiStateView" + + class WifiHandler(wifiStateView: WifiStateView) : Handler() { + + //虚引用 + private var stateViewWeakReference: WeakReference? = null + + init { + stateViewWeakReference = WeakReference(wifiStateView) + } + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val wifiStateView = stateViewWeakReference?.get() + wifiStateView?.let { + when (msg.what) { + -1 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_close) + 0 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_one) + 1 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_two) + 2 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_three) + 3 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_four) + 4 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_five) + } + } + } + } + } + + private var wifiManager: WifiManager? = null + private var wifiHandler: WifiHandler? = null + + init { + wifiManager = + context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager? + wifiHandler = WifiHandler(this) + } + + private val wifiStateReceiver: BroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + when (intent.action) { + WifiManager.WIFI_STATE_CHANGED_ACTION, WifiManager.RSSI_CHANGED_ACTION -> { + if (wifiManager!!.wifiState == WifiManager.WIFI_STATE_DISABLED + || wifiManager!!.wifiState ==WifiManager.WIFI_STATE_DISABLING) { + wifiHandler?.sendEmptyMessage(-1) + return + } + val wifiInfo = wifiManager!!.connectionInfo + val level = WifiManager.calculateSignalLevel(wifiInfo.rssi, 5) + wifiHandler?.sendEmptyMessage(level) + } + } + } + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + val intentFilter = IntentFilter() + //Wifi连接状态变化 + intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION) + //Wifi信号强度变化 + intentFilter.addAction(WifiManager.RSSI_CHANGED_ACTION) + context.registerReceiver(wifiStateReceiver, intentFilter) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + wifiHandler?.removeCallbacksAndMessages(null) + context.unregisterReceiver(wifiStateReceiver) + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java index 0b7bcbd9a4..5e4b73b40e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java @@ -27,6 +27,7 @@ import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider; import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager; import com.mogo.eagle.core.function.hmi.R; import com.mogo.eagle.core.function.main.moujie.BluetoothMonitorReceiver; @@ -34,7 +35,6 @@ import com.mogo.eagle.core.function.main.moujie.ConnectBluetoothEvent; import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; -import com.mogo.eagle.core.utilcode.util.BarUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.service.intent.IMogoIntentListener; @@ -336,11 +336,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis @Override public void onSkinModeChange(int skinMode) { - if (skinMode == 0) { - BarUtils.setStatusBarLightMode(this, false); - } else { - BarUtils.setStatusBarLightMode(this, true); - } + } private synchronized void sendAcc(boolean isSend, double acc) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge.png new file mode 100644 index 0000000000000000000000000000000000000000..2c46f99c9146c77e21c8d7f92646445dfd26cda3 GIT binary patch literal 1254 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR918lVFJ1ONa40RR91Bme*a08-en?EnA-P)S5VR7ef2RclOBXBegz3XG}{ zD2k$7qRvdP6GdC`0!(oW{LrxkjK*8kXL9hYlSnX5CQR5fYZ`rt->$_+?)a(e-a-&r4ziy|M@KEo*KC)!cbHYF>oxy*RR|&r zLHH*|NAjopdreKP5hS2pp;llR1dO!iGtoN&`D_r}2b5oIJ=$FPyp}}AY~I|N6ni0& zNJd;Pk3p0WM1oOy4~RJU^_i-B4=dDerfJGRt3u%$iM8PQQ0_a0AQFJQUxC=1+$-e; zH-1}5g>Fk+r8Z$M0VXd55jhBM1BurQf7j*Y{;&pfmZhd>dR&gl2|h8WJcKS10QgTSj!D5TC>ZMfsw## z;N3U=O0Y;o)&qybVUA76lD4$Ahx1l3oZ;c2U5ge(b}(G5X;@fD|M!=^i-+^4F(HW1 z_DeB3waL4C4912SR>dS1a$ni-tE#&ORcO#sly8=TI|!2^K#`V_-R2Dudajb9{0f)I zNu1GLI-?|Dj;`$Q5}8yQlDu}A0c#JlSgiift6$Fd2=F-aFMg|2$1O-gs1P_oDH7~x z4#pZ_204Vx)@L`)ir)Baz6m z1(-g18xWy0q3_=&w+Q8owKp7ZFfSkn*YFUb@a3DD|DEvW$3#c8{&MI1Oyu?hY2fT; zaw>B`&cz!D{O>2C7y&-AMa9 zyBdBw&#$95BCTwp!E!`ny^Xs+&BBM5bTyk|lDwUGZ zMu^mrUyQwLM^QvlTi+z1Hh!wV*?>PPwegn_DW;fM6D5Q@6!6y{m-Jz(;AJ4rfyfoH z0;2Np>UILoj!ttWjj&sQ;1@y^DPIyuLx2W=tO)Su%kzp4Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91HlPCl1ONa40RR91HUIzs0P{mGqyPW|e5nMr6AK@^5(VoW3k z6hz{JdT==i1{J+19t00TLE}YFD!73M%}wy)auFAZdJ!)oih>vsj2r4f1<{Dc4I}}P z1cJeUptz72m+^Z^deT!}J=057&!r#y(^dbgdhdVLsh&ztCX-sa0_h5*E0C_h=n7;< zoAz3{Ty8PZXOCoP%Vx7Z_Oc}ynZnKh$3D?mYCC;}?F5?mb#M6Xy~2o+OlApjo)K@pp?KlKka#k93LNXF(O4`Be)r>E<~;#@($Lr!xRu4? zS@Dtdu13rsxSf6p@u`KKfU5(yfzAdYH~Yo2!jo`1=+vo!+pkLs?9D(@j!8@R{^N>}}*r3+}0YN8m*6U-e?1Pt@IlJJl zAf{U5^P_rkbon^v!q@uv?9hmx2;2`6x_Ogh(*()P)%T9!TLpT7&SZh)37ou&%FJ{Q4j!LJg9$rEsU;^LwvMC=A22ic%@n1SW}&MH+b z0yhCU?T59?ObBxfD<#F8A7MMd->?S=#EEn_dWo(b%f_8D?{d}T2rAmD&b8Jzr!KlDC?tEVtY2`^_% z)dw|X1AK0bAuak;5+51X;Q9Orv%rZ=TNU5z_~eSe5y)LqP5!j^xyM>>lklXfVx-^6 zb(UKI{ZfU=8Po5i(v5G5JD!y`N#sPK3WXZ7Ha*uCeHX zkjQUk<&D#L-DG%eVenhQ51_N_kVfAQ>$K%LlC1&X6(#b*r7}NAY2Z@}I|tVS{LISx zd_|VGi<(719uQ*3K+)q6ezh=}r!)C-Z}MhLkU_uA63u7YND>jnE(I) M07*qoM6N<$g8LEu^Z)<= literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/demo_mode.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/demo_mode.png new file mode 100644 index 0000000000000000000000000000000000000000..380b81e9426aeffc2050a2f5a5608dea1e06b8e4 GIT binary patch literal 1214 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~yTfmH9gA{&t)?32Bz@p*l;uw;_ z`gW#ohhLz?@#k|j<&Aw8Wq2)e>(b0p+B}1mH&sk5NQzr?Y2>DGu~TQ-T4zl?>1KB6 zj31||UC^>Ayxd-&W@@x0xjp&%yTAJDp67d?-}yfGwd`gK|G&GR|NLctzVgoJd(F$1 zX%sS{!<)hysk6JIPe1(>6j5~`Yy;OCmPz~%Y%3VvP4`-wIgdN~h7b1*_I1tg75qgO zM?Br4v*Yf?5Kb93{ev;CJKG%(-&?ec&0RV6fgZ=n@Hyv&Gh~GdORru%vY&5RW3$5Q zi;{1|4>G(ccztTx51{t&Bb67&UGt}{n;~1 zi^c6O--Y~!b9d%eFin|V@L`3()vPzqLKx<(*ZA#jsXKr9^I2yfF+3`AHRb+XE!|ji zV&xBJ+X}G{`HboZT3MpHS-uKU1i&G~BS)$sjk)+)+;A49*S$usVARR1UV>zhejw!-YG z2d})h{^ceQtWrumOliTj)41eFfjXFjsu829$rX|^Zcsh4^;S~+SrWG!Db zuk7}WUDs6Zd(NDcUfUky)uQ*%YyB;X>a^B&a z&OLvZtz5opv-G1CpBxuNH%z^*AsgD*$vFRZOP)ab!F4QAr>A)pM6i@HT-_qH=k1TG z)te4i+}yNjAN!lgRVNNUkJ~%v3)j`^&>-FgQDJ)FBHD`%+~SjqF1vOs$6HLl%v5BT z-@|#LM^pGXs<{i;SIOPloOSLd+rz4a^U_&Ag+BaaczBz69z%G_?Z??{^X*PO+P3J{ z>srg!Hv-=oYm3*!IC91ne#mFIwPb_h6_&c#hetA9O@BL8w$_T=;J$O#_QQ=Uaf6I1`0O*QlQ8u#H`*~B%a2W^?AE!ntl zdD5ha??FA4({^8;H=mIssO<1`^>bP0l+XkKcTFoN literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_close.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_close.png new file mode 100644 index 0000000000000000000000000000000000000000..7090814f91ce6649a352f4fc0eaa05ab50000a08 GIT binary patch literal 1562 zcmV+#2IcvQP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91HlPCl1ONa40RR91HUIzs0P{mGqyPW~gh@m}RA>e5m<@9jMG%IG3Pe$f zqVgqzmPkny;{X2-pnxby5=aCDiSYvkgbux$SM|-zPESw2Jw4sK zw`Z-=}fDlRnpENT9#Ncc%r}*$|B1&4x?xJFq0Uix{w(2BQ-_ zZGT3zfu0-a|9cXBoq?$waNZZe8D^4q<^r4l<$(FaG^gy(kp4i|3VZYl(_X+d7UKma zI6+D#fFIb{d*b}3G@rrV9r+=wOe78yNhB3RJ0gH?mW+<;@EZHrA4_9_VWV`a z*VV`~jS-yTDLsY-Cy-u*E_Ik}OipIqwuEC?{>(oA(Y8`6FgEpc7U4)5%P3t}BXjT4 zoP{H^{!jmV=1l+-5jxc+KutZ(iuWNcDDOg*47YPAO~n=21;*dP z5kj7r;5@;p2;GAE3jR2w=nDJXZko#hJAm*vaCQDSp8XP_LLmkyZ^(wc;05=DIiH<^ z55bc6QP9ema5j-^&3Nc=?MXNygKnZ*ti2k8avO$}pQS#^^peH~3Fu}Fs%;@(u47(w zOTiX%o~Dlau)3}o8^U*B4Q&i#bi|#G&{W<;(wHT)z}ygJdP;A5zSZbI?2MEBlTJQYf+P1;PYOaOHQLdmLinK3KjxQUbCLvfPZDzFmMT*t04SIc_HBw~$WsS`~~jkRqg+5Fr4#6pe6 zvf&G%$1@Xx1|5M7LGPP&EQ)lsj%Dj3>vUjk51)6TiGfv>V}$>8cq-LA-N0Kg1)0glw|y3^>frp=6U#`M|%qcqx65TxWOtizUo+B;to7~MzLSi>aChRMj6 z=c#EXz_bEzzW@0i=;@d+#(uuD=51sJ7vFuJriD0LKA7)BGXv&s1-OS8Cb&*ioVE^$ z({`;Xeyn5KHkc`}wvF26N~dj!kgQvRtJTOf+u>*Gjf5*)k;w|yzU`alN+g9io=3?3LfFnD0_z-#J(XYL>gYEc=J?f?J) M07*qoM6N<$f@3P$zW@LL literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_five.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_five.png new file mode 100644 index 0000000000000000000000000000000000000000..8f48f53e24fcc314fdb94dc526461e5837378c20 GIT binary patch literal 1178 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~yTfmH9gA{&t)?32Bz{29`;uw;_ z`gTTihhLz`@#lv$9^3WYUchPSq{1I}XX%8%Jpoda?;PUx{M_&;HEU9lCcpBcDNADH zrWifTG)c)a$!k4n;4C*IW|`#n^Y70uKUco57KnE*+xzOeW%}B^*KcLdt^IcM`I9FR z8$~xD!4n~@MVCc2M7W+l-Yw#Gz(J!$?g!7@4@TzZ-?fi#@i--^s0jExzrGX&V z0dFUXTMJoVJv1|!_(s3)rsyQirq}}cAjSN`Am+=PCrLJXKVT_w-nE49IJeOxg+{hR zhA$d@PRcSJtz~DnPqxrsUZuWJ#XsLkh2WX0{tsKeP6&8!m>DFHskt-^J5;Ud{`y-a7v%F%H zSa&F3``OaFN4L(?%q_d$`0hx=g(;W2q_qFJ-U|7&ruOlSIK`D;7rcC_x>jP#+gbdT zaf=U{acw)~`{DC)@%lAPRjr)M)DP5MIGi`>xyE(Y&muRw>So1lUEq33#XlfxsbBwt zJxq5xUpC(7Hhf;YCh%dh+6%s&PZ_%oZv3U5s(ygaJ*3wD<>E`>8H@iu2$5i~{VSDx zp8ff~Ev>JW_ShVOlS`ndNrgie|lnu6IAQEm%(<*pajN`j&dOs*UM>94q`M za5#pu+;XmKU+`&0+c96=Un?X88I21MDr^aU+2Zn)O_n`1X-#9Y!2;U{aUnvU9~9>v zW955u+29)YrRA^Vg_$p=MaG|ARy*&Xg=x#%d`mtC-P_&=Ur%1%C0=Cu?G5+Isg0j+ zublll%YaX=R!*l~t>DzhH|dY17#GiG{k7|=m)Xr!v$#usoN_EDB|WOxB$-uLrzC7v zd{@p_E7th@oA%AZoBujP8mxnOZr1Co8da3b3tjy7g5l5aPk)b9GN(M5-&t*=xm&IA zaDvd^ZQdt;Yo#{#9v5uBem?B2#+*gFx2eh5|4)sc6i{^i@Jvn3zgq8Qh5X(b9lyF) jS$THr+6H8}nQ1?x-dCn=KbPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91HlPCl1ONa40RR91HUIzs0P{mGqyPW}9Z5t%RA>e5m`g|$aU928EzMpU zmT6`7Kq`6@L0zn%2r4Qlf=<;X=+LEz=ukl?Z$S}ss6&?^I`lepi%v#RL1C#Sl$gCB zwDOUf+UEYw^Mj)0e zN8{t;vRw|7p(M^2&r$dXgRxjl?>SLqiIK<@BAf-4Fawm7pZy`)^h0l)KO{TOd)D%E zoYn!!Xg21?Q8L+T7z5u03HD`UEThEYvr~uTd61Ef06}XOKarrGp%p495}JgEMKB*i z^`(8LQequpXE1PZBsCic4Nw*!LhT(br2){p4htO=#h`0xNT**^YJc?Ld@x{IpH{$}IP&Ku9W*UL?59l(r#k6Yg4e;Ipu%@UhvPgw*&6*Ni0-8~i z+VK6&RG~6sVi=xAos!aCa7xRe9izXU6;b~t4kfh|YCLSeCl0L`mvqXRq-9_lDUFbf zX$cxdFtWK7cEMuMl^_(H21S7+c+UF+?0x3x66GTlwqdh}=Q42aKhJ~5IAijFF>Pk; zuY^9}NXySC+V7#_5a_8dkf73u_X6(0EqoYf0Q*W}H6*r%4k|6j@LwtztAQ<`^==e( zo8cKmp+1aU1Z@SEC@+UiunIgU#nsVNfC1y_M0q{jfn2B?qesCNJY{9zT#~NPT^(I5 z3gR?LOCUsDFFsx0rr(Z4HfKf21l|o(Gxe>;XfHN^| z_|s6DtygTU0nLz8FDacDhACQVRZ0@op-7GA27 z4RZN{qciXp>P>zqUjQfJ2@F80G~=Cc4R(OO4_%^M%f21FzB*ieA}PRO;-XC2qpS+9 z!UzP_I~wjz8cBJf+~p&sIzO)jaR7QDQ$3>N%=|b0_UNUNrG?aq<=YNEx!xW z*8zd(FYDK!OV=rVEH{Jdzkml@=L!WKn`S}$(5ZfVw z5nx8Dq44)o1i5Gr>GSA3bb&Ms&9E^F`vtQ>0++y~ehMSGuL_bJ!Iy%*C{m?a+h34? zqI60UO73AiGbObzO8W)16;JLi&%Ff=#5%VlU`N1?fE@ul0(J!K2;^i0{sXg6YEN05 R*irxh002ovPDHLkV1g*L2etqJ literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_one.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_one.png new file mode 100644 index 0000000000000000000000000000000000000000..1b06cb152d92ea6f92024de0e23fb55c2e1caf2b GIT binary patch literal 1244 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~yTfmH9gA{&t)?32Bz~biV;uw;_ z`gTUP{}l(3Hpct~iyo+Qv9a)GHM#x&@Bg9un77Nvwhl*SM;8~zqt6v{ncn(rPu(tc zcFvQfZ_a#~Q+Yl&ZTotC&rc3W@WA{}4)xJ(Wo2boY+3pmoF(f%{^6`^IQ#Ek-T!>o zDmNab<~Ic*Jq?KpEB$`$-<-x=b7}+MP1%3%qpT#?nJ`E$E>vtz*)>&HWRJMOpG&=) zm<3NSGH!fWSfC(lYL+V!?|dOWIdh99hwQOKB0E^5_MZOL+;wE0d2hnovyQK1*wPMc zl(ODZ=CgGDf&aN;W?hU4%9dPx=@ut9PmU<>PGD@>D&^;%Bv525B*h%M>DZF58@oQ9 zUDaCs{6hZRd2G*(GxXKWX1SMs2^TuNVs4(;5vk_4zhxs}%u!ycYnbZDnv*t(^Zc|49xqg-FP!dG zQMNqmeXYb}&n#Pq@|7x1-LkKzcpd%j)V?t@$+qHm#vCK52e#G=bN}j|mrQWJrTyyb zvA}34SD&>K-_zC?x-R0sIpeLB)}CbB%D$T~x2=*n5cR!;w}wBr)u_Eb7yU*`=E$#WZp^ltDNmSJkCT{FOKSxe8p+#;hS*a@UG~a z4vnVKyMG_$F?-vkYCB<*riYH&JmLkHEXBKI0 z;Q2Ez{MCe>|FIKgPAm?qHr``AYvP)}eo;5Jv3HyZ46s=dZG3yP6!%*LZ~g2O(k=0! zYvk9*|6{oIDqk&Ecy?RMk*-Hezv(^MWw*Yo>+|{C<;R%Xy24c#KjU3&8Z;@}G)d~j zt5fo=e}XhM>sNpH^!t7HlLI;*w#`?mR6v3c>^~pK|M4VabJ8KZC!mtW)78&qol`;+ E0KA$oMgRZ+ literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_three.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_three.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee2dcd8fe3ae1032da9d67c058768b34ed2b05b GIT binary patch literal 1219 zcmV;!1U&nRP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91HlPCl1ONa40RR91HUIzs0P{mGqyPW}ElET{RA>e5m`RTfQ5c4`d7kH? zV~8mT7FbJ&g#?M;VPj{(!m8KA(l4-MZ)r))W6;_h(&nkro=55?x2w*nTXiRCsW*Am ztuuV%`My(a%$N#Q1gZ#B5vU?iMWBj66@hL=pr=!chKGlhJq1pH;}ZVn`3wGpUwe9b z{M`|>%`qIAjD>UHY&ZkzR3rJ{S@RjbOZX9Ihxy$y8Y#|IfHP)eQ9_+*6+aO0O5)(B zR)jU>SdyI;C|(Mil2O2Dv-lVXeU?Tkqi|?E8dkz(u+(1GHwztmP&R{wjl-$=C|C<8 z6|m6S@hE+P{LmHz)OJE+}GiiMcqWo*# z!umPnTc@+&f`sae!A5hVi2Pi~P->^!1Y?cC_Wc|_E24~bxj>)Uv>Ek6b%$W~Z=>&R zXtFjIbqpmQm8~##^qw)-j{-YcTY+w~rh}`Y84ckMx?hGS91A*z;Azb1l(mqC$KftQ zKcpwx{f-?vwFWMZ$i9aio|p{mav^vOLXk2;3iAjCkwkkolXIbR%(wxP?z5SgWuFG; zE%Ltc%z*JB2Jawqkmq`suD@vG31&+PEEnFnJ53+`p`BYXp2 zqCK)z0Ffwj`GQF$DLUn)_@l#DQsfRR#wf-+!@9nIr1Gc#F!z>GeD1L(`Nb#zT( z&Jyt|xfyecxp0j+Q3JvzBOr5B9A}LVnWc8aqxuM%!4VljuNfO+JX#JKlbbOYgn)2s zXftedWgFfAV|&f6^&;P=BhJ`gB$2ls ztxf+bh{^Nf_focz6h=%~PyojCGU444f(|{z0Ha(AiIc0?WKDlbqupzN5LLz z(rkFS+YqA1inZFb4laShY+cFQ^LJG{{y}*!+zIWB88E&a9)TC(7g&$qy!68}a4+=x zFayTbu?yO0x(5`dzXHtWJa`%o!J@du!u=u38PDhlt?TF*MjVFkV6(Wu#&%rt?ei0Z zjzW)EtGI>$|I49elx`krjTquRbQLa5&+%?Iy9Awo0sY?Vg?r#a7{W0cMPF#5>ti^# z5x#~seB(zS3>we)Shx>fhV?krb>kZ;#JX*85Z;Bg>mYX<>vZr06lY<}Cn#58vy&LM z9r~G63hdbp|9uB6W%d8Qn2aoh-Mwr(6;vD<2am%6D1N|8a7U+fc111@oP;5KX0R>y zRaYEIE5Z1Q&@YO5n6*RcwWIDGCv@(7;+akz9Cc2_3{IRo$MZmJO*LLcpo%~hfhq!3 h1gZ#B5g5G@_ybB>*V8jxGR^=1002ovPDHLkV1miB6T<)i literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_two.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_two.png new file mode 100644 index 0000000000000000000000000000000000000000..6f88fb83073288be6af941aaed6e90bd0a12c993 GIT binary patch literal 1230 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~yTfmH9gA{&t)?32Bz+&O);uw;_ z`gVF|zHgvN+tq;Ji?h4~mUsy4`yu_qdEXD~eIMm(RNFL6LqokfHnxdf|7`MHW$*Jh zweKv;9VYLcbiMHVhHF*VZ)Lx|YnnZ22?sL#vzCL0_f){@t3lt>HZZO^{bBZd{SU%5 z(o#~N{xeV9C)j*K%|?cKaf0-O5cR+I5t|w8QhxB<6#M@^(n@lj34`S3jrz?gRa0F> z_J|4mxzxRBT}SFo%a(`C3$$fT=a_Y$SA4O3qe&5$)9Z}}jC@UQ)sgqtdb}yT%yX@b zFKD-+0jJru4;OBI)Tm|scRww0aRhgc%Hag>Ho<*!kL;SwYAmqkYJrtd^MrFA88RU! z-PP9if0y_lwzc4?%&)bVWfT0_-X1;TR=mFNpI4H^*2{C*HXcj(UB~+Dl|*vv(uDIl zw|e-PbK8%+u|IHc_k|QYG1WG~{!^9$)>Xx4&L$l2yB2E)Ibcc8gi|(6jwct{ zo_gZ9K+ZU?q2+guTH4L^2P@n6y|3{;^h2mQ_(je6?Db(47SSdeKCXMs=?vhPi^t@rg;hF zT5po??Q}e4R>O7V+pO5vt~EMtb2g@)RLZxFn*A?S;PUgM@0aE%uhcb6b!4?Dp27Kk z+60dmntT#Z-6l=6Ii;3urDAvX-GbdALJN=fm0EcntzCHfMskwvk6#%zDJBQ(tQY3~ zRlV<-;2fp->g&_iHFzFk@}> z8_7F?F=mJDCBA!94~JVvG4-9JjUcES~OY#-B zp@;0DhUum2H#IP2Z!7!WEtzvm)VoR{HF!dV&z|;@8&-z1ug(8H?f5p0f1wX;EraJ| z{MsEad3oVyh4O1@39rAM4d122(N?DVe69sk(Z^FW&eebU^p@LD_Q1{DnwkZ-rrG+L zwR)Z8kW0MCGK2l!-0)Wudj3aGlsU0E?6%~$o>Z0W_nzGBvW!NX#DA=c|I0M7^a0ll z)>BG5IQ7 + + diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml new file mode 100644 index 0000000000..4789ca1988 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml new file mode 100644 index 0000000000..e5e6fcb799 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_demo_mode.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_demo_mode.xml new file mode 100644 index 0000000000..81ffb29e9e --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_demo_mode.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml new file mode 100644 index 0000000000..57fd8a6b0a --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values-xhdpi-2560x1440/color.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values-xhdpi-2560x1440/color.xml index b9cfaf3e10..34334da834 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values-xhdpi-2560x1440/color.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values-xhdpi-2560x1440/color.xml @@ -9,4 +9,6 @@ #FF343C63 #FF282F62 #FFFFFF + #2C2E30 + #D4D8DC \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml index b458be2e4f..fb22d27937 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml @@ -18,6 +18,9 @@ #FF0006 #0099dd #FFFFFF + #2C2E30 + #D4D8DC + #7FECECEC #FF999900 #FFCC0000 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml index 69abd2557a..90c260be7e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml @@ -52,5 +52,5 @@ 是否修改车机绑定? 是否绑定车机? - + 蘑菇星云 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 da734fb58f..2ab37413c9 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 @@ -1,6 +1,7 @@ package com.mogo.eagle.core.function.api.hmi.warning import android.view.View +import android.view.ViewGroup import com.mogo.eagle.core.data.bindingcar.IPCUpgradeStateInfo import com.mogo.eagle.core.data.enums.WarningDirectionEnum import com.mogo.eagle.core.data.map.Infrastructure @@ -263,4 +264,15 @@ interface IMoGoWaringProvider : IMoGoHmiViewProxy { fun showVideoDialog(infList: List) fun setBusOperationView(view:IOchBusView) + + /** + * 设置状态栏暗夜或明亮模式 + * 默认 light + */ + fun setStatusBarDarkOrLight(light: Boolean) + + /** + * 更新(添加/删除)状态栏右侧元素 + */ + fun updateStatusBarRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) } \ 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 c4d6fc3a55..20a408e34c 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 @@ -1,6 +1,7 @@ package com.mogo.eagle.core.function.call.hmi import android.view.View +import android.view.ViewGroup import com.alibaba.android.arouter.launcher.ARouter import com.mogo.eagle.core.data.bindingcar.IPCUpgradeStateInfo import com.mogo.eagle.core.data.constants.MoGoFragmentPaths @@ -292,7 +293,13 @@ object CallerHmiManager : CallerBase() { waringProviderApi?.showModifyBindingcarDialog() } - fun showUpgradeDialog(name: String, url: String, title: String, content: String, installType: String) { + fun showUpgradeDialog( + name: String, + url: String, + title: String, + content: String, + installType: String + ) { waringProviderApi?.showUpgradeDialog(name, url, title, content, installType) } @@ -397,7 +404,6 @@ object CallerHmiManager : CallerBase() { waringProviderApi?.showVideoDialog(infList) } - /** * 设置 bus出车/收车View * @param view @@ -405,4 +411,19 @@ object CallerHmiManager : CallerBase() { fun setBusOperationView(view: IOchBusView) { waringProviderApi?.setBusOperationView(view) } + + /** + * 设置状态栏暗夜或明亮模式 + * 默认 light + */ + fun setStatusBarDarkOrLight(light: Boolean = true) { + waringProviderApi?.setStatusBarDarkOrLight(light) + } + + /** + * 更新(添加/删除)状态栏右侧元素 + */ + fun updateStatusBarRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) { + waringProviderApi?.updateStatusBarRightView(insert, tag, viewGroup) + } } \ No newline at end of file diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java index 78eae55bdb..bb1691f024 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java @@ -414,6 +414,15 @@ public final class BarUtils { return statusBarView; } + public static void hideStatusBarAndSticky(@NonNull Window window){ + final ViewGroup decorView = (ViewGroup) window.getDecorView(); + final int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; + decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() | uiOptions); + } + public static void transparentStatusBar(@NonNull final Activity activity) { transparentStatusBar(activity.getWindow()); } diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java index 8015fc5637..4318a63680 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java @@ -25,7 +25,7 @@ public abstract class MvpActivity> exten @Override protected void onCreate(@Nullable Bundle savedInstanceState) { - BarUtils.transparentStatusBar(this); + BarUtils.hideStatusBarAndSticky(this.getWindow()); super.onCreate(savedInstanceState); beforeSetContentView(savedInstanceState); setContentView(getLayoutId()); @@ -37,7 +37,6 @@ public abstract class MvpActivity> exten @Override protected void onResume() { super.onResume(); - BarUtils.setNavBarVisibility(this, false); }