diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java index 7d5d978d87..16c08b4fb3 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java @@ -227,8 +227,8 @@ public class BusPassengerMapDirectionView if (mAMap != null) { addRouteColorList(); - - if (mLinePointsLatLng.size() > 2) { + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "mLinePointsLatLng.size() = " +mLinePointsLatLng.size()); + if (mLinePointsLatLng.size() >= 2) { //设置线段纹理 PolylineOptions polylineOptions = new PolylineOptions(); @@ -303,6 +303,7 @@ public class BusPassengerMapDirectionView texIndexList.clear(); mCoordinatesLatLng.clear(); mLinePointsLatLng.clear(); + CallerLogger.INSTANCE.d(M_BUS_P + TAG, " mCoordinatesLatLng.clear " ); } public void onCreateView(Bundle savedInstanceState) { diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index a7341343f2..4ca1a90fa8 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -19,6 +19,7 @@ import com.mogo.eagle.core.data.temp.EventLogout; 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.map.CallerHDMapManager; +import com.mogo.eagle.core.function.call.map.CallerSmpManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.map.MogoMarkerManager; @@ -107,6 +108,14 @@ public class BusFragment extends BaseBusTabFragment showAutopilotBiz(); mSwitchLine.setOnClickListener(this); + + mLineName.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + showHideTestBar(); + return false; + } + }); } @Subscribe(threadMode = ThreadMode.MAIN) @@ -421,6 +430,9 @@ public class BusFragment extends BaseBusTabFragment setOrRemoveMapMaker(false, BusConst.BUS_END_MAP_MAKER, endStation.getLat() , endStation.getLon(),R.raw.end_marker); } + + //清除鹰眼右下角小地图轨迹 + CallerSmpManager.clearPolyline(); } /** diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/CommonBeingServerdOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java similarity index 99% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/CommonBeingServerdOrdersFragment.java rename to OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java index d114e87532..2434a7fcec 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/CommonBeingServerdOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java @@ -18,7 +18,6 @@ import androidx.constraintlayout.widget.ConstraintLayout; import com.amap.api.navi.model.NaviLatLng; import com.mogo.commons.AbsMogoApplication; -import com.mogo.commons.voice.AIAssist; import com.mogo.eagle.core.data.map.CenterLine; import com.mogo.eagle.core.function.call.map.CallerHDMapManager; import com.mogo.eagle.core.function.call.map.CallerSmpManager; @@ -50,7 +49,7 @@ import java.util.List; * @since 2021/1/18 * 正在进行中订单 */ -public class CommonBeingServerdOrdersFragment extends BaseTaxiUIFragment +public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implements View.OnClickListener, ICommonNaviChangedCallback { public static final String TAG = "OCHTaxiBeingServerd"; @@ -98,12 +97,12 @@ public class CommonBeingServerdOrdersFragment extends BaseTaxiUIFragment private volatile int saveOrderState = -1; - public static CommonBeingServerdOrdersFragment newInstance(Activity activity, TaxiFragment taxiFragment) { + public static TaxiBeingServerdOrdersFragment newInstance(Activity activity, TaxiFragment taxiFragment) { mActivity = activity; mTaxiFragment = taxiFragment; Bundle args = new Bundle(); - CommonBeingServerdOrdersFragment fragment = new CommonBeingServerdOrdersFragment(); + TaxiBeingServerdOrdersFragment fragment = new TaxiBeingServerdOrdersFragment(); fragment.setArguments(args); return fragment; } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java index ce0f7bb40d..eb8874dc3c 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java @@ -51,7 +51,7 @@ public class TaxiServerOrdersFragment extends BaseTaxiUIFragment { private ViewPager mTaxiOrderPager; private String[] mTabTitles = {"进行中","待服务"}; private List fragments = new ArrayList<>(); - private CommonBeingServerdOrdersFragment beingServerdOrdersFragment = null; + private TaxiBeingServerdOrdersFragment beingServerdOrdersFragment = null; private TaxiReserveOrdersFragment reserveOrdersFragment = null; @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @@ -82,7 +82,7 @@ public class TaxiServerOrdersFragment extends BaseTaxiUIFragment { if (0 == i){ mTaxiOrderTab.addTab(tab,true); changeTabLayoutTabUI(tab,true); - beingServerdOrdersFragment = CommonBeingServerdOrdersFragment.newInstance(getActivity(),(TaxiFragment) getParentFragment()); + beingServerdOrdersFragment = TaxiBeingServerdOrdersFragment.newInstance(getActivity(),(TaxiFragment) getParentFragment()); fragments.add(beingServerdOrdersFragment); }else if (1 == i){ mTaxiOrderTab.addTab(tab); diff --git a/app/build.gradle b/app/build.gradle index 3a14cfac1c..444dec13fb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,7 +24,7 @@ if (!isAndroidTestBuild()) { if (!isAndroidTestBuild()) { apply plugin: 'chain.log.hook' - hooklog{ + hooklog { enableTraceToServer false enableLoggerToLocal true } @@ -36,15 +36,6 @@ if (!isAndroidTestBuild()) { apply plugin: 'apm-plugin' } -if (!isAndroidTestBuild()) { - apply plugin: 'bytex.threadOpt' - thread_opt { - enable !isReleaseBuild - enableInDebug !isReleaseBuild - logLevel "DEBUG" - } -} - if (!isAndroidTestBuild()) { apply plugin: 'LancetX' LancetX { @@ -273,7 +264,7 @@ dependencies { } else { implementation project(':tts:tts-pad') implementation project(':core:function-impl:mogo-core-function-hmi') - + androidTestImplementation project(':core:mogo-core-function-call') androidTestImplementation project(':core:mogo-core-res') androidTestImplementation project(':core:function-impl:mogo-core-function-notice') @@ -290,10 +281,6 @@ dependencies { androidTestImplementation rootProject.ext.dependencies.androidx_espresso_core androidTestImplementation rootProject.ext.dependencies.localbroadcastmanager androidTestImplementation rootProject.ext.dependencies.mogo_v2x - - if (isAndroidTestBuild()) { - implementation "com.mogo.thread.opt:lib:${THREAD_OPT_VERSION}" - } } if (!isAndroidTestBuild()) { @@ -366,7 +353,7 @@ def getWorkingBranchHash() { } static def getBuildTime() { - def buildTimeFormat = "yyyy-MM-dd HH:mm:ss" + def buildTimeFormat = "yyyy-MM-dd HH:mm:ss" //设置时间格式 SimpleDateFormat formatter = new SimpleDateFormat(buildTimeFormat, Locale.getDefault()) //获取当前时间 diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index ee39bc7a34..1964720b5e 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -7,8 +7,6 @@ import androidx.annotation.NonNull; import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; import com.mogo.launcher.crash.CrashSystem; -import com.mogo.thread.ext.core.ThreadManager; -import com.mogo.thread.ext.core.config.ThreadConfig; import java.util.concurrent.ThreadPoolExecutor; @@ -23,40 +21,40 @@ public class MogoApplication extends MainMoGoApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); - ThreadConfig.Builder builder = new ThreadConfig.Builder().listener(new ThreadConfig.TaskExecuteListener() { - @Override - public boolean isEnabled() { - return true; // 如果返回true,会有后续的回调;如果返回false, 不会有后续的回调 - } - - @Override - public void onExecutorBefore(@NonNull Runnable runnable, @NonNull ThreadConfig.TaskType type) { - //每个任务执行前回调 -// if (type == ThreadConfig.TaskType.HandlerThread) { +// ThreadConfig.Builder builder = new ThreadConfig.Builder().listener(new ThreadConfig.TaskExecuteListener() { +// @Override +// public boolean isEnabled() { +// return true; // 如果返回true,会有后续的回调;如果返回false, 不会有后续的回调 +// } // +// @Override +// public void onExecutorBefore(@NonNull Runnable runnable, @NonNull ThreadConfig.TaskType type) { +// //每个任务执行前回调 +//// if (type == ThreadConfig.TaskType.HandlerThread) { +//// +//// +//// } +// } // -// } - } - - @Override - public void onExecutorAfter(@NonNull Runnable runnable, @NonNull ThreadConfig.TaskType type) { - //每个任务执行后回调 - } - - /** - * @param core 线程池的核心数 - * @param max 线程池的最大线程数 - * @param active 线程池正在活跃的任务数 - * @param completed 线程池已完成的任务数 - */ - @Override - public void onExecutorStateChanged(@NonNull ThreadPoolExecutor pool, int core, int max, int active, long completed) { - //线程池在执行过程,状态变化回调 - //Log.d("POOL", "core:" + core + ";max:" + max + ";active:" + active + ";completed:" + completed); - } - }); - builder.loggable(false); - ThreadManager.INSTANCE.init(builder); +// @Override +// public void onExecutorAfter(@NonNull Runnable runnable, @NonNull ThreadConfig.TaskType type) { +// //每个任务执行后回调 +// } +// +// /** +// * @param core 线程池的核心数 +// * @param max 线程池的最大线程数 +// * @param active 线程池正在活跃的任务数 +// * @param completed 线程池已完成的任务数 +// */ +// @Override +// public void onExecutorStateChanged(@NonNull ThreadPoolExecutor pool, int core, int max, int active, long completed) { +// //线程池在执行过程,状态变化回调 +// //Log.d("POOL", "core:" + core + ";max:" + max + ";active:" + active + ";completed:" + completed); +// } +// }); +// builder.loggable(false); +// ThreadManager.INSTANCE.init(builder); } @Override diff --git a/build.gradle b/build.gradle index 0eb109a8a4..baa9304574 100644 --- a/build.gradle +++ b/build.gradle @@ -34,7 +34,6 @@ buildscript { classpath "com.mogo.cloud:hook:${HOOK_LOG_VERSION}" classpath "com.mogo.cloud:bizconfig:${BIZCONFIG_VERSION}" classpath 'com.volcengine:apm_insight_plugin:1.4.1' - classpath "com.mogo.thread.opt:plg:${THREAD_OPT_VERSION}" classpath 'com.mogo.cloud:systrace:1.0.1' classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18' classpath 'com.mogo.sticky:service:1.0.8' diff --git a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/appupgrade/network/UpgradeAppNetWorkManager.java b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/appupgrade/network/UpgradeAppNetWorkManager.java index d7dc88aa4b..5103ef62c7 100644 --- a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/appupgrade/network/UpgradeAppNetWorkManager.java +++ b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/appupgrade/network/UpgradeAppNetWorkManager.java @@ -3,7 +3,6 @@ package com.mogo.eagle.core.function.appupgrade.network; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BINDING; import android.content.Context; -import android.util.Log; import com.mogo.cloud.passport.MoGoAiCloudClientConfig; import com.mogo.eagle.core.data.bindingcar.UpgradeAppInfo; @@ -72,13 +71,11 @@ public class UpgradeAppNetWorkManager { @Override public void onNext(@NonNull UpgradeAppInfo info) { if (info != null && info.result != null) { - CallerLogger.INSTANCE.d(M_BINDING + TAG, "UpgradeAppInfo url = " + info.result.getAppUrl() + "----code = " + info.result.getVersionCode()); - Log.d(TAG, "UpgradeAppInfo url = " + info.result.getAppUrl() + "----code = " + info.result.getVersionCode() + "--versionCode =" + versionCode + "--info.result = " + info.result); + CallerLogger.INSTANCE.d(M_BINDING + TAG, "UpgradeAppInfo url = " + info.result.getAppUrl() + "----code = " + info.result.getVersionCode() + "--versionCode =" + versionCode + "--info.result = " + info.result); if (info.result.getVersionCode() > versionCode) { CallerHmiManager.INSTANCE.showUpgradeDialog(info.result.getAppUrl().substring(info.result.getAppUrl().lastIndexOf("/")+1), info.result.getAppUrl(), info.result.getInstallTitle(), info.result.getInstallContent(), info.result.getInstallType()); } } else { - Log.e(TAG, "onNext info == null"); CallerLogger.INSTANCE.d(M_BINDING + TAG, "UpgradeAppInfo onNext info == null"); } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index 8329ac38a6..119b51b41e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -35,9 +35,9 @@ class DevaToolsProvider : IDevaToolsProvider { } override fun initBiz() { - bizConfigCenter.init(mContext!!) -// FuncConfigImpl.init() traceManager.init(mContext!!) + bizConfigCenter.init(mContext!!) + FuncConfigImpl.init() MogoLogCatchManager.init(mContext!!) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index 3306a57d94..a6cc679a5f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -107,13 +107,8 @@ internal object BadCaseManager : LifecycleEventObserver { if(ClickUtils.isFastClick()){ if(NetworkUtils.isConnected()){ if(BadCaseConfig.dockerVersion!=null){ - val initiativeBadCaseWindow = InitiativeBadCaseWindow(activity) - initiativeBadCaseWindow.setClickListener(object: InitiativeBadCaseWindow.ClickListener{ - override fun closeWindow() { - initiativeBadCaseWindow.hideFloatWindow() - } - }) - initiativeBadCaseWindow.showFloatWindow() + val caseListDialog = CaseListDialog(activity) + caseListDialog.show() }else{ ToastUtils.showShort("工控机连接状态异常") } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt index e437709f0d..8d3f361326 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt @@ -5,6 +5,7 @@ import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.util.AttributeSet import android.view.LayoutInflater +import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.GridLayoutManager import com.mogo.eagle.core.data.badcase.RecordTypeEntity @@ -157,20 +158,7 @@ internal class BadCaseConfigView @JvmOverloads constructor( val gridLayoutManager = GridLayoutManager(context,2) rvTemplate.layoutManager = gridLayoutManager rvTemplate.adapter = recordTemplateAdapter -// val list = ArrayList() -// list.add(TopicEntity("/v2n/aicloud/rsm_info",false,false)) -// list.add(TopicEntity("/autopilot_info/report_msg_error",false,false)) -// list.add(TopicEntity("/v2n/aicloud/rsi_info",false,false)) -// list.add(TopicEntity("/record_cache/task",false,true)) -// list.add(TopicEntity("/sensor/rainmode",false,true)) -// list.add(TopicEntity("/record_cache/master/task",false,true)) -// list.add(TopicEntity("/telematics/trip_info_event",false,true)) -// list.add(TopicEntity("/telematics/light",false,true)) -// list.add(TopicEntity("/guardian/aicloud_state",false,true)) -// recordTypesList.add(RecordTypeEntity(1,"红路灯",list)) -// recordTemplateAdapter?.setData(recordTypesList) -// recordTemplateAdapter?.notifyDataSetChanged() - + rvTemplate.visibility = View.GONE } fun setClickListener(clickListener: ClickListener) { @@ -196,6 +184,7 @@ internal class BadCaseConfigView @JvmOverloads constructor( } } if(recordTypesList.size>1){ + rvTemplate.visibility = View.VISIBLE recordTemplateAdapter?.setData(recordTypesList) recordTemplateAdapter?.notifyDataSetChanged() } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java index f0e6f70ad7..9756927f7f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java @@ -1,33 +1,45 @@ package com.zhjt.mogo_core_function_devatools.badcase.biz; +import android.app.Activity; import android.app.Dialog; -import android.content.Context; import android.os.Bundle; -import android.view.View; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.mogo.eagle.core.data.badcase.RecordCaseEntity; +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; +import com.mogo.eagle.core.utilcode.util.ThreadUtils; import com.zhjt.mogo_core_function_devatools.R; import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.CaseListAdapter; +import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig; import java.util.ArrayList; +import mogo.telematics.pad.MessagePad; +import record_cache.RecordPanelOuterClass; + /** * @author XuXinChao * @description BadCase清单选择对话框 * @since: 2022/10/19 */ -public class CaseListDialog extends Dialog { +public class CaseListDialog extends Dialog implements IMoGoAutopilotRecordListener { private TextView tvCancel; private RecyclerView rvCaseList; private CaseListAdapter caseListAdapter; + private static final String TAG = "CaseListDialog"; + private ArrayList recordTypeEntityArrayList = new ArrayList<>(); + private Activity activity; - public CaseListDialog(@NonNull Context context) { - super(context, R.style.bad_case_dialog); + public CaseListDialog(@NonNull Activity activity) { + super(activity, R.style.bad_case_dialog); + this.activity = activity; } @Override @@ -43,21 +55,65 @@ public class CaseListDialog extends Dialog { tvCancel = findViewById(R.id.tvCancel); rvCaseList = findViewById(R.id.rvCaseList); caseListAdapter = new CaseListAdapter(); + caseListAdapter.setListener(recordCaseEntity -> { + //录制Bag包,弹窗 + InitiativeBadCaseWindow initiativeBadCaseWindow = new InitiativeBadCaseWindow(activity); + initiativeBadCaseWindow.setClickListener(initiativeBadCaseWindow::hideFloatWindow); + initiativeBadCaseWindow.showFloatWindow(recordCaseEntity); + }); GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(),2); gridLayoutManager.setOrientation(RecyclerView.VERTICAL); rvCaseList.setLayoutManager(gridLayoutManager); rvCaseList.setAdapter(caseListAdapter); - ArrayList list = new ArrayList<>(); - list.add("红绿灯检测错误"); - list.add("接管默认录制"); - list.add("行程冲突"); - list.add("自定义A"); - caseListAdapter.setData(list); - caseListAdapter.notifyDataSetChanged(); } private void initEvent() { tvCancel.setOnClickListener(v -> dismiss()); } + + @Override + public void onAttachedToWindow() { + super.onAttachedToWindow(); + CallerAutopilotRecordListenerManager.INSTANCE.addListener(TAG, this); + //获取数据采集录制模式配置列表 + CallerAutoPilotManager.INSTANCE.getBadCaseConfig(0, 0,new ArrayList<>()); + } + + @Override + public void onDetachedFromWindow() { + super.onDetachedFromWindow(); + CallerAutopilotRecordListenerManager.INSTANCE.removeListener(TAG); + } + + + @Override + public void onAutopilotRecordResult(@NonNull RecordPanelOuterClass.RecordPanel recordPanel) { + + } + + @Override + public void onAutopilotRecordConfig(@NonNull MessagePad.RecordDataConfig config) { + ThreadUtils.runOnUiThread(() -> { + if(config.getRecordTypesCount()>0){ + for(int index=0;index topicList = new ArrayList<>(); +// TODO java.lang.IndexOutOfBoundsException: Index: 38, Size: 38 +// for(int position=0;index0){ + recordTypeEntityArrayList.add(new RecordCaseEntity(0,"自定义A",BadCaseConfig.customTopicList)); + } + caseListAdapter.setData(recordTypeEntityArrayList); + caseListAdapter.notifyDataSetChanged(); + }); + } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java index 125724cc83..7c54e6011c 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java @@ -25,6 +25,7 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.zhjt.mogo_core_function_devatools.R; import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.TopicListAdapter; +import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig; import java.util.ArrayList; import java.util.List; @@ -155,21 +156,23 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL topicListAdapter.notifyDataSetChanged(); } }); - tvSave.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if(recordType!=null){ - Boolean success=CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2,recordType.getId(),addTopicList); - if(Boolean.TRUE.equals(success)){ - ToastUtils.showShort("Topic设置成功"); - dismiss(); - }else{ - ToastUtils.showShort("Topic设置失败"); + tvSave.setOnClickListener(v -> { + if(recordType!=null){ + Boolean success=CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2,recordType.getId(),addTopicList); + if(Boolean.TRUE.equals(success)){ + ToastUtils.showShort("Topic设置成功"); + if(recordType.getId() == 0){ + //自定义Topic + BadCaseConfig.customTopicList.addAll(addTopicList); } + addTopicList.clear(); + dismiss(); + }else{ + ToastUtils.showShort("Topic设置失败"); } - - } + + }); tvCancel.setOnClickListener(v -> { @@ -183,9 +186,13 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL ThreadUtils.runOnUiThread(() -> { if(config.getAllTopicsCount()>0){ for(int index=0;index() { - private var data:List? = null + private var data:List? = null + private var caseClickListener: CaseClickListener?=null - fun setData( data: List?){ + fun setData( data: List?){ this.data = data } + fun setListener(listener: CaseClickListener){ + caseClickListener = listener + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CaseListHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_case_list, parent, false) @@ -27,10 +33,10 @@ class CaseListAdapter: RecyclerView.Adapter() { } override fun onBindViewHolder(holder: CaseListHolder, position: Int) { - data?.let { - holder.caseName.text = it[position] + data?.let {recordCaseEntity-> + holder.caseName.text = recordCaseEntity[position].caseName holder.caseName.setOnClickListener { - + caseClickListener?.onClick(recordCaseEntity[position]) } } } @@ -40,4 +46,9 @@ class CaseListAdapter: RecyclerView.Adapter() { class CaseListHolder(itemView: View) : RecyclerView.ViewHolder(itemView){ var caseName: TextView = itemView.findViewById(R.id.caseName) } + + interface CaseClickListener{ + fun onClick(recordCaseEntity: RecordCaseEntity) + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt index 5ea74fecef..44c7041d9a 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt @@ -27,7 +27,10 @@ object BadCaseConfig { //工控机版本 @JvmField var dockerVersion:String ?= null - + @JvmField var recordKeyList:ArrayList = ArrayList() + //自定义Topic清单列表 + @JvmField + var customTopicList: ArrayList = ArrayList() } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt index 4c310c0302..1476cf959e 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 @@ -42,6 +42,11 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo MogoAiCloudSocketManager.getInstance(AbsMogoApplication.getApp().applicationContext) .registerOnMessageListener(FUNC_CONFIG_TYPE, this) CallerAutopilotCarConfigListenerManager.addListener(TAG, this) + + //未连接到工控,默认配置 + val bizJson = SPUtils.getInstance("biz_config") + .getString("config", GsonUtils.toJson(defaultFuncConfig())) + refreshConfig(GsonUtils.fromJson(bizJson, FuncConfig::class.java)) } override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) { @@ -49,12 +54,7 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo UiThreadHandler.post { funcConfigNetWorkModel.requestFuncConfig(carConfigResp.macAddress, { SPUtils.getInstance("biz_config").put("config", GsonUtils.toJson(it)) - refreshConfig(it) - }, { - val bizJson = SPUtils.getInstance("biz_config") - .getString("config", GsonUtils.toJson(defaultFuncConfig())) - refreshConfig(GsonUtils.fromJson(bizJson, FuncConfig::class.java)) - }) + refreshConfig(it) }, {}) } } else { ToastUtils.showLong("未获取到域控mac信息") diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt index 82bd32a5dc..1d0d9ef98b 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt @@ -15,7 +15,7 @@ object FuncConfigImpl { fun init() { CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener(FOUNDATION, - TAG, + TAG,false, object : IMoGoDevaToolsFuncConfigListener { override fun updateBizData( type: String, 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 10540e4e12..694f4a0b4b 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,6 +34,7 @@ class FuncConfigNetWorkModel { if (error == null) { error = onError } + //todo test map["sn"] = MoGoAiCloudClientConfig.getInstance().sn map["mac"] = DeviceUtils.getMacAddress() map["channelVersion"] = FuncConfigConst.getChannelCode() diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml index 69ce03fc84..34274090ab 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml @@ -1,7 +1,7 @@ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml index 67a58891b6..0041cf0c4a 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml index 3c9e609e2d..9e085c3874 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml @@ -315,20 +315,11 @@ app:layout_constraintLeft_toLeftOf="@id/tvRecordTemplate" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/tvRecordTemplate" + app:layout_constraintBottom_toBottomOf="parent" android:background="@drawable/template_list_bg" android:layout_marginTop="@dimen/dp_50" - android:paddingBottom="20dp" - /> - - 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 f055703288..f0201eb236 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 @@ -84,6 +84,7 @@ 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.StatusBarView 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 @@ -134,6 +135,10 @@ class MoGoHmiFragment : MvpFragment(), private var mSOPSettingViewFloat: WarningFloat.Builder? = null private var mSOPSettingView: SOPSettingView? = null + //StatusView + private var statusBarViewFloat: WarningFloat.Builder? = null + private var statusBarView: StatusBarView? = null + private var mNoticeFloat: WarningFloat.Builder? = null // 超视距、路侧、前车直播 @@ -193,13 +198,15 @@ class MoGoHmiFragment : MvpFragment(), } override fun initViews() { + toggleStatusBarView() + initViewShowWithConfig() //设置StatusBar初始状态 if (FunctionBuildConfig.isDemoMode) { - viewStatusBar.updateRightView(true, "demoMode", DemoModeView(requireContext())) + statusBarView?.updateRightView(true, "demoMode", DemoModeView(requireContext())) } else { - viewStatusBar.updateRightView(false, "demoMode", DemoModeView(requireContext())) + statusBarView?.updateRightView(false, "demoMode", DemoModeView(requireContext())) } ivCameraIcon?.setOnClickListener { @@ -424,11 +431,11 @@ class MoGoHmiFragment : MvpFragment(), } override fun setStatusBarDarkOrLight(light: Boolean) { - viewStatusBar.setStatusBarDarkOrLight(light) + statusBarView?.setStatusBarDarkOrLight(light) } override fun updateStatusBarRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) { - viewStatusBar.updateRightView(insert, tag, viewGroup) + statusBarView?.updateRightView(insert, tag, viewGroup) } /** @@ -686,7 +693,6 @@ class MoGoHmiFragment : MvpFragment(), } } - override fun toggleSOPView() { activity?.let{ if(mSOPSettingViewFloat!= null){ @@ -738,6 +744,52 @@ class MoGoHmiFragment : MvpFragment(), } } + private fun toggleStatusBarView() { + activity?.let{ + if(statusBarViewFloat!= null){ + WarningFloat.dismiss(statusBarViewFloat!!.config.floatTag, false) + statusBarViewFloat = null + statusBarView = null + }else{ + if (statusBarView == null){ + statusBarView = StatusBarView(it) + } + val side = TOP + val gravity = Gravity.TOP + statusBarViewFloat = WarningFloat.with(it) + .setTag("statusBarView") + .setLayout(statusBarView!!) + .setSidePattern(side) + .setWindowWidth(ScreenUtils.getScreenWidth()) + .setWindowHeight(BarUtils.getStatusBarHeight()) + .setGravity(gravity, 0) + .setImmersionStatusBar(true) + .setAnimator(object : DefaultAnimator() { + override fun enterAnim( + view: View, + params: LayoutParams, + windowManager: WindowManager, + sidePattern: SidePattern + ): Animator? = + super.enterAnim(view, params, windowManager, sidePattern) + ?.apply { + interpolator = LinearInterpolator() + } + + override fun exitAnim( + view: View, + params: LayoutParams, + windowManager: WindowManager, + sidePattern: SidePattern + ): Animator? = + super.exitAnim(view, params, windowManager, sidePattern) + ?.setDuration(200) + }) + .show() + } + } + } + /** * 展示VR下V2X预警 * 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 dc8647fd0a..4a764781c9 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 @@ -196,9 +196,7 @@ class DebugSettingView @JvmOverloads constructor( //添加 业务配置监听 CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener( - FuncBizConfig.FOUNDATION, - TAG, - this + FuncBizConfig.FOUNDATION, TAG, true, this ) if (logInfoView != null) { @@ -230,7 +228,7 @@ class DebugSettingView @JvmOverloads constructor( CallerAutopilotVehicleStateListenerManager.removeListener(TAG) // 移除 业务配置监听 - CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(this) + CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener( FuncBizConfig.FOUNDATION, TAG) if (logInfoView != null) { logInfoView!!.onEnterBackground() @@ -568,6 +566,10 @@ class DebugSettingView @JvmOverloads constructor( } } + Log.i( + "1026-emArrow", + "debug setting FunctionBuildConfig.isDemoMode : ${FunctionBuildConfig.isDemoMode}" + ) // 演示模式,上一次勾选的数据 tbIsDemoMode.isChecked = FunctionBuildConfig.isDemoMode @@ -1855,7 +1857,7 @@ class DebugSettingView @JvmOverloads constructor( } } - override fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) { + override fun updateBizView(type: String, lock: Boolean) { when (type) { BIZ_BEAUTY_MODE -> { tbIsDemoMode.isClickable = !lock diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index 57d2c9111f..f77c252142 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -28,7 +28,7 @@ class SOPSettingView @JvmOverloads constructor( defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoDevaToolsFuncConfigListener { - companion object{ + companion object { const val TAG = "SOPSettingView" } @@ -51,7 +51,7 @@ class SOPSettingView @JvmOverloads constructor( FunctionBuildConfig.isPNCWarning = isChecked } - if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { tbMarkingObstacles.visibility = View.GONE } @@ -71,9 +71,9 @@ class SOPSettingView @JvmOverloads constructor( //红绿灯标识 tbTrafficLight.isChecked = HmiBuildConfig.isShowTrafficLightView tbTrafficLight.setOnCheckedChangeListener { _, isChecked -> - if(!isChecked){ + if (!isChecked) { HmiBuildConfig.isShowTrafficLightView = false - }else{ + } else { HmiBuildConfig.isShowTrafficLightView = true CallerHmiManager.disableWarningTrafficLight() } @@ -82,9 +82,9 @@ class SOPSettingView @JvmOverloads constructor( //限速标识 tbSpeedLimit.isChecked = HmiBuildConfig.isShowLimitingVelocityView tbSpeedLimit.setOnCheckedChangeListener { _, isChecked -> - if(isChecked){ + if (isChecked) { HmiBuildConfig.isShowLimitingVelocityView = true - }else{ + } else { HmiBuildConfig.isShowLimitingVelocityView = false CallerHmiManager.disableLimitingVelocity() } @@ -122,13 +122,13 @@ class SOPSettingView @JvmOverloads constructor( //OBU控制总开关 tbObu.isChecked = CallerOBUManager.isConnected() tbObu.setOnCheckedChangeListener { _, isChecked -> - if(!isChecked){ - if(AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)){ + if (!isChecked) { + if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) { CallerOBUManager.resetObuIpAddress("192.168.1.199") - }else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + } else if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { CallerOBUManager.resetObuIpAddress("192.168.8.199") } - }else{ + } else { //断开链接 CallerOBUManager.disConnectObu() } @@ -137,31 +137,32 @@ class SOPSettingView @JvmOverloads constructor( //变道绕障的目标障碍物速度阈值 tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" ivSpeedReduce.setOnClickListener { - if(FunctionBuildConfig.detouringSpeed<=3){ + if (FunctionBuildConfig.detouringSpeed <= 3) { ToastUtils.showShort("阈值小可为3 m/s") - }else{ + } else { FunctionBuildConfig.detouringSpeed-- tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" } } ivSpeedAdd.setOnClickListener { - if(FunctionBuildConfig.detouringSpeed>=7){ + if (FunctionBuildConfig.detouringSpeed >= 7) { ToastUtils.showShort("阈值最大可为7 m/s") - }else{ + } else { FunctionBuildConfig.detouringSpeed++ tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" } } btnSpeedSet.setOnClickListener { - val isSuccess = CallerAutoPilotManager.sendDetouringSpeed(FunctionBuildConfig.detouringSpeed.toDouble()) - if(isSuccess == true){ + val isSuccess = + CallerAutoPilotManager.sendDetouringSpeed(FunctionBuildConfig.detouringSpeed.toDouble()) + if (isSuccess == true) { ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置成功") - }else{ + } else { ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置失败") } } - if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { tvSpeedThresholdTitle.visibility = View.GONE ivSpeedReduce.visibility = View.GONE tvSpeed.visibility = View.GONE @@ -175,19 +176,17 @@ class SOPSettingView @JvmOverloads constructor( super.onAttachedToWindow() //添加 业务配置监听 CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener( - FuncBizConfig.FOUNDATION, - TAG, - this + FuncBizConfig.FOUNDATION, TAG, true, this ) } override fun onDetachedFromWindow() { super.onDetachedFromWindow() // 移除 业务配置监听 - CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(this) + CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(FuncBizConfig.FOUNDATION, TAG) } - override fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) { + override fun updateBizView(type: String, lock: Boolean) { when (type) { FuncBizConfig.BIZ_BEAUTY_MODE -> { tbDemoMode.isClickable = !lock 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 index 95c72f7406..4bb2a24d01 100644 --- 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 @@ -12,10 +12,12 @@ import android.view.LayoutInflater import android.view.View import android.widget.ImageView import android.widget.LinearLayout +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 java.lang.ref.WeakReference -class BatteryGroupView : LinearLayout { +class BatteryGroupView : LinearLayout, IMoGoSkinModeChangeListener { constructor( context: Context, @@ -29,6 +31,7 @@ class BatteryGroupView : LinearLayout { 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 var mSkinMode = 0 private val batteryStateReceiver: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { @@ -49,6 +52,9 @@ class BatteryGroupView : LinearLayout { } companion object { + + const val TAG = "BatteryGroupView" + class BatteryHandler(batteryGroupView: BatteryGroupView) : Handler() { //虚引用 @@ -69,6 +75,10 @@ class BatteryGroupView : LinearLayout { it.batteryView.setCharging(isCharging) if (isCharging) { it.ivBatteryCharge.visibility = View.VISIBLE + when(it.mSkinMode){ + 0 -> it.ivBatteryCharge.setImageResource(R.drawable.battery_charge_light) + 1 -> it.ivBatteryCharge.setImageResource(R.drawable.battery_charge_dark) + } } else { it.ivBatteryCharge.visibility = View.GONE } @@ -83,10 +93,17 @@ class BatteryGroupView : LinearLayout { val intentFilter = IntentFilter() intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED) context.registerReceiver(batteryStateReceiver, intentFilter) + // 添加换肤监听 + CallerSkinModeListenerManager.addListener(TAG, this) } override fun onDetachedFromWindow() { super.onDetachedFromWindow() context.unregisterReceiver(batteryStateReceiver) + CallerSkinModeListenerManager.removeListener(TAG) + } + + override fun onSkinModeChange(skinMode: Int) { + mSkinMode = skinMode } } \ 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 index 0afbea73f0..c88cc7a1bb 100644 --- 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 @@ -8,11 +8,17 @@ import android.graphics.Paint import android.graphics.RectF import android.util.AttributeSet import android.view.View +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 kotlin.math.abs -class BatteryView : View { +class BatteryView : View , IMoGoSkinModeChangeListener { + + companion object{ + const val TAG = "BatteryView" + } private val radius = context.resources.getDimension(R.dimen.dp_4) // 圆角角度 private val border = context.resources.getDimension(R.dimen.dp_3) // 外边缘宽度 @@ -23,8 +29,8 @@ class BatteryView : View { 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 batteryColor = context.resources.getColor(R.color.color_27FFFFFF) // 电量内部颜色 + private var powerColor = Color.WHITE //默认满电 private var mPower = 100 @@ -132,4 +138,28 @@ class BatteryView : View { invalidate() } + override fun onSkinModeChange(skinMode: Int) { + when (skinMode) { + 0 -> { + batteryColor = resources.getColor(R.color.color_27FFFFFF) + powerColor = Color.WHITE + } + 1 -> { + batteryColor = resources.getColor(R.color.color_1E111111) + powerColor = resources.getColor(R.color.color_2C2E30) + } + } + invalidate() + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + // 添加换肤监听 + CallerSkinModeListenerManager.addListener(TAG, this) + } + + 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/StatusBarView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt index 766c2f62b9..4883232087 100644 --- 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 @@ -25,6 +25,9 @@ class StatusBarView @JvmOverloads constructor( init { LayoutInflater.from(context).inflate(R.layout.view_status_bar, this, true) + setOnClickListener { + + } } private val rightViewList = CopyOnWriteArrayList() 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 index 5e45d6c065..c5c11e034a 100644 --- 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 @@ -9,6 +9,8 @@ import android.os.Handler import android.os.Message import android.util.AttributeSet import androidx.appcompat.widget.AppCompatImageView +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 java.lang.ref.WeakReference @@ -17,7 +19,7 @@ class WifiStateView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : AppCompatImageView(context, attrs, defStyleAttr) { +) : AppCompatImageView(context, attrs, defStyleAttr), IMoGoSkinModeChangeListener { companion object { const val TAG = "WifiStateView" @@ -34,15 +36,8 @@ class WifiStateView @JvmOverloads constructor( 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) - } + wifiStateView?.updateView(msg.what) { + wifiStateView.setImageResource(it) } } } @@ -51,6 +46,12 @@ class WifiStateView @JvmOverloads constructor( private var wifiManager: WifiManager? = null private var wifiHandler: WifiHandler? = null + @Volatile + private var mSkinMode: Int = 0 + + @Volatile + private var level: Int = 0 + init { wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager? @@ -62,12 +63,13 @@ class WifiStateView @JvmOverloads constructor( 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) { + || wifiManager!!.wifiState == WifiManager.WIFI_STATE_DISABLING + ) { wifiHandler?.sendEmptyMessage(-1) return } val wifiInfo = wifiManager!!.connectionInfo - val level = WifiManager.calculateSignalLevel(wifiInfo.rssi, 5) + level = WifiManager.calculateSignalLevel(wifiInfo.rssi, 5) wifiHandler?.sendEmptyMessage(level) } } @@ -82,11 +84,44 @@ class WifiStateView @JvmOverloads constructor( //Wifi信号强度变化 intentFilter.addAction(WifiManager.RSSI_CHANGED_ACTION) context.registerReceiver(wifiStateReceiver, intentFilter) + // 添加换肤监听 + CallerSkinModeListenerManager.addListener(TAG, this) } override fun onDetachedFromWindow() { super.onDetachedFromWindow() wifiHandler?.removeCallbacksAndMessages(null) context.unregisterReceiver(wifiStateReceiver) + CallerSkinModeListenerManager.removeListener(TAG) + } + + override fun onSkinModeChange(skinMode: Int) { + mSkinMode = skinMode + wifiHandler?.sendEmptyMessage(level) + } + + fun updateView(wifiState: Int, resId: ((Int) -> Unit)) { + when (mSkinMode) { + 0 -> { + when (wifiState) { + -1 -> resId.invoke(R.drawable.wifi_light_state_close) + 0 -> resId.invoke(R.drawable.wifi_light_state_one) + 1 -> resId.invoke(R.drawable.wifi_light_state_two) + 2 -> resId.invoke(R.drawable.wifi_light_state_three) + 3 -> resId.invoke(R.drawable.wifi_light_state_four) + 4 -> resId.invoke(R.drawable.wifi_light_state_five) + } + } + 1 -> { + when (wifiState) { + -1 -> resId.invoke(R.drawable.wifi_light_state_close) + 0 -> resId.invoke(R.drawable.wifi_dark_state_one) + 1 -> resId.invoke(R.drawable.wifi_dark_state_two) + 2 -> resId.invoke(R.drawable.wifi_dark_state_three) + 3 -> resId.invoke(R.drawable.wifi_dark_state_four) + 4 -> resId.invoke(R.drawable.wifi_dark_state_five) + } + } + } } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge_dark.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge_dark.png new file mode 100644 index 0000000000..02cea388b5 Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge_dark.png differ 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_light.png similarity index 100% rename from core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge.png rename to core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge_light.png diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_five.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_five.png new file mode 100644 index 0000000000..35355cfe86 Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_five.png differ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_four.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_four.png new file mode 100644 index 0000000000..5d468b24fc Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_four.png differ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_one.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_one.png new file mode 100644 index 0000000000..df81af8117 Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_one.png differ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_three.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_three.png new file mode 100644 index 0000000000..ab0c000aab Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_three.png differ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_two.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_two.png new file mode 100644 index 0000000000..351b04b150 Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_dark_state_two.png differ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml index 321a8106ac..45d79417e2 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml @@ -6,14 +6,6 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml index d95264b1c7..5644c7fbec 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml @@ -1,183 +1,200 @@ - - - + + - - - - - - - - + android:layout_height="match_parent" + tools:ignore="UselessParent"> - + - + + + + + + + + + + - + - + - + - + - + -