Merge branch 'dev_arch_opt_3.0' into dev_robosweeper-d_app-module_221230_1.1.0
This commit is contained in:
@@ -51,7 +51,7 @@
|
|||||||
<!--pnc行为决策-->
|
<!--pnc行为决策-->
|
||||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="@dimen/dp_100"
|
||||||
android:layout_marginBottom="@dimen/dp_110"
|
android:layout_marginBottom="@dimen/dp_110"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import androidx.constraintlayout.widget.Group;
|
|||||||
import com.mogo.commons.mvp.IView;
|
import com.mogo.commons.mvp.IView;
|
||||||
import com.mogo.commons.mvp.MvpFragment;
|
import com.mogo.commons.mvp.MvpFragment;
|
||||||
import com.mogo.commons.mvp.Presenter;
|
import com.mogo.commons.mvp.Presenter;
|
||||||
|
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener;
|
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener;
|
||||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
|
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.autopilot.CallerAutoPilotStatusListenerManager;
|
||||||
@@ -29,6 +30,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener
|
|||||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
|
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
|
||||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
|
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
|
||||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||||
|
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager;
|
||||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView;
|
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView;
|
||||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView;
|
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView;
|
||||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
|
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
|
||||||
@@ -38,6 +40,7 @@ import com.mogo.eagle.core.function.view.MapBizView;
|
|||||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||||
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
|
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
|
||||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||||
|
import com.mogo.map.MogoMapUIController;
|
||||||
import com.mogo.map.listener.IMogoMapListener;
|
import com.mogo.map.listener.IMogoMapListener;
|
||||||
import com.mogo.map.listener.MogoMapListenerHandler;
|
import com.mogo.map.listener.MogoMapListenerHandler;
|
||||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||||
@@ -51,6 +54,8 @@ import com.mogo.och.common.module.utils.SoundPoolHelper;
|
|||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import mogo.telematics.pad.MessagePad;
|
import mogo.telematics.pad.MessagePad;
|
||||||
import record_cache.RecordPanelOuterClass;
|
import record_cache.RecordPanelOuterClass;
|
||||||
|
|
||||||
@@ -141,10 +146,18 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
|
|||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
//切换地图的远近视图
|
//切换地图的远近视图
|
||||||
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
||||||
|
CallerVisualAngleManager.INSTANCE.updateLongSightLevel(false);
|
||||||
|
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(true);
|
||||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
|
||||||
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
|
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
|
||||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
CallerVisualAngleManager.INSTANCE.updateLongSightLevel(true);
|
||||||
|
if (FunctionBuildConfig.isRomaMode) {
|
||||||
|
controller.setRomaMode(1);
|
||||||
|
} else {
|
||||||
|
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(false);
|
||||||
|
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||||
|
}
|
||||||
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
|
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
|
||||||
} else {
|
} else {
|
||||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
<!--pnc行为决策-->
|
<!--pnc行为决策-->
|
||||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="@dimen/dp_100"
|
||||||
android:layout_marginBottom="@dimen/dp_110"
|
android:layout_marginBottom="@dimen/dp_110"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
|||||||
@@ -251,7 +251,7 @@
|
|||||||
<!--pnc行为决策-->
|
<!--pnc行为决策-->
|
||||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="@dimen/dp_100"
|
||||||
android:layout_marginBottom="@dimen/dp_110"
|
android:layout_marginBottom="@dimen/dp_110"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
<!--pnc行为决策-->
|
<!--pnc行为决策-->
|
||||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="@dimen/dp_100"
|
||||||
android:layout_marginBottom="@dimen/dp_110"
|
android:layout_marginBottom="@dimen/dp_110"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package com.mogo.och.taxi.passenger.model;
|
package com.mogo.och.taxi.passenger.model;
|
||||||
|
|
||||||
|
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import com.amap.api.services.core.AMapException;
|
import com.amap.api.services.core.AMapException;
|
||||||
@@ -17,8 +19,6 @@ import java.util.List;
|
|||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
|
|
||||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: wangmingjun
|
* @author: wangmingjun
|
||||||
* @date: 2021/12/6
|
* @date: 2021/12/6
|
||||||
|
|||||||
@@ -14,10 +14,12 @@ import androidx.fragment.app.FragmentTransaction;
|
|||||||
|
|
||||||
import com.mogo.commons.module.status.MogoStatusManager;
|
import com.mogo.commons.module.status.MogoStatusManager;
|
||||||
import com.mogo.commons.mvp.MvpFragment;
|
import com.mogo.commons.mvp.MvpFragment;
|
||||||
|
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
|
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.autopilot.CallerAutoPilotStatusListenerManager;
|
||||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||||
import com.mogo.eagle.core.function.call.map.CallerSmpManager;
|
import com.mogo.eagle.core.function.call.map.CallerSmpManager;
|
||||||
|
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager;
|
||||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxBubbleView;
|
import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxBubbleView;
|
||||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxButtonView;
|
import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxButtonView;
|
||||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxListView;
|
import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxListView;
|
||||||
@@ -40,6 +42,7 @@ import org.greenrobot.eventbus.Subscribe;
|
|||||||
import org.greenrobot.eventbus.ThreadMode;
|
import org.greenrobot.eventbus.ThreadMode;
|
||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -147,10 +150,18 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
|
|||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
//切换地图的远近视图
|
//切换地图的远近视图
|
||||||
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
||||||
|
CallerVisualAngleManager.INSTANCE.updateLongSightLevel(false);
|
||||||
|
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(true);
|
||||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||||
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_medium);
|
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_medium);
|
||||||
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
|
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
|
||||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
CallerVisualAngleManager.INSTANCE.updateLongSightLevel(true);
|
||||||
|
if (FunctionBuildConfig.isRomaMode) {
|
||||||
|
controller.setRomaMode(1);
|
||||||
|
} else {
|
||||||
|
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(false);
|
||||||
|
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||||
|
}
|
||||||
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_long);
|
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_long);
|
||||||
} else {
|
} else {
|
||||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
<!--pnc行为决策-->
|
<!--pnc行为决策-->
|
||||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="@dimen/dp_100"
|
||||||
android:layout_marginBottom="@dimen/dp_110"
|
android:layout_marginBottom="@dimen/dp_110"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import androidx.fragment.app.FragmentTransaction;
|
|||||||
import com.mogo.commons.mvp.IView;
|
import com.mogo.commons.mvp.IView;
|
||||||
import com.mogo.commons.mvp.MvpFragment;
|
import com.mogo.commons.mvp.MvpFragment;
|
||||||
import com.mogo.commons.mvp.Presenter;
|
import com.mogo.commons.mvp.Presenter;
|
||||||
|
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener;
|
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener;
|
||||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
|
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.autopilot.CallerAutoPilotStatusListenerManager;
|
||||||
@@ -32,6 +33,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener
|
|||||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
|
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
|
||||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
|
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
|
||||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||||
|
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager;
|
||||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView;
|
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView;
|
||||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView;
|
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView;
|
||||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
|
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
|
||||||
@@ -41,6 +43,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
|||||||
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
|
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
|
||||||
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||||
|
import com.mogo.map.MogoMapUIController;
|
||||||
import com.mogo.map.listener.IMogoMapListener;
|
import com.mogo.map.listener.IMogoMapListener;
|
||||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||||
import com.mogo.map.uicontroller.VisualAngleMode;
|
import com.mogo.map.uicontroller.VisualAngleMode;
|
||||||
@@ -48,6 +51,7 @@ import com.mogo.och.common.module.utils.AnimatorDrawableUtil;
|
|||||||
import com.mogo.och.taxi.R;
|
import com.mogo.och.taxi.R;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import mogo.telematics.pad.MessagePad;
|
import mogo.telematics.pad.MessagePad;
|
||||||
import record_cache.RecordPanelOuterClass;
|
import record_cache.RecordPanelOuterClass;
|
||||||
@@ -192,10 +196,18 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
|||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
//切换地图的远近视图
|
//切换地图的远近视图
|
||||||
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
if (controller.getCurrentMapVisualAngle().isLongSight()) {
|
||||||
|
CallerVisualAngleManager.INSTANCE.updateLongSightLevel(false);
|
||||||
|
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(true);
|
||||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
|
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
|
||||||
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
|
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
|
||||||
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
CallerVisualAngleManager.INSTANCE.updateLongSightLevel(true);
|
||||||
|
if (FunctionBuildConfig.isRomaMode) {
|
||||||
|
controller.setRomaMode(1);
|
||||||
|
} else {
|
||||||
|
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(false);
|
||||||
|
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||||
|
}
|
||||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_long);
|
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_long);
|
||||||
} else {
|
} else {
|
||||||
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
|
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
|
||||||
|
|||||||
@@ -120,7 +120,7 @@
|
|||||||
<!--pnc行为决策-->
|
<!--pnc行为决策-->
|
||||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="@dimen/dp_100"
|
||||||
android:layout_marginBottom="@dimen/dp_110"
|
android:layout_marginBottom="@dimen/dp_110"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
|||||||
@@ -158,6 +158,12 @@ android {
|
|||||||
storePassword 'ZDauto123456'
|
storePassword 'ZDauto123456'
|
||||||
keyPassword 'ZDauto123456'
|
keyPassword 'ZDauto123456'
|
||||||
}
|
}
|
||||||
|
releaseEB5 {
|
||||||
|
keyAlias = 'android_platform'
|
||||||
|
storeFile file('../keystore/EB5/car_launcher.jks')
|
||||||
|
storePassword 'ZDauto123456'
|
||||||
|
keyPassword 'ZDauto123456'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
buildTypes {
|
buildTypes {
|
||||||
debug {
|
debug {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ project.android.productFlavors {
|
|||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndk {
|
ndk {
|
||||||
// 设置支持的SO库架构
|
// 设置支持的SO库架构
|
||||||
abiFilters "armeabi-v7a", "arm64-v8a"
|
abiFilters "armeabi-v7a", "arm64-v8a"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
||||||
@@ -18,7 +18,12 @@ project.android.productFlavors {
|
|||||||
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
||||||
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
||||||
//高德地图鉴权信息
|
//高德地图鉴权信息
|
||||||
manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fPadLenovoOchBus",ACTIVITY_ROOT:true]
|
manifestPlaceholders = [
|
||||||
|
AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue,
|
||||||
|
CHANNEL_VALUE : "fPadLenovoOchBus",
|
||||||
|
ACTIVITY_ROOT : true,
|
||||||
|
SCREEN_ORIENTATION: "landscape"
|
||||||
|
]
|
||||||
|
|
||||||
// 是否需要实时上报坐标
|
// 是否需要实时上报坐标
|
||||||
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ project.android.productFlavors {
|
|||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndk {
|
ndk {
|
||||||
// 设置支持的SO库架构
|
// 设置支持的SO库架构
|
||||||
abiFilters "armeabi-v7a", "arm64-v8a"
|
abiFilters "armeabi-v7a", "arm64-v8a"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
||||||
@@ -17,8 +17,18 @@ project.android.productFlavors {
|
|||||||
|
|
||||||
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
||||||
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
||||||
//高德地图鉴权信息
|
|
||||||
manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fPadLenovoOchTaxi",ACTIVITY_ROOT:true]
|
// 配置AndroidManifest.xml中用到的参数
|
||||||
|
manifestPlaceholders = [
|
||||||
|
// 高德地图鉴权信息
|
||||||
|
AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue,
|
||||||
|
// BUGLY_APP_CHANNEL
|
||||||
|
CHANNEL_VALUE : "fPadLenovoOchTaxi",
|
||||||
|
// 在启动的时候把Task给清空
|
||||||
|
ACTIVITY_ROOT : true,
|
||||||
|
// Activity的朝向
|
||||||
|
SCREEN_ORIENTATION: "landscape"
|
||||||
|
]
|
||||||
|
|
||||||
// 是否需要实时上报坐标
|
// 是否需要实时上报坐标
|
||||||
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ project.android.productFlavors {
|
|||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndk {
|
ndk {
|
||||||
// 设置支持的SO库架构
|
// 设置支持的SO库架构
|
||||||
abiFilters "armeabi-v7a", "arm64-v8a"
|
abiFilters "armeabi-v7a", "arm64-v8a"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
||||||
@@ -15,8 +15,17 @@ project.android.productFlavors {
|
|||||||
|
|
||||||
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
||||||
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
||||||
// 高德地图鉴权信息
|
// 配置AndroidManifest.xml中用到的参数
|
||||||
manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fPadLenovo",ACTIVITY_ROOT:true]
|
manifestPlaceholders = [
|
||||||
|
// 高德地图鉴权信息
|
||||||
|
AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue,
|
||||||
|
// BUGLY_APP_CHANNEL
|
||||||
|
CHANNEL_VALUE : "fPadLenovo",
|
||||||
|
// 在启动的时候把Task给清空
|
||||||
|
ACTIVITY_ROOT : true,
|
||||||
|
// Activity的朝向
|
||||||
|
SCREEN_ORIENTATION: "landscape"
|
||||||
|
]
|
||||||
|
|
||||||
// 是否需要实时上报坐标
|
// 是否需要实时上报坐标
|
||||||
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ project.android.productFlavors {
|
|||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndk {
|
ndk {
|
||||||
// 设置支持的SO库架构
|
// 设置支持的SO库架构
|
||||||
abiFilters "armeabi-v7a", "arm64-v8a"
|
abiFilters "armeabi-v7a", "arm64-v8a"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
||||||
@@ -17,8 +17,18 @@ project.android.productFlavors {
|
|||||||
|
|
||||||
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
||||||
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
||||||
//高德地图鉴权信息
|
|
||||||
manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fPadLenovoOchBus",ACTIVITY_ROOT:true]
|
// 配置AndroidManifest.xml中用到的参数
|
||||||
|
manifestPlaceholders = [
|
||||||
|
// 高德地图鉴权信息
|
||||||
|
AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue,
|
||||||
|
// BUGLY_APP_CHANNEL
|
||||||
|
CHANNEL_VALUE : "fPadLenovoOchBus",
|
||||||
|
// 在启动的时候把Task给清空
|
||||||
|
ACTIVITY_ROOT : true,
|
||||||
|
// Activity的朝向
|
||||||
|
SCREEN_ORIENTATION: "landscape"
|
||||||
|
]
|
||||||
|
|
||||||
// 是否需要实时上报坐标
|
// 是否需要实时上报坐标
|
||||||
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ project.android.productFlavors {
|
|||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndk {
|
ndk {
|
||||||
// 设置支持的SO库架构
|
// 设置支持的SO库架构
|
||||||
abiFilters "armeabi-v7a", "arm64-v8a"
|
abiFilters "armeabi-v7a", "arm64-v8a"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
||||||
@@ -15,8 +15,18 @@ project.android.productFlavors {
|
|||||||
|
|
||||||
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
||||||
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
||||||
//高德地图鉴权信息
|
|
||||||
manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fPadLenovoOchBusPassenger",ACTIVITY_ROOT:true]
|
// 配置AndroidManifest.xml中用到的参数
|
||||||
|
manifestPlaceholders = [
|
||||||
|
// 高德地图鉴权信息
|
||||||
|
AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue,
|
||||||
|
// BUGLY_APP_CHANNEL
|
||||||
|
CHANNEL_VALUE : "fPadLenovoOchBusPassenger",
|
||||||
|
// 在启动的时候把Task给清空
|
||||||
|
ACTIVITY_ROOT : true,
|
||||||
|
// Activity的朝向
|
||||||
|
SCREEN_ORIENTATION: "landscape"
|
||||||
|
]
|
||||||
|
|
||||||
// 是否需要实时上报坐标
|
// 是否需要实时上报坐标
|
||||||
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ project.android.productFlavors {
|
|||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndk {
|
ndk {
|
||||||
// 设置支持的SO库架构
|
// 设置支持的SO库架构
|
||||||
abiFilters "armeabi-v7a", "arm64-v8a"
|
abiFilters "armeabi-v7a", "arm64-v8a"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
||||||
@@ -17,8 +17,18 @@ project.android.productFlavors {
|
|||||||
|
|
||||||
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
||||||
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
||||||
//高德地图鉴权信息
|
|
||||||
manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fPadLenovoOchSweeper",ACTIVITY_ROOT:true]
|
// 配置AndroidManifest.xml中用到的参数
|
||||||
|
manifestPlaceholders = [
|
||||||
|
// 高德地图鉴权信息
|
||||||
|
AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue,
|
||||||
|
// BUGLY_APP_CHANNEL
|
||||||
|
CHANNEL_VALUE : "fPadLenovoOchSweeper",
|
||||||
|
// 在启动的时候把Task给清空
|
||||||
|
ACTIVITY_ROOT : true,
|
||||||
|
// Activity的朝向
|
||||||
|
SCREEN_ORIENTATION: "landscape"
|
||||||
|
]
|
||||||
|
|
||||||
// 是否需要实时上报坐标
|
// 是否需要实时上报坐标
|
||||||
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ project.android.productFlavors {
|
|||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndk {
|
ndk {
|
||||||
// 设置支持的SO库架构
|
// 设置支持的SO库架构
|
||||||
abiFilters "armeabi-v7a", "arm64-v8a"
|
abiFilters "armeabi-v7a", "arm64-v8a"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
||||||
@@ -18,8 +18,18 @@ project.android.productFlavors {
|
|||||||
|
|
||||||
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
||||||
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
||||||
//高德地图鉴权信息
|
|
||||||
manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fPadLenovoOchTaxi",ACTIVITY_ROOT:true]
|
// 配置AndroidManifest.xml中用到的参数
|
||||||
|
manifestPlaceholders = [
|
||||||
|
// 高德地图鉴权信息
|
||||||
|
AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue,
|
||||||
|
// BUGLY_APP_CHANNEL
|
||||||
|
CHANNEL_VALUE : "fPadLenovoOchTaxi",
|
||||||
|
// 在启动的时候把Task给清空
|
||||||
|
ACTIVITY_ROOT : true,
|
||||||
|
// Activity的朝向
|
||||||
|
SCREEN_ORIENTATION: "landscape"
|
||||||
|
]
|
||||||
|
|
||||||
// 是否需要实时上报坐标
|
// 是否需要实时上报坐标
|
||||||
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ project.android.productFlavors {
|
|||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndk {
|
ndk {
|
||||||
// 设置支持的SO库架构
|
// 设置支持的SO库架构
|
||||||
abiFilters "armeabi-v7a", "arm64-v8a"
|
abiFilters "armeabi-v7a", "arm64-v8a"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo
|
||||||
@@ -17,8 +17,18 @@ project.android.productFlavors {
|
|||||||
|
|
||||||
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
// 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0
|
||||||
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
|
||||||
//高德地图鉴权信息
|
|
||||||
manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fPadLenovoOchTaxiPassenger",ACTIVITY_ROOT:false]
|
// 配置AndroidManifest.xml中用到的参数
|
||||||
|
manifestPlaceholders = [
|
||||||
|
// 高德地图鉴权信息
|
||||||
|
AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue,
|
||||||
|
// BUGLY_APP_CHANNEL
|
||||||
|
CHANNEL_VALUE : "fPadLenovoOchTaxiPassenger",
|
||||||
|
// 在启动的时候把Task给清空
|
||||||
|
ACTIVITY_ROOT : false,
|
||||||
|
// Activity的朝向
|
||||||
|
SCREEN_ORIENTATION: "landscape"
|
||||||
|
]
|
||||||
|
|
||||||
// 是否需要实时上报坐标
|
// 是否需要实时上报坐标
|
||||||
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
|
||||||
|
|||||||
@@ -15,7 +15,10 @@ import com.zhidao.adas.client.bean.FSMFunctionStates;
|
|||||||
import com.zhidao.adas.client.bean.GlobalPathResp;
|
import com.zhidao.adas.client.bean.GlobalPathResp;
|
||||||
import com.zhidao.adas.client.bean.GnssInfo;
|
import com.zhidao.adas.client.bean.GnssInfo;
|
||||||
import com.zhidao.adas.client.bean.MogoReportMessage;
|
import com.zhidao.adas.client.bean.MogoReportMessage;
|
||||||
import com.zhidao.adas.client.bean.ObuWarningData;
|
import com.zhidao.adas.client.bean.ObuMap;
|
||||||
|
import com.zhidao.adas.client.bean.ObuRsi;
|
||||||
|
import com.zhidao.adas.client.bean.ObuRsm;
|
||||||
|
import com.zhidao.adas.client.bean.ObuSpat;
|
||||||
import com.zhidao.adas.client.bean.OriginalPointCloudData;
|
import com.zhidao.adas.client.bean.OriginalPointCloudData;
|
||||||
import com.zhidao.adas.client.bean.PerceptionTrafficLight;
|
import com.zhidao.adas.client.bean.PerceptionTrafficLight;
|
||||||
import com.zhidao.adas.client.bean.PlanningDecisionState;
|
import com.zhidao.adas.client.bean.PlanningDecisionState;
|
||||||
@@ -126,7 +129,10 @@ public class DataDistribution {
|
|||||||
public final List<DataShow> listFSMFunctionStates = new ArrayList<>();
|
public final List<DataShow> listFSMFunctionStates = new ArrayList<>();
|
||||||
public final List<DataShow> listRoboSweeperTaskIndex = new ArrayList<>();
|
public final List<DataShow> listRoboSweeperTaskIndex = new ArrayList<>();
|
||||||
public final List<DataShow> listBagManagerCmd = new ArrayList<>();
|
public final List<DataShow> listBagManagerCmd = new ArrayList<>();
|
||||||
public final List<DataShow> listObuWarningData = new ArrayList<>();
|
public final List<DataShow> listObuSpat = new ArrayList<>();
|
||||||
|
public final List<DataShow> listObuRsi = new ArrayList<>();
|
||||||
|
public final List<DataShow> listObuRsm = new ArrayList<>();
|
||||||
|
public final List<DataShow> listObuMap = new ArrayList<>();
|
||||||
|
|
||||||
private long listTrajectorySize = 0;
|
private long listTrajectorySize = 0;
|
||||||
private long listTrackedObjectsSize = 0;
|
private long listTrackedObjectsSize = 0;
|
||||||
@@ -150,7 +156,11 @@ public class DataDistribution {
|
|||||||
private long listFSMFunctionStatesSize = 0;
|
private long listFSMFunctionStatesSize = 0;
|
||||||
private long listRoboSweeperTaskIndexSize = 0;
|
private long listRoboSweeperTaskIndexSize = 0;
|
||||||
private long listBagManagerCmdSize = 0;
|
private long listBagManagerCmdSize = 0;
|
||||||
private long listObuWarningDataSize = 0;
|
private long listObuSpatSize = 0;
|
||||||
|
private long listObuRsiSize = 0;
|
||||||
|
private long listObuRsmSize = 0;
|
||||||
|
private long listObuMapSize = 0;
|
||||||
|
|
||||||
|
|
||||||
public void clearCount() {
|
public void clearCount() {
|
||||||
listTrajectorySize = 1;
|
listTrajectorySize = 1;
|
||||||
@@ -175,7 +185,10 @@ public class DataDistribution {
|
|||||||
listFSMFunctionStatesSize = 1;
|
listFSMFunctionStatesSize = 1;
|
||||||
listRoboSweeperTaskIndexSize = 1;
|
listRoboSweeperTaskIndexSize = 1;
|
||||||
listBagManagerCmdSize = 1;
|
listBagManagerCmdSize = 1;
|
||||||
listObuWarningDataSize = 1;
|
listObuSpatSize = 1;
|
||||||
|
listObuRsiSize = 1;
|
||||||
|
listObuRsmSize = 1;
|
||||||
|
listObuMapSize = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String cutDown(String str) {
|
public String cutDown(String str) {
|
||||||
@@ -228,12 +241,36 @@ public class DataDistribution {
|
|||||||
if (listener != null && Constants.TITLE.RECEIVE_PLANNING_DECISION_STATE.equals(listener.first)) {
|
if (listener != null && Constants.TITLE.RECEIVE_PLANNING_DECISION_STATE.equals(listener.first)) {
|
||||||
listener.second.onRefresh();
|
listener.second.onRefresh();
|
||||||
}
|
}
|
||||||
} else if (data instanceof ObuWarningData) {
|
} else if (data instanceof ObuSpat) {
|
||||||
listObuWarningData.add(0, new DataShow(listObuWarningDataSize++, time + str));
|
listObuSpat.add(0, new DataShow(listObuSpatSize++, time + str));
|
||||||
if (listObuWarningData.size() > LIST_SIZE) {
|
if (listObuSpat.size() > LIST_SIZE) {
|
||||||
listObuWarningData.remove(listObuWarningData.size() - 1);
|
listObuSpat.remove(listObuSpat.size() - 1);
|
||||||
}
|
}
|
||||||
if (listener != null && Constants.TITLE.RECEIVE_OBU_WARNING_DATA.equals(listener.first)) {
|
if (listener != null && Constants.TITLE.RECEIVE_OBU_SPAT.equals(listener.first)) {
|
||||||
|
listener.second.onRefresh();
|
||||||
|
}
|
||||||
|
} else if (data instanceof ObuRsi) {
|
||||||
|
listObuRsi.add(0, new DataShow(listObuRsiSize++, time + str));
|
||||||
|
if (listObuRsi.size() > LIST_SIZE) {
|
||||||
|
listObuRsi.remove(listObuRsi.size() - 1);
|
||||||
|
}
|
||||||
|
if (listener != null && Constants.TITLE.RECEIVE_OBU_RSI.equals(listener.first)) {
|
||||||
|
listener.second.onRefresh();
|
||||||
|
}
|
||||||
|
} else if (data instanceof ObuRsm) {
|
||||||
|
listObuRsm.add(0, new DataShow(listObuRsmSize++, time + str));
|
||||||
|
if (listObuRsm.size() > LIST_SIZE) {
|
||||||
|
listObuRsm.remove(listObuRsm.size() - 1);
|
||||||
|
}
|
||||||
|
if (listener != null && Constants.TITLE.RECEIVE_OBU_RSM.equals(listener.first)) {
|
||||||
|
listener.second.onRefresh();
|
||||||
|
}
|
||||||
|
} else if (data instanceof ObuMap) {
|
||||||
|
listObuMap.add(0, new DataShow(listObuMapSize++, time + str));
|
||||||
|
if (listObuMap.size() > LIST_SIZE) {
|
||||||
|
listObuMap.remove(listObuMap.size() - 1);
|
||||||
|
}
|
||||||
|
if (listener != null && Constants.TITLE.RECEIVE_OBU_MAP.equals(listener.first)) {
|
||||||
listener.second.onRefresh();
|
listener.second.onRefresh();
|
||||||
}
|
}
|
||||||
} else if (data instanceof GnssInfo) {
|
} else if (data instanceof GnssInfo) {
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.zhidao.adas.client.bean;
|
||||||
|
|
||||||
|
import com.google.protobuf.TextFormat;
|
||||||
|
import com.mogo.support.obu.ObuScene;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
|
||||||
|
import mogo.telematics.pad.MessagePad;
|
||||||
|
|
||||||
|
public class ObuMap extends BaseInfo {
|
||||||
|
public final ObuScene.MapMatchData bean;
|
||||||
|
|
||||||
|
|
||||||
|
public ObuMap(MessagePad.Header header, ObuScene.MapMatchData bean, SimpleDateFormat sdf) {
|
||||||
|
super("接收", bean.getSerializedSize(), header, sdf);
|
||||||
|
this.bean = bean;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return super.toString() + TextFormat.printer().escapingNonAscii(false).printToString(bean);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.zhidao.adas.client.bean;
|
||||||
|
|
||||||
|
import com.google.protobuf.TextFormat;
|
||||||
|
import com.mogo.support.obu.ObuScene;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
|
||||||
|
import mogo.telematics.pad.MessagePad;
|
||||||
|
|
||||||
|
public class ObuRsi extends BaseInfo {
|
||||||
|
public final ObuScene.RsiWarningData bean;
|
||||||
|
|
||||||
|
|
||||||
|
public ObuRsi(MessagePad.Header header, ObuScene.RsiWarningData bean, SimpleDateFormat sdf) {
|
||||||
|
super("接收", bean.getSerializedSize(), header, sdf);
|
||||||
|
this.bean = bean;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return super.toString() + TextFormat.printer().escapingNonAscii(false).printToString(bean);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.zhidao.adas.client.bean;
|
||||||
|
|
||||||
|
import com.google.protobuf.TextFormat;
|
||||||
|
import com.mogo.support.obu.ObuScene;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
|
||||||
|
import mogo.telematics.pad.MessagePad;
|
||||||
|
|
||||||
|
public class ObuRsm extends BaseInfo {
|
||||||
|
public final ObuScene.RsmWarningData bean;
|
||||||
|
|
||||||
|
|
||||||
|
public ObuRsm(MessagePad.Header header, ObuScene.RsmWarningData bean, SimpleDateFormat sdf) {
|
||||||
|
super("接收", bean.getSerializedSize(), header, sdf);
|
||||||
|
this.bean = bean;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return super.toString() + TextFormat.printer().escapingNonAscii(false).printToString(bean);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.zhidao.adas.client.bean;
|
||||||
|
|
||||||
|
import com.google.protobuf.TextFormat;
|
||||||
|
import com.mogo.support.obu.ObuScene;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
|
||||||
|
import mogo.telematics.pad.MessagePad;
|
||||||
|
|
||||||
|
public class ObuSpat extends BaseInfo {
|
||||||
|
public final ObuScene.SpatWarningData bean;
|
||||||
|
|
||||||
|
|
||||||
|
public ObuSpat(MessagePad.Header header, ObuScene.SpatWarningData bean, SimpleDateFormat sdf) {
|
||||||
|
super("接收", bean.getSerializedSize(), header, sdf);
|
||||||
|
this.bean = bean;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return super.toString() + TextFormat.printer().escapingNonAscii(false).printToString(bean);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -132,8 +132,14 @@ public class InfoFragment extends BaseFragment {
|
|||||||
adapter.setData(DataDistribution.getInstance().listArrivalNotification);
|
adapter.setData(DataDistribution.getInstance().listArrivalNotification);
|
||||||
} else if (Constants.TITLE.RECEIVE_STATUS_QUERY_RESP.equals(title)) {
|
} else if (Constants.TITLE.RECEIVE_STATUS_QUERY_RESP.equals(title)) {
|
||||||
adapter.setData(DataDistribution.getInstance().listStatusInfo);
|
adapter.setData(DataDistribution.getInstance().listStatusInfo);
|
||||||
} else if (Constants.TITLE.RECEIVE_OBU_WARNING_DATA.equals(title)) {
|
} else if (Constants.TITLE.RECEIVE_OBU_SPAT.equals(title)) {
|
||||||
adapter.setData(DataDistribution.getInstance().listObuWarningData);
|
adapter.setData(DataDistribution.getInstance().listObuSpat);
|
||||||
|
} else if (Constants.TITLE.RECEIVE_OBU_RSI.equals(title)) {
|
||||||
|
adapter.setData(DataDistribution.getInstance().listObuRsi);
|
||||||
|
} else if (Constants.TITLE.RECEIVE_OBU_RSM.equals(title)) {
|
||||||
|
adapter.setData(DataDistribution.getInstance().listObuRsm);
|
||||||
|
} else if (Constants.TITLE.RECEIVE_OBU_MAP.equals(title)) {
|
||||||
|
adapter.setData(DataDistribution.getInstance().listObuMap);
|
||||||
} else if (Constants.TITLE.RECEIVE_RECORD_DATA_CONFIG_RESP.equals(title)) {
|
} else if (Constants.TITLE.RECEIVE_RECORD_DATA_CONFIG_RESP.equals(title)) {
|
||||||
adapter.setData(DataDistribution.getInstance().listRecordDataConfig);
|
adapter.setData(DataDistribution.getInstance().listRecordDataConfig);
|
||||||
} else if (Constants.TITLE.RECEIVE_GLOBAL_PATH_RESP.equals(title)) {
|
} else if (Constants.TITLE.RECEIVE_GLOBAL_PATH_RESP.equals(title)) {
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
import androidx.recyclerview.widget.SimpleItemAnimator;
|
import androidx.recyclerview.widget.SimpleItemAnimator;
|
||||||
|
|
||||||
import com.google.protobuf.TextFormat;
|
import com.google.protobuf.TextFormat;
|
||||||
import com.mogo.support.obu.ObuPenetrate;
|
|
||||||
import com.mogo.support.obu.ObuScene;
|
import com.mogo.support.obu.ObuScene;
|
||||||
import com.mogo.telematic.MogoProtocolMsg;
|
import com.mogo.telematic.MogoProtocolMsg;
|
||||||
import com.mogo.telematic.NSDNettyManager;
|
import com.mogo.telematic.NSDNettyManager;
|
||||||
@@ -70,7 +69,10 @@ import com.zhidao.adas.client.bean.GlobalPathResp;
|
|||||||
import com.zhidao.adas.client.bean.GnssInfo;
|
import com.zhidao.adas.client.bean.GnssInfo;
|
||||||
import com.zhidao.adas.client.bean.IPCConnectState;
|
import com.zhidao.adas.client.bean.IPCConnectState;
|
||||||
import com.zhidao.adas.client.bean.MogoReportMessage;
|
import com.zhidao.adas.client.bean.MogoReportMessage;
|
||||||
import com.zhidao.adas.client.bean.ObuWarningData;
|
import com.zhidao.adas.client.bean.ObuMap;
|
||||||
|
import com.zhidao.adas.client.bean.ObuRsi;
|
||||||
|
import com.zhidao.adas.client.bean.ObuRsm;
|
||||||
|
import com.zhidao.adas.client.bean.ObuSpat;
|
||||||
import com.zhidao.adas.client.bean.OriginalPointCloudData;
|
import com.zhidao.adas.client.bean.OriginalPointCloudData;
|
||||||
import com.zhidao.adas.client.bean.PerceptionTrafficLight;
|
import com.zhidao.adas.client.bean.PerceptionTrafficLight;
|
||||||
import com.zhidao.adas.client.bean.PlanningDecisionState;
|
import com.zhidao.adas.client.bean.PlanningDecisionState;
|
||||||
@@ -123,7 +125,6 @@ import chassis.ChassisStatesOuterClass;
|
|||||||
import function_state_management.FunctionStates;
|
import function_state_management.FunctionStates;
|
||||||
import io.netty.channel.Channel;
|
import io.netty.channel.Channel;
|
||||||
import mogo.telematics.pad.MessagePad;
|
import mogo.telematics.pad.MessagePad;
|
||||||
import mogo.v2x.ObuWarningEvent;
|
|
||||||
import mogo_msg.MogoReportMsg;
|
import mogo_msg.MogoReportMsg;
|
||||||
import perception.TrafficLightOuterClass;
|
import perception.TrafficLightOuterClass;
|
||||||
import planning.RoboSweeperTaskIndexOuterClass;
|
import planning.RoboSweeperTaskIndexOuterClass;
|
||||||
@@ -550,7 +551,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if (TextUtils.equals(title.getText(), getString(R.string.have_error_data))) {
|
if (TextUtils.equals(title.getText(), getString(R.string.have_error_data))) {
|
||||||
int position=titleFragmentData.size() - 1;
|
int position = titleFragmentData.size() - 1;
|
||||||
infoFragment.smoothScrollToPosition(position);
|
infoFragment.smoothScrollToPosition(position);
|
||||||
fragmentAdapter.setSelectedPosition(position);
|
fragmentAdapter.setSelectedPosition(position);
|
||||||
showFragment(Constants.TITLE.RECEIVE_ERROR);
|
showFragment(Constants.TITLE.RECEIVE_ERROR);
|
||||||
@@ -662,7 +663,10 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
|
|||||||
titleFragmentData.add(Constants.TITLE.RECEIVE_GLOBAL_PATH_RESP);
|
titleFragmentData.add(Constants.TITLE.RECEIVE_GLOBAL_PATH_RESP);
|
||||||
titleFragmentData.add(Constants.TITLE.RECEIVE_ARRIVAL_NOTIFICATION);
|
titleFragmentData.add(Constants.TITLE.RECEIVE_ARRIVAL_NOTIFICATION);
|
||||||
titleFragmentData.add(Constants.TITLE.RECEIVE_STATUS_QUERY_RESP);
|
titleFragmentData.add(Constants.TITLE.RECEIVE_STATUS_QUERY_RESP);
|
||||||
titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_WARNING_DATA);
|
titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_SPAT);
|
||||||
|
titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_RSI);
|
||||||
|
titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_RSM);
|
||||||
|
titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_MAP);
|
||||||
titleFragmentData.add(Constants.TITLE.RECEIVE_SWEEPER_TASK_INDEX_DATA);
|
titleFragmentData.add(Constants.TITLE.RECEIVE_SWEEPER_TASK_INDEX_DATA);
|
||||||
titleFragmentData.add(Constants.TITLE.RECEIVE_WARN);
|
titleFragmentData.add(Constants.TITLE.RECEIVE_WARN);
|
||||||
titleFragmentData.add(Constants.TITLE.RECEIVE_ERROR);
|
titleFragmentData.add(Constants.TITLE.RECEIVE_ERROR);
|
||||||
@@ -1023,30 +1027,29 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
|
|||||||
DataDistribution.getInstance().addData(base);
|
DataDistribution.getInstance().addData(base);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onObuWarningData(MessagePad.Header header, ObuWarningEvent.ObuWarningData obuWarningData) {
|
public void onObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) {
|
||||||
ObuWarningData base = new ObuWarningData(header, obuWarningData, sdf);
|
ObuSpat base = new ObuSpat(header, spatWarningData, sdf);
|
||||||
DataDistribution.getInstance().addData(base);
|
DataDistribution.getInstance().addData(base);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onoObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) {
|
public void onObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) {
|
||||||
|
ObuRsi base = new ObuRsi(header, rsiWarningData, sdf);
|
||||||
|
DataDistribution.getInstance().addData(base);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onoObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) {
|
public void onObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) {
|
||||||
|
ObuRsm base = new ObuRsm(header, rsmWarningData, sdf);
|
||||||
|
DataDistribution.getInstance().addData(base);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onoObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) {
|
public void onObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData) {
|
||||||
|
ObuMap base = new ObuMap(header, mapMatchData, sdf);
|
||||||
}
|
DataDistribution.getInstance().addData(base);
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onoObuObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData) {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -171,7 +171,10 @@ public class Constants {
|
|||||||
String RECEIVE_WARN = MessageType.TYPE_RECEIVE_WARN.desc;
|
String RECEIVE_WARN = MessageType.TYPE_RECEIVE_WARN.desc;
|
||||||
String RECEIVE_ARRIVAL_NOTIFICATION = MessageType.TYPE_RECEIVE_ARRIVAL_NOTIFICATION.desc;
|
String RECEIVE_ARRIVAL_NOTIFICATION = MessageType.TYPE_RECEIVE_ARRIVAL_NOTIFICATION.desc;
|
||||||
String RECEIVE_STATUS_QUERY_RESP = MessageType.TYPE_RECEIVE_STATUS_QUERY_RESP.desc;
|
String RECEIVE_STATUS_QUERY_RESP = MessageType.TYPE_RECEIVE_STATUS_QUERY_RESP.desc;
|
||||||
String RECEIVE_OBU_WARNING_DATA = MessageType.TYPE_RECEIVE_OBU_WARNING_DATA.desc;
|
String RECEIVE_OBU_SPAT = "OBU SPAT信息";
|
||||||
|
String RECEIVE_OBU_RSI = "OBU RSI信息";
|
||||||
|
String RECEIVE_OBU_RSM = "OBU RSM信息";
|
||||||
|
String RECEIVE_OBU_MAP = "OBU MAP信息";
|
||||||
String RECEIVE_ERROR = "错误数据";
|
String RECEIVE_ERROR = "错误数据";
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -71,7 +71,6 @@ import chassis.ChassisStatesOuterClass;
|
|||||||
import chassis.VehicleStateOuterClass;
|
import chassis.VehicleStateOuterClass;
|
||||||
import function_state_management.FunctionStates;
|
import function_state_management.FunctionStates;
|
||||||
import mogo.telematics.pad.MessagePad;
|
import mogo.telematics.pad.MessagePad;
|
||||||
import mogo.v2x.ObuWarningEvent;
|
|
||||||
import mogo_msg.MogoReportMsg;
|
import mogo_msg.MogoReportMsg;
|
||||||
import perception.TrafficLightOuterClass;
|
import perception.TrafficLightOuterClass;
|
||||||
import planning.RoboSweeperTaskIndexOuterClass;
|
import planning.RoboSweeperTaskIndexOuterClass;
|
||||||
@@ -548,28 +547,24 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onObuWarningData(MessagePad.Header header, ObuWarningEvent.ObuWarningData obuWarningData) {
|
public void onObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onoObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) {
|
public void onObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onoObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) {
|
public void onObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onoObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) {
|
public void onObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData) {
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onoObuObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData) {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ buildscript {
|
|||||||
classpath 'com.mogo.cloud:systrace:1.0.1'
|
classpath 'com.mogo.cloud:systrace:1.0.1'
|
||||||
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18'
|
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18'
|
||||||
classpath 'com.mogo.sticky:service:1.0.8'
|
classpath 'com.mogo.sticky:service:1.0.8'
|
||||||
classpath 'io.github.knight-zxw:lancet-plugin:0.0.4'
|
classpath 'io.github.knight-zxw:lancet-plugin:0.0.4_mogo'
|
||||||
|
|
||||||
// classpath ("com.tencent.matrix:matrix-gradle-plugin:0.6.6") { changing = true }
|
// classpath ("com.tencent.matrix:matrix-gradle-plugin:0.6.6") { changing = true }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
ext {
|
ext {
|
||||||
time = ""
|
time = ""
|
||||||
kotlin_version = "1.4.31"
|
// kotlin_version = "1.4.31"
|
||||||
|
kotlin_version = "1.5.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
// androidx
|
// androidx
|
||||||
androidxappcompat : "androidx.appcompat:appcompat:1.3.1",
|
androidxappcompat : "androidx.appcompat:appcompat:1.3.1",
|
||||||
@@ -22,9 +23,10 @@ ext {
|
|||||||
// amapnavi3dmap : "com.amap.api:navi-3dmap:8.0.1_3dmap8.0.1",
|
// amapnavi3dmap : "com.amap.api:navi-3dmap:8.0.1_3dmap8.0.1",
|
||||||
// amapsearch : "com.amap.api:search:7.9.0",
|
// amapsearch : "com.amap.api:search:7.9.0",
|
||||||
// amaplocation : "com.amap.api:location:5.5.0",
|
// amaplocation : "com.amap.api:location:5.5.0",
|
||||||
amapnavi3dmap : "com.amap.api:navi-3dmap:9.5.1_3dmap9.5.0",
|
amapnavi3dmap : "com.amap.api:navi-3dmap:9.6.0_3dmap9.6.0",
|
||||||
amapsearch : "com.amap.api:search:9.5.0",
|
amapsearch : "com.amap.api:search:9.5.0",
|
||||||
amaplocation : "com.amap.api:location:6.2.0",
|
amaplocation : "com.amap.api:location:6.2.0",
|
||||||
|
|
||||||
// json 转换
|
// json 转换
|
||||||
gson : "com.google.code.gson:gson:2.8.4",
|
gson : "com.google.code.gson:gson:2.8.4",
|
||||||
// 内存泄漏检测
|
// 内存泄漏检测
|
||||||
@@ -91,7 +93,7 @@ ext {
|
|||||||
|
|
||||||
// obu sdk
|
// obu sdk
|
||||||
obusdk : "com.zhidao.enterprise.smartv2x:smartv2x:1.0.0.3",
|
obusdk : "com.zhidao.enterprise.smartv2x:smartv2x:1.0.0.3",
|
||||||
mogoobu : 'com.mogo.support.obu:mogo-obu:1.1.0_beta0',
|
mogoobu : 'com.mogo.support.obu:mogo-obu:1.1.0_beta1',
|
||||||
|
|
||||||
// google
|
// google
|
||||||
googlezxing : "com.google.zxing:core:3.3.3",
|
googlezxing : "com.google.zxing:core:3.3.3",
|
||||||
@@ -124,9 +126,6 @@ ext {
|
|||||||
mogocustommapoperational : "com.zhidaoauto.map:operational:${MAP_SDK_OPERATION_VERSION}",
|
mogocustommapoperational : "com.zhidaoauto.map:operational:${MAP_SDK_OPERATION_VERSION}",
|
||||||
|
|
||||||
modulemap : "com.mogo.module:module-map:${MOGO_MODULE_MAP_VERSION}",
|
modulemap : "com.mogo.module:module-map:${MOGO_MODULE_MAP_VERSION}",
|
||||||
chat : "com.mogo.module.carchatim:module-chat:${MOGO_MODULE_CHAT_VERSION}",
|
|
||||||
callchat : "com.mogo.module.carchatim:module-carchatting:${MOGO_MODULE_CARCHATTING_VERSION}",
|
|
||||||
callchatprovider : "com.mogo.module.carchatim:module-carchatting-provider:${MOGO_MODULE_CARCHATTINGPROVIDER_VERSION}",
|
|
||||||
|
|
||||||
// V2X
|
// V2X
|
||||||
moduleV2x : "com.mogo.module:module-v2x:${MOGO_MODULE_V2X_VERSION}",
|
moduleV2x : "com.mogo.module:module-v2x:${MOGO_MODULE_V2X_VERSION}",
|
||||||
@@ -135,10 +134,8 @@ ext {
|
|||||||
mogologlib : "com.mogo.module:module-loglib:${LOGLIB_VERSION}",
|
mogologlib : "com.mogo.module:module-loglib:${LOGLIB_VERSION}",
|
||||||
kotlingradleplugin : "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}",
|
kotlingradleplugin : "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}",
|
||||||
crashreport : "com.mogo.test:crashreport:${CRASHREPORT_VERSION}",
|
crashreport : "com.mogo.test:crashreport:${CRASHREPORT_VERSION}",
|
||||||
crashreportbugly : "com.mogo.test:crashreport-bugly:${CRASHREPORT_BUGLY_VERSION}",
|
|
||||||
crashreportapmbyte : "com.mogo.test:crashreport-apmbyte:${CRASHREPORT_APMBYTE_VERSION}",
|
crashreportapmbyte : "com.mogo.test:crashreport-apmbyte:${CRASHREPORT_APMBYTE_VERSION}",
|
||||||
crashreportnoop : "com.mogo.test:crashreport-noop:${CRASHREPORT_NOOP_VERSION}",
|
crashreportnoop : "com.mogo.test:crashreport-noop:${CRASHREPORT_NOOP_VERSION}",
|
||||||
crashreportupgrade : "com.mogo.test:crashreport-upgrade:${CRASHREPORT_UPGRADE_VERSION}",
|
|
||||||
apm_insight : 'com.volcengine:apm_insight:1.4.9.cn-rc.5',
|
apm_insight : 'com.volcengine:apm_insight:1.4.9.cn-rc.5',
|
||||||
apm_insight_crash : 'com.volcengine:apm_insight_crash:1.4.6-rc.14',
|
apm_insight_crash : 'com.volcengine:apm_insight_crash:1.4.6-rc.14',
|
||||||
cicle_indicator : 'me.relex:circleindicator:2.1.6',
|
cicle_indicator : 'me.relex:circleindicator:2.1.6',
|
||||||
@@ -220,7 +217,7 @@ ext {
|
|||||||
|
|
||||||
|
|
||||||
//========================= LancetX ===================
|
//========================= LancetX ===================
|
||||||
lancetx_runtime : "io.github.knight-zxw:lancet-runtime:0.0.4",
|
lancetx_runtime : "io.github.knight-zxw:lancet-runtime:0.0.4_mogo",
|
||||||
|
|
||||||
//========================= autosize ======================
|
//========================= autosize ======================
|
||||||
androidautoSize : 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1',
|
androidautoSize : 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1',
|
||||||
|
|||||||
@@ -24,3 +24,4 @@
|
|||||||
- mogo-core-res:程序中涉及到的图片及布局资源,同一管理,并通过设置不同的目录指定是那个模块的资源,这里只存放公共资源,图片,布局,动画等
|
- mogo-core-res:程序中涉及到的图片及布局资源,同一管理,并通过设置不同的目录指定是那个模块的资源,这里只存放公共资源,图片,布局,动画等
|
||||||
|
|
||||||
- mogo-core-utils:基于成熟的工具类开源框架下沉的,这里可以增添针对我们业务上的一些工具类
|
- mogo-core-utils:基于成熟的工具类开源框架下沉的,这里可以增添针对我们业务上的一些工具类
|
||||||
|
- MultiDisplayUtils :多屏幕管理工具
|
||||||
|
|||||||
16
core/README_MULT_DISPLAY.md
Normal file
16
core/README_MULT_DISPLAY.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
## 多屏幕场景
|
||||||
|
|
||||||
|
```java
|
||||||
|
// 在第二个屏幕启动页面
|
||||||
|
MultiDisplayUtils.INSTANCE.startActWithSecond(
|
||||||
|
context,
|
||||||
|
VideoAdAtc.class);
|
||||||
|
```
|
||||||
|
|
||||||
|
```java
|
||||||
|
// 在指定屏幕启动页面
|
||||||
|
MultiDisplayUtils.INSTANCE.startActWithProcess(
|
||||||
|
1,
|
||||||
|
context,
|
||||||
|
VideoAdAtc.class);
|
||||||
|
```
|
||||||
@@ -62,7 +62,6 @@ dependencies {
|
|||||||
implementation rootProject.ext.dependencies.androidxroomktx
|
implementation rootProject.ext.dependencies.androidxroomktx
|
||||||
|
|
||||||
implementation project(':foudations:mogo-commons')
|
implementation project(':foudations:mogo-commons')
|
||||||
implementation project(':core:mogo-core-data')
|
|
||||||
implementation project(':core:mogo-core-utils')
|
implementation project(':core:mogo-core-utils')
|
||||||
implementation project(':core:mogo-core-network')
|
implementation project(':core:mogo-core-network')
|
||||||
implementation project(':core:mogo-core-function-call')
|
implementation project(':core:mogo-core-function-call')
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class FuncBizProvider : IMoGoFuncBizProvider {
|
|||||||
noticeSocketManager.init(context)
|
noticeSocketManager.init(context)
|
||||||
dispatchAutoPilotManager.init(context)
|
dispatchAutoPilotManager.init(context)
|
||||||
cronTaskManager.startCronTask()
|
cronTaskManager.startCronTask()
|
||||||
|
OverviewDb.getDb(context)
|
||||||
MogoTrafficLightManager.INSTANCE.initServer(context)
|
MogoTrafficLightManager.INSTANCE.initServer(context)
|
||||||
VipCarManager.INSTANCE.initServer(context)
|
VipCarManager.INSTANCE.initServer(context)
|
||||||
// RedLightWarningManager.INSTANCE.listenTrafficLight()
|
// RedLightWarningManager.INSTANCE.listenTrafficLight()
|
||||||
@@ -75,10 +75,6 @@ class FuncBizProvider : IMoGoFuncBizProvider {
|
|||||||
OverViewDataManager.getAllV2XEventsByLineId(MoGoAiCloudClientConfig.getInstance().sn)
|
OverViewDataManager.getAllV2XEventsByLineId(MoGoAiCloudClientConfig.getInstance().sn)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun initOverViewDb(context: Context) {
|
|
||||||
OverviewDb.getDb(context)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
noticeSocketManager.release()
|
noticeSocketManager.release()
|
||||||
dispatchAutoPilotManager.release()
|
dispatchAutoPilotManager.release()
|
||||||
|
|||||||
@@ -12,17 +12,17 @@ interface TrafficLightApiService {
|
|||||||
|
|
||||||
//获取前方路口RoadID
|
//获取前方路口RoadID
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
@POST("ai-roadInfo-service/cross/near")
|
@POST("eagle-eye-dns/ai-roadInfo-service/cross/near")
|
||||||
suspend fun getFrontRoadID(@FieldMap roadID: Map<String, String>): BaseResponse<RoadIDResult>
|
suspend fun getFrontRoadID(@FieldMap roadID: Map<String, String>): BaseResponse<RoadIDResult>
|
||||||
|
|
||||||
//获取前方红绿灯状态
|
//获取前方红绿灯状态
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
@POST("mec-etl-server/light/bgd/channel/realTime")
|
@POST("eagle-eye-dns/mec-etl-server/light/bgd/channel/realTime")
|
||||||
suspend fun getTrafficLight(@FieldMap status: Map<String, String>): BaseResponse<TrafficLightResult>
|
suspend fun getTrafficLight(@FieldMap status: Map<String, String>): BaseResponse<TrafficLightResult>
|
||||||
|
|
||||||
//变灯
|
//变灯
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
@POST("mec-etl-server/light/bdg/newTask")
|
@POST("eagle-eye-dns/mec-etl-server/light/bdg/newTask")
|
||||||
suspend fun changeLight(@FieldMap turnLight: Map<String, String>): BaseResponse<TrafficLightControl>
|
suspend fun changeLight(@FieldMap turnLight: Map<String, String>): BaseResponse<TrafficLightControl>
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
package com.mogo.eagle.function.biz.v2x.trafficlight.network
|
package com.mogo.eagle.function.biz.v2x.trafficlight.network
|
||||||
|
|
||||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||||
|
import com.mogo.commons.constants.HostConst
|
||||||
import com.mogo.eagle.core.data.BaseResponse
|
import com.mogo.eagle.core.data.BaseResponse
|
||||||
import com.mogo.eagle.core.data.trafficlight.*
|
import com.mogo.eagle.core.data.trafficlight.*
|
||||||
import com.mogo.eagle.core.network.MoGoRetrofitFactory
|
import com.mogo.eagle.core.network.MoGoRetrofitFactory
|
||||||
import com.mogo.eagle.core.network.apiCall
|
import com.mogo.eagle.core.network.apiCall
|
||||||
import com.mogo.eagle.core.network.cancel
|
import com.mogo.eagle.core.network.cancel
|
||||||
import com.mogo.eagle.core.network.request
|
import com.mogo.eagle.core.network.request
|
||||||
import com.mogo.commons.constants.HostConst.CITY_HOST
|
|
||||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||||
|
|
||||||
class TrafficLightNetWorkModel {
|
class TrafficLightNetWorkModel {
|
||||||
|
|
||||||
private fun getNetWorkApi(baseUrl: String = CITY_HOST): TrafficLightApiService {
|
private fun getNetWorkApi(baseUrl: String = HostConst.getEagleHost()): TrafficLightApiService {
|
||||||
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
|
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
|
||||||
.create(TrafficLightApiService::class.java)
|
.create(TrafficLightApiService::class.java)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import retrofit2.http.*
|
|||||||
interface VipApiService {
|
interface VipApiService {
|
||||||
|
|
||||||
//查询是否为VIP车辆
|
//查询是否为VIP车辆
|
||||||
@GET("/dataService/carUser/getVipStatusBySn")
|
@GET("eagle-eye-dns/dataService/carUser/getVipStatusBySn")
|
||||||
suspend fun requestVip(@Query("sn") sn: String): BaseResponse<VipRequest>
|
suspend fun requestVip(@Query("sn") sn: String): BaseResponse<VipRequest>
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
package com.mogo.eagle.function.biz.v2x.vip.network
|
package com.mogo.eagle.function.biz.v2x.vip.network
|
||||||
|
|
||||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||||
|
import com.mogo.commons.constants.HostConst
|
||||||
import com.mogo.eagle.core.data.BaseResponse
|
import com.mogo.eagle.core.data.BaseResponse
|
||||||
import com.mogo.eagle.core.data.v2x.VipRequest
|
import com.mogo.eagle.core.data.v2x.VipRequest
|
||||||
import com.mogo.eagle.core.network.MoGoRetrofitFactory
|
import com.mogo.eagle.core.network.MoGoRetrofitFactory
|
||||||
import com.mogo.eagle.core.network.apiCall
|
import com.mogo.eagle.core.network.apiCall
|
||||||
import com.mogo.eagle.core.network.request
|
import com.mogo.eagle.core.network.request
|
||||||
import com.mogo.commons.constants.HostConst.DATA_SERVICE_HOST
|
|
||||||
|
|
||||||
|
|
||||||
class VipNetWorkModel {
|
class VipNetWorkModel {
|
||||||
|
|
||||||
private fun getNetWorkApi(baseUrl: String = DATA_SERVICE_HOST): VipApiService {
|
private fun getNetWorkApi(baseUrl: String = HostConst.getEagleHost()): VipApiService {
|
||||||
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
|
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
|
||||||
.create(VipApiService::class.java)
|
.create(VipApiService::class.java)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,13 +61,11 @@ dependencies {
|
|||||||
implementation rootProject.ext.dependencies.androidxrecyclerview
|
implementation rootProject.ext.dependencies.androidxrecyclerview
|
||||||
|
|
||||||
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
|
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
|
||||||
implementation rootProject.ext.dependencies.mogo_core_data
|
|
||||||
implementation rootProject.ext.dependencies.mogo_core_utils
|
implementation rootProject.ext.dependencies.mogo_core_utils
|
||||||
implementation rootProject.ext.dependencies.mogo_core_function_call
|
implementation rootProject.ext.dependencies.mogo_core_function_call
|
||||||
implementation rootProject.ext.dependencies.mogo_core_res
|
implementation rootProject.ext.dependencies.mogo_core_res
|
||||||
} else {
|
} else {
|
||||||
implementation project(':foudations:mogo-commons')
|
implementation project(':foudations:mogo-commons')
|
||||||
implementation project(':core:mogo-core-data')
|
|
||||||
implementation project(':core:mogo-core-utils')
|
implementation project(':core:mogo-core-utils')
|
||||||
implementation project(':core:mogo-core-function-call')
|
implementation project(':core:mogo-core-function-call')
|
||||||
implementation project(':core:mogo-core-res')
|
implementation project(':core:mogo-core-res')
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ MogoObuManager.getInstance().init(Context context);
|
|||||||
```
|
```
|
||||||
## 连接
|
## 连接
|
||||||
```java
|
```java
|
||||||
//默认192.168.8.199
|
//默认192.168.1.199
|
||||||
MogoObuManager.getInstance().connect();
|
MogoObuManager.getInstance().connect();
|
||||||
//自定义 IP
|
//自定义 IP
|
||||||
MogoObuManager.getInstance().connect(String ip);
|
MogoObuManager.getInstance().connect(String ip);
|
||||||
|
|||||||
@@ -55,23 +55,18 @@ dependencies {
|
|||||||
implementation rootProject.ext.dependencies.androidxroomktx
|
implementation rootProject.ext.dependencies.androidxroomktx
|
||||||
|
|
||||||
implementation rootProject.ext.dependencies.mogoaicloudtelematic
|
implementation rootProject.ext.dependencies.mogoaicloudtelematic
|
||||||
|
|
||||||
implementation rootProject.ext.dependencies.mogoobu
|
|
||||||
implementation rootProject.ext.dependencies.amapnavi3dmap
|
implementation rootProject.ext.dependencies.amapnavi3dmap
|
||||||
|
implementation project(':libraries:mogo-obu')
|
||||||
|
implementation project(':libraries:mogo-adas')
|
||||||
|
implementation project(':libraries:mogo-adas-data')
|
||||||
|
|
||||||
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
|
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
|
||||||
implementation rootProject.ext.dependencies.mogo_core_data
|
|
||||||
implementation rootProject.ext.dependencies.mogo_core_utils
|
implementation rootProject.ext.dependencies.mogo_core_utils
|
||||||
implementation rootProject.ext.dependencies.mogo_core_function_call
|
implementation rootProject.ext.dependencies.mogo_core_function_call
|
||||||
|
|
||||||
implementation project(':libraries:mogo-adas')
|
|
||||||
implementation rootProject.ext.dependencies.mogocommons
|
implementation rootProject.ext.dependencies.mogocommons
|
||||||
} else {
|
} else {
|
||||||
implementation project(':core:mogo-core-data')
|
|
||||||
implementation project(':core:mogo-core-utils')
|
implementation project(':core:mogo-core-utils')
|
||||||
implementation project(':core:mogo-core-function-call')
|
implementation project(':core:mogo-core-function-call')
|
||||||
|
|
||||||
implementation project(':libraries:mogo-adas')
|
|
||||||
implementation project(':foudations:mogo-commons')
|
implementation project(':foudations:mogo-commons')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -526,23 +526,13 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* OBU预警事件
|
|
||||||
*
|
|
||||||
* @param header 头
|
|
||||||
* @param obuWarningData 数据
|
|
||||||
*/
|
|
||||||
override fun onObuWarningData(header: MessagePad.Header?, obuWarningData: ObuWarningEvent.ObuWarningData?) {
|
|
||||||
CallerObuDcCombineListenerManager.invokeObuDcData(obuWarningData)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OBU 红绿灯预警信息
|
* OBU 红绿灯预警信息
|
||||||
*
|
*
|
||||||
* @param header 头
|
* @param header 头
|
||||||
* @param spatWarningData 数据
|
* @param spatWarningData 数据
|
||||||
*/
|
*/
|
||||||
override fun onoObuSpatWarning(header: MessagePad.Header?, spatWarningData: ObuScene.SpatWarningData?) {
|
override fun onObuSpatWarning(header: MessagePad.Header?, spatWarningData: ObuScene.SpatWarningData?) {
|
||||||
CallerObuWarningSpatListenerManager.invokeObuSpatWarning(spatWarningData!!)
|
CallerObuWarningSpatListenerManager.invokeObuSpatWarning(spatWarningData!!)
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@@ -551,7 +541,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
|||||||
* @param header 头
|
* @param header 头
|
||||||
* @param rsiWarningData 数据
|
* @param rsiWarningData 数据
|
||||||
*/
|
*/
|
||||||
override fun onoObuRsiWarning(header: MessagePad.Header?, rsiWarningData: ObuScene.RsiWarningData?) {
|
override fun onObuRsiWarning(header: MessagePad.Header?, rsiWarningData: ObuScene.RsiWarningData?) {
|
||||||
CallerObuWarningRsiListenerManager.invokeObuRsiWarning(rsiWarningData!!)
|
CallerObuWarningRsiListenerManager.invokeObuRsiWarning(rsiWarningData!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -561,7 +551,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
|||||||
* @param header 头
|
* @param header 头
|
||||||
* @param rsmWarningData 数据
|
* @param rsmWarningData 数据
|
||||||
*/
|
*/
|
||||||
override fun onoObuRsmWarning(header: MessagePad.Header?, rsmWarningData: ObuScene.RsmWarningData?) {
|
override fun onObuRsmWarning(header: MessagePad.Header?, rsmWarningData: ObuScene.RsmWarningData?) {
|
||||||
CallerObuWarningRsmListenerManager.invokeObuRsmWarning(rsmWarningData!!)
|
CallerObuWarningRsmListenerManager.invokeObuRsmWarning(rsmWarningData!!)
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@@ -570,7 +560,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
|||||||
* @param header 头
|
* @param header 头
|
||||||
* @param mapMatchData 数据
|
* @param mapMatchData 数据
|
||||||
*/
|
*/
|
||||||
override fun onoObuObuMapMath(header: MessagePad.Header?, mapMatchData: ObuScene.MapMatchData?) {
|
override fun onObuMapMath(header: MessagePad.Header?, mapMatchData: ObuScene.MapMatchData?) {
|
||||||
CallerObuMapMathListenerManager.invokeObuMapMath(mapMatchData!!)
|
CallerObuMapMathListenerManager.invokeObuMapMath(mapMatchData!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84Lis
|
|||||||
import com.mogo.eagle.core.function.call.obu.CallerObuLocationWGS84ListenerManager
|
import com.mogo.eagle.core.function.call.obu.CallerObuLocationWGS84ListenerManager
|
||||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
||||||
import com.mogo.eagle.core.utilcode.util.CoordinateTransform
|
import com.mogo.eagle.core.utilcode.util.CoordinateTransform
|
||||||
import com.mogo.eagle.core.utilcode.util.FileUtils
|
|
||||||
import com.mogo.eagle.core.utilcode.util.TimeUtils
|
import com.mogo.eagle.core.utilcode.util.TimeUtils
|
||||||
import com.mogo.eagle.core.utilcode.util.Utils
|
import com.mogo.eagle.core.utilcode.util.Utils
|
||||||
import com.mogo.support.obu.model.MogoObuHvBasicsData
|
import com.mogo.support.obu.model.MogoObuHvBasicsData
|
||||||
@@ -89,6 +88,11 @@ object MoGoLocationDispatcher :
|
|||||||
lastGnssLocation.lastReceiveTime = TimeUtils.getNowMills()
|
lastGnssLocation.lastReceiveTime = TimeUtils.getNowMills()
|
||||||
// 将高德中的一些用于业务的数据进行融合,例如:CityCode、address等
|
// 将高德中的一些用于业务的数据进行融合,例如:CityCode、address等
|
||||||
mapLocation?.let {
|
mapLocation?.let {
|
||||||
|
//agps 高德
|
||||||
|
//agps_rtk 高德-高精
|
||||||
|
lastGnssLocation.locType = 1000 // 定位类型为WGS84进行转译的坐标
|
||||||
|
lastGnssLocation.satellite = 4
|
||||||
|
|
||||||
lastGnssLocation.cityName = it.city
|
lastGnssLocation.cityName = it.city
|
||||||
lastGnssLocation.cityCode = it.cityCode
|
lastGnssLocation.cityCode = it.cityCode
|
||||||
lastGnssLocation.provider = it.provider
|
lastGnssLocation.provider = it.provider
|
||||||
@@ -145,6 +149,9 @@ object MoGoLocationDispatcher :
|
|||||||
lastGaoDeLocation.satelliteTime = it.time
|
lastGaoDeLocation.satelliteTime = it.time
|
||||||
lastGaoDeLocation.lastReceiveTime = TimeUtils.getNowMills()
|
lastGaoDeLocation.lastReceiveTime = TimeUtils.getNowMills()
|
||||||
|
|
||||||
|
lastGaoDeLocation.locType = 1 // 定位类型为高德坐标(网路或者硬件定位)
|
||||||
|
lastGaoDeLocation.satellite = 4
|
||||||
|
|
||||||
lastGaoDeLocation.cityName = it.city
|
lastGaoDeLocation.cityName = it.city
|
||||||
lastGaoDeLocation.cityCode = it.cityCode
|
lastGaoDeLocation.cityCode = it.cityCode
|
||||||
lastGaoDeLocation.provider = it.provider
|
lastGaoDeLocation.provider = it.provider
|
||||||
@@ -228,6 +235,11 @@ object MoGoLocationDispatcher :
|
|||||||
|
|
||||||
// 将高德中的一些用于业务的数据进行融合,例如:CityCode、address等
|
// 将高德中的一些用于业务的数据进行融合,例如:CityCode、address等
|
||||||
mapLocation?.let {
|
mapLocation?.let {
|
||||||
|
//agps 高德
|
||||||
|
//agps_rtk 高德-高精
|
||||||
|
lastOBULocation.locType = 1000 // 定位类型为WGS84进行转译的坐标
|
||||||
|
lastOBULocation.satellite = 4
|
||||||
|
|
||||||
lastOBULocation.cityName = it.city
|
lastOBULocation.cityName = it.city
|
||||||
lastOBULocation.cityCode = it.cityCode
|
lastOBULocation.cityCode = it.cityCode
|
||||||
lastOBULocation.provider = it.provider
|
lastOBULocation.provider = it.provider
|
||||||
|
|||||||
@@ -22,8 +22,7 @@ class MoGoObuProvider : IMoGoObuProvider {
|
|||||||
private val TAG = "MoGoObuProvider"
|
private val TAG = "MoGoObuProvider"
|
||||||
|
|
||||||
private var mContext: Context? = null
|
private var mContext: Context? = null
|
||||||
private val busObuIp = "192.168.8.199"
|
private val taxiObuIp = "192.168.1.199" //obu的taxi和bus的ip已经全部统一成1网段ip
|
||||||
private val taxiObuIp = "192.168.1.199"
|
|
||||||
|
|
||||||
override val functionName: String
|
override val functionName: String
|
||||||
get() = TAG
|
get() = TAG
|
||||||
@@ -37,35 +36,16 @@ class MoGoObuProvider : IMoGoObuProvider {
|
|||||||
MogoObuDcCombineManager.INSTANCE.init(context)
|
MogoObuDcCombineManager.INSTANCE.init(context)
|
||||||
CallerLogger.d("$M_OBU$TAG", "初始化蘑菇自研OBU…… localIp = " + CommonUtils.getLocalIPAddress())
|
CallerLogger.d("$M_OBU$TAG", "初始化蘑菇自研OBU…… localIp = " + CommonUtils.getLocalIPAddress())
|
||||||
|
|
||||||
//bus乘客版本obu功能去掉
|
//bus乘客版本obu功能去掉,大理项目需要全部车辆接收,不在限制
|
||||||
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)
|
mContext = context
|
||||||
&& AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)
|
mContext?.let {
|
||||||
) {
|
val ipAddress = SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, taxiObuIp)
|
||||||
//不处理
|
//mogo obu
|
||||||
} else {
|
MogoPrivateObuNewManager.INSTANCE.connectObu(
|
||||||
mContext = context
|
it,
|
||||||
mContext?.let {
|
ipAddress,
|
||||||
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { //bus 司机端
|
CommonUtils.getIpAddressString()
|
||||||
val ipAddress =
|
)
|
||||||
SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, busObuIp)
|
|
||||||
|
|
||||||
//mogo obu
|
|
||||||
MogoPrivateObuNewManager.INSTANCE.connectObu(
|
|
||||||
it,
|
|
||||||
ipAddress,
|
|
||||||
CommonUtils.getIpAddressString()
|
|
||||||
)
|
|
||||||
} else if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) { //taxi 司机端和乘客端
|
|
||||||
val ipAddress =
|
|
||||||
SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, taxiObuIp)
|
|
||||||
//mogo obu
|
|
||||||
MogoPrivateObuNewManager.INSTANCE.connectObu(
|
|
||||||
it,
|
|
||||||
ipAddress,
|
|
||||||
CommonUtils.getIpAddressString()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -47,11 +47,11 @@ class ObuTestNewObuReceiver : BroadcastReceiver() {
|
|||||||
val warningList = listOf(warningData1)
|
val warningList = listOf(warningData1)
|
||||||
warningMsg.warningData = warningList
|
warningMsg.warningData = warningList
|
||||||
|
|
||||||
val cvxHvInfoIndInfo = MogoObuRvWarningData(0, vehBasicsMsg, warningMsg)
|
// val cvxHvInfoIndInfo = MogoRvWarningData(0, vehBasicsMsg, warningMsg)
|
||||||
|
|
||||||
MogoPrivateObuNewManager.INSTANCE
|
// MogoPrivateObuNewManager.INSTANCE
|
||||||
.getMogoObuListener()
|
// .getMogoObuListener()
|
||||||
.onMogoObuRvWarning(cvxHvInfoIndInfo)
|
// .onGnssInfo(cvxHvInfoIndInfo)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,11 +41,11 @@ class ObuTestNewObuRsiReceiver : BroadcastReceiver() {
|
|||||||
|
|
||||||
val rsiWarningList = listOf(rsiWarning) //TODO
|
val rsiWarningList = listOf(rsiWarning) //TODO
|
||||||
|
|
||||||
val cvxObuRsiInfo = MogoObuRsiWarningData(obuStatus, 1, rsiWarningList)
|
// val cvxObuRsiInfo = MogoObuRsiWarningData(obuStatus, 1, rsiWarningList)
|
||||||
|
//
|
||||||
MogoPrivateObuNewManager.INSTANCE
|
// MogoPrivateObuNewManager.INSTANCE
|
||||||
.getMogoObuListener()
|
// .getMogoObuListener()
|
||||||
.onMogoObuRsiWarning(cvxObuRsiInfo)
|
// .onObuRsiWarning(cvxObuRsiInfo)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import com.mogo.eagle.core.data.enums.TrafficTypeEnum
|
|||||||
import com.mogo.eagle.core.data.traffic.TrafficData
|
import com.mogo.eagle.core.data.traffic.TrafficData
|
||||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU
|
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU
|
||||||
|
import com.mogo.support.obu.ObuBase
|
||||||
|
import com.mogo.support.obu.ObuScene
|
||||||
import com.mogo.support.obu.model.MogoObuRsiWarningData
|
import com.mogo.support.obu.model.MogoObuRsiWarningData
|
||||||
import com.mogo.support.obu.model.MogoObuRsmWarningData
|
import com.mogo.support.obu.model.MogoObuRsmWarningData
|
||||||
import com.mogo.support.obu.model.MogoObuRvWarningData
|
import com.mogo.support.obu.model.MogoObuRvWarningData
|
||||||
@@ -20,18 +22,18 @@ object TrafficDataConvertUtilsNew {
|
|||||||
/**
|
/**
|
||||||
* OBU 远车 转换交通元素数据,是否需要
|
* OBU 远车 转换交通元素数据,是否需要
|
||||||
*/
|
*/
|
||||||
fun cvxRvInfoIndInfo2TrafficData(info: MogoObuRvWarningData): TrafficData? {
|
fun cvxRvInfoIndInfo2TrafficData(info: ObuBase.VehicleBasics): TrafficData? {
|
||||||
if (info.vehBasicsMsg == null) {
|
if (info == null) {
|
||||||
CallerLogger.e("$M_OBU$TAG", "cvxRvInfoIndInfo2TrafficData 数据转换异常,请检查参数是否齐全")
|
CallerLogger.e("$M_OBU$TAG", "cvxRvInfoIndInfo2TrafficData 数据转换异常,请检查参数是否齐全")
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
val trafficData = TrafficData()
|
val trafficData = TrafficData()
|
||||||
trafficData.type = TrafficTypeEnum.TYPE_TRAFFIC_ID_TA_CHE
|
trafficData.type = TrafficTypeEnum.TYPE_TRAFFIC_ID_TA_CHE
|
||||||
trafficData.uuid = info.vehBasicsMsg.id
|
trafficData.uuid = info.id
|
||||||
trafficData.lat = info.vehBasicsMsg.latitude
|
trafficData.lat = info.latitude
|
||||||
trafficData.lon = info.vehBasicsMsg.longitude
|
trafficData.lon = info.longitude
|
||||||
trafficData.heading = info.vehBasicsMsg.heading
|
trafficData.heading = info.heading
|
||||||
trafficData.speed = info.vehBasicsMsg.speed
|
trafficData.speed = info.speed
|
||||||
|
|
||||||
return trafficData
|
return trafficData
|
||||||
}
|
}
|
||||||
@@ -39,25 +41,25 @@ object TrafficDataConvertUtilsNew {
|
|||||||
/**
|
/**
|
||||||
* OBU RSU道路事件预警信息 转换交通元素数据 标牌 为何要显示level
|
* OBU RSU道路事件预警信息 转换交通元素数据 标牌 为何要显示level
|
||||||
*/
|
*/
|
||||||
fun cvxRtiThreatIndInfo2TrafficData(info: MogoObuRsiWarningData): TrafficData? {
|
fun cvxRtiThreatIndInfo2TrafficData(info: ObuScene.RsiWarningData): TrafficData? {
|
||||||
if (info.warningMsg == null || info.warningMsg.size < 1 || info.warningMsg[0].position == null) {
|
if (info.warningMsgList == null || info.warningMsgList.size < 1 || info.warningMsgList[0].position == null) {
|
||||||
CallerLogger.e("$M_OBU$TAG", "数据转换异常,请检查参数是否齐全")
|
CallerLogger.e("$M_OBU$TAG", "数据转换异常,请检查参数是否齐全")
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
val trafficData = TrafficData()
|
val trafficData = TrafficData()
|
||||||
trafficData.type = TrafficTypeEnum.TYPE_TRAFFIC_ID_DAO_LU_SHI_GONG
|
trafficData.type = TrafficTypeEnum.TYPE_TRAFFIC_ID_DAO_LU_SHI_GONG
|
||||||
trafficData.uuid = info.warningMsg[0].signSerialNum.toString()
|
trafficData.uuid = info.warningMsgList[0].signSerialNum.toString()
|
||||||
trafficData.lat = info.warningMsg[0].position.latitude
|
trafficData.lat = info.warningMsgList[0].position.position.positionLatLon.latitude
|
||||||
trafficData.lon = info.warningMsg[0].position.longitude
|
trafficData.lon = info.warningMsgList[0].position.position.positionLatLon.longitude
|
||||||
trafficData.threatLevel = info.warningMsg[0].warningLevel
|
trafficData.threatLevel = info.warningMsgList[0].warningLevel
|
||||||
return trafficData
|
return trafficData
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OBU 预警事件 转换交通元素数据 他车预警
|
* OBU 预警事件 转换交通元素数据 他车预警
|
||||||
*/
|
*/
|
||||||
fun cvxV2vThreatIndInfo2TrafficData(info: MogoObuRvWarningData): TrafficData? {
|
fun cvxV2vThreatIndInfo2TrafficData(info: ObuScene.RvWarningData): TrafficData? {
|
||||||
if (info == null || info.vehBasicsMsg == null || info.warningMsg == null) {
|
if (info?.vehBasicsMsg == null || info.warningMsg == null) {
|
||||||
CallerLogger.e("$M_OBU$TAG", "数据转换异常,请检查参数是否齐全")
|
CallerLogger.e("$M_OBU$TAG", "数据转换异常,请检查参数是否齐全")
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
@@ -68,8 +70,8 @@ object TrafficDataConvertUtilsNew {
|
|||||||
trafficData.heading = info.vehBasicsMsg.heading
|
trafficData.heading = info.vehBasicsMsg.heading
|
||||||
trafficData.speed = info.vehBasicsMsg.speed
|
trafficData.speed = info.vehBasicsMsg.speed
|
||||||
// 判断车辆V2X预警级别,调整车辆颜色
|
// 判断车辆V2X预警级别,调整车辆颜色
|
||||||
if (info.warningMsg.warningData != null) {
|
if (info.warningMsg.warningDataList != null) {
|
||||||
trafficData.threatLevel = info.warningMsg.warningData[0].warningLevel
|
trafficData.threatLevel = info.warningMsg.warningDataList[0].warningLevel
|
||||||
} else {
|
} else {
|
||||||
trafficData.threatLevel = 1
|
trafficData.threatLevel = 1
|
||||||
}
|
}
|
||||||
@@ -81,7 +83,7 @@ object TrafficDataConvertUtilsNew {
|
|||||||
/**
|
/**
|
||||||
* OBU 弱势交通参与者信息 转换交通元素数据
|
* OBU 弱势交通参与者信息 转换交通元素数据
|
||||||
*/
|
*/
|
||||||
fun cvxPtcThreatIndInfo2TrafficData(info: MogoObuRsmWarningData): TrafficData? {
|
fun cvxPtcThreatIndInfo2TrafficData(info: ObuScene.RsmWarningData): TrafficData? {
|
||||||
if (info.participant == null) {
|
if (info.participant == null) {
|
||||||
CallerLogger.e("$M_OBU$TAG", "数据转换异常,请检查参数是否齐全")
|
CallerLogger.e("$M_OBU$TAG", "数据转换异常,请检查参数是否齐全")
|
||||||
return null
|
return null
|
||||||
@@ -121,8 +123,8 @@ object TrafficDataConvertUtilsNew {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 判断车辆V2X预警级别,调整车辆颜色
|
// 判断车辆V2X预警级别,调整车辆颜色
|
||||||
if (info.warningMsg != null && info.warningMsg.warningData != null) {
|
if (info.warningMsg != null && info.warningMsg.warningDataList != null) {
|
||||||
trafficData.threatLevel = info.warningMsg.warningData[0].warningLevel
|
trafficData.threatLevel = info.warningMsg.warningDataList[0].warningLevel
|
||||||
} else {
|
} else {
|
||||||
trafficData.threatLevel = 1
|
trafficData.threatLevel = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight
|
|||||||
super.onTrafficLightPlusSource(light, remain, lightSource)
|
super.onTrafficLightPlusSource(light, remain, lightSource)
|
||||||
|
|
||||||
if (lightSource == DataSourceType.OBU) {
|
if (lightSource == DataSourceType.OBU) {
|
||||||
hasObuLightStatus = true //todo 会存在优先级高的数据没有回调,导致没有数据出现
|
hasObuLightStatus = true
|
||||||
}
|
}
|
||||||
|
|
||||||
CallerTrafficLightListenerManager.showTrafficLight(light, lightSource)
|
CallerTrafficLightListenerManager.showTrafficLight(light, lightSource)
|
||||||
|
|||||||
@@ -84,18 +84,17 @@ dependencies {
|
|||||||
implementation rootProject.ext.dependencies.androidxrecyclerview
|
implementation rootProject.ext.dependencies.androidxrecyclerview
|
||||||
implementation rootProject.ext.dependencies.flexbox
|
implementation rootProject.ext.dependencies.flexbox
|
||||||
implementation rootProject.ext.dependencies.androidautoSize
|
implementation rootProject.ext.dependencies.androidautoSize
|
||||||
|
implementation rootProject.ext.dependencies.koomnative
|
||||||
|
implementation rootProject.ext.dependencies.koomxhook
|
||||||
|
|
||||||
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
|
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
|
||||||
implementation rootProject.ext.dependencies.mogo_core_utils
|
implementation rootProject.ext.dependencies.mogo_core_utils
|
||||||
implementation rootProject.ext.dependencies.mogo_core_function_call
|
implementation rootProject.ext.dependencies.mogo_core_function_call
|
||||||
implementation rootProject.ext.dependencies.mogo_core_data
|
|
||||||
implementation rootProject.ext.dependencies.mogo_core_res
|
implementation rootProject.ext.dependencies.mogo_core_res
|
||||||
}else {
|
}else {
|
||||||
implementation project(':foudations:mogo-aicloud-services-sdk')
|
|
||||||
implementation project(':foudations:mogo-commons')
|
implementation project(':foudations:mogo-commons')
|
||||||
implementation project(':core:mogo-core-utils')
|
implementation project(':core:mogo-core-utils')
|
||||||
implementation project(':core:mogo-core-function-call')
|
implementation project(':core:mogo-core-function-call')
|
||||||
implementation project(':core:mogo-core-data')
|
|
||||||
implementation project(':core:mogo-core-res')
|
implementation project(':core:mogo-core-res')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import android.content.Context
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import com.alibaba.android.arouter.facade.annotation.Route
|
import com.alibaba.android.arouter.facade.annotation.Route
|
||||||
|
import com.mogo.commons.AbsMogoApplication
|
||||||
|
import com.mogo.commons.debug.DebugConfig
|
||||||
import com.mogo.eagle.core.data.EnvConfig
|
import com.mogo.eagle.core.data.EnvConfig
|
||||||
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo
|
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo
|
||||||
import com.mogo.eagle.core.data.constants.MogoServicePaths
|
import com.mogo.eagle.core.data.constants.MogoServicePaths
|
||||||
@@ -16,10 +18,11 @@ import com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider
|
|||||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||||
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager
|
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager
|
||||||
import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
|
import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
|
||||||
import com.zhjt.mogo_core_function_devatools.env.EnvChangeManager
|
|
||||||
import com.zhjt.mogo_core_function_devatools.binding.BindingCarManager.Companion.bindingCarManager
|
import com.zhjt.mogo_core_function_devatools.binding.BindingCarManager.Companion.bindingCarManager
|
||||||
|
import com.zhjt.mogo_core_function_devatools.env.EnvChangeManager
|
||||||
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigCenter.Companion.bizConfigCenter
|
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigCenter.Companion.bizConfigCenter
|
||||||
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigImpl
|
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigImpl
|
||||||
|
import com.zhjt.mogo_core_function_devatools.koom.KoomInitTask
|
||||||
import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchManager
|
import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchManager
|
||||||
import com.zhjt.mogo_core_function_devatools.mofang.MoFangManager.Companion.moFangManager
|
import com.zhjt.mogo_core_function_devatools.mofang.MoFangManager.Companion.moFangManager
|
||||||
import com.zhjt.mogo_core_function_devatools.monitor.MonitorManager
|
import com.zhjt.mogo_core_function_devatools.monitor.MonitorManager
|
||||||
@@ -46,6 +49,9 @@ class DevaToolsProvider : IDevaToolsProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun initBiz() {
|
override fun initBiz() {
|
||||||
|
if (DebugConfig.isDebug()) {
|
||||||
|
KoomInitTask.init(AbsMogoApplication.getApp())
|
||||||
|
}
|
||||||
ttsManager.initTts(mContext!!) //todo
|
ttsManager.initTts(mContext!!) //todo
|
||||||
//链路相关
|
//链路相关
|
||||||
traceManager.init(mContext!!)
|
traceManager.init(mContext!!)
|
||||||
@@ -148,6 +154,10 @@ class DevaToolsProvider : IDevaToolsProvider {
|
|||||||
upgradeManager.downLoadPackage(mContext!!, downloadKey, downloadUrl)
|
upgradeManager.downLoadPackage(mContext!!, downloadKey, downloadUrl)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun updateUpgradeProgress() {
|
||||||
|
upgradeManager.updateUpgradeProgress(mContext!!)
|
||||||
|
}
|
||||||
|
|
||||||
override fun showStatusBar(ctx: Context, container: ViewGroup) {
|
override fun showStatusBar(ctx: Context, container: ViewGroup) {
|
||||||
StatusManager.init(ctx)
|
StatusManager.init(ctx)
|
||||||
StatusManager.show(container)
|
StatusManager.show(container)
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import retrofit2.http.*
|
|||||||
internal interface BadCaseApi {
|
internal interface BadCaseApi {
|
||||||
|
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
@POST("/yycp-vehicle-management-service/tool/badcase/add/v2")
|
@POST("eagle-eye-dns/yycp-vehicle-management-service/tool/badcase/add/v2")
|
||||||
suspend fun post(@FieldMap map: Map<String, String>): Response<UploadResult>
|
suspend fun post(@FieldMap map: Map<String, String>): Response<UploadResult>
|
||||||
|
|
||||||
@GET("/yycp-vehicle-management-service/tool/badcase/reasons")
|
@GET("eagle-eye-dns/yycp-vehicle-management-service/tool/badcase/reasons")
|
||||||
suspend fun get(@Query("channel", encoded = true) channel: String, @Query("pageNo") pageNo: Int): Response<BadCaseResponse>
|
suspend fun get(@Query("channel", encoded = true) channel: String, @Query("pageNo") pageNo: Int): Response<BadCaseResponse>
|
||||||
}
|
}
|
||||||
@@ -17,6 +17,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
|||||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
|
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
|
||||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
||||||
import com.zhjt.mogo_core_function_devatools.upgrade.IPCUpgradeManager.Companion.ipcUpgradeManager
|
import com.zhjt.mogo_core_function_devatools.upgrade.IPCUpgradeManager.Companion.ipcUpgradeManager
|
||||||
|
import com.zhjt.mogo_core_function_devatools.upgrade.ObuUpgradeAppNetWorkManager
|
||||||
import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeAppNetWorkManager
|
import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeAppNetWorkManager
|
||||||
import mogo.telematics.pad.MessagePad
|
import mogo.telematics.pad.MessagePad
|
||||||
|
|
||||||
@@ -160,4 +161,13 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener {
|
|||||||
.getAppUpgradeInfo(mContext, mAddress, role.toString() + "")
|
.getAppUpgradeInfo(mContext, mAddress, role.toString() + "")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
/**
|
||||||
|
* 司机屏 处理obu升级即可,乘客屏不需要处理 TODO OBU的角色
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
fun queryObuUpgrade() {
|
||||||
|
ObuUpgradeAppNetWorkManager.getInstance().getObuUpgradeInfo(mContext, mAddress, role.toString() + "")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mogo.eagle.core.function.main
|
package com.zhjt.mogo_core_function_devatools.koom
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
@@ -8,7 +8,7 @@ import android.content.Context
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.IntentFilter
|
import android.content.IntentFilter
|
||||||
import com.mogo.eagle.core.data.mofang.MfConstants
|
import com.mogo.eagle.core.data.mofang.MfConstants
|
||||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.updateMfStatusView
|
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager.invokeMoFangStatus
|
||||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_F
|
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_F
|
||||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
||||||
@@ -96,7 +96,7 @@ class MoFangManager private constructor() {
|
|||||||
BluetoothDevice.ACTION_ACL_CONNECTED -> { //蓝牙设备已连接
|
BluetoothDevice.ACTION_ACL_CONNECTED -> { //蓝牙设备已连接
|
||||||
if (!isMfConnect) {
|
if (!isMfConnect) {
|
||||||
// showBondedDevice(mBluetoothAdapter)
|
// showBondedDevice(mBluetoothAdapter)
|
||||||
updateMfStatusView(TAG, true)
|
invokeMoFangStatus(true)
|
||||||
isMfConnect = true
|
isMfConnect = true
|
||||||
mContext?.let { SharedPrefsMgr.getInstance(it).putBoolean(MfConstants.BLUETOOTH_STATUS, true) }
|
mContext?.let { SharedPrefsMgr.getInstance(it).putBoolean(MfConstants.BLUETOOTH_STATUS, true) }
|
||||||
}
|
}
|
||||||
@@ -106,7 +106,7 @@ class MoFangManager private constructor() {
|
|||||||
BluetoothDevice.ACTION_ACL_DISCONNECTED -> { //蓝牙设备已断开 主动更新
|
BluetoothDevice.ACTION_ACL_DISCONNECTED -> { //蓝牙设备已断开 主动更新
|
||||||
CallerLogger.d("$M_F${TAG}","bluetoothMonitorReceiver ACTION_ACL_DISCONNECTED ----- isMfConnect = $isMfConnect ")
|
CallerLogger.d("$M_F${TAG}","bluetoothMonitorReceiver ACTION_ACL_DISCONNECTED ----- isMfConnect = $isMfConnect ")
|
||||||
if (isMfConnect) {
|
if (isMfConnect) {
|
||||||
updateMfStatusView(TAG, false)
|
invokeMoFangStatus(false)
|
||||||
isMfConnect = false
|
isMfConnect = false
|
||||||
mContext?.let { SharedPrefsMgr.getInstance(it).putBoolean(MfConstants.BLUETOOTH_STATUS, false) }
|
mContext?.let { SharedPrefsMgr.getInstance(it).putBoolean(MfConstants.BLUETOOTH_STATUS, false) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,95 @@
|
|||||||
|
package com.zhjt.mogo_core_function_devatools.upgrade;
|
||||||
|
|
||||||
|
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BINDING;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
|
||||||
|
import com.mogo.commons.constants.HostConst;
|
||||||
|
import com.mogo.eagle.core.data.bindingcar.UpgradeAppInfo;
|
||||||
|
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
|
||||||
|
import com.mogo.eagle.core.network.MoGoRetrofitFactory;
|
||||||
|
import com.mogo.eagle.core.network.utils.GsonUtil;
|
||||||
|
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||||
|
import com.mogo.eagle.core.utilcode.util.AppUtils;
|
||||||
|
|
||||||
|
import io.reactivex.Observer;
|
||||||
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
|
import io.reactivex.annotations.NonNull;
|
||||||
|
import io.reactivex.disposables.Disposable;
|
||||||
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
import okhttp3.MediaType;
|
||||||
|
import okhttp3.RequestBody;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lixiaopeng
|
||||||
|
* @description 获取obu升级信息
|
||||||
|
* @since: 3/25/22
|
||||||
|
*/
|
||||||
|
public class ObuUpgradeAppNetWorkManager {
|
||||||
|
private static volatile ObuUpgradeAppNetWorkManager requestNoticeManager;
|
||||||
|
private final UpgradeApiService mUpgradeApiService;
|
||||||
|
private static final String TAG = "ObuUpgrade";
|
||||||
|
|
||||||
|
private ObuUpgradeAppNetWorkManager() {
|
||||||
|
mUpgradeApiService = MoGoRetrofitFactory.getInstance(HostConst.getHost())
|
||||||
|
.create(UpgradeApiService.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ObuUpgradeAppNetWorkManager getInstance() {
|
||||||
|
if (requestNoticeManager == null) {
|
||||||
|
synchronized (ObuUpgradeAppNetWorkManager.class) {
|
||||||
|
if (requestNoticeManager == null) {
|
||||||
|
requestNoticeManager = new ObuUpgradeAppNetWorkManager();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return requestNoticeManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取obu升级信息
|
||||||
|
* mac :工控机mac地址
|
||||||
|
* screenType : 类型
|
||||||
|
*/
|
||||||
|
public void getObuUpgradeInfo(Context context, String mac, String screenType) {
|
||||||
|
// String sn = "X20202203105S688HZ";
|
||||||
|
// String mac = "48:b0:2d:3a:bc:78";
|
||||||
|
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
|
||||||
|
int versionCode = AppUtils.getAppVersionCode();
|
||||||
|
CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo mac = " + mac + "---type = " + screenType + "---sn = " + sn + "---versionCode =" + versionCode);
|
||||||
|
UpgradeAppRequest request = new UpgradeAppRequest(sn, mac, screenType);
|
||||||
|
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request));
|
||||||
|
mUpgradeApiService.getUpgradeInfo(requestBody)
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(new Observer<UpgradeAppInfo>() {
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(@NonNull Disposable d) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNext(@NonNull UpgradeAppInfo info) {
|
||||||
|
if (info != null && info.result != null) {
|
||||||
|
CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo 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 {
|
||||||
|
CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo onNext info == null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(Throwable e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onComplete() {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,7 +1,12 @@
|
|||||||
package com.zhjt.mogo_core_function_devatools.upgrade
|
package com.zhjt.mogo_core_function_devatools.upgrade
|
||||||
|
|
||||||
|
import android.app.NotificationManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import androidx.core.app.NotificationCompat
|
||||||
|
import com.elegant.utils.UiThreadHandler
|
||||||
|
import com.mogo.eagle.core.function.api.devatools.IMogoDevaToolsUpgradeListener
|
||||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsUpgradeListenerManager
|
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsUpgradeListenerManager
|
||||||
|
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.updateStatusBarDownloadView
|
||||||
import com.mogo.eagle.core.utilcode.breakpoint.Config
|
import com.mogo.eagle.core.utilcode.breakpoint.Config
|
||||||
import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean
|
import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean
|
||||||
import com.mogo.eagle.core.utilcode.breakpoint.callback.IDownload
|
import com.mogo.eagle.core.utilcode.breakpoint.callback.IDownload
|
||||||
@@ -110,4 +115,36 @@ class UpgradeManager : IDownload {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun updateUpgradeProgress(context: Context) {
|
||||||
|
val builder = NotificationCompat.Builder(context)
|
||||||
|
// builder.setSmallIcon(R.mipmap.icon1001);//todo emArrow 更换图标,去除地图下载图标的依赖关系
|
||||||
|
builder.setContentTitle("下载")
|
||||||
|
builder.setContentText("正在下载")
|
||||||
|
val manager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
|
CallerDevaToolsUpgradeListenerManager.addListener(
|
||||||
|
TAG,
|
||||||
|
object : IMogoDevaToolsUpgradeListener {
|
||||||
|
override fun onStart(url: String?) {}
|
||||||
|
override fun onPause(url: String?) {}
|
||||||
|
override fun onProgress(url: String?, length: Int) {
|
||||||
|
builder.setProgress(100, length, false)
|
||||||
|
manager.notify(0x3, builder.build())
|
||||||
|
//下载进度提示
|
||||||
|
builder.setContentText("已下载$length%")
|
||||||
|
updateStatusBarDownloadView(true, "download", length)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onFinished(url: String?) {
|
||||||
|
builder.setContentText("已下载" + 100 + "%")
|
||||||
|
UiThreadHandler.postDelayed({
|
||||||
|
manager.cancel(0x3)
|
||||||
|
updateStatusBarDownloadView(false, "download", 100)
|
||||||
|
}, 1000)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onError(url: String?, errorMsg: String?) {}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -68,8 +68,7 @@ dependencies {
|
|||||||
|
|
||||||
// debugImplementation rootProject.ext.dependencies.debugleakcanary
|
// debugImplementation rootProject.ext.dependencies.debugleakcanary
|
||||||
// releaseImplementation rootProject.ext.dependencies.releaseleakcanary
|
// releaseImplementation rootProject.ext.dependencies.releaseleakcanary
|
||||||
|
implementation project(':libraries:mogo-obu')
|
||||||
implementation rootProject.ext.dependencies.mogoobu
|
|
||||||
implementation rootProject.ext.dependencies.arouter
|
implementation rootProject.ext.dependencies.arouter
|
||||||
kapt rootProject.ext.dependencies.aroutercompiler
|
kapt rootProject.ext.dependencies.aroutercompiler
|
||||||
|
|
||||||
@@ -80,20 +79,17 @@ dependencies {
|
|||||||
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
|
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
|
||||||
|
|
||||||
compileOnly rootProject.ext.dependencies.mogocommons
|
compileOnly rootProject.ext.dependencies.mogocommons
|
||||||
compileOnly rootProject.ext.dependencies.mogo_core_res
|
api rootProject.ext.dependencies.mogo_core_res
|
||||||
compileOnly rootProject.ext.dependencies.mogo_core_utils
|
compileOnly rootProject.ext.dependencies.mogo_core_utils
|
||||||
compileOnly rootProject.ext.dependencies.mogo_core_function_map
|
|
||||||
compileOnly rootProject.ext.dependencies.mogo_core_function_devatools
|
|
||||||
compileOnly rootProject.ext.dependencies.mogo_core_function_datacenter
|
compileOnly rootProject.ext.dependencies.mogo_core_function_datacenter
|
||||||
compileOnly rootProject.ext.dependencies.mogo_core_function_call
|
compileOnly rootProject.ext.dependencies.mogo_core_function_call
|
||||||
compileOnly project(':libraries:mogo-adas')
|
compileOnly project(':libraries:mogo-adas')
|
||||||
} else {
|
} else {
|
||||||
api project(':test:crashreport-upgrade')
|
|
||||||
api project(':test:crashreport-apmbyte')
|
api project(':test:crashreport-apmbyte')
|
||||||
|
|
||||||
compileOnly project(':core:function-impl:mogo-core-function-datacenter')
|
compileOnly project(':core:function-impl:mogo-core-function-datacenter')
|
||||||
compileOnly project(':foudations:mogo-commons')
|
compileOnly project(':foudations:mogo-commons')
|
||||||
compileOnly project(':core:mogo-core-res')
|
api project(':core:mogo-core-res')
|
||||||
compileOnly project(':core:mogo-core-utils')
|
compileOnly project(':core:mogo-core-utils')
|
||||||
compileOnly project(':core:mogo-core-function-call')
|
compileOnly project(':core:mogo-core-function-call')
|
||||||
compileOnly project(':libraries:mogo-adas')
|
compileOnly project(':libraries:mogo-adas')
|
||||||
|
|||||||
@@ -1,7 +1,24 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
package="com.mogo.eagle.core.function.hmi">
|
package="com.mogo.eagle.core.function.hmi">
|
||||||
|
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS" />
|
||||||
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
|
<uses-permission android:name="android.permission.CALL_PHONE" />
|
||||||
|
<uses-permission android:name="android.permission.SET_WALLPAPER" />
|
||||||
|
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />
|
||||||
|
<uses-permission android:name="android.permission.BIND_APPWIDGET" />
|
||||||
|
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
|
||||||
|
<uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
|
||||||
|
<uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS" />
|
||||||
|
<uses-permission android:name="com.android.launcher3.permission.WRITE_SETTINGS" />
|
||||||
|
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||||
|
<uses-permission
|
||||||
|
android:name="android.permission.QUERY_ALL_PACKAGES"
|
||||||
|
tools:ignore="QueryAllPackagesPermission" />
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||||
@@ -39,10 +56,11 @@
|
|||||||
android:clearTaskOnLaunch="${ACTIVITY_ROOT}"
|
android:clearTaskOnLaunch="${ACTIVITY_ROOT}"
|
||||||
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
|
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
|
||||||
android:enabled="true"
|
android:enabled="true"
|
||||||
|
android:hardwareAccelerated="true"
|
||||||
android:launchMode="singleTop"
|
android:launchMode="singleTop"
|
||||||
android:resizeableActivity="false"
|
android:resizeableActivity="false"
|
||||||
android:resumeWhilePausing="true"
|
android:resumeWhilePausing="true"
|
||||||
android:screenOrientation="landscape"
|
android:screenOrientation="${SCREEN_ORIENTATION}"
|
||||||
android:stateNotNeeded="true"
|
android:stateNotNeeded="true"
|
||||||
android:theme="@style/Main"
|
android:theme="@style/Main"
|
||||||
android:windowSoftInputMode="adjustPan|stateHidden">
|
android:windowSoftInputMode="adjustPan|stateHidden">
|
||||||
@@ -67,7 +85,6 @@
|
|||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name="com.mogo.eagle.core.function.main.PassengerLauncherActivity"
|
android:name="com.mogo.eagle.core.function.main.PassengerLauncherActivity"
|
||||||
android:clearTaskOnLaunch="${ACTIVITY_ROOT}"
|
|
||||||
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
|
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
|
||||||
android:enabled="true"
|
android:enabled="true"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
@@ -99,7 +116,6 @@
|
|||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name="com.mogo.eagle.core.function.main.VideoAdAtc"
|
android:name="com.mogo.eagle.core.function.main.VideoAdAtc"
|
||||||
android:clearTaskOnLaunch="${ACTIVITY_ROOT}"
|
|
||||||
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
|
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
|
||||||
android:enabled="true"
|
android:enabled="true"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
@@ -121,6 +137,16 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name="com.mogo.eagle.core.function.main.AppListActivity"
|
||||||
|
android:exported="true"
|
||||||
|
android:launchMode="singleTask">
|
||||||
|
<!-- <intent-filter>-->
|
||||||
|
<!-- <action android:name="android.intent.action.MAIN"/>-->
|
||||||
|
<!-- <category android:name="android.intent.category.LAUNCHER"/>-->
|
||||||
|
<!-- </intent-filter>-->
|
||||||
|
</activity>
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="MAP_SDK_VERSION111111"
|
android:name="MAP_SDK_VERSION111111"
|
||||||
android:value="${MAP_SDK_VERSION}" />
|
android:value="${MAP_SDK_VERSION}" />
|
||||||
|
|||||||
@@ -87,10 +87,6 @@ class MoGoHmiProvider : IMoGoHmiProvider {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun updateMfStatus(tag: String, status: Boolean) {
|
|
||||||
CallerHmiViewControlListenerManager.updateMfStatus(StatusBarView.TAG, tag, status)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 不展示顶部弹窗,其它保留
|
* 不展示顶部弹窗,其它保留
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -635,6 +635,33 @@ internal class DebugSettingView @JvmOverloads constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tbV2NFromCar.isChecked = FunctionBuildConfig.isV2NFromCar
|
||||||
|
//v2n车端预警
|
||||||
|
tbV2NFromCar.setOnCheckedChangeListener { _, isChecked ->
|
||||||
|
FunctionBuildConfig.isV2NFromCar = isChecked
|
||||||
|
if (!FunctionBuildConfig.isV2NFromCar) {
|
||||||
|
tbV2NFromCar.isChecked = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tbDrawAiCloudFusion.isChecked = FunctionBuildConfig.isDrawAiCloudFusion
|
||||||
|
//云端感知绘制
|
||||||
|
tbDrawAiCloudFusion.setOnCheckedChangeListener { _, isChecked ->
|
||||||
|
FunctionBuildConfig.isDrawAiCloudFusion = isChecked
|
||||||
|
if (!FunctionBuildConfig.isDrawAiCloudFusion) {
|
||||||
|
tbDrawAiCloudFusion.isChecked = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tbDrawRomaMode.isChecked = FunctionBuildConfig.isRomaMode
|
||||||
|
//roma
|
||||||
|
tbDrawRomaMode.setOnCheckedChangeListener { _, isChecked ->
|
||||||
|
FunctionBuildConfig.isRomaMode = isChecked
|
||||||
|
if (!FunctionBuildConfig.isRomaMode) {
|
||||||
|
tbDrawRomaMode.isChecked = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//重启工控机所有节点
|
//重启工控机所有节点
|
||||||
btnIpcReboot.onClick {
|
btnIpcReboot.onClick {
|
||||||
CallerAutoPilotControlManager.sendIpcReboot()
|
CallerAutoPilotControlManager.sendIpcReboot()
|
||||||
|
|||||||
@@ -175,11 +175,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
|||||||
tbObu.isChecked = CallerObuApiManager.isConnected()
|
tbObu.isChecked = CallerObuApiManager.isConnected()
|
||||||
tbObu.setOnCheckedChangeListener { _, isChecked ->
|
tbObu.setOnCheckedChangeListener { _, isChecked ->
|
||||||
if (!isChecked) {
|
if (!isChecked) {
|
||||||
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) {
|
CallerObuApiManager.resetObuIpAddress("192.168.1.199")
|
||||||
CallerObuApiManager.resetObuIpAddress("192.168.1.199")
|
|
||||||
} else if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
|
|
||||||
CallerObuApiManager.resetObuIpAddress("192.168.8.199")
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
//断开链接
|
//断开链接
|
||||||
CallerObuApiManager.disConnectObu()
|
CallerObuApiManager.disConnectObu()
|
||||||
|
|||||||
@@ -77,8 +77,11 @@ class PncActionsView @JvmOverloads constructor(
|
|||||||
UiThreadHandler.post {
|
UiThreadHandler.post {
|
||||||
var actions: String? = null
|
var actions: String? = null
|
||||||
planningActionMsg.actionMsg?.let { it ->
|
planningActionMsg.actionMsg?.let { it ->
|
||||||
actions = PncActionsHelper.getAction(it.drivingState.number, it.drivingAction.number)
|
try {
|
||||||
|
actions = PncActionsHelper.getAction(it.drivingState.number, it.drivingAction.number)
|
||||||
|
} catch (e:Exception){
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
//如果是存在云端红绿灯数据条件下,设置云端数据
|
//如果是存在云端红绿灯数据条件下,设置云端数据
|
||||||
if (PncActionsHelper.isWaitingTrafficlight(it.drivingState.number, it.drivingAction.number)
|
if (PncActionsHelper.isWaitingTrafficlight(it.drivingState.number, it.drivingAction.number)
|
||||||
&& mTrafficLightResult != null
|
&& mTrafficLightResult != null
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import android.view.animation.Animation
|
|||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout
|
import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
import chassis.Chassis
|
import chassis.Chassis
|
||||||
|
import com.mogo.eagle.core.function.api.map.angle.*
|
||||||
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager
|
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager
|
||||||
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.Turning
|
|
||||||
import com.mogo.eagle.core.function.hmi.R
|
import com.mogo.eagle.core.function.hmi.R
|
||||||
import kotlinx.android.synthetic.main.view_turn_light_status.view.*
|
import kotlinx.android.synthetic.main.view_turn_light_status.view.*
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
@@ -55,7 +55,7 @@ class TurnLightViewStatus @JvmOverloads constructor(
|
|||||||
//根据左右进行显示和隐藏,实际要判断每个来的时间和频度
|
//根据左右进行显示和隐藏,实际要判断每个来的时间和频度
|
||||||
when (directionLight) {
|
when (directionLight) {
|
||||||
Chassis.LightSwitch.LIGHT_LEFT -> { //左转向
|
Chassis.LightSwitch.LIGHT_LEFT -> { //左转向
|
||||||
CallerVisualAngleManager.changeVisualAngle(Turning(true))
|
CallerVisualAngleManager.changeAngle(Turning(true))
|
||||||
showNormalAnimation()
|
showNormalAnimation()
|
||||||
left_select_image.visibility = View.VISIBLE
|
left_select_image.visibility = View.VISIBLE
|
||||||
right_select_image.visibility = View.GONE
|
right_select_image.visibility = View.GONE
|
||||||
@@ -63,7 +63,7 @@ class TurnLightViewStatus @JvmOverloads constructor(
|
|||||||
setAnimation(left_select_image)
|
setAnimation(left_select_image)
|
||||||
}
|
}
|
||||||
Chassis.LightSwitch.LIGHT_RIGHT -> { //右转向
|
Chassis.LightSwitch.LIGHT_RIGHT -> { //右转向
|
||||||
CallerVisualAngleManager.changeVisualAngle(Turning(true))
|
CallerVisualAngleManager.changeAngle(Turning(true))
|
||||||
showNormalAnimation()
|
showNormalAnimation()
|
||||||
left_select_image.visibility = View.GONE
|
left_select_image.visibility = View.GONE
|
||||||
right_select_image.visibility = View.VISIBLE
|
right_select_image.visibility = View.VISIBLE
|
||||||
@@ -71,7 +71,7 @@ class TurnLightViewStatus @JvmOverloads constructor(
|
|||||||
setAnimation(right_select_image)
|
setAnimation(right_select_image)
|
||||||
}
|
}
|
||||||
else -> { //消失
|
else -> { //消失
|
||||||
CallerVisualAngleManager.changeVisualAngle(Turning(false))
|
CallerVisualAngleManager.changeAngle(Turning(false))
|
||||||
animationDisappear()
|
animationDisappear()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,13 @@ import android.content.Context
|
|||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.widget.RelativeLayout
|
import android.widget.RelativeLayout
|
||||||
|
import com.mogo.eagle.core.data.mofang.MfConstants
|
||||||
|
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener
|
||||||
|
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager
|
||||||
import com.mogo.eagle.core.function.hmi.R
|
import com.mogo.eagle.core.function.hmi.R
|
||||||
|
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
||||||
|
import kotlinx.android.synthetic.main.view_blue_tooth.view.*
|
||||||
|
import kotlinx.android.synthetic.main.view_status_bar.view.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 魔戒蓝牙控件
|
* 魔戒蓝牙控件
|
||||||
@@ -14,10 +20,38 @@ class BlueToothView @JvmOverloads constructor(
|
|||||||
context: Context,
|
context: Context,
|
||||||
attrs: AttributeSet? = null,
|
attrs: AttributeSet? = null,
|
||||||
defStyleAttr: Int = 0
|
defStyleAttr: Int = 0
|
||||||
) : RelativeLayout(context, attrs, defStyleAttr) {
|
) : RelativeLayout(context, attrs, defStyleAttr),IMoGoDevaToolsListener {
|
||||||
|
|
||||||
|
companion object{
|
||||||
|
private const val TAG = "BlueToothView"
|
||||||
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
LayoutInflater.from(context).inflate(R.layout.view_blue_tooth, this, true)
|
LayoutInflater.from(context).inflate(R.layout.view_blue_tooth, this, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onAttachedToWindow() {
|
||||||
|
super.onAttachedToWindow()
|
||||||
|
val isBluetoothConnect =
|
||||||
|
SharedPrefsMgr.getInstance(context).getBoolean(MfConstants.BLUETOOTH_STATUS, false)
|
||||||
|
if (isBluetoothConnect) {
|
||||||
|
mofangStatus(true)
|
||||||
|
}
|
||||||
|
CallerDevaToolsListenerManager.addListener(TAG, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun mofangStatus(status: Boolean) {
|
||||||
|
super.mofangStatus(status)
|
||||||
|
if (status) {
|
||||||
|
mofangView.setImageResource(R.drawable.icon_bluetooth_p)
|
||||||
|
} else {
|
||||||
|
mofangView.setImageResource(R.drawable.blue_tooth)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDetachedFromWindow() {
|
||||||
|
super.onDetachedFromWindow()
|
||||||
|
CallerDevaToolsListenerManager.removeListener(TAG)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -7,14 +7,13 @@ import android.view.LayoutInflater
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||||
import com.mogo.eagle.core.data.mofang.MfConstants
|
|
||||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
|
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
|
||||||
import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener
|
import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener
|
||||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
||||||
import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager
|
import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager
|
||||||
import com.mogo.eagle.core.function.hmi.R
|
import com.mogo.eagle.core.function.hmi.R
|
||||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
import com.mogo.eagle.core.utilcode.util.BarUtils
|
||||||
import kotlinx.android.synthetic.main.view_status_bar.view.*
|
import kotlinx.android.synthetic.main.view_status_bar.view.*
|
||||||
import java.util.concurrent.CopyOnWriteArrayList
|
import java.util.concurrent.CopyOnWriteArrayList
|
||||||
|
|
||||||
@@ -38,12 +37,12 @@ class StatusBarView @JvmOverloads constructor(
|
|||||||
|
|
||||||
override fun onAttachedToWindow() {
|
override fun onAttachedToWindow() {
|
||||||
super.onAttachedToWindow()
|
super.onAttachedToWindow()
|
||||||
viewStatusBarRight.addView(BatteryGroupView(this.context))
|
post {
|
||||||
val isBluetoothConnect =
|
val params: ViewGroup.LayoutParams = getLayoutParams()
|
||||||
SharedPrefsMgr.getInstance(context).getBoolean(MfConstants.BLUETOOTH_STATUS, false)
|
params.height = BarUtils.getStatusBarHeight()
|
||||||
if (isBluetoothConnect) {
|
layoutParams = params
|
||||||
updateMfStatus("MoFangManager", true)
|
|
||||||
}
|
}
|
||||||
|
viewStatusBarRight.addView(BatteryGroupView(this.context))
|
||||||
|
|
||||||
//添加view控制
|
//添加view控制
|
||||||
CallerHmiViewControlListenerManager.addListener(TAG,this)
|
CallerHmiViewControlListenerManager.addListener(TAG,this)
|
||||||
@@ -106,14 +105,6 @@ class StatusBarView @JvmOverloads constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun updateMfStatus(tag: String, status: Boolean) {
|
|
||||||
if (status) {
|
|
||||||
viewMofangStatus.setImageResource(R.drawable.icon_bluetooth_p)
|
|
||||||
} else {
|
|
||||||
viewMofangStatus.setImageResource(R.drawable.blue_tooth)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setTextColor(color: Int) {
|
private fun setTextColor(color: Int) {
|
||||||
viewTextClock.setTextColor(color)
|
viewTextClock.setTextColor(color)
|
||||||
viewStatusBarTag.setTextColor(color)
|
viewStatusBarTag.setTextColor(color)
|
||||||
|
|||||||
@@ -11,7 +11,9 @@ 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.autopilot.CallerAutoPilotStatusListenerManager
|
||||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||||
import com.mogo.eagle.core.function.hmi.R
|
import com.mogo.eagle.core.function.hmi.R
|
||||||
|
import com.mogo.eagle.core.function.main.AppListActivity
|
||||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||||
|
import com.mogo.eagle.core.utilcode.util.ActivityUtils
|
||||||
import com.mogo.eagle.core.utilcode.util.AppUtils
|
import com.mogo.eagle.core.utilcode.util.AppUtils
|
||||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||||
import kotlinx.android.synthetic.main.view_version_name.view.*
|
import kotlinx.android.synthetic.main.view_version_name.view.*
|
||||||
@@ -44,6 +46,12 @@ class VersionNameView @JvmOverloads constructor(
|
|||||||
showCurrentPadVersion()
|
showCurrentPadVersion()
|
||||||
showCurrentMapVersion()
|
showCurrentMapVersion()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 调试入口,应对M1、M2没有安装Launcher的情况
|
||||||
|
setOnLongClickListener {
|
||||||
|
ActivityUtils.startActivity(AppListActivity::class.java)
|
||||||
|
true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
package com.mogo.eagle.core.function.main
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.WindowManager
|
||||||
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.recyclerview.widget.DefaultItemAnimator
|
||||||
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
|
import com.mogo.eagle.core.function.hmi.R
|
||||||
|
import com.mogo.eagle.core.function.main.adapter.AppListAdapter
|
||||||
|
import com.mogo.eagle.core.utilcode.util.ActivityUtils
|
||||||
|
import com.mogo.eagle.core.utilcode.util.BarUtils
|
||||||
|
import kotlinx.android.synthetic.main.activity_app_list.*
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统应用列表,调试使用,暂不对外显示开放,只通过隐藏后门进入
|
||||||
|
*/
|
||||||
|
class AppListActivity : AppCompatActivity(), AppListAdapter.OnItemClickedListener {
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
BarUtils.hideStatusBarAndSticky(this.window)
|
||||||
|
window.setFlags(
|
||||||
|
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
|
||||||
|
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
|
||||||
|
)
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
setContentView(R.layout.activity_app_list)
|
||||||
|
|
||||||
|
val linearLayoutManager = GridLayoutManager(this, 6) //第二个参数为网格的列数
|
||||||
|
recyclerViewAppList.layoutManager = linearLayoutManager
|
||||||
|
|
||||||
|
recyclerViewAppList.itemAnimator = DefaultItemAnimator()
|
||||||
|
val appListAdapter =
|
||||||
|
AppListAdapter(this)
|
||||||
|
recyclerViewAppList.adapter = appListAdapter
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onItemClicked(appListAdapter: AppListAdapter, position: Int) {
|
||||||
|
ActivityUtils.startLauncherActivity(appListAdapter.getItem(position).packageName)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,9 +8,7 @@ import android.view.Gravity
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
import androidx.fragment.app.Fragment
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.alibaba.android.arouter.launcher.ARouter
|
|
||||||
import com.kwai.koom.base.MonitorManager.addMonitorConfig
|
import com.kwai.koom.base.MonitorManager.addMonitorConfig
|
||||||
import com.kwai.koom.nativeoom.leakmonitor.LeakListener
|
import com.kwai.koom.nativeoom.leakmonitor.LeakListener
|
||||||
import com.kwai.koom.nativeoom.leakmonitor.LeakMonitor.start
|
import com.kwai.koom.nativeoom.leakmonitor.LeakMonitor.start
|
||||||
@@ -20,11 +18,9 @@ import com.mogo.commons.analytics.AnalyticsUtils
|
|||||||
import com.mogo.commons.context.ContextHolderUtil
|
import com.mogo.commons.context.ContextHolderUtil
|
||||||
import com.mogo.commons.debug.DebugConfig
|
import com.mogo.commons.debug.DebugConfig
|
||||||
import com.mogo.commons.module.status.MogoStatusManager
|
import com.mogo.commons.module.status.MogoStatusManager
|
||||||
import com.mogo.commons.mvp.BaseFragment
|
|
||||||
import com.mogo.commons.mvp.MvpActivity
|
import com.mogo.commons.mvp.MvpActivity
|
||||||
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
|
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
|
||||||
import com.mogo.eagle.core.data.config.HdMapBuildConfig
|
import com.mogo.eagle.core.data.config.HdMapBuildConfig
|
||||||
import com.mogo.eagle.core.data.constants.MoGoFragmentPaths
|
|
||||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant
|
import com.mogo.eagle.core.data.deva.chain.ChainConstant
|
||||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
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.autopilot.CallerAutoPilotStatusListenerManager
|
||||||
@@ -38,12 +34,9 @@ import com.mogo.eagle.core.function.main.modules.MogoModulesManager
|
|||||||
import com.mogo.eagle.core.function.main.windowview.FloatingViewHandler
|
import com.mogo.eagle.core.function.main.windowview.FloatingViewHandler
|
||||||
import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils
|
import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils
|
||||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e
|
|
||||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i
|
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i
|
||||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||||
import com.mogo.eagle.core.utilcode.mogo.permissions.PermissionsDialogUtils
|
import com.mogo.eagle.core.utilcode.mogo.permissions.PermissionsDialogUtils
|
||||||
import com.mogo.eagle.core.utilcode.mogo.toast.ResourcesHelper
|
|
||||||
import com.mogo.eagle.core.utilcode.util.BarUtils
|
|
||||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||||
import com.mogo.eagle.core.utilcode.util.ProcessUtils
|
import com.mogo.eagle.core.utilcode.util.ProcessUtils
|
||||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||||
@@ -104,12 +97,12 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
|
|||||||
decorView.clipToPadding = false
|
decorView.clipToPadding = false
|
||||||
var statusBarView = decorView.findViewWithTag<View>("status_bar")
|
var statusBarView = decorView.findViewWithTag<View>("status_bar")
|
||||||
if (statusBarView == null) {
|
if (statusBarView == null) {
|
||||||
statusBarView = StatusBarView(this)
|
statusBarView = statusBar
|
||||||
statusBarView.setTag("status_bar")
|
statusBarView.setTag("status_bar")
|
||||||
}
|
}
|
||||||
val statusBarLP = FrameLayout.LayoutParams(
|
val statusBarLP = FrameLayout.LayoutParams(
|
||||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||||
BarUtils.getStatusBarHeight()
|
ViewGroup.LayoutParams.WRAP_CONTENT,
|
||||||
)
|
)
|
||||||
statusBarLP.topMargin = 0
|
statusBarLP.topMargin = 0
|
||||||
statusBarLP.gravity = Gravity.TOP
|
statusBarLP.gravity = Gravity.TOP
|
||||||
@@ -117,11 +110,17 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改statusBar 重写实现,需要继承 StatusBarView,xml中基础系统控件不要修改其id,拿来即用
|
* 修改statusBar重新赋值
|
||||||
* @return StatusBarView
|
* @return StatusBarView
|
||||||
*/
|
*/
|
||||||
protected val statusBarView: StatusBarView
|
protected var statusBar: View?=null
|
||||||
get() = StatusBarView(this)
|
get() {
|
||||||
|
return if (field == null) {
|
||||||
|
StatusBarView(this)
|
||||||
|
}else{
|
||||||
|
field
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
@@ -353,30 +352,4 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 由于应用是单页面的,所以采用Fragment将各模块的UI进行分割解耦合
|
|
||||||
*
|
|
||||||
* @param newFragment 功能UI
|
|
||||||
* @param tagName UI绑定的Tag
|
|
||||||
* @param containerId 要加入的资源ID
|
|
||||||
*/
|
|
||||||
private fun addFragment(newFragment: Fragment, tagName: String, containerId: Int) {
|
|
||||||
var fragment = supportFragmentManager.findFragmentByTag(tagName)
|
|
||||||
if (fragment == null) {
|
|
||||||
fragment = newFragment
|
|
||||||
}
|
|
||||||
if (fragment == null) {
|
|
||||||
e(
|
|
||||||
SceneConstant.M_HMI + TAG,
|
|
||||||
"add fragment fail cause fragment == null, container is " + ResourcesHelper.getResNameById(
|
|
||||||
applicationContext, containerId
|
|
||||||
)
|
|
||||||
)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
supportFragmentManager.beginTransaction()
|
|
||||||
.replace(containerId, fragment, tagName)
|
|
||||||
.commitAllowingStateLoss()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,6 @@ import android.os.Handler;
|
|||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.widget.FrameLayout;
|
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
@@ -32,6 +31,7 @@ import com.mogo.eagle.core.function.hmi.R;
|
|||||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
|
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
|
||||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
|
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
|
||||||
|
import com.mogo.eagle.core.utilcode.util.ActivityUtils;
|
||||||
import com.mogo.eagle.core.utilcode.util.MultiDisplayUtils;
|
import com.mogo.eagle.core.utilcode.util.MultiDisplayUtils;
|
||||||
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||||
@@ -46,8 +46,6 @@ import java.util.List;
|
|||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
|
|
||||||
import me.jessyan.autosize.utils.AutoSizeUtils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 针对作为Launcher的情况,做个性化操作
|
* 针对作为Launcher的情况,做个性化操作
|
||||||
*
|
*
|
||||||
@@ -78,6 +76,11 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
|
|||||||
private long pressEDownTime = 0;
|
private long pressEDownTime = 0;
|
||||||
private long pressEUpTime = 0;
|
private long pressEUpTime = 0;
|
||||||
|
|
||||||
|
private int clickTime = 300; //单击
|
||||||
|
private int clickTimeInterval = 330;
|
||||||
|
private int longPressTime = 670;
|
||||||
|
private int longPressTimeInterval = 700;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
@@ -89,6 +92,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
|
|||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
ActivityUtils.setDefaultL(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -251,7 +255,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
|
|||||||
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||||
pressADownTime = System.currentTimeMillis();
|
pressADownTime = System.currentTimeMillis();
|
||||||
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent A down pressADownTime = " + pressADownTime + "---" + (pressADownTime - startPressTime) + "----isCombinationKey = " + isCombinationKey + "--pressBDownTime = " + pressBDownTime);
|
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent A down pressADownTime = " + pressADownTime + "---" + (pressADownTime - startPressTime) + "----isCombinationKey = " + isCombinationKey + "--pressBDownTime = " + pressBDownTime);
|
||||||
if ((pressADownTime - startPressTime) > 360 && (pressADownTime - startPressTime) < 1300 && pressBDownTime > 0) {
|
if ((pressADownTime - startPressTime) > clickTimeInterval && (pressADownTime - startPressTime) < longPressTime && pressBDownTime > 0) {
|
||||||
if (isShowToast) {
|
if (isShowToast) {
|
||||||
ToastUtils.showShort("方块 A 按AB组合 +1 ");
|
ToastUtils.showShort("方块 A 按AB组合 +1 ");
|
||||||
}
|
}
|
||||||
@@ -260,7 +264,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isCombinationKey != 3 && isCombinationKey != 1) {
|
if (isCombinationKey != 3 && isCombinationKey != 1) {
|
||||||
if ((pressADownTime - startPressTime) > 1320) {
|
if ((pressADownTime - startPressTime) > longPressTimeInterval) {
|
||||||
if (isShowToast) {
|
if (isShowToast) {
|
||||||
ToastUtils.showShort("方块 长按A -2 ");
|
ToastUtils.showShort("方块 长按A -2 ");
|
||||||
}
|
}
|
||||||
@@ -271,7 +275,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
|
|||||||
} else if (event.getAction() == KeyEvent.ACTION_UP) {
|
} else if (event.getAction() == KeyEvent.ACTION_UP) {
|
||||||
pressAUpTime = System.currentTimeMillis();
|
pressAUpTime = System.currentTimeMillis();
|
||||||
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent A up pressAUpTime = " + pressAUpTime + "---" + (pressAUpTime - startPressTime) + "--pressBDownTime = " + pressBDownTime);
|
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent A up pressAUpTime = " + pressAUpTime + "---" + (pressAUpTime - startPressTime) + "--pressBDownTime = " + pressBDownTime);
|
||||||
if ((pressAUpTime - startPressTime) < 350 && isCombinationKey != 3) {
|
if ((pressAUpTime - startPressTime) < clickTime && isCombinationKey != 3) {
|
||||||
isCombinationKey = 1;
|
isCombinationKey = 1;
|
||||||
if (isShowToast) {
|
if (isShowToast) {
|
||||||
ToastUtils.showShort("方块 单击A -1 ");
|
ToastUtils.showShort("方块 单击A -1 ");
|
||||||
@@ -292,7 +296,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
|
|||||||
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||||
pressBDownTime = System.currentTimeMillis();
|
pressBDownTime = System.currentTimeMillis();
|
||||||
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent B down pressBDownTime = " + pressBDownTime + "--差-" + (pressBDownTime - startPressTime) + "---isCombinationKey = " + isCombinationKey + "--pressADownTime = " + pressADownTime);
|
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent B down pressBDownTime = " + pressBDownTime + "--差-" + (pressBDownTime - startPressTime) + "---isCombinationKey = " + isCombinationKey + "--pressADownTime = " + pressADownTime);
|
||||||
if ((pressBDownTime - startPressTime) > 360 && (pressBDownTime - startPressTime) < 1300 && pressADownTime > 0) {
|
if ((pressBDownTime - startPressTime) > clickTimeInterval && (pressBDownTime - startPressTime) < longPressTime && pressADownTime > 0) {
|
||||||
if (isShowToast) {
|
if (isShowToast) {
|
||||||
ToastUtils.showShort("方块 B 按AB组合 +1 ");
|
ToastUtils.showShort("方块 B 按AB组合 +1 ");
|
||||||
}
|
}
|
||||||
@@ -300,7 +304,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
|
|||||||
isCombinationKey = 3;
|
isCombinationKey = 3;
|
||||||
}
|
}
|
||||||
if (isCombinationKey != 3 && isCombinationKey != 1) {
|
if (isCombinationKey != 3 && isCombinationKey != 1) {
|
||||||
if ((pressBDownTime - startPressTime) > 1320) {
|
if ((pressBDownTime - startPressTime) > longPressTimeInterval) {
|
||||||
if (isShowToast) {
|
if (isShowToast) {
|
||||||
ToastUtils.showShort("方块 长按B 无操作 ");
|
ToastUtils.showShort("方块 长按B 无操作 ");
|
||||||
}
|
}
|
||||||
@@ -310,7 +314,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
|
|||||||
} else if (event.getAction() == KeyEvent.ACTION_UP) {
|
} else if (event.getAction() == KeyEvent.ACTION_UP) {
|
||||||
pressBUpTime = System.currentTimeMillis();
|
pressBUpTime = System.currentTimeMillis();
|
||||||
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent B up pressBUpTime = " + pressBUpTime + "--差-" + (pressBUpTime - startPressTime) + "--pressADownTime = " + pressADownTime);
|
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent B up pressBUpTime = " + pressBUpTime + "--差-" + (pressBUpTime - startPressTime) + "--pressADownTime = " + pressADownTime);
|
||||||
if ((pressBUpTime - startPressTime) < 350 && isCombinationKey != 3) {
|
if ((pressBUpTime - startPressTime) < clickTime && isCombinationKey != 3) {
|
||||||
if (isShowToast) {
|
if (isShowToast) {
|
||||||
ToastUtils.showShort("方块 单击B 0 ");
|
ToastUtils.showShort("方块 单击B 0 ");
|
||||||
}
|
}
|
||||||
@@ -332,7 +336,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
|
|||||||
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||||
pressCDownTime = System.currentTimeMillis();
|
pressCDownTime = System.currentTimeMillis();
|
||||||
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 长按C 无操作 time dif = " + (pressCDownTime - startPressTime));
|
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 长按C 无操作 time dif = " + (pressCDownTime - startPressTime));
|
||||||
if ((pressCDownTime - startPressTime) > 1320) {
|
if ((pressCDownTime - startPressTime) > longPressTimeInterval) {
|
||||||
if (isShowToast) {
|
if (isShowToast) {
|
||||||
ToastUtils.showShort("方块 长按C 无操作 ");
|
ToastUtils.showShort("方块 长按C 无操作 ");
|
||||||
}
|
}
|
||||||
@@ -341,7 +345,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
|
|||||||
pressCUpTime = System.currentTimeMillis();
|
pressCUpTime = System.currentTimeMillis();
|
||||||
isPressEnd = false;
|
isPressEnd = false;
|
||||||
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 单击C ← 向左变道 time dif = " + (pressCUpTime - startPressTime));
|
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 单击C ← 向左变道 time dif = " + (pressCUpTime - startPressTime));
|
||||||
if ((pressCUpTime - startPressTime) < 350) {
|
if ((pressCUpTime - startPressTime) < clickTime) {
|
||||||
if (isShowToast) {
|
if (isShowToast) {
|
||||||
ToastUtils.showShort("方块 单击C ← 向左变道 ");
|
ToastUtils.showShort("方块 单击C ← 向左变道 ");
|
||||||
}
|
}
|
||||||
@@ -353,7 +357,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
|
|||||||
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||||
pressDDownTime = System.currentTimeMillis();
|
pressDDownTime = System.currentTimeMillis();
|
||||||
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 长按D 无操作 time dif = " + (pressDDownTime - startPressTime));
|
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 长按D 无操作 time dif = " + (pressDDownTime - startPressTime));
|
||||||
if ((pressDDownTime - startPressTime) > 1320) {
|
if ((pressDDownTime - startPressTime) > longPressTimeInterval) {
|
||||||
if (isShowToast) {
|
if (isShowToast) {
|
||||||
ToastUtils.showShort("方块 长按D 无操作 ");
|
ToastUtils.showShort("方块 长按D 无操作 ");
|
||||||
}
|
}
|
||||||
@@ -362,7 +366,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
|
|||||||
pressDUpTime = System.currentTimeMillis();
|
pressDUpTime = System.currentTimeMillis();
|
||||||
isPressEnd = false;
|
isPressEnd = false;
|
||||||
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 单击D → 向右变道 time dif = " + (pressDUpTime - startPressTime));
|
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 单击D → 向右变道 time dif = " + (pressDUpTime - startPressTime));
|
||||||
if ((pressDUpTime - startPressTime) < 350) {
|
if ((pressDUpTime - startPressTime) < clickTime) {
|
||||||
if (isShowToast) {
|
if (isShowToast) {
|
||||||
ToastUtils.showShort("方块 单击D → 向右变道 ");
|
ToastUtils.showShort("方块 单击D → 向右变道 ");
|
||||||
}
|
}
|
||||||
@@ -374,7 +378,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
|
|||||||
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||||
pressEDownTime = System.currentTimeMillis();
|
pressEDownTime = System.currentTimeMillis();
|
||||||
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 长按E 鸣笛 time dif = " + (pressEDownTime - startPressTime));
|
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 长按E 鸣笛 time dif = " + (pressEDownTime - startPressTime));
|
||||||
if ((pressEDownTime - startPressTime) > 1320) {
|
if ((pressEDownTime - startPressTime) > longPressTimeInterval) {
|
||||||
if (isShowToast) {
|
if (isShowToast) {
|
||||||
ToastUtils.showShort("方块 长按E 鸣笛 ");
|
ToastUtils.showShort("方块 长按E 鸣笛 ");
|
||||||
}
|
}
|
||||||
@@ -394,7 +398,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
|
|||||||
pressEUpTime = System.currentTimeMillis();
|
pressEUpTime = System.currentTimeMillis();
|
||||||
isPressEnd = false;
|
isPressEnd = false;
|
||||||
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "方块 单击E 开启自动驾驶 time dif = " + (pressEUpTime - startPressTime));
|
CallerLogger.INSTANCE.d(M_F + "MoFangManager", "方块 单击E 开启自动驾驶 time dif = " + (pressEUpTime - startPressTime));
|
||||||
if ((pressEUpTime - startPressTime) < 350) {
|
if ((pressEUpTime - startPressTime) < clickTime) {
|
||||||
if (isShowToast) {
|
if (isShowToast) {
|
||||||
ToastUtils.showShort("方块 单击E 开启自动驾驶 ");
|
ToastUtils.showShort("方块 单击E 开启自动驾驶 ");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,35 +3,23 @@ package com.mogo.eagle.core.function.main;
|
|||||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI;
|
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.app.NotificationManager;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import androidx.core.app.NotificationCompat;
|
|
||||||
|
|
||||||
import com.bytedance.boost_multidex.BoostMultiDex;
|
import com.bytedance.boost_multidex.BoostMultiDex;
|
||||||
import com.elegant.utils.UiThreadHandler;
|
|
||||||
import com.mogo.cloud.socket.SocketBuildConfig;
|
import com.mogo.cloud.socket.SocketBuildConfig;
|
||||||
import com.mogo.commons.AbsMogoApplication;
|
import com.mogo.commons.AbsMogoApplication;
|
||||||
import com.mogo.commons.debug.DebugConfig;
|
|
||||||
import com.mogo.commons.module.MogoModule;
|
import com.mogo.commons.module.MogoModule;
|
||||||
import com.mogo.commons.module.MogoModulePaths;
|
import com.mogo.commons.module.MogoModulePaths;
|
||||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||||
import com.mogo.eagle.core.data.constants.MoGoConfig;
|
|
||||||
import com.mogo.eagle.core.data.constants.MogoServicePaths;
|
import com.mogo.eagle.core.data.constants.MogoServicePaths;
|
||||||
import com.mogo.eagle.core.function.api.chat.biz.ChatConsts;
|
import com.mogo.eagle.core.function.api.chat.biz.ChatConsts;
|
||||||
import com.mogo.eagle.core.function.api.devatools.IMogoDevaToolsUpgradeListener;
|
|
||||||
import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager;
|
|
||||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
|
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
|
||||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsUpgradeListenerManager;
|
|
||||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
|
|
||||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager;
|
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager;
|
||||||
import com.mogo.eagle.core.function.msgbox.db.MsgBoxDb;
|
import com.mogo.eagle.core.function.msgbox.db.MsgBoxDb;
|
||||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
|
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
|
||||||
import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils;
|
import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils;
|
||||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
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.ProcessUtils;
|
import com.mogo.eagle.core.utilcode.util.ProcessUtils;
|
||||||
import com.mogo.eagle.core.utilcode.util.SPUtils;
|
import com.mogo.eagle.core.utilcode.util.SPUtils;
|
||||||
|
|
||||||
@@ -41,7 +29,7 @@ import java.text.SimpleDateFormat;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 默认初始化一些基础服务配置 todo 分离 overView业务 和 msgBox去各自模块中 --- 扶风
|
* 默认初始化一些基础服务配置 todo 分离 msgBox去自己的模块中 --- 扶风
|
||||||
*/
|
*/
|
||||||
public abstract class MainMoGoApplication extends AbsMogoApplication {
|
public abstract class MainMoGoApplication extends AbsMogoApplication {
|
||||||
|
|
||||||
@@ -55,23 +43,16 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
start = System.currentTimeMillis();
|
start = System.currentTimeMillis();
|
||||||
connectAmiIp();
|
|
||||||
// Crash 日志收集
|
// Crash 日志收集
|
||||||
initCrashConfig();
|
initCrashConfig();
|
||||||
initLogConfig();
|
initLogConfig();
|
||||||
initTipToast();
|
initTipToast();
|
||||||
initModules();
|
initModules();
|
||||||
//查询是否有版本的更新
|
|
||||||
queryAppUpgrade();
|
|
||||||
if (ProcessUtils.isMainProcess(this)) {
|
if (ProcessUtils.isMainProcess(this)) {
|
||||||
initOverviewDb();
|
|
||||||
if (DebugConfig.isDebug()) {
|
|
||||||
initKoom();
|
|
||||||
}
|
|
||||||
clearMessageBoxTable();
|
clearMessageBoxTable();
|
||||||
CallerMsgBoxManager.INSTANCE.queryAllMessages(this);
|
CallerMsgBoxManager.INSTANCE.queryAllMessages(this);
|
||||||
}
|
}
|
||||||
upgradeProgressListener();
|
CallerDevaToolsManager.INSTANCE.updateUpgradeProgress();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -80,15 +61,6 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void queryAppUpgrade() {
|
|
||||||
UiThreadHandler.postDelayed(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
CallerDevaToolsManager.INSTANCE.queryAppUpgrade();
|
|
||||||
}
|
|
||||||
},9000);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressLint("SimpleDateFormat")
|
@SuppressLint("SimpleDateFormat")
|
||||||
private void clearMessageBoxTable() {
|
private void clearMessageBoxTable() {
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
@@ -121,56 +93,6 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
|||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void upgradeProgressListener() {
|
|
||||||
final NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
|
|
||||||
// builder.setSmallIcon(R.mipmap.icon1001);//todo emArrow 更换图标,去除地图下载图标的依赖关系
|
|
||||||
builder.setContentTitle("下载");
|
|
||||||
builder.setContentText("正在下载");
|
|
||||||
final NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
|
||||||
|
|
||||||
CallerDevaToolsUpgradeListenerManager.INSTANCE.addListener(TAG, new IMogoDevaToolsUpgradeListener() {
|
|
||||||
@Override
|
|
||||||
public void onStart(@Nullable String url) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPause(@Nullable String url) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onProgress(@Nullable String url, int length) {
|
|
||||||
builder.setProgress(100, length,false);
|
|
||||||
manager.notify(0x3, builder.build());
|
|
||||||
//下载进度提示
|
|
||||||
builder.setContentText("已下载" + length + "%");
|
|
||||||
CallerHmiManager.INSTANCE.updateStatusBarDownloadView(true, "download", length);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFinished(@Nullable String url) {
|
|
||||||
builder.setContentText("已下载" + 100 + "%");
|
|
||||||
UiThreadHandler.postDelayed(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
manager.cancel(0x3);
|
|
||||||
CallerHmiManager.INSTANCE.updateStatusBarDownloadView(false, "download", 100);
|
|
||||||
}
|
|
||||||
}, 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onError(@Nullable String url, @Nullable String errorMsg) {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initKoom() {
|
|
||||||
KoomInitTask.INSTANCE.init(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化异常采集配置
|
* 初始化异常采集配置
|
||||||
*/
|
*/
|
||||||
@@ -193,18 +115,6 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
|||||||
CallerDevaToolsManager.INSTANCE.init();
|
CallerDevaToolsManager.INSTANCE.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initOverviewDb() {
|
|
||||||
CallerFuncBizManager.getBizProvider().initOverViewDb(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 连接ami
|
|
||||||
*/
|
|
||||||
private void connectAmiIp() {
|
|
||||||
String ipAddress = SharedPrefsMgr.getInstance(AbsMogoApplication.getApp().getBaseContext()).getString(MoGoConfig.OBU_IP, "192.168.1.199");
|
|
||||||
// AmiClientManager.getInstance().setObuIp(ipAddress);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initModules() {
|
private void initModules() {
|
||||||
CallerLogger.INSTANCE.d(M_HMI + TAG, "initModules");
|
CallerLogger.INSTANCE.d(M_HMI + TAG, "initModules");
|
||||||
// OBU 模块
|
// OBU 模块
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ import java.util.Timer;
|
|||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 针对作为Launcher的情况,做个性化操作
|
* 针对作为Launcher的情况,做个性化操作 TODO 测试用的,可删除
|
||||||
*
|
*
|
||||||
* @author tongchenfei
|
* @author tongchenfei
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import com.mogo.eagle.core.utilcode.util.BarUtils
|
|||||||
import com.mogo.eagle.core.widget.TextureVideoView
|
import com.mogo.eagle.core.widget.TextureVideoView
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 视频广告
|
* 视频广告 TODO 测试用的,可删除
|
||||||
*/
|
*/
|
||||||
class VideoAdAtc : AppCompatActivity() {
|
class VideoAdAtc : AppCompatActivity() {
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,92 @@
|
|||||||
|
package com.mogo.eagle.core.function.main.adapter;
|
||||||
|
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
|
import com.mogo.eagle.core.function.hmi.R;
|
||||||
|
import com.mogo.eagle.core.utilcode.util.AppUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
public class AppListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||||
|
private OnItemClickedListener mOnItemClickedListener;
|
||||||
|
|
||||||
|
public interface OnItemClickedListener {
|
||||||
|
void onItemClicked(AppListAdapter appListAdapter, int position);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class AppViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
public ImageView iconIv;
|
||||||
|
public TextView nameTv;
|
||||||
|
|
||||||
|
public AppViewHolder(View itemView) {
|
||||||
|
super(itemView);
|
||||||
|
iconIv = (ImageView) itemView.findViewById(R.id.list_item_app_icon_iv);
|
||||||
|
nameTv = (TextView) itemView.findViewById(R.id.list_item_app_name_tv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ArrayList<String> showApps = new ArrayList<>();
|
||||||
|
|
||||||
|
public AppListAdapter(OnItemClickedListener onItemClickedListener) {
|
||||||
|
// 设置被允许展示的APP
|
||||||
|
showApps.add("com.android.settings");
|
||||||
|
|
||||||
|
mOnItemClickedListener = onItemClickedListener;
|
||||||
|
mApps = new ArrayList<>();
|
||||||
|
for (AppUtils.AppInfo appInfo : AppUtils.getAppsInfo()) {
|
||||||
|
if (!appInfo.isSystem()) {
|
||||||
|
mApps.add(appInfo);
|
||||||
|
} else {
|
||||||
|
if (showApps.contains(appInfo.getPackageName())) {
|
||||||
|
mApps.add(appInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<AppUtils.AppInfo> mApps;
|
||||||
|
|
||||||
|
public AppUtils.AppInfo getItem(int position) {
|
||||||
|
return mApps.get(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemCount() {
|
||||||
|
return mApps.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getItemId(int position) {
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||||
|
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_app_list, parent, false);
|
||||||
|
return new AppViewHolder(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||||
|
AppViewHolder itemViewHolder = (AppViewHolder) holder;
|
||||||
|
itemViewHolder.iconIv.setImageDrawable(mApps.get(position).getIcon());
|
||||||
|
itemViewHolder.nameTv.setText(mApps.get(position).getName());
|
||||||
|
itemViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
if (mOnItemClickedListener != null) {
|
||||||
|
mOnItemClickedListener.onItemClicked(AppListAdapter.this, position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/recyclerViewAppList"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@drawable/main_splash_bg"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
android:padding="20dp"
|
||||||
|
android:scrollbarStyle="outsideOverlay"
|
||||||
|
android:scrollbars="vertical"
|
||||||
|
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:spanCount="6"
|
||||||
|
tools:itemCount="11"
|
||||||
|
tools:listitem="@layout/item_app_list" />
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="250dp"
|
||||||
|
android:layout_height="250dp"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingStart="10dp"
|
||||||
|
android:paddingTop="10dp"
|
||||||
|
android:paddingEnd="10dp"
|
||||||
|
android:paddingBottom="10dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/list_item_app_icon_iv"
|
||||||
|
android:layout_width="150dp"
|
||||||
|
android:layout_height="150dp"
|
||||||
|
android:src="@drawable/icon_ad" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/list_item_app_name_tv"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:text="应用名称"
|
||||||
|
android:textColor="@color/color_FFFFFF"
|
||||||
|
android:textSize="30dp" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
@@ -5,10 +5,11 @@
|
|||||||
android:layout_height="@dimen/dp_54">
|
android:layout_height="@dimen/dp_54">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:scaleType="fitXY"
|
android:id="@+id/mofangView"
|
||||||
android:src="@drawable/blue_tooth"
|
|
||||||
android:layout_width="@dimen/dp_54"
|
android:layout_width="@dimen/dp_54"
|
||||||
android:layout_height="@dimen/dp_54"
|
android:layout_height="@dimen/dp_54"
|
||||||
|
android:scaleType="fitXY"
|
||||||
|
android:src="@drawable/blue_tooth"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -242,6 +242,42 @@
|
|||||||
android:textOn="关闭感知优化模式"
|
android:textOn="关闭感知优化模式"
|
||||||
android:textSize="@dimen/dp_24" />
|
android:textSize="@dimen/dp_24" />
|
||||||
|
|
||||||
|
<ToggleButton
|
||||||
|
android:id="@+id/tbV2NFromCar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="@dimen/dp_10"
|
||||||
|
android:padding="@dimen/dp_20"
|
||||||
|
android:background="@drawable/radio_button_normal_background_right"
|
||||||
|
android:textColor="#000"
|
||||||
|
android:textOff="开启车端V2N预警"
|
||||||
|
android:textOn="关闭车端V2N预警"
|
||||||
|
android:textSize="@dimen/dp_24" />
|
||||||
|
|
||||||
|
<ToggleButton
|
||||||
|
android:id="@+id/tbDrawAiCloudFusion"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="@dimen/dp_10"
|
||||||
|
android:padding="@dimen/dp_20"
|
||||||
|
android:background="@drawable/radio_button_normal_background_right"
|
||||||
|
android:textColor="#000"
|
||||||
|
android:textOff="开启云端感知绘制"
|
||||||
|
android:textOn="关闭云端感知绘制"
|
||||||
|
android:textSize="@dimen/dp_24" />
|
||||||
|
|
||||||
|
<ToggleButton
|
||||||
|
android:id="@+id/tbDrawRomaMode"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="@dimen/dp_10"
|
||||||
|
android:padding="@dimen/dp_20"
|
||||||
|
android:background="@drawable/radio_button_normal_background_right"
|
||||||
|
android:textColor="#000"
|
||||||
|
android:textOff="开启漫游模式"
|
||||||
|
android:textOn="关闭漫游模式"
|
||||||
|
android:textSize="@dimen/dp_24" />
|
||||||
|
|
||||||
<ToggleButton
|
<ToggleButton
|
||||||
android:id="@+id/tbMojie"
|
android:id="@+id/tbMojie"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="@dimen/dp_100">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tvHmiPncActions"
|
android:id="@+id/tvHmiPncActions"
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
android:textColor="@color/color_2C2E30"
|
android:textColor="@color/color_2C2E30"
|
||||||
android:textSize="@dimen/dp_35" />
|
android:textSize="@dimen/dp_35" />
|
||||||
|
|
||||||
|
<!--Wifi状态-->
|
||||||
<com.mogo.eagle.core.function.hmi.ui.widget.WifiStateView
|
<com.mogo.eagle.core.function.hmi.ui.widget.WifiStateView
|
||||||
android:layout_width="@dimen/dp_54"
|
android:layout_width="@dimen/dp_54"
|
||||||
android:layout_height="@dimen/dp_54"
|
android:layout_height="@dimen/dp_54"
|
||||||
@@ -36,8 +37,7 @@
|
|||||||
android:layout_marginStart="@dimen/dp_18" />
|
android:layout_marginStart="@dimen/dp_18" />
|
||||||
|
|
||||||
<!--魔方连接状态-->
|
<!--魔方连接状态-->
|
||||||
<ImageView
|
<com.mogo.eagle.core.function.hmi.ui.widget.BlueToothView
|
||||||
android:id="@+id/viewMofangStatus"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@drawable/blue_tooth"
|
android:src="@drawable/blue_tooth"
|
||||||
|
|||||||
@@ -75,13 +75,10 @@ dependencies {
|
|||||||
implementation rootProject.ext.dependencies.mogo_core_function_call
|
implementation rootProject.ext.dependencies.mogo_core_function_call
|
||||||
|
|
||||||
implementation rootProject.ext.dependencies.mogomap
|
implementation rootProject.ext.dependencies.mogomap
|
||||||
implementation rootProject.ext.dependencies.mogomapapi
|
|
||||||
} else {
|
} else {
|
||||||
implementation project(':foudations:mogo-commons')
|
implementation project(':foudations:mogo-commons')
|
||||||
implementation project(':core:mogo-core-res')
|
implementation project(':core:mogo-core-res')
|
||||||
implementation project(':core:mogo-core-data')
|
|
||||||
implementation project(':core:mogo-core-utils')
|
implementation project(':core:mogo-core-utils')
|
||||||
implementation project(':core:function-impl:mogo-core-function-datacenter')
|
|
||||||
implementation project(':core:mogo-core-function-call')
|
implementation project(':core:mogo-core-function-call')
|
||||||
implementation project(":libraries:mogo-map")
|
implementation project(":libraries:mogo-map")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.mogo.eagle.core.function.view">
|
package="com.mogo.eagle.core.function.map">
|
||||||
|
|
||||||
|
<application>
|
||||||
|
|
||||||
|
<receiver android:name="com.mogo.eagle.core.function.business.ai.AiCloudRangeBroadcastReceiver">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="com.map.aiCloud.notification" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
</application>
|
||||||
</manifest>
|
</manifest>
|
||||||
@@ -2,10 +2,12 @@ package com.mogo.eagle.core.function
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.alibaba.android.arouter.facade.annotation.Route
|
import com.alibaba.android.arouter.facade.annotation.Route
|
||||||
|
import com.mogo.commons.AbsMogoApplication
|
||||||
import com.mogo.eagle.core.data.constants.MogoServicePaths
|
import com.mogo.eagle.core.data.constants.MogoServicePaths
|
||||||
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider
|
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider
|
||||||
import com.mogo.eagle.core.function.business.MapPointCloudSubscriber
|
import com.mogo.eagle.core.function.business.MapPointCloudSubscriber
|
||||||
import com.mogo.eagle.core.function.business.SpeedLimitDataManager
|
import com.mogo.eagle.core.function.business.SpeedLimitDataManager
|
||||||
|
import com.mogo.eagle.core.function.business.ai.AiCloudIdentifyDataManager.Companion.aiCloudIdentifyDataManager
|
||||||
import com.mogo.eagle.core.function.business.identify.MapIdentifySubscriber
|
import com.mogo.eagle.core.function.business.identify.MapIdentifySubscriber
|
||||||
import com.mogo.eagle.core.function.business.routeoverlay.MogoRouteOverlayManager
|
import com.mogo.eagle.core.function.business.routeoverlay.MogoRouteOverlayManager
|
||||||
|
|
||||||
@@ -20,6 +22,7 @@ class MapBizProvider :IMoGoFunctionServerProvider{
|
|||||||
MogoRouteOverlayManager.getInstance().init()
|
MogoRouteOverlayManager.getInstance().init()
|
||||||
MapPointCloudSubscriber.instance
|
MapPointCloudSubscriber.instance
|
||||||
SpeedLimitDataManager.getInstance().start()
|
SpeedLimitDataManager.getInstance().start()
|
||||||
|
aiCloudIdentifyDataManager.init(AbsMogoApplication.getApp())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
|
|||||||
@@ -0,0 +1,306 @@
|
|||||||
|
package com.mogo.eagle.core.function.angle
|
||||||
|
|
||||||
|
import android.content.*
|
||||||
|
import android.os.*
|
||||||
|
import android.util.*
|
||||||
|
import androidx.lifecycle.*
|
||||||
|
import androidx.lifecycle.Lifecycle.Event
|
||||||
|
import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
|
||||||
|
import com.alibaba.android.arouter.facade.annotation.Route
|
||||||
|
import com.mogo.eagle.core.data.config.*
|
||||||
|
import com.mogo.eagle.core.data.constants.MogoServicePaths
|
||||||
|
import com.mogo.eagle.core.data.map.*
|
||||||
|
import com.mogo.eagle.core.data.map.MapRoadInfo.StopLine
|
||||||
|
import com.mogo.eagle.core.function.api.map.angle.*
|
||||||
|
import com.mogo.eagle.core.function.api.map.angle.Scene
|
||||||
|
import com.mogo.eagle.core.function.call.autopilot.*
|
||||||
|
import com.mogo.eagle.core.function.call.map.*
|
||||||
|
import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager.OnRoadListener
|
||||||
|
import com.mogo.eagle.core.utilcode.kotlin.*
|
||||||
|
import com.mogo.eagle.core.utilcode.mogo.*
|
||||||
|
import com.mogo.eagle.core.utilcode.mogo.logger.*
|
||||||
|
import com.zhidaoauto.map.sdk.open.tools.*
|
||||||
|
import kotlinx.coroutines.*
|
||||||
|
import kotlinx.coroutines.android.*
|
||||||
|
import java.util.*
|
||||||
|
import java.util.concurrent.atomic.*
|
||||||
|
|
||||||
|
@Route(path = MogoServicePaths.PATH_VISUAL_ANGLE)
|
||||||
|
class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider {
|
||||||
|
|
||||||
|
override val functionName: String
|
||||||
|
get() = "VisualAngleChange"
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val TAG = "VisualAngleChange"
|
||||||
|
}
|
||||||
|
|
||||||
|
private val triggerLocation = AtomicReference<MogoLocation>()
|
||||||
|
|
||||||
|
private val distanceOfCarToStopLine = AtomicReference(0.0)
|
||||||
|
|
||||||
|
private val travelled by lazy { AtomicReference(0.0) }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务实体,不对外暴露
|
||||||
|
* @param target: 目标场景
|
||||||
|
* @param isDisplay: 是否正在展示
|
||||||
|
* @param triggerTime: 触发时间
|
||||||
|
*/
|
||||||
|
private data class Record(val target: Scene, var isDisplay: Boolean = false, var triggerTime: Long): Comparable<Record> {
|
||||||
|
override fun compareTo(other: Record): Int {
|
||||||
|
//如果时间一样,优先级越高,越靠近堆顶
|
||||||
|
return other.target.priority - target.priority
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private val queue by lazy {
|
||||||
|
PriorityQueue<Record>()
|
||||||
|
}
|
||||||
|
|
||||||
|
private val listener = object : OnRoadListener {
|
||||||
|
private val roadId = AtomicReference<String>()
|
||||||
|
private val triggerRoadId = AtomicReference<String>()
|
||||||
|
|
||||||
|
override fun onRoadIdInfo(roadId: String) {
|
||||||
|
this.roadId.set(roadId)
|
||||||
|
Log.d(TAG, "-- onRoadIdInfo --: prev: ${this.triggerRoadId.get()} -> curr: $roadId")
|
||||||
|
val loc = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
|
||||||
|
var triggerClose = false
|
||||||
|
val distance = distanceOfCarToStopLine.get() + 5
|
||||||
|
if (hasCrossRoad && distance > 0) {
|
||||||
|
val prev = triggerLocation.get()
|
||||||
|
if (prev != null && loc != null) {
|
||||||
|
travelled.set(MapTools.distance(loc.longitude, loc.latitude, prev.longitude, prev.latitude) + travelled.get())
|
||||||
|
triggerLocation.set(loc)
|
||||||
|
}
|
||||||
|
val oldRoadId = triggerRoadId.get()
|
||||||
|
Log.d(TAG, "-- onRoadIdInfo --: travelled --: ${travelled.get()}")
|
||||||
|
if ((travelled.get() > distance) && oldRoadId != null && oldRoadId != roadId) {
|
||||||
|
distanceOfCarToStopLine.set(0.0)
|
||||||
|
hasCrossRoad = false
|
||||||
|
triggerRoadId.set(null)
|
||||||
|
travelled.set(0.0)
|
||||||
|
triggerLocation.set(null)
|
||||||
|
Log.d(TAG, "-- onRoadIdInfo --: trigger close --")
|
||||||
|
triggerClose = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (triggerClose) {
|
||||||
|
changeAngle(CrossRoad(false))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
override fun onStopLineInfo(info: StopLine) {
|
||||||
|
Log.d(TAG, "-- onStopLineInfo --: ${info.distanceOfCarToStopLine}")
|
||||||
|
if (!hasCrossRoad && info.distanceOfCarToStopLine <= 30.0) {
|
||||||
|
hasCrossRoad = true
|
||||||
|
triggerRoadId.set(this.roadId.get())
|
||||||
|
distanceOfCarToStopLine.set(info.distanceOfCarToStopLine)
|
||||||
|
triggerLocation.set(CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02())
|
||||||
|
changeAngle(CrossRoad(true))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun init(context: Context?) {
|
||||||
|
if (Thread.currentThread() != Looper.getMainLooper().thread) {
|
||||||
|
scope.launch {
|
||||||
|
initListen(context)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
initListen(context)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun initListen(ctx: Context?) {
|
||||||
|
ctx ?: return
|
||||||
|
ctx.lifeCycleOwner.lifecycle.addObserver(object : LifecycleEventObserver {
|
||||||
|
override fun onStateChanged(source: LifecycleOwner, event: Event) {
|
||||||
|
if (event == ON_DESTROY) {
|
||||||
|
CallerMapRoadListenerManager.unRegisterRoadListener("VisualAngleChange")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
CallerMapRoadListenerManager.registerRoadListener("VisualAngleChange", listener)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Volatile
|
||||||
|
private var hasCrossRoad = false
|
||||||
|
|
||||||
|
|
||||||
|
private var scope: CoroutineScope = acquireScope()
|
||||||
|
@Synchronized
|
||||||
|
get() {
|
||||||
|
if (field.isActive) {
|
||||||
|
return field
|
||||||
|
}
|
||||||
|
val scope = acquireScope()
|
||||||
|
field = scope
|
||||||
|
return field
|
||||||
|
}
|
||||||
|
|
||||||
|
private var defaultDelayJob: Job? = null
|
||||||
|
|
||||||
|
private fun acquireScope(): CoroutineScope {
|
||||||
|
return CoroutineScope(Handler(Looper.getMainLooper()).asCoroutineDispatcher("change-visual-angle") + SupervisorJob())
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
override fun onDestroy() {
|
||||||
|
CallerMapRoadListenerManager.unRegisterRoadListener("VisualAngleChange")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Volatile
|
||||||
|
private var mLevel:Boolean = false
|
||||||
|
|
||||||
|
override fun updateLongSightLevel(level:Boolean){
|
||||||
|
mLevel = level
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun changeAngle(scene: Scene) {
|
||||||
|
val appIdentityMode = FunctionBuildConfig.appIdentityMode
|
||||||
|
if (AppIdentityModeUtils.isBus(appIdentityMode) && AppIdentityModeUtils.isPassenger(appIdentityMode)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(mLevel){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
val triggerTime = SystemClock.elapsedRealtime()
|
||||||
|
scope.launch {
|
||||||
|
Log.d(TAG, "--- 1 ---")
|
||||||
|
val displayed = getDisplayed()
|
||||||
|
if (displayed == null) {
|
||||||
|
Log.d(TAG, "--- 2 ---")
|
||||||
|
if (scene is Turning) {
|
||||||
|
if (!scene.open) {
|
||||||
|
changeAngle(Default())
|
||||||
|
return@launch
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (scene is CrossRoad) {
|
||||||
|
if (!scene.open) {
|
||||||
|
changeAngle(Default())
|
||||||
|
return@launch
|
||||||
|
}
|
||||||
|
}
|
||||||
|
doRealVisualAngleChange(triggerTime, scene, null)
|
||||||
|
} else {
|
||||||
|
val prev = displayed.target
|
||||||
|
Log.d(TAG, "--- 3 --- old: $prev -> cur: $scene")
|
||||||
|
val prevTriggerTime = displayed.triggerTime
|
||||||
|
if (scene !is Default && prev.priority > scene.priority && (prev is RoadEvent || prev is TooClose)) {
|
||||||
|
val displayDuration = triggerTime - prevTriggerTime
|
||||||
|
Log.d(TAG, "--- 4 ---:场景[$prev], 已展示时长: duration: $displayDuration")
|
||||||
|
if (displayDuration < prev.displayThreshold) {
|
||||||
|
Log.d(TAG, "--- 5 --- 场景[$prev]:仍在保护展示时长内,直接return")
|
||||||
|
return@launch
|
||||||
|
} else {
|
||||||
|
Log.d(TAG, "--- 6 --- 场景[$prev]:已过保护展示时长,从展示的队列中移除,显示默认视角")
|
||||||
|
queue -= displayed
|
||||||
|
changeAngle(Default())
|
||||||
|
return@launch
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (prev is Turning && scene is Turning) {
|
||||||
|
val isOpen = scene.open
|
||||||
|
if (!isOpen) {
|
||||||
|
Log.d(TAG, "--- 7 --- 场景[$scene], 收到关闭通知")
|
||||||
|
queue -= displayed
|
||||||
|
changeAngle(Default())
|
||||||
|
return@launch
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (prev is CrossRoad && scene is CrossRoad) {
|
||||||
|
val isOpen = scene.open
|
||||||
|
if (!isOpen) {
|
||||||
|
Log.d(TAG, "--- 8 --- old: $prev -> cur: $scene")
|
||||||
|
queue -= displayed
|
||||||
|
changeAngle(Default())
|
||||||
|
return@launch
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (prev.priority == scene.priority) {
|
||||||
|
Log.d(TAG, "--- 9 --- 场景[$prev]正在展示,尚未收到关闭,优先级一致,直接return")
|
||||||
|
return@launch
|
||||||
|
}
|
||||||
|
if (prev.priority > scene.priority && prev.displayThreshold < 0) {
|
||||||
|
Log.d(TAG, "--- 10 --- 场景[$prev]正在展示,尚未收到关闭,场景,依然展示当前场景,直接return")
|
||||||
|
return@launch
|
||||||
|
}
|
||||||
|
doRealVisualAngleChange(triggerTime, scene, displayed)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun CoroutineScope.doRealVisualAngleChange(triggerTime: Long, target: Scene, displayed: Record? = null) {
|
||||||
|
if (target is Default) {
|
||||||
|
Log.d(TAG, "--- doRealVisualAngleChange --- 1 ---")
|
||||||
|
displayed?.also {
|
||||||
|
queue -= it
|
||||||
|
}
|
||||||
|
defaultDelayJob?.safeCancel()
|
||||||
|
launch {
|
||||||
|
val delay = target.unit.toMillis(target.delay)
|
||||||
|
Log.d(TAG, "--- doRealVisualAngleChange --- 2 ---")
|
||||||
|
delay(delay)
|
||||||
|
Log.d(TAG, "--- doRealVisualAngleChange --- 3 ---")
|
||||||
|
doChangeAngle(Record(target, triggerTime = triggerTime))
|
||||||
|
}.also { itx ->
|
||||||
|
itx.invokeOnCompletion {
|
||||||
|
if (it is CancellationException) {
|
||||||
|
Log.d(TAG, "--- doRealVisualAngleChange --- 4 ---")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defaultDelayJob = itx
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Log.d(TAG, "--- doRealVisualAngleChange --- 5 ---")
|
||||||
|
defaultDelayJob?.safeCancel()
|
||||||
|
if (displayed == null || displayed.target.priority <= target.priority) {
|
||||||
|
Log.d(TAG, "--- doRealVisualAngleChange --- 6 ---")
|
||||||
|
displayed?.also {
|
||||||
|
queue -= it
|
||||||
|
}
|
||||||
|
if (target is Turning) {
|
||||||
|
if (!target.open) {
|
||||||
|
Log.d(TAG, "--- doRealVisualAngleChange --- 7 ---")
|
||||||
|
changeAngle(Default())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (target is CrossRoad) {
|
||||||
|
if (!target.open) {
|
||||||
|
Log.d(TAG, "--- doRealVisualAngleChange --- 8 ---")
|
||||||
|
changeAngle(Default())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Log.d(TAG, "--- doRealVisualAngleChange --- 10 ---")
|
||||||
|
doChangeAngle(Record(target, triggerTime = triggerTime))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@OptIn(InternalCoroutinesApi::class)
|
||||||
|
private fun doChangeAngle(record: Record) {
|
||||||
|
val angle = record.target.angle
|
||||||
|
CallerMapUIServiceManager.getMapUIController()?.also {
|
||||||
|
Log.d(TAG, "--- doChangeAngle ---: ${record.target}")
|
||||||
|
if (record.target !is Default) {
|
||||||
|
record.isDisplay = true
|
||||||
|
kotlinx.coroutines.internal.synchronized(queue) {
|
||||||
|
queue += record
|
||||||
|
}
|
||||||
|
}
|
||||||
|
it.changeMapVisualAngle(angle, null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否有正在展示的
|
||||||
|
*/
|
||||||
|
@Synchronized
|
||||||
|
private fun getDisplayed() = queue.firstOrNull()
|
||||||
|
}
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
package com.mogo.eagle.core.function.business.ai
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
|
||||||
|
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager
|
||||||
|
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||||
|
import com.mogo.eagle.core.function.business.ai.net.AiCloudIdentifyNetWorkModel
|
||||||
|
import com.mogo.eagle.core.function.business.identify.MapIdentifySubscriber
|
||||||
|
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||||
|
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP
|
||||||
|
import com.mogo.map.listener.IMogoMapListener
|
||||||
|
import com.mogo.map.uicontroller.VisualAngleMode
|
||||||
|
import mogo.yycp.api.proto.SocketDownData
|
||||||
|
|
||||||
|
class AiCloudIdentifyDataManager : IMogoMapListener {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val TAG = "AiCloudIdentifyData"
|
||||||
|
|
||||||
|
var START_METRE = 200
|
||||||
|
var END_METRE = 2000
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
val aiCloudIdentifyDataManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
|
||||||
|
AiCloudIdentifyDataManager()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private val aiCloudIdentifyNetWorkModel = AiCloudIdentifyNetWorkModel()
|
||||||
|
private var showAiCloud = false
|
||||||
|
|
||||||
|
fun init(mContext: Context) {
|
||||||
|
MogoAiCloudSocketManager.getInstance(mContext)
|
||||||
|
.registerOnMessageListener(
|
||||||
|
0x040003, //低频数据
|
||||||
|
object : IMogoOnMessageListener<SocketDownData.SocketDownDataProto> {
|
||||||
|
override fun target(): Class<SocketDownData.SocketDownDataProto> {
|
||||||
|
return SocketDownData.SocketDownDataProto::class.java
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onMsgReceived(obj: SocketDownData.SocketDownDataProto?) {
|
||||||
|
if (!FunctionBuildConfig.isDrawAiCloudFusion) {
|
||||||
|
MapIdentifySubscriber.instance.clearAiCloudRoma()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
obj?.let {
|
||||||
|
obj.data?.let {
|
||||||
|
if (showAiCloud) {
|
||||||
|
if (it.allListList == null || it.allListList.size == 0) {
|
||||||
|
MapIdentifySubscriber.instance.clearAiCloudRoma()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
MapIdentifySubscriber.instance.renderAiCloudResult(it.allListList)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
requestRangeOfIdentify()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun requestRangeOfIdentify() {
|
||||||
|
aiCloudIdentifyNetWorkModel.requestIdentifyRange({
|
||||||
|
CallerLogger.d(
|
||||||
|
M_MAP + TAG,
|
||||||
|
"requestIdentifyRange ok startRange:$START_METRE, endRange:$END_METRE"
|
||||||
|
)
|
||||||
|
}, {
|
||||||
|
CallerLogger.d(
|
||||||
|
M_MAP + TAG,
|
||||||
|
"requestIdentifyRange error : $it , startRange:$START_METRE, endRange:$END_METRE"
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onMapVisualAngleChanged(visualAngleMode: VisualAngleMode) {
|
||||||
|
super.onMapVisualAngleChanged(visualAngleMode)
|
||||||
|
when {
|
||||||
|
visualAngleMode.isRoma -> {
|
||||||
|
showAiCloud = true
|
||||||
|
FunctionBuildConfig.isDrawIdentifyData = false
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
showAiCloud = false
|
||||||
|
FunctionBuildConfig.isDrawIdentifyData = true
|
||||||
|
MapIdentifySubscriber.instance.clearAiCloudRoma()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package com.mogo.eagle.core.function.business.ai
|
||||||
|
|
||||||
|
import android.content.BroadcastReceiver
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
|
import com.mogo.eagle.core.function.business.ai.AiCloudIdentifyDataManager.Companion.END_METRE
|
||||||
|
import com.mogo.eagle.core.function.business.ai.AiCloudIdentifyDataManager.Companion.START_METRE
|
||||||
|
import com.mogo.eagle.core.function.business.ai.AiCloudIdentifyDataManager.Companion.aiCloudIdentifyDataManager
|
||||||
|
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||||
|
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP
|
||||||
|
|
||||||
|
class AiCloudRangeBroadcastReceiver : BroadcastReceiver() {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val TAG = "AiCloudRangeBroadcastReceiver"
|
||||||
|
private const val START_RANGE = "startRange"
|
||||||
|
private const val END_RANGE = "endRange"
|
||||||
|
|
||||||
|
// adb shell am broadcast -a com.map.aiCloud.notification --ei startRange 140 --ei endRange 2000
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
|
val startRange = intent.getIntExtra(START_RANGE, START_METRE)
|
||||||
|
val endRange = intent.getIntExtra(END_RANGE, END_METRE)
|
||||||
|
START_METRE = startRange
|
||||||
|
END_METRE = endRange
|
||||||
|
CallerLogger.d("$M_MAP$TAG", "startRange:$startRange, endRange:$endRange")
|
||||||
|
aiCloudIdentifyDataManager.requestRangeOfIdentify()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
package com.mogo.eagle.core.function.business.ai.net
|
||||||
|
|
||||||
|
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||||
|
import com.mogo.commons.debug.DebugConfig
|
||||||
|
import com.mogo.eagle.core.data.BaseResponse
|
||||||
|
import com.mogo.eagle.core.function.business.ai.AiCloudIdentifyDataManager.Companion.END_METRE
|
||||||
|
import com.mogo.eagle.core.function.business.ai.AiCloudIdentifyDataManager.Companion.START_METRE
|
||||||
|
import com.mogo.eagle.core.network.MoGoRetrofitFactory
|
||||||
|
import com.mogo.eagle.core.network.apiCall
|
||||||
|
import com.mogo.eagle.core.network.request
|
||||||
|
import com.zhjt.service_biz.FuncConfig
|
||||||
|
|
||||||
|
class AiCloudIdentifyNetWorkModel {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val aiCloudIdentifyNetWorkModel by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
|
||||||
|
AiCloudIdentifyNetWorkModel()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getHost(): String {
|
||||||
|
var host = "http://dzt-city.zhidaozhixing.com"
|
||||||
|
when (DebugConfig.getNetMode()) {
|
||||||
|
DebugConfig.NET_MODE_DEV,
|
||||||
|
DebugConfig.NET_MODE_QA -> host = "http://dzt-qa-city.zhidaozhixing.com"
|
||||||
|
}
|
||||||
|
return host
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getNetWorkApi(baseUrl: String = getHost()): IAiCloudIdentifyApiService {
|
||||||
|
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
|
||||||
|
.create(IAiCloudIdentifyApiService::class.java)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun requestIdentifyRange(
|
||||||
|
onSuccess: (() -> Unit),
|
||||||
|
onError: ((String) -> Unit)
|
||||||
|
) {
|
||||||
|
request<BaseResponse<Any>> {
|
||||||
|
val map = mutableMapOf<String, Any>()
|
||||||
|
start {
|
||||||
|
map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
|
||||||
|
map["status"] = true
|
||||||
|
map["startMetre"] = START_METRE
|
||||||
|
map["endMetre"] = END_METRE
|
||||||
|
map["type"] = 1
|
||||||
|
}
|
||||||
|
loader {
|
||||||
|
apiCall {
|
||||||
|
getNetWorkApi().identifyRange(map)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onSuccess {
|
||||||
|
onSuccess.invoke()
|
||||||
|
}
|
||||||
|
onError {
|
||||||
|
it.message?.let { errorMsg ->
|
||||||
|
onError.invoke(errorMsg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.mogo.eagle.core.function.business.ai.net
|
||||||
|
|
||||||
|
import com.mogo.eagle.core.data.BaseResponse
|
||||||
|
import retrofit2.http.Body
|
||||||
|
import retrofit2.http.Headers
|
||||||
|
import retrofit2.http.POST
|
||||||
|
|
||||||
|
interface IAiCloudIdentifyApiService {
|
||||||
|
|
||||||
|
@Headers("Content-type:application/json;charset=UTF-8")
|
||||||
|
@POST("yycp-c-v2x-service/dataFusion/remoteDrivingSet")
|
||||||
|
suspend fun identifyRange(@Body map: MutableMap<String, Any>): BaseResponse<Any>
|
||||||
|
}
|
||||||
@@ -3,16 +3,35 @@ package com.mogo.eagle.core.function.business.identify
|
|||||||
import com.mogo.eagle.core.data.traffic.TrafficData
|
import com.mogo.eagle.core.data.traffic.TrafficData
|
||||||
import mogo.telematics.pad.MessagePad
|
import mogo.telematics.pad.MessagePad
|
||||||
import mogo.telematics.pad.MessagePad.TrackedObject
|
import mogo.telematics.pad.MessagePad.TrackedObject
|
||||||
|
import mogo.yycp.api.proto.SocketDownData
|
||||||
|
|
||||||
interface Identify {
|
interface Identify {
|
||||||
|
|
||||||
fun renderAdasRecognizedResult(resultList: List<TrackedObject>?)
|
fun renderAdasRecognizedResult(resultList: List<TrackedObject>?) {
|
||||||
|
|
||||||
fun renderPlanningWarningObj(planningObjects: List<MessagePad.PlanningObject>?)
|
}
|
||||||
|
|
||||||
|
fun renderAiCloudResult(resultList: List<SocketDownData.CloudRoadDataProto>) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun renderPlanningWarningObj(planningObjects: List<MessagePad.PlanningObject>?) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
fun renderOBUWarningObj(exist: Boolean, obuTrafficData: TrafficData) {
|
fun renderOBUWarningObj(exist: Boolean, obuTrafficData: TrafficData) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun clearOldMarker()
|
fun clearOldMarker() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun clearAiMarker() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getIdentifyObj(uuid: String): TrackedObject? {
|
||||||
|
return null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
package com.mogo.eagle.core.function.business.identify
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import androidx.collection.ArraySet
|
||||||
|
import com.mogo.commons.AbsMogoApplication
|
||||||
|
import com.mogo.commons.module.status.MogoStatusManager
|
||||||
|
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.w
|
||||||
|
import com.mogo.map.MogoMarkerManager
|
||||||
|
import mogo.yycp.api.proto.SocketDownData
|
||||||
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
|
|
||||||
|
class IdentifyAiCloudDataDrawer : Identify {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val TAG = "IdentifyDataDrawer"
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上一帧数据的缓存
|
||||||
|
*/
|
||||||
|
private val mMarkersCaches = ConcurrentHashMap<String, SocketDownData.CloudRoadDataProto>()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 记录每次实际绘制的交通元素UUID
|
||||||
|
*/
|
||||||
|
@SuppressLint("NewApi")
|
||||||
|
private val trafficDataUuidList = ArraySet<String>()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 过滤后的数据集合
|
||||||
|
*/
|
||||||
|
@SuppressLint("NewApi")
|
||||||
|
private val mFilterTrafficData = HashMap<String, SocketDownData.CloudRoadDataProto>()
|
||||||
|
|
||||||
|
@SuppressLint("NewApi")
|
||||||
|
override fun renderAiCloudResult(resultList: List<SocketDownData.CloudRoadDataProto>) {
|
||||||
|
if (resultList.isEmpty()) {
|
||||||
|
clearOldMarker()
|
||||||
|
w(TAG, "感知数据为空无需渲染……")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (!MogoStatusManager.getInstance().isVrMode) {
|
||||||
|
clearOldMarker()
|
||||||
|
w(TAG, "渲染 adas 识别的数据 当前不是VR模式")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//清除缓存
|
||||||
|
for (data in resultList) {
|
||||||
|
if (trafficDataUuidList.size > 0 && trafficDataUuidList.contains("" + data.uuid)) {
|
||||||
|
trafficDataUuidList.remove("" + data.uuid)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//清除缓存,删除marker
|
||||||
|
val it: MutableIterator<*> = trafficDataUuidList.iterator()
|
||||||
|
while (it.hasNext()) {
|
||||||
|
val key = it.next() as String
|
||||||
|
it.remove()
|
||||||
|
mMarkersCaches.remove(key)
|
||||||
|
MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
|
||||||
|
.removeMarker(key.hashCode().toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
val filterList = filterTrafficData(resultList)
|
||||||
|
if (filterList.size > 0) {
|
||||||
|
// 绘制新数据
|
||||||
|
MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
|
||||||
|
.updateBatchAiMarkerPosition(filterList)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据过滤器
|
||||||
|
*
|
||||||
|
* @return 过滤后的数据集合
|
||||||
|
*/
|
||||||
|
@SuppressLint("NewApi")
|
||||||
|
private fun filterTrafficData(trafficData: List<SocketDownData.CloudRoadDataProto>): HashMap<String, SocketDownData.CloudRoadDataProto> {
|
||||||
|
mFilterTrafficData.clear()
|
||||||
|
trafficDataUuidList.clear()
|
||||||
|
for (data in trafficData) {
|
||||||
|
val uuid = "" + data.uuid
|
||||||
|
mMarkersCaches[uuid] = data
|
||||||
|
trafficDataUuidList.add(uuid)
|
||||||
|
mFilterTrafficData[uuid] = data
|
||||||
|
}
|
||||||
|
return mFilterTrafficData
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("NewApi")
|
||||||
|
override fun clearAiMarker() {
|
||||||
|
trafficDataUuidList.clear()
|
||||||
|
mMarkersCaches.forEach { (uuid, _) ->
|
||||||
|
mMarkersCaches.remove(uuid)
|
||||||
|
MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
|
||||||
|
.removeMarker(uuid.hashCode().toString())
|
||||||
|
}
|
||||||
|
mFilterTrafficData.clear()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ import com.mogo.eagle.core.function.call.obu.CallerObuWarningListenerManager
|
|||||||
import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler
|
import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler
|
||||||
import mogo.telematics.pad.MessagePad
|
import mogo.telematics.pad.MessagePad
|
||||||
import mogo.telematics.pad.MessagePad.TrackedObject
|
import mogo.telematics.pad.MessagePad.TrackedObject
|
||||||
|
import mogo.yycp.api.proto.SocketDownData
|
||||||
|
|
||||||
object IdentifyFactory : Identify, IMoGoObuStatusListener {
|
object IdentifyFactory : Identify, IMoGoObuStatusListener {
|
||||||
|
|
||||||
@@ -22,7 +23,12 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener {
|
|||||||
internal val beautifyDataDrawer = IdentifyBeautifyDataDrawer()
|
internal val beautifyDataDrawer = IdentifyBeautifyDataDrawer()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object AiIdentify {
|
||||||
|
internal val aiCloudDataDrawer = IdentifyAiCloudDataDrawer()
|
||||||
|
}
|
||||||
|
|
||||||
private var identify: Identify? = null
|
private var identify: Identify? = null
|
||||||
|
private var aiCloudIdentify: Identify? = null
|
||||||
|
|
||||||
init {
|
init {
|
||||||
identify = if (FunctionBuildConfig.isBeautyMode) {
|
identify = if (FunctionBuildConfig.isBeautyMode) {
|
||||||
@@ -30,14 +36,17 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener {
|
|||||||
} else {
|
} else {
|
||||||
DriverIdentify.originDataDrawer
|
DriverIdentify.originDataDrawer
|
||||||
}
|
}
|
||||||
|
aiCloudIdentify = AiIdentify.aiCloudDataDrawer
|
||||||
CallerObuWarningListenerManager.addListener(TAG, this)
|
CallerObuWarningListenerManager.addListener(TAG, this)
|
||||||
}
|
}
|
||||||
|
|
||||||
private const val MSG_DATA_TRACK = 0
|
private const val MSG_DATA_TRACK = 0
|
||||||
private const val MSG_DATA_WARNING = 1
|
private const val MSG_DATA_AI_TRACK = 1
|
||||||
private const val MSG_DATA_OBU_WARNING_UPDATE = 2
|
private const val MSG_DATA_WARNING = 2
|
||||||
private const val MSG_DATA_OBU_WARNING_REMOVE = 3
|
private const val MSG_DATA_OBU_WARNING_UPDATE = 3
|
||||||
private const val MSG_DATA_CLEAR = 4
|
private const val MSG_DATA_OBU_WARNING_REMOVE = 4
|
||||||
|
private const val MSG_DATA_CLEAR = 5
|
||||||
|
private const val MSG_DATA_AI_CLEAR = 6
|
||||||
|
|
||||||
// 维护一个线程定时轮询数据进行地图绘制
|
// 维护一个线程定时轮询数据进行地图绘制
|
||||||
private val mDrawerHandler: Handler =
|
private val mDrawerHandler: Handler =
|
||||||
@@ -63,6 +72,11 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener {
|
|||||||
identify!!.renderAdasRecognizedResult(msg.obj as List<TrackedObject>?)
|
identify!!.renderAdasRecognizedResult(msg.obj as List<TrackedObject>?)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
MSG_DATA_AI_TRACK -> {
|
||||||
|
if (msg.obj is List<*>) {
|
||||||
|
aiCloudIdentify!!.renderAiCloudResult(msg.obj as List<SocketDownData.CloudRoadDataProto>)
|
||||||
|
}
|
||||||
|
}
|
||||||
MSG_DATA_WARNING -> {
|
MSG_DATA_WARNING -> {
|
||||||
if (msg.obj is List<*>) {
|
if (msg.obj is List<*>) {
|
||||||
identify!!.renderPlanningWarningObj(msg.obj as List<MessagePad.PlanningObject>?)
|
identify!!.renderPlanningWarningObj(msg.obj as List<MessagePad.PlanningObject>?)
|
||||||
@@ -81,6 +95,9 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener {
|
|||||||
MSG_DATA_CLEAR -> {
|
MSG_DATA_CLEAR -> {
|
||||||
identify!!.clearOldMarker()
|
identify!!.clearOldMarker()
|
||||||
}
|
}
|
||||||
|
MSG_DATA_AI_CLEAR -> {
|
||||||
|
aiCloudIdentify!!.clearAiMarker()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -92,6 +109,13 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener {
|
|||||||
mDrawerHandler.sendMessage(message)
|
mDrawerHandler.sendMessage(message)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun renderAiCloudResult(resultList: List<SocketDownData.CloudRoadDataProto>) {
|
||||||
|
val message = Message.obtain()
|
||||||
|
message.what = MSG_DATA_AI_TRACK
|
||||||
|
message.obj = resultList
|
||||||
|
mDrawerHandler.sendMessage(message)
|
||||||
|
}
|
||||||
|
|
||||||
override fun renderPlanningWarningObj(planningObjects: List<MessagePad.PlanningObject>?) {
|
override fun renderPlanningWarningObj(planningObjects: List<MessagePad.PlanningObject>?) {
|
||||||
val message = Message.obtain()
|
val message = Message.obtain()
|
||||||
message.what = MSG_DATA_WARNING
|
message.what = MSG_DATA_WARNING
|
||||||
@@ -105,6 +129,16 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener {
|
|||||||
mDrawerHandler.sendMessage(message)
|
mDrawerHandler.sendMessage(message)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun clearAiMarker() {
|
||||||
|
val message = Message.obtain()
|
||||||
|
message.what = MSG_DATA_AI_CLEAR
|
||||||
|
mDrawerHandler.sendMessage(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getIdentifyObj(uuid: String): TrackedObject? {
|
||||||
|
return identify?.getIdentifyObj(uuid)
|
||||||
|
}
|
||||||
|
|
||||||
override fun updateTrackerWarningInfo(trafficData: TrafficData) {
|
override fun updateTrackerWarningInfo(trafficData: TrafficData) {
|
||||||
super.updateTrackerWarningInfo(trafficData)
|
super.updateTrackerWarningInfo(trafficData)
|
||||||
val message = Message.obtain()
|
val message = Message.obtain()
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
package com.mogo.eagle.core.function.business.identify
|
package com.mogo.eagle.core.function.business.identify
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import com.alibaba.android.arouter.facade.annotation.Route
|
||||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||||
|
import com.mogo.eagle.core.data.constants.MogoServicePaths.PATH_IDENTIFY
|
||||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener
|
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener
|
||||||
import com.mogo.eagle.core.function.api.base.IMoGoSubscriber
|
import com.mogo.eagle.core.function.api.base.IMoGoSubscriber
|
||||||
|
import com.mogo.eagle.core.function.api.map.marker.IMoGoIdentifyListener
|
||||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager
|
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager
|
||||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||||
import mogo.telematics.pad.MessagePad
|
import mogo.telematics.pad.MessagePad
|
||||||
import mogo.telematics.pad.MessagePad.TrackedObject
|
import mogo.telematics.pad.MessagePad.TrackedObject
|
||||||
|
import mogo.yycp.api.proto.SocketDownData
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订阅感知数据的订阅者
|
* 订阅感知数据的订阅者
|
||||||
@@ -14,7 +19,8 @@ import mogo.telematics.pad.MessagePad.TrackedObject
|
|||||||
*
|
*
|
||||||
* @author donghongyu
|
* @author donghongyu
|
||||||
*/
|
*/
|
||||||
class MapIdentifySubscriber private constructor() : IMoGoSubscriber,
|
@Route(path = PATH_IDENTIFY)
|
||||||
|
class MapIdentifySubscriber private constructor() : IMoGoIdentifyListener, IMoGoSubscriber,
|
||||||
IMoGoAutopilotIdentifyListener {
|
IMoGoAutopilotIdentifyListener {
|
||||||
|
|
||||||
private val TAG = "MapIdentifySubscriber"
|
private val TAG = "MapIdentifySubscriber"
|
||||||
@@ -36,7 +42,6 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber,
|
|||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
CallerAutopilotIdentifyListenerManager.removeListener(TAG)
|
CallerAutopilotIdentifyListenerManager.removeListener(TAG)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onAutopilotIdentifyDataUpdate(trafficData: List<TrackedObject>?) {
|
override fun onAutopilotIdentifyDataUpdate(trafficData: List<TrackedObject>?) {
|
||||||
@@ -53,6 +58,26 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun renderAiCloudResult(cloudData: List<SocketDownData.CloudRoadDataProto>) {
|
||||||
|
try {
|
||||||
|
if (FunctionBuildConfig.isDrawAiCloudFusion) {
|
||||||
|
ThreadUtils.getSinglePool().execute {
|
||||||
|
// aiCloudDataDrawer.renderAiCloudResult(cloudData)
|
||||||
|
IdentifyFactory.renderAiCloudResult(cloudData)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
clearAiCloudRoma()
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun clearAiCloudRoma() {
|
||||||
|
// aiCloudDataDrawer.clearAiMarker()
|
||||||
|
IdentifyFactory.clearAiMarker()
|
||||||
|
}
|
||||||
|
|
||||||
override fun onAutopilotIdentifyPlanningObj(planningObjects: List<MessagePad.PlanningObject>?) {
|
override fun onAutopilotIdentifyPlanningObj(planningObjects: List<MessagePad.PlanningObject>?) {
|
||||||
try {
|
try {
|
||||||
if (FunctionBuildConfig.isDrawIdentifyData && FunctionBuildConfig.debugTrackerProvider == 0) {
|
if (FunctionBuildConfig.isDrawIdentifyData && FunctionBuildConfig.debugTrackerProvider == 0) {
|
||||||
@@ -67,7 +92,12 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onAutopilotWarnMessage(warn: MessagePad.Warn?) {
|
override fun getIdentifyObj(uuid: String): TrackedObject? {
|
||||||
|
return IdentifyFactory.getIdentifyObj(uuid)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun init(context: Context?) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -55,8 +55,8 @@ public class TrackObj {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void correct() {
|
private void correct() {
|
||||||
// calAverageSpeedAndType();
|
calAverageSpeedAndType();
|
||||||
// calLoc();
|
calLoc();
|
||||||
// calHeading();
|
// calHeading();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,18 +107,18 @@ public class TrackObj {
|
|||||||
|
|
||||||
private void calHeading() {
|
private void calHeading() {
|
||||||
//更正数据,速度小于LIMIT_SPEED使用上一帧数据
|
//更正数据,速度小于LIMIT_SPEED使用上一帧数据
|
||||||
if (relativeStatic()) {
|
// if (relativeStatic()) {
|
||||||
if (roadAngle != 0.0) {
|
// if (roadAngle != 0.0) {
|
||||||
CenterLine centerLine = CallerMapUIServiceManager.INSTANCE.getMapUIController().getCenterLineInfo(lon, lat, -1);
|
// CenterLine centerLine = CallerHDMapManager.INSTANCE.getCenterLineInfo(lon, lat, -1);
|
||||||
if (centerLine != null && centerLine.getAngle() != 0) {
|
// if (centerLine != null && centerLine.getAngle() != 0) {
|
||||||
cacheData = cacheData.toBuilder().setHeading(centerLine.getAngle()).build();
|
// cacheData = cacheData.toBuilder().setHeading(centerLine.getAngle()).build();
|
||||||
} else {
|
// } else {
|
||||||
cacheData = cacheData.toBuilder().setHeading(circleQueue.getLastFrame().getHeading()).build();
|
// cacheData = cacheData.toBuilder().setHeading(circleQueue.getLastFrame().getHeading()).build();
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
cacheData = cacheData.toBuilder().setHeading(circleQueue.getLastFrame().getHeading()).build();
|
// cacheData = cacheData.toBuilder().setHeading(circleQueue.getLastFrame().getHeading()).build();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getRecentlyTime() {
|
public double getRecentlyTime() {
|
||||||
|
|||||||
@@ -9,9 +9,8 @@ object TrackerSourceColorHelper {
|
|||||||
|
|
||||||
@SuppressLint("NewApi")
|
@SuppressLint("NewApi")
|
||||||
fun filterData(data: TrackedObject): Boolean {
|
fun filterData(data: TrackedObject): Boolean {
|
||||||
if (!FunctionBuildConfig.isDrawUnknownIdentifyData && data.type == TrafficTypeEnum.TYPE_TRAFFIC_ID_WEI_ZHI.type
|
if (!FunctionBuildConfig.isDrawUnknownIdentifyData && (data.type == TrafficTypeEnum.TYPE_TRAFFIC_ID_WEI_ZHI.type
|
||||||
|| data.type == TrafficTypeEnum.TYPE_TRAFFIC_ID_501.type || data.type == TrafficTypeEnum.TYPE_TRAFFIC_ID_502.type
|
|| data.type == TrafficTypeEnum.TYPE_TRAFFIC_ID_501.type || data.type == TrafficTypeEnum.TYPE_TRAFFIC_ID_502.type)) {
|
||||||
) {
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
var trackIPCFilter = true
|
var trackIPCFilter = true
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class MogoMapService implements IMogoMapService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IMogoOverlayManager getOverlayManager(Context context) {
|
public IMogoOverlayManager getOverlayManager() {
|
||||||
return MogoOverlayManager.getInstance();
|
return MogoOverlayManager.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,6 +52,5 @@ public class MogoMapService implements IMogoMapService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(Context context) {
|
public void init(Context context) {
|
||||||
CallerVisualAngleManager.INSTANCE.init(context);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import android.content.Context;
|
|||||||
|
|
||||||
import com.mogo.commons.AbsMogoApplication;
|
import com.mogo.commons.AbsMogoApplication;
|
||||||
import com.mogo.eagle.core.function.impl.marker.AdasRecognizedType;
|
import com.mogo.eagle.core.function.impl.marker.AdasRecognizedType;
|
||||||
import com.mogo.eagle.core.function.view.R;
|
import com.mogo.eagle.core.function.map.R;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author congtaowang
|
* @author congtaowang
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import android.widget.ImageView;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.mogo.eagle.core.data.map.entity.MarkerShowEntity;
|
import com.mogo.eagle.core.data.map.entity.MarkerShowEntity;
|
||||||
import com.mogo.eagle.core.function.view.R;
|
import com.mogo.eagle.core.function.map.R;
|
||||||
import com.mogo.map.marker.MogoMarkerOptions;
|
import com.mogo.map.marker.MogoMarkerOptions;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import android.widget.LinearLayout;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.mogo.eagle.core.data.map.entity.MarkerShowEntity;
|
import com.mogo.eagle.core.data.map.entity.MarkerShowEntity;
|
||||||
import com.mogo.eagle.core.function.view.R;
|
import com.mogo.eagle.core.function.map.R;
|
||||||
import com.mogo.eagle.core.utilcode.mogo.glide.GlideImageLoader;
|
import com.mogo.eagle.core.utilcode.mogo.glide.GlideImageLoader;
|
||||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||||
import com.mogo.eagle.core.utilcode.util.ViewUtils;
|
import com.mogo.eagle.core.utilcode.util.ViewUtils;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import com.mogo.commons.module.status.MogoStatusManager;
|
|||||||
import com.mogo.eagle.core.data.map.PoiWrapper;
|
import com.mogo.eagle.core.data.map.PoiWrapper;
|
||||||
import com.mogo.eagle.core.data.map.entity.MarkerExploreWay;
|
import com.mogo.eagle.core.data.map.entity.MarkerExploreWay;
|
||||||
import com.mogo.eagle.core.data.map.entity.MarkerShowEntity;
|
import com.mogo.eagle.core.data.map.entity.MarkerShowEntity;
|
||||||
import com.mogo.eagle.core.function.view.R;
|
import com.mogo.eagle.core.function.map.R;
|
||||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||||
import com.mogo.map.marker.MogoMarkerOptions;
|
import com.mogo.map.marker.MogoMarkerOptions;
|
||||||
import com.mogo.eagle.core.data.config.CloudPoiManager;
|
import com.mogo.eagle.core.data.config.CloudPoiManager;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import android.graphics.BitmapFactory;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import com.mogo.commons.AbsMogoApplication;
|
import com.mogo.commons.AbsMogoApplication;
|
||||||
import com.mogo.eagle.core.function.view.R;
|
import com.mogo.eagle.core.function.map.R;
|
||||||
import com.mogo.map.marker.IMogoMarker;
|
import com.mogo.map.marker.IMogoMarker;
|
||||||
|
|
||||||
import java.lang.ref.SoftReference;
|
import java.lang.ref.SoftReference;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user