[2.13.0-arch-opt] merge

This commit is contained in:
zhongchao
2022-12-28 11:37:33 +08:00
parent ddeb1e306c
commit d9077e8847
97 changed files with 804 additions and 2003 deletions

View File

@@ -9,9 +9,9 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.module.status.IMogoStatusChangedListener;
import com.mogo.commons.module.status.MogoStatusManager;
import com.mogo.commons.module.status.StatusDescriptor;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.map.MogoMapUIController;
import com.mogo.och.bus.passenger.constant.BusPassengerConst;
import com.mogo.och.bus.passenger.ui.BusPassengerRouteFragment;
@@ -20,6 +20,8 @@ import org.jetbrains.annotations.Nullable;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P;
import java.util.Objects;
/**
* 网约车-Bus-乘客端
*
@@ -82,9 +84,7 @@ public class MogoOCHBusPassenger implements IMogoOCH, IMogoStatusChangedListener
*/
private void stepIntoVrMode() {
CallerLogger.INSTANCE.d( M_TAXI_P + TAG, "进入vr模式" );
MogoMapUIController.getInstance()
.stepInVrMode( true ); // 白天模式
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).stepInVrMode(true); // 白天模式
CallerMoGoUiSettingManager.INSTANCE.stepInDayMode();//白天模式 状态栏字体颜色变黑
}

View File

@@ -13,14 +13,16 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.module.status.IMogoStatusChangedListener;
import com.mogo.commons.module.status.MogoStatusManager;
import com.mogo.commons.module.status.StatusDescriptor;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.map.MogoMapUIController;
import com.mogo.och.bus.constant.BusConst;
import com.mogo.och.bus.fragment.BusFragment;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Objects;
/**
* 网约车小巴业务实现入口
*
@@ -40,8 +42,7 @@ public class BusProvider implements IMogoOCH {
*/
private void stepIntoVrMode() {
CallerLogger.INSTANCE.d(M_BUS + TAG, "进入vr模式");
MogoMapUIController.getInstance()
.stepInVrMode(false);
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).stepInVrMode(false);
}
@Override

View File

@@ -29,13 +29,14 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager;
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.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.hmi.ui.widget.TrafficDataView;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.MogoMapUIController;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.listener.MogoMapListenerHandler;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.map.uicontroller.VisualAngleMode;
import com.mogo.och.bus.R;
import com.mogo.och.bus.bean.BusRoutesResult;
@@ -121,26 +122,21 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
updateSwitchMapIcon();
mSwitchMapModeLayout.setOnClickListener(new OnPreventFastClickListener() {
@Override
public void onClickImpl(View v) {
//切换地图的远近视图
if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isLongSight()) {
// 2.11.0去掉
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers();
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
} else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) {
// 2.11.0去掉
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
// .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS, BusConst.TYPE_MARKER_BUS_ORDER);
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
} else {
// 2.11.0去掉
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers();
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
if (controller != null) {
//切换地图的远近视图
if (controller.getCurrentMapVisualAngle().isLongSight()) {
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
} else {
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
}
}
}
});
@@ -214,12 +210,15 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
protected abstract void onArriveStation();
private void updateSwitchMapIcon() {
if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isLongSight()) {
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
} else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) {
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
} else {
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
if (controller != null) {
if (controller.getCurrentMapVisualAngle().isLongSight()) {
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
} else {
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
}
}
}

View File

@@ -19,10 +19,10 @@ import com.mogo.eagle.core.data.temp.EventLogout;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.map.CallerHDMapManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.call.map.CallerSmpManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.map.MogoMarkerManager;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.och.bus.R;
@@ -43,6 +43,7 @@ import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
import java.util.Objects;
/**
@@ -456,42 +457,35 @@ public class BusFragment extends BaseBusTabFragment<BusFragment, BusPresenter>
*/
private void setOrRemoveMapMaker(boolean isAdd, String uuid, double lat, double longi,int resourceId) {
if (isAdd) {
Runnable setMapMarkerRunnable = new Runnable() {
@Override
public void run() {
CallerLogger.INSTANCE.d(M_BUS + "setMapMaker= "+Thread.currentThread().getName(),
uuid + "=latitude=" + lat + ",longitude=" + longi);
Runnable setMapMarkerRunnable = () -> {
CallerLogger.INSTANCE.d(M_BUS + "setMapMaker= "+Thread.currentThread().getName(),
uuid + "=latitude=" + lat + ",longitude=" + longi);
MogoMarkerOptions options = new MogoMarkerOptions()
.owner(BusConst.TYPE_MARKER_BUS_ORDER)
.anchor(0.5f, 0.5f)
.set3DMode(true)
.gps(true)
.controlAngle(true)
.icon3DRes(resourceId)
.latitude(lat)
.longitude(longi);
IMogoMarker marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) .addMarker(uuid, options);
CenterLine centerLine = CallerHDMapManager.INSTANCE.getCenterLineInfo(
longi,lat,-1);
if (null != centerLine && marker != null) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空
marker.setRotateAngle(centerLine.getAngle().floatValue());
}
MogoMarkerOptions options = new MogoMarkerOptions()
.owner(BusConst.TYPE_MARKER_BUS_ORDER)
.anchor(0.5f, 0.5f)
.set3DMode(true)
.gps(true)
.controlAngle(true)
.icon3DRes(resourceId)
.latitude(lat)
.longitude(longi);
IMogoMarker marker = Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp())).addMarker(uuid, options);
CenterLine centerLine = CallerHDMapManager.INSTANCE.getCenterLineInfo(
longi,lat,-1);
if (null != centerLine && marker != null) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空
marker.setRotateAngle(centerLine.getAngle().floatValue());
}
};
OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable);
}else {
Runnable removeMapMarkerRunnable = new Runnable() {
@Override
public void run() {
CallerLogger.INSTANCE.d(M_BUS + "RemoveMapMaker="+Thread.currentThread().getName(),
uuid+"=latitude="+lat+",longitude="+longi);
MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).removeMarkers(uuid);
}
Runnable removeMapMarkerRunnable = () -> {
CallerLogger.INSTANCE.d(M_BUS + "RemoveMapMaker="+Thread.currentThread().getName(),
uuid+"=latitude="+lat+",longitude="+longi);
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp())).removeMarkers(uuid);
};
OCHThreadPoolManager.getsInstance().execute(removeMapMarkerRunnable);
}
}

View File

@@ -11,14 +11,16 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.module.status.IMogoStatusChangedListener;
import com.mogo.commons.module.status.MogoStatusManager;
import com.mogo.commons.module.status.StatusDescriptor;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.map.MogoMapUIController;
import com.mogo.och.sweeper.constant.SweeperConst;
import com.mogo.och.sweeper.fragment.SweeperFragment;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Objects;
/**
* 清扫车业务实现入口
*
@@ -38,7 +40,7 @@ public class SweeperProvider implements IMogoOCH {
*/
private void stepIntoVrMode(){
CallerLogger.INSTANCE.d( M_BUS + TAG, "进入vr模式" );
MogoMapUIController.getInstance()
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController())
.stepInVrMode(false);
}

View File

@@ -31,14 +31,15 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager;
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.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.hmi.ui.widget.TrafficDataView;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.MogoMapUIController;
import com.mogo.map.MogoMarkerManager;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.listener.MogoMapListenerHandler;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.map.uicontroller.VisualAngleMode;
import com.mogo.och.sweeper.R;
import com.mogo.och.sweeper.bean.SweeperRoutesResult;
@@ -131,16 +132,19 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
@Override
public void onClickImpl(View v) {
//切换地图的远近视图
if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isLongSight()) {
MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers();
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_medium);
} else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) {
MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
.inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS, SweeperConst.TYPE_MARKER_SWEEPER_ORDER);
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_long);
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
IMogoMarkerManager markerManager = CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp());
if (controller != null && markerManager != null) {
//切换地图的远近视图
if (controller.getCurrentMapVisualAngle().isLongSight()) {
markerManager.visibleAllMarkers();
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_medium);
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
markerManager.inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS, SweeperConst.TYPE_MARKER_SWEEPER_ORDER);
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_long);
}
}
}
});
@@ -222,12 +226,15 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
}
private void updateSwitchMapIcon() {
if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isLongSight()) {
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_long);
} else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) {
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_medium);
} else {
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_medium);
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
if (controller != null) {
if (controller.getCurrentMapVisualAngle().isLongSight()) {
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_long);
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_medium);
} else {
mSwitchMapModeImage.setImageResource(R.drawable.sweeper_switch_map_medium);
}
}
}

View File

@@ -15,9 +15,9 @@ import com.mogo.eagle.core.data.map.CenterLine;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.map.CallerHDMapManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.map.MogoMarkerManager;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.och.sweeper.R;
@@ -29,6 +29,7 @@ import com.mogo.och.sweeper.view.SlidePanelView;
import com.mogo.och.common.module.utils.OCHThreadPoolManager;
import java.util.List;
import java.util.Objects;
/**
@@ -140,7 +141,7 @@ public class SweeperFragment extends BaseSweeperTabFragment<SweeperFragment, Swe
}
// 渲染小巴路线数据
renderCurrentStationStatus(lineName,stationList, currentStation, nextStation, isArrived);
renderCurrentStationStatus(lineName, stationList, currentStation, nextStation, isArrived);
});
}
@@ -171,32 +172,32 @@ public class SweeperFragment extends BaseSweeperTabFragment<SweeperFragment, Swe
mCurrentTag.setText(getResources().getString(R.string.sweeper_arrive_to_end_start));
setOrRemoveMapMaker(true, SweeperConst.SWEEPER_START_MAP_MAKER, startStation.getLat()
, startStation.getLon(),R.raw.star_marker);
, startStation.getLon(), R.raw.star_marker);
setOrRemoveMapMaker(true, SweeperConst.SWEEPER_END_MAP_MAKER, endStation.getLat()
, endStation.getLon(),R.raw.end_marker);
, endStation.getLon(), R.raw.end_marker);
} else if (currentStation > 0 && currentStation < stationList.size() - 1) {// 是否到达站点
isArriveAtStation = true;
mCurrentTag.setText(getResources().getString(R.string.sweeper_arrive_to_current_tag));
mNextTag.setText(getResources().getString(R.string.sweeper_arrive_to_next_tag));
setOrRemoveMapMaker(false, SweeperConst.SWEEPER_START_MAP_MAKER, startStation.getLat()
, startStation.getLon(),R.raw.star_marker);
, startStation.getLon(), R.raw.star_marker);
setOrRemoveMapMaker(true, SweeperConst.SWEEPER_END_MAP_MAKER, endStation.getLat()
, endStation.getLon(),R.raw.end_marker);
, endStation.getLon(), R.raw.end_marker);
} else if (currentStation == stationList.size() - 1) {// 是否到达终点
isArriveEndStation = true;
nextStationName = "--";
mNextTag.setText(getResources().getString(R.string.sweeper_arrive_to_end_end));
setOrRemoveMapMaker(false, SweeperConst.SWEEPER_START_MAP_MAKER, startStation.getLat()
, startStation.getLon(),R.raw.star_marker);
, startStation.getLon(), R.raw.star_marker);
if (isArrived) {
setOrRemoveMapMaker(false, SweeperConst.SWEEPER_END_MAP_MAKER, endStation.getLat()
, endStation.getLon(),R.raw.end_marker);
, endStation.getLon(), R.raw.end_marker);
} else {
setOrRemoveMapMaker(true, SweeperConst.SWEEPER_END_MAP_MAKER, endStation.getLat()
, endStation.getLon(),R.raw.end_marker);
, endStation.getLon(), R.raw.end_marker);
}
}
@@ -206,15 +207,15 @@ public class SweeperFragment extends BaseSweeperTabFragment<SweeperFragment, Swe
}
// 是否到达终点
if ( nextStation == stationList.size() - 1 || nextStation == -1) {
if (nextStation == stationList.size() - 1 || nextStation == -1) {
mNextTag.setText(getResources().getString(R.string.sweeper_arrive_to_end_end));
}else {
} else {
mNextTag.setText(getResources().getString(R.string.sweeper_arrive_to_next_tag));
}
if (currentStation == 0 && isArrived){
if (currentStation == 0 && isArrived) {
showOrHideSwitchLineBtn(true);
}else {
} else {
showOrHideSwitchLineBtn(false);
}
@@ -233,9 +234,9 @@ public class SweeperFragment extends BaseSweeperTabFragment<SweeperFragment, Swe
}
private void showOrHideSwitchLineBtn(boolean isShow) {
if (isShow){
if (isShow) {
mSwitchLine.setVisibility(View.VISIBLE);
}else {
} else {
mSwitchLine.setVisibility(View.GONE);
}
}
@@ -269,7 +270,7 @@ public class SweeperFragment extends BaseSweeperTabFragment<SweeperFragment, Swe
@Override
public void moveToEnd() {
// 开启自动驾驶到下一站
if (isAnimateRunning){
if (isAnimateRunning) {
stopAutopilotAnimation();
}
mPresenter.autoDriveToNextStation(false);
@@ -313,11 +314,11 @@ public class SweeperFragment extends BaseSweeperTabFragment<SweeperFragment, Swe
//移除起点终点
if (null != startStation) {
setOrRemoveMapMaker(false, SweeperConst.SWEEPER_START_MAP_MAKER, startStation.getLat()
, startStation.getLon(),R.raw.star_marker);
, startStation.getLon(), R.raw.star_marker);
}
if (null != endStation) {
setOrRemoveMapMaker(false, SweeperConst.SWEEPER_END_MAP_MAKER, endStation.getLat()
, endStation.getLon(),R.raw.end_marker);
, endStation.getLon(), R.raw.end_marker);
}
}
}
@@ -339,42 +340,34 @@ public class SweeperFragment extends BaseSweeperTabFragment<SweeperFragment, Swe
* @param isAdd
* @param uuid
*/
private void setOrRemoveMapMaker(boolean isAdd, String uuid, double lat, double longi,int resourceId) {
private void setOrRemoveMapMaker(boolean isAdd, String uuid, double lat, double longi, int resourceId) {
if (isAdd) {
Runnable setMapMarkerRunnable = new Runnable() {
@Override
public void run() {
CallerLogger.INSTANCE.d(M_BUS + "setMapMaker= "+Thread.currentThread().getName(),
uuid + "=latitude=" + lat + ",longitude=" + longi);
Runnable setMapMarkerRunnable = () -> {
CallerLogger.INSTANCE.d(M_BUS + "setMapMaker= " + Thread.currentThread().getName(),
uuid + "=latitude=" + lat + ",longitude=" + longi);
MogoMarkerOptions options = new MogoMarkerOptions()
.owner(SweeperConst.TYPE_MARKER_SWEEPER_ORDER)
.anchor(0.5f, 0.5f)
.set3DMode(true)
.gps(true)
.controlAngle(true)
.icon3DRes(resourceId)
.latitude(lat)
.longitude(longi);
IMogoMarker marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) .addMarker(uuid, options);
CenterLine centerLine = CallerHDMapManager.INSTANCE.getCenterLineInfo(
longi,lat,-1);
if (null != centerLine){ // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致
marker.setRotateAngle(centerLine.getAngle().floatValue());
}
MogoMarkerOptions options = new MogoMarkerOptions()
.owner(SweeperConst.TYPE_MARKER_SWEEPER_ORDER)
.anchor(0.5f, 0.5f)
.set3DMode(true)
.gps(true)
.controlAngle(true)
.icon3DRes(resourceId)
.latitude(lat)
.longitude(longi);
IMogoMarker marker = Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp())).addMarker(uuid, options);
CenterLine centerLine = CallerHDMapManager.INSTANCE.getCenterLineInfo(
longi, lat, -1);
if (null != centerLine) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致
marker.setRotateAngle(centerLine.getAngle().floatValue());
}
};
OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable);
}else {
Runnable removeMapMarkerRunnable = new Runnable() {
@Override
public void run() {
CallerLogger.INSTANCE.d(M_BUS + "RemoveMapMaker="+Thread.currentThread().getName(),
uuid+"=latitude="+lat+",longitude="+longi);
MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).removeMarkers(uuid);
}
} else {
Runnable removeMapMarkerRunnable = () -> {
CallerLogger.INSTANCE.d(M_BUS + "RemoveMapMaker=" + Thread.currentThread().getName(),
uuid + "=latitude=" + lat + ",longitude=" + longi);
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp())).removeMarkers(uuid);
};
OCHThreadPoolManager.getsInstance().execute(removeMapMarkerRunnable);

View File

@@ -34,7 +34,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.och.sweeper.bean.SweeperOperationStatusResponse;
import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean;
import com.mogo.och.sweeper.bean.SweeperRoutesResponse;

View File

@@ -11,14 +11,16 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.module.status.IMogoStatusChangedListener;
import com.mogo.commons.module.status.MogoStatusManager;
import com.mogo.commons.module.status.StatusDescriptor;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.map.MogoMapUIController;
import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst;
import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Objects;
public
/**
* @author congtaowang
@@ -45,7 +47,7 @@ class MogoOCHTaxiPassenger implements IMogoOCH, IMogoStatusChangedListener {
*/
private void stepIntoVrMode() {
CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "进入vr模式");
MogoMapUIController.getInstance()
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController())
.stepInVrMode(false);
}

View File

@@ -19,19 +19,20 @@ import com.mogo.eagle.core.function.api.hmi.IMoGoHmiViewProxy;
import com.mogo.eagle.core.function.api.hmi.view.IViewNotification;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.call.map.CallerSmpManager;
import com.mogo.eagle.core.utilcode.util.OverlayViewUtils;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.MogoMapUIController;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.map.uicontroller.VisualAngleMode;
import com.mogo.och.taxi.passenger.R;
import com.mogo.och.taxi.passenger.callback.ITPClickStartAutopilotCallback;
import com.mogo.och.taxi.passenger.event.UIStatus;
import com.mogo.och.taxi.passenger.mulprocess.EmptyService;
import com.mogo.och.taxi.passenger.presenter.BaseTaxiPassengerPresenter;
import com.mogo.och.taxi.passenger.ui.comment.TaxiPassengerArrivedView;
import com.mogo.och.taxi.passenger.ui.leftmenu.OverlayLeftViewUtils;
import com.mogo.och.taxi.passenger.mulprocess.EmptyService;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -109,43 +110,40 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
return new TaxiPassengerV2XNotificationView(getContext());
}
private void updateSwitchMapIcon(){
if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isLongSight()) {
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_long);
} else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) {
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_medium);
}else {
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_medium);
private void updateSwitchMapIcon() {
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
if (controller != null) {
if (controller.getCurrentMapVisualAngle().isLongSight()) {
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_long);
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_medium);
} else {
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_medium);
}
}
}
private void initListener(){
mMapswitchBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//视角切换
if (MogoMapUIController.getInstance()
.getCurrentMapVisualAngle().isLongSight()) {
// 2.11.0 去掉
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers();
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
private void initListener() {
mMapswitchBtn.setOnClickListener(v -> {
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
if (controller != null) {
//切换地图的远近视图
if (controller.getCurrentMapVisualAngle().isLongSight()) {
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_medium);
} else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) {
// 2.11.0 去掉
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS);
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_long);
} else {
// 2.11.0去掉
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers();
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_medium);
}
//OverlayLeftViewUtils.INSTANCE.dismissOverlayView();
}
//OverlayLeftViewUtils.INSTANCE.dismissOverlayView();
});
}
private void initArrivedView(){
private void initArrivedView() {
mArrivedEndView = new WeakReference<>(new TaxiPassengerArrivedView(getContext()));
mArrivedEndView.get().setITaxiPassengerScoreCallback((taxiPassengerScoreUpdateOrderReqBean) -> getPresenter().arrivedAndScore(taxiPassengerScoreUpdateOrderReqBean));
}
@@ -173,9 +171,10 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
/**
* VR mode 转换
*
* @param isVRMode
*/
public void switchVRFlatMode(boolean isVRMode){
public void switchVRFlatMode(boolean isVRMode) {
if (mRootView != null) {
mRootView.setVisibility(isVRMode ? View.VISIBLE : View.GONE);
}
@@ -187,6 +186,7 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
* @param status 2 - running 1 - enable 2 - disable
*/
private int mPrevAPStatus = -1;
public void onAutopilotStatusChanged(int status) {
getActivity().runOnUiThread(() -> {
if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != status) {
@@ -199,7 +199,7 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
onAutopilotStatusSuccessDone();
}
// 3. 其他过程直接更新
if (mPrevAPStatus != status){
if (mPrevAPStatus != status) {
autopilotStatusAnimchanged(status);
}
mPrevAPStatus = status;
@@ -210,7 +210,7 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
// mAutopilotTv.setText(isInAutopilot?"自动驾驶":"开启自动驾驶");
if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status) {
mAutopilotImage.setImageResource(R.drawable.taxi_p_auto_nor);
} else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE == status){
} else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE == status) {
mAutopilotImage.setImageResource(R.drawable.taxi_p_un_auto_nor);
} else {
mAutopilotImage.setImageResource(R.drawable.taxi_p_un_auto_nor);
@@ -240,20 +240,21 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
removeListener();
}
private void removeListener(){
if (mStartAutopilotView == null || mStartAutopilotView.get() == null){
private void removeListener() {
if (mStartAutopilotView == null || mStartAutopilotView.get() == null) {
return;
}
mStartAutopilotView.get().setOnClickStartAutopilotBtnCallback(null);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void changeOverview(UIStatus uiStatus){
if(uiStatus.status==UIStatus.LIVE){
public void changeOverview(UIStatus uiStatus) {
if (uiStatus.status == UIStatus.LIVE) {
CallerHmiManager.INSTANCE.hideSmallFragment();
showOrHideServingOrderFragment(true,false);
}else if(uiStatus.status==UIStatus.OVERVIEW){
showOrHideServingOrderFragment(true, false);
} else if (uiStatus.status == UIStatus.OVERVIEW) {
CallerHmiManager.INSTANCE.showSmallFragment();
showOrHideServingOrderFragment(false,false);
showOrHideServingOrderFragment(false, false);
}
}
@@ -264,25 +265,26 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
/**
* 显示或隐藏订单信息
*
* @param isShow
*/
public void showOrHideServingOrderFragment(boolean isShow,boolean showOrHideLefeMenu){
public void showOrHideServingOrderFragment(boolean isShow, boolean showOrHideLefeMenu) {
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
if (isShow){
if (ochServingOrderFragment == null){
if (isShow) {
if (ochServingOrderFragment == null) {
ochServingOrderFragment = new TaxiPassengerServingOrderFragment().newInstance();
}
if(showOrHideLefeMenu) {
if (showOrHideLefeMenu) {
OverlayLeftViewUtils.INSTANCE.showOverlayView(getActivity(), 0, true, -1, true);
}
if (ochServingOrderFragment.isHidden()){
if (ochServingOrderFragment.isHidden()) {
transaction
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.show(ochServingOrderFragment).commitAllowingStateLoss();
return;
}
if (ochServingOrderFragment.isAdded()){
if (ochServingOrderFragment.isAdded()) {
transaction
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.show(ochServingOrderFragment).commitAllowingStateLoss();
@@ -293,13 +295,13 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
.add(R.id.module_mogo_och_navi_panel_container, ochServingOrderFragment)
.show(ochServingOrderFragment).commitAllowingStateLoss();
}else {
if (ochServingOrderFragment != null){
} else {
if (ochServingOrderFragment != null) {
transaction
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE)
.hide(ochServingOrderFragment).commitAllowingStateLoss();
}
if(showOrHideLefeMenu) {
if (showOrHideLefeMenu) {
OverlayLeftViewUtils.INSTANCE.dismissOverlayView(true);
CallerHmiManager.INSTANCE.hideSmallFragment();
}
@@ -311,18 +313,19 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
* 乘客验证成功,页面显示,按钮置于不可点击
* 司机端确认可点击开启自动驾驶, 按钮置为可点击
* 订单前往目的地,页面消失
*
* @param isShow
*/
public void showOrHideStartAutopilotView(boolean isShow, boolean isClickable){
if (isShow){
if (mStartAutopilotView == null || mStartAutopilotView.get() == null){
public void showOrHideStartAutopilotView(boolean isShow, boolean isClickable) {
if (isShow) {
if (mStartAutopilotView == null || mStartAutopilotView.get() == null) {
mStartAutopilotView = new WeakReference<>(new TaxiPassengerStartAutopilotView(getContext()));
}
mStartAutopilotView.get().setOnClickStartAutopilotBtnCallback(this);
OverlayViewUtils.showOverlayView(getActivity(),mStartAutopilotView.get());
OverlayViewUtils.showOverlayView(getActivity(), mStartAutopilotView.get());
updateStartAutopilotBtnStatus(isClickable);
}else {
if (mStartAutopilotView == null || mStartAutopilotView.get() == null){
} else {
if (mStartAutopilotView == null || mStartAutopilotView.get() == null) {
return;
}
mStartAutopilotView.get().setOnClickStartAutopilotBtnCallback(null);
@@ -331,15 +334,15 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
}
}
public void updateStartAutopilotBtnStatus(boolean isClickable){
if (mStartAutopilotView == null || mStartAutopilotView.get() == null){
public void updateStartAutopilotBtnStatus(boolean isClickable) {
if (mStartAutopilotView == null || mStartAutopilotView.get() == null) {
return;
}
mStartAutopilotView.get().handleStartAutopilotBtnStatus(isClickable);
}
public void onAutopilotStatusSuccessDone(){
if (mStartAutopilotView == null || mStartAutopilotView.get() == null){
public void onAutopilotStatusSuccessDone() {
if (mStartAutopilotView == null || mStartAutopilotView.get() == null) {
return;
}
mStartAutopilotView.get().onAutopilotStatusSuccess();
@@ -351,36 +354,38 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
* ② 到达上车点 隐藏到达终点的页面(上一个订单没有评价)
* ③ 到达目的地 显示到达终点的页面
* ④ debug 使用
* @param isShow true 展示 false 隐藏
*
* @param isShow true 展示 false 隐藏
* @param arrivedEndStation 目的地
* @param orderNo 订单No
* @param orderNo 订单No
*/
public void showOrHideArrivedEndLayout(boolean isShow, String arrivedEndStation,String orderNo){
if (isShow){
if(mArrivedEndView==null||mArrivedEndView.get()==null){
public void showOrHideArrivedEndLayout(boolean isShow, String arrivedEndStation, String orderNo) {
if (isShow) {
if (mArrivedEndView == null || mArrivedEndView.get() == null) {
initArrivedView();
}
OverlayViewUtils.showOverlayView(getActivity(),mArrivedEndView.get(),R.style.och_window_anim_alpha);
OverlayViewUtils.showOverlayView(getActivity(), mArrivedEndView.get(), R.style.och_window_anim_alpha);
UiThreadHandler.postDelayed(new Runnable() {
@Override
public void run() {
mArrivedEndView.get().setDataAndStartAnimation(arrivedEndStation,orderNo);
mArrivedEndView.get().setDataAndStartAnimation(arrivedEndStation, orderNo);
}
//如果在全屏 回收需要300毫秒 后期优化使用单独的播放器
},500);
}else {
if(mArrivedEndView==null||mArrivedEndView.get()==null){
}, 500);
} else {
if (mArrivedEndView == null || mArrivedEndView.get() == null) {
return;
}
OverlayViewUtils.dismissOverlayView(mArrivedEndView.get());
}
}
// 20 司机到达上车点
public void preOrderThankPageTenlogic(String startSiteAddr,
String endSiteAddr,
String passengerNum,
String carNumber,
String phone){
String phone) {
showOrHideArrivedEndLayout(false, "", "");
showOrHidePressengerCheckPager(true, startSiteAddr,
endSiteAddr, passengerNum, carNumber, phone);
@@ -399,33 +404,34 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
String phone) {
try {
if (isShow) {
if(mArrivedCheckView==null||mArrivedCheckView.get()==null){
if (mArrivedCheckView == null || mArrivedCheckView.get() == null) {
initCheckView();
}
mArrivedCheckView.get().setData(startSiteAddr, endSiteAddr, passengerNum, carNumber,phone);
mArrivedCheckView.get().setData(startSiteAddr, endSiteAddr, passengerNum, carNumber, phone);
OverlayViewUtils.showOverlayView(getActivity(), mArrivedCheckView.get());
} else {
if(mArrivedCheckView==null||mArrivedCheckView.get()==null){
if (mArrivedCheckView == null || mArrivedCheckView.get() == null) {
return;
}
OverlayViewUtils.dismissOverlayView(mArrivedCheckView.get());
}
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 用户评分后接口回调
* 用户评分后接口回调
*
* @param isSuccess true 打分成功 false 打分失败
*/
public void showArrivedEndLayout2Thank(boolean isSuccess) {
if(mArrivedEndView==null||mArrivedEndView.get()==null){
if (mArrivedEndView == null || mArrivedEndView.get() == null) {
initArrivedView();
}
if(isSuccess){
if (isSuccess) {
mArrivedEndView.get().scoreSuccess();
}else {
} else {
mArrivedEndView.get().scoreFail();
}
}

View File

@@ -4,9 +4,9 @@ import android.content.Context;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.v2x.events.utils.LocationUtils;
import com.mogo.eagle.core.utilcode.util.ColorUtils;
import com.mogo.map.MogoOverlayManager;
import com.mogo.map.overlay.IMogoOverlayManager;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.overlay.MogoPolylineOptions;
@@ -32,7 +32,7 @@ public class TaxiOverlayManager {
// 引导线颜色
mPolylineColors = new ArrayList<>();
mContext = context;
mogoOverlayManager = MogoOverlayManager.getInstance();
mogoOverlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager(context);
}
/**

View File

@@ -11,15 +11,16 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.module.status.IMogoStatusChangedListener;
import com.mogo.commons.module.status.MogoStatusManager;
import com.mogo.commons.module.status.StatusDescriptor;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.MogoMapUIController;
import com.mogo.och.taxi.constant.TaxiConst;
import com.mogo.och.taxi.ui.TaxiFragment;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Objects;
public
/**
* @author congtaowang
@@ -45,8 +46,7 @@ class TaxiProvider implements IMogoOCH , IMogoStatusChangedListener {
*/
private void stepIntoVrMode() {
CallerLogger.INSTANCE.d( M_TAXI + TAG, "进入vr模式" );
MogoMapUIController.getInstance()
.stepInVrMode( false );
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).stepInVrMode(false);
}
private void showFragment() {

View File

@@ -31,14 +31,15 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager;
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.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.call.map.CallerSmpManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.MogoMapUIController;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.map.uicontroller.VisualAngleMode;
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
import com.mogo.och.common.module.utils.AnimatorDrawableUtil;
import com.mogo.och.taxi.R;
@@ -85,22 +86,22 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
R.drawable.anim_flow_00003, R.drawable.anim_flow_00004, R.drawable.anim_flow_00005,
R.drawable.anim_flow_00006, R.drawable.anim_flow_00007, R.drawable.anim_flow_00008,
R.drawable.anim_flow_00009, R.drawable.anim_flow_00010, R.drawable.anim_flow_00011,
R.drawable.anim_flow_00012, R.drawable.anim_flow_00013,R.drawable.anim_flow_00014,
R.drawable.anim_flow_00012, R.drawable.anim_flow_00013, R.drawable.anim_flow_00014,
R.drawable.anim_flow_00015, R.drawable.anim_flow_00016, R.drawable.anim_flow_00017,
R.drawable.anim_flow_00018,R.drawable.anim_flow_00019, R.drawable.anim_flow_00020,
R.drawable.anim_flow_00021,R.drawable.anim_flow_00022,R.drawable.anim_flow_00023,
R.drawable.anim_flow_00024, R.drawable.anim_flow_00025,R.drawable.anim_flow_00026,
R.drawable.anim_flow_00018, R.drawable.anim_flow_00019, R.drawable.anim_flow_00020,
R.drawable.anim_flow_00021, R.drawable.anim_flow_00022, R.drawable.anim_flow_00023,
R.drawable.anim_flow_00024, R.drawable.anim_flow_00025, R.drawable.anim_flow_00026,
R.drawable.anim_flow_00027, R.drawable.anim_flow_00028, R.drawable.anim_flow_00029,
R.drawable.anim_flow_00030,R.drawable.anim_flow_00031, R.drawable.anim_flow_00032,
R.drawable.anim_flow_00033,R.drawable.anim_flow_00034,R.drawable.anim_flow_00035,
R.drawable.anim_flow_00036, R.drawable.anim_flow_00037,R.drawable.anim_flow_00038,
R.drawable.anim_flow_00030, R.drawable.anim_flow_00031, R.drawable.anim_flow_00032,
R.drawable.anim_flow_00033, R.drawable.anim_flow_00034, R.drawable.anim_flow_00035,
R.drawable.anim_flow_00036, R.drawable.anim_flow_00037, R.drawable.anim_flow_00038,
R.drawable.anim_flow_00039, R.drawable.anim_flow_00040, R.drawable.anim_flow_00041,
R.drawable.anim_flow_00042,R.drawable.anim_flow_00043, R.drawable.anim_flow_00044,
R.drawable.anim_flow_00045,R.drawable.anim_flow_00046,R.drawable.anim_flow_00047,
R.drawable.anim_flow_00048, R.drawable.anim_flow_00049,R.drawable.anim_flow_00050,
R.drawable.anim_flow_00042, R.drawable.anim_flow_00043, R.drawable.anim_flow_00044,
R.drawable.anim_flow_00045, R.drawable.anim_flow_00046, R.drawable.anim_flow_00047,
R.drawable.anim_flow_00048, R.drawable.anim_flow_00049, R.drawable.anim_flow_00050,
R.drawable.anim_flow_00051, R.drawable.anim_flow_00052, R.drawable.anim_flow_00053,
R.drawable.anim_flow_00054,R.drawable.anim_flow_00055, R.drawable.anim_flow_00056,
R.drawable.anim_flow_00057,R.drawable.anim_flow_00058,R.drawable.anim_flow_00059
R.drawable.anim_flow_00054, R.drawable.anim_flow_00055, R.drawable.anim_flow_00056,
R.drawable.anim_flow_00057, R.drawable.anim_flow_00058, R.drawable.anim_flow_00059
};
private Integer[] startManCODrawableIds = new Integer[]{
@@ -111,29 +112,29 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
R.drawable.anim_flow_man_co_00008, R.drawable.anim_flow_man_co_00009,
R.drawable.anim_flow_man_co_00010, R.drawable.anim_flow_man_co_00011,
R.drawable.anim_flow_man_co_00012, R.drawable.anim_flow_man_co_00013,
R.drawable.anim_flow_man_co_00014,R.drawable.anim_flow_man_co_00015,
R.drawable.anim_flow_man_co_00014, R.drawable.anim_flow_man_co_00015,
R.drawable.anim_flow_man_co_00016, R.drawable.anim_flow_man_co_00017,
R.drawable.anim_flow_man_co_00018,R.drawable.anim_flow_man_co_00019,
R.drawable.anim_flow_man_co_00018, R.drawable.anim_flow_man_co_00019,
R.drawable.anim_flow_man_co_00020, R.drawable.anim_flow_man_co_00021,
R.drawable.anim_flow_man_co_00022,R.drawable.anim_flow_man_co_00023,
R.drawable.anim_flow_man_co_00022, R.drawable.anim_flow_man_co_00023,
R.drawable.anim_flow_man_co_00024, R.drawable.anim_flow_man_co_00025,
R.drawable.anim_flow_man_co_00026,R.drawable.anim_flow_man_co_00027,
R.drawable.anim_flow_man_co_00026, R.drawable.anim_flow_man_co_00027,
R.drawable.anim_flow_man_co_00028, R.drawable.anim_flow_man_co_00029,
R.drawable.anim_flow_man_co_00030,R.drawable.anim_flow_man_co_00031,
R.drawable.anim_flow_man_co_00030, R.drawable.anim_flow_man_co_00031,
R.drawable.anim_flow_man_co_00032, R.drawable.anim_flow_man_co_00033,
R.drawable.anim_flow_man_co_00034,R.drawable.anim_flow_man_co_00035,
R.drawable.anim_flow_man_co_00034, R.drawable.anim_flow_man_co_00035,
R.drawable.anim_flow_man_co_00036, R.drawable.anim_flow_man_co_00037,
R.drawable.anim_flow_man_co_00038,R.drawable.anim_flow_man_co_00039,
R.drawable.anim_flow_man_co_00038, R.drawable.anim_flow_man_co_00039,
R.drawable.anim_flow_man_co_00040, R.drawable.anim_flow_man_co_00041,
R.drawable.anim_flow_man_co_00042,R.drawable.anim_flow_man_co_00043,
R.drawable.anim_flow_man_co_00042, R.drawable.anim_flow_man_co_00043,
R.drawable.anim_flow_man_co_00044, R.drawable.anim_flow_man_co_00045,
R.drawable.anim_flow_man_co_00046,R.drawable.anim_flow_man_co_00047,
R.drawable.anim_flow_man_co_00046, R.drawable.anim_flow_man_co_00047,
R.drawable.anim_flow_man_co_00048, R.drawable.anim_flow_man_co_00049,
R.drawable.anim_flow_man_co_00050,R.drawable.anim_flow_man_co_00051,
R.drawable.anim_flow_man_co_00050, R.drawable.anim_flow_man_co_00051,
R.drawable.anim_flow_man_co_00052, R.drawable.anim_flow_man_co_00053,
R.drawable.anim_flow_man_co_00054,R.drawable.anim_flow_man_co_00055,
R.drawable.anim_flow_man_co_00054, R.drawable.anim_flow_man_co_00055,
R.drawable.anim_flow_man_co_00056, R.drawable.anim_flow_man_co_00057,
R.drawable.anim_flow_man_co_00058,R.drawable.anim_flow_man_co_00059
R.drawable.anim_flow_man_co_00058, R.drawable.anim_flow_man_co_00059
};
@Override
@@ -168,34 +169,27 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
mMapswitchBtn = findViewById(R.id.module_och_taxi_swich_map_layout);
mSwitchBtnIcon = findViewById(R.id.taxi_switch_icon);
updateSwitchMapIcon();
mMapswitchBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//视角切换
long start = SystemClock.elapsedRealtime();
try {
if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isLongSight()) {
// 2.11.0去掉
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) .visibleAllMarkers();
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
mMapswitchBtn.setOnClickListener(v -> {
//视角切换
long start = SystemClock.elapsedRealtime();
try {
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
if (controller != null) {
//切换地图的远近视图
if (controller.getCurrentMapVisualAngle().isLongSight()) {
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
} else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) {
// 2.11.0去掉
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
// .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS, TaxiConst.TYPE_MARKER_TAXI_ORDER);
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_long);
} else {
// 2.11.0去掉
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) .visibleAllMarkers();
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
}
} finally {
CallerLogger.INSTANCE.d(M_TAXI + TAG, "cost:" + (SystemClock.elapsedRealtime() - start));
}
} finally {
CallerLogger.INSTANCE.d(M_TAXI + TAG, "cost:" + (SystemClock.elapsedRealtime() - start));
}
});
mSettingBtn = findViewById(R.id.module_och_taxi_setting_layout);
@@ -214,7 +208,7 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
}
mAICollectBtn = findViewById(R.id.module_och_taxi_ai_collect_ll);
if (mAICollectBtn != null){
if (mAICollectBtn != null) {
CallerDevaToolsManager.INSTANCE.initAiCollect(mAICollectBtn);
}
@@ -224,11 +218,11 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
public void onClickImpl(View v) {
// 如果能自动驾驶,就自动驾驶,不能就提示
if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() ==
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING){
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) {
return; //远程代驾状态下不可开启自动驾驶,只能等远程代驾主动退出
}else if (!(boolean)ctvAutopilotStatusRL.getTag()){
} else if (!(boolean) ctvAutopilotStatusRL.getTag()) {
ToastUtils.showShort(getResources().getString(R.string.module_och_taxi_auto_disable_tip1));
}else {
} else {
startAutopilot();
}
}
@@ -236,14 +230,14 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
// debug下调用测试面板 长按速度值 任意模式下调试都打开
// if (DebugConfig.isDebug()) {
mSpeedView.setOnLongClickListener(v -> {
if (groupTestPanel.getVisibility() == View.VISIBLE) {
groupTestPanel.setVisibility(View.GONE);
} else {
groupTestPanel.setVisibility(View.VISIBLE);
}
return false;
});
mSpeedView.setOnLongClickListener(v -> {
if (groupTestPanel.getVisibility() == View.VISIBLE) {
groupTestPanel.setVisibility(View.GONE);
} else {
groupTestPanel.setVisibility(View.VISIBLE);
}
return false;
});
// }
onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState());
@@ -282,13 +276,16 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
}
private void updateSwitchMapIcon(){
if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isLongSight()) {
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_long);
} else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) {
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
}else {
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
private void updateSwitchMapIcon() {
IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController();
if (controller != null) {
if (controller.getCurrentMapVisualAngle().isLongSight()) {
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_long);
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
} else {
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
}
}
}
@@ -337,25 +334,25 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
});
}
public void stopAnimAndUpdateBtnStatus(){
public void stopAnimAndUpdateBtnStatus() {
startOrStopLoadingAnim(false);
startAutopilotDone(false);
}
public void onManMachineCoDriving(int manMachineCoDriving){
if (mPrevAPStatus != manMachineCoDriving){
public void onManMachineCoDriving(int manMachineCoDriving) {
if (mPrevAPStatus != manMachineCoDriving) {
autopilotStatusAnimchanged(manMachineCoDriving);
}
mPrevAPStatus = manMachineCoDriving;
}
public void updateCtvAutopilotStatusTag(boolean tag){
public void updateCtvAutopilotStatusTag(boolean tag) {
ctvAutopilotStatusRL.setTag(tag);
}
public void onCheckPilotConditionSafe(boolean isSafe){
public void onCheckPilotConditionSafe(boolean isSafe) {
updateCtvAutopilotStatusTag(isSafe);
if (isSafe){
if (isSafe) {
updateOrderBottomBtnUI();
}
}
@@ -370,38 +367,38 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
mAutopilotTv.setTextColor(getResources().getColor(R.color.taxi_autopilot_text_color_normal));
mAutopilotImage.setImageResource(R.drawable.taxi_ic_autopilot);
if (animatorDrawableUtil == null){
if (animatorDrawableUtil == null) {
animatorDrawableUtil = new AnimatorDrawableUtil();
}
animatorDrawableUtil.setAnimation(mAnimFlowIv, Arrays.asList(startAutopilotDrawableIds));
animatorDrawableUtil.start(true,100,null);
animatorDrawableUtil.start(true, 100, null);
} else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE == status) {
mAutopilotTv.setText("自动驾驶");
mAutopilotTv.setTextColor(getResources().getColor(R.color.taxi_autopilot_text_color_normal));
mAutopilotImage.setImageResource(R.drawable.taxi_ic_autopilot);
if (animatorDrawableUtil != null){
if (animatorDrawableUtil != null) {
animatorDrawableUtil.stop();
mAnimFlowIv.setImageResource(0);
}
// ctvAutopilotStatusRL.setBackground(getResources().getDrawable(R.drawable.taxi_autopilot_bg_selector));
animatorDrawableUtil = null;
} else if (IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING == status){
} else if (IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING == status) {
mAutopilotTv.setText("远程代驾");
mAutopilotTv.setTextColor(getResources().getColor(R.color.taxi_autopilot_text_color_normal));
mAutopilotImage.setImageResource(R.drawable.taxi_ic_autopilot);
if (animatorDrawableUtil == null){
if (animatorDrawableUtil == null) {
animatorDrawableUtil = new AnimatorDrawableUtil();
}
animatorDrawableUtil.setAnimation(mAnimFlowIv, Arrays.asList(startManCODrawableIds));
animatorDrawableUtil.start(true,100,null);
animatorDrawableUtil.start(true, 100, null);
}else {
} else {
mAutopilotTv.setText("自动驾驶");
mAutopilotTv.setTextColor(getResources().getColor(R.color.taxi_autopilot_text_color_disable));
mAutopilotImage.setImageResource(R.drawable.taxi_ic_autopilot_disable);
if (animatorDrawableUtil != null){
if (animatorDrawableUtil != null) {
animatorDrawableUtil.stop();
mAnimFlowIv.setImageResource(0);
}
@@ -471,18 +468,18 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
UiThreadHandler.postDelayed(new Runnable() {
@Override
public void run() { //未启动成功10s后做处理
if (isStarting){ //判断动画是否在进行
if (isStarting) { //判断动画是否在进行
//并且根据状态来设置自动驾驶启动成功还是失败
if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()
== IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){
== IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) {
startAutopilotDone(true);
}else {
} else {
startAutopilotDone(false);
}
}
}
},TIMER_START_AUTOPILOT_INTERVAL);
}, TIMER_START_AUTOPILOT_INTERVAL);
}
public void hidPanel() {
@@ -557,7 +554,7 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
}
}
private void closeAmapViewIFHadeAdd(){
private void closeAmapViewIFHadeAdd() {
if (ochAmapNaviFragment != null) {
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
ochAmapNaviFragment.onDestroy();
@@ -567,7 +564,7 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
}
}
private void closeRouteViewIFHadeAdd(){
private void closeRouteViewIFHadeAdd() {
if (taxiRottingNaviFragment != null) {
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
taxiRottingNaviFragment.onDestroy();
@@ -602,6 +599,5 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
}
public abstract void startNaviToEndStation(boolean isShow);
}

View File

@@ -22,12 +22,12 @@ import com.mogo.eagle.core.data.map.CenterLine;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.map.CallerHDMapManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.call.map.CallerSmpManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.DateTimeUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.MogoMarkerManager;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.och.common.module.map.AmapNaviToDestinationModel;
@@ -47,6 +47,7 @@ import com.mogo.och.taxi.model.TaxiModel;
import java.util.Calendar;
import java.util.List;
import java.util.Objects;
/**
* @author congtaowang
@@ -750,39 +751,33 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment
private void setOrRemoveMapMaker(boolean isAdd, String uuid, List<Double> station,int resourceId){
if (isAdd){
//开启线程执行起终点marker设置
Runnable setMapMarkerRunnable = new Runnable() {
@Override
public void run() {
CallerLogger.INSTANCE.d(M_TAXI + "setMapMaker= " + Thread.currentThread().getName(),
uuid + "=latitude=" + station.get(1) + ",longitude=" + station.get(0));
Runnable setMapMarkerRunnable = () -> {
CallerLogger.INSTANCE.d(M_TAXI + "setMapMaker= " + Thread.currentThread().getName(),
uuid + "=latitude=" + station.get(1) + ",longitude=" + station.get(0));
MogoMarkerOptions options = new MogoMarkerOptions()
.owner(TaxiConst.TYPE_MARKER_TAXI_ORDER)
.anchor(0.5f, 0.5f)
.set3DMode(true)
.gps(true)
.controlAngle(true)
.icon3DRes(resourceId)
.latitude(station.get(1))
.longitude(station.get(0));
IMogoMarker marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).addMarker(uuid, options);
CenterLine centerLine = CallerHDMapManager.INSTANCE.getCenterLineInfo(station.get(0)
, station.get(1), -1);
if (null != centerLine && marker != null) {// 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致
marker.setRotateAngle(centerLine.getAngle().floatValue());
}
MogoMarkerOptions options = new MogoMarkerOptions()
.owner(TaxiConst.TYPE_MARKER_TAXI_ORDER)
.anchor(0.5f, 0.5f)
.set3DMode(true)
.gps(true)
.controlAngle(true)
.icon3DRes(resourceId)
.latitude(station.get(1))
.longitude(station.get(0));
IMogoMarker marker = Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp())).addMarker(uuid, options);
CenterLine centerLine = CallerHDMapManager.INSTANCE.getCenterLineInfo(station.get(0)
, station.get(1), -1);
if (null != centerLine && marker != null) {// 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致
marker.setRotateAngle(centerLine.getAngle().floatValue());
}
};
OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable);
}else {
//开启线程移除起终点marker设置
Runnable removeMapMarkerRunnable = new Runnable() {
@Override
public void run() {
CallerLogger.INSTANCE.d(M_TAXI + "RemoveMapMaker=" + Thread.currentThread().getName(),
uuid + "=latitude=" + station.get(1) + ",longitude=" + station.get(0));
MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).removeMarkers(uuid);
}
Runnable removeMapMarkerRunnable = () -> {
CallerLogger.INSTANCE.d(M_TAXI + "RemoveMapMaker=" + Thread.currentThread().getName(),
uuid + "=latitude=" + station.get(1) + ",longitude=" + station.get(0));
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp())).removeMarkers(uuid);
};
OCHThreadPoolManager.getsInstance().execute(removeMapMarkerRunnable);
}

View File

@@ -1,88 +0,0 @@
### 鹰眼 (MOGO-Autopilot) 平台接入说明
```gradle
// 新版本架构SDK
MOGO_CORE_SDK_VERSION = 0.0.9
// 所有UI展示层
com.mogo.eagle.core.function.impl:hmi:${MOGO_CORE_SDK_VERSION}
// 自动驾驶/工控机相关的功能实现
com.mogo.eagle.core.function.impl:autopilot:${MOGO_CORE_SDK_VERSION}
// 车辆检测模块功能实现
com.mogo.eagle.core.function.impl:check:${MOGO_CORE_SDK_VERSION}
// 地图层
com.mogo.eagle.core.function.impl:map:${MOGO_CORE_SDK_VERSION}
// 超视距服务
com.mogo.eagle.core.function.impl:monitoring:${MOGO_CORE_SDK_VERSION}
// 推送通知服务
com.mogo.eagle.core.function.impl:notice:${MOGO_CORE_SDK_VERSION}
// 自研OBU功能服务
com.mogo.eagle.core.function.impl:obu-mogo:${MOGO_CORE_SDK_VERSION}
// 小地图功能实现
com.mogo.eagle.core.function.impl:smp:${MOGO_CORE_SDK_VERSION}
// 道路协同功能实现
com.mogo.eagle.core.function.impl:v2x:${MOGO_CORE_SDK_VERSION}
// 模块功能定义接口,回调监听接口定义
com.mogo.eagle.core.function:api:${MOGO_CORE_SDK_VERSION}
// 负责模块之间调用,回调监听注册
com.mogo.eagle.core.function:call:${MOGO_CORE_SDK_VERSION}
// 数据bean基础用来统一模块间数据调用
com.mogo.eagle.core:data:${MOGO_CORE_SDK_VERSION}
// 项目公用资源
com.mogo.eagle.core:res:${MOGO_CORE_SDK_VERSION}
// 项目工具类
com.mogo.eagle.core:utils:${MOGO_CORE_SDK_VERSION}
// 网络服务
com.mogo.eagle.core:network:${MOGO_CORE_SDK_VERSION}
```
```gradle
MOGO_COMMONS_VERSION = 2.0.66
// modules
moduleshare : "com.mogo.module:module-share:${MOGO_COMMONS_VERSION}",
mogocommons : "com.mogo.commons:mogo-commons:${MOGO_COMMONS_VERSION}",
mogoutils : "com.mogo.commons:mogo-utils:${MOGO_COMMONS_VERSION}",
mapamap : "com.mogo.map:map-amap:${MOGO_COMMONS_VERSION}",
mapautomap : "com.mogo.map:map-autonavi:${MOGO_COMMONS_VERSION}",
mapcustom : "com.mogo.map:map-custom:${MOGO_COMMONS_VERSION}",
mogomap : "com.mogo.map:mogo-map:${MOGO_COMMONS_VERSION}",
mogomapapi : "com.mogo.map:mogo-map-api:${MOGO_COMMONS_VERSION}",
mogocustommap : "com.zhidaoauto.machine:map:${MOGO_COMMONS_VERSION}",
modulemain : "com.mogo.module:module-main:${MOGO_COMMONS_VERSION}",
modulemap : "com.mogo.module:module-map:${MOGO_COMMONS_VERSION}",
mogoserviceapi : "com.mogo.service:mogo-service-api:${MOGO_COMMONS_VERSION}",
moduleapps : "com.mogo.module:module-apps:${MOGO_COMMONS_VERSION}",
moduleextensions : "com.mogo.module:module-extensions:${MOGO_COMMONS_VERSION}",
// V2X
moduleV2x : "com.mogo.module:module-v2x:${MOGO_COMMONS_VERSION}",
modulesearch : "com.mogo.module:module-search:${MOGO_COMMONS_VERSION}",
// push
modulepush : "com.mogo.module:module-push:${MOGO_COMMONS_VERSION}",
modulepushbase : "com.mogo.module:module-push-base:${MOGO_COMMONS_VERSION}",
modulepushnoop : "com.mogo.module:module-push-noop:${MOGO_COMMONS_VERSION}",
// 左侧面板
moduleleftpanel : "com.mogo.module:module-left-panel:${MOGO_COMMONS_VERSION}",
// 左侧面板空实现
moduleleftpanelnoop : "com.mogo.module:module-left-panel-noop:${MOGO_COMMONS_VERSION}",
// 基础服务实现
mogobaseservicesdk : "com.mogo.base:services-sdk:${MOGO_COMMONS_VERSION}",
mogowebsocket : "com.mogo.module.carchatting:module-carchatt-socket:${MOGO_COMMONS_VERSION}",
mogologlib : "com.mogo.module:module-loglib:${MOGO_COMMONS_VERSION}",
kotlingradleplugin : "org.jetbrains.kotlin:kotlin-gradle-plugin:${MOGO_COMMONS_VERSION}",
skinsupport : "com.mogo.skin:skin-support:${MOGO_COMMONS_VERSION}",
skinsupportimpl : "com.mogo.skin:skin-support-impl:${MOGO_COMMONS_VERSION}",
skinsupportnoop : "com.mogo.skin:skin-support-noop:${MOGO_COMMONS_VERSION}",
skinsupportlight : "com.mogo.skin:skin-light:${MOGO_COMMONS_VERSION}",
crashreport : "com.mogo.test:crashreport:${MOGO_COMMONS_VERSION}",
crashreportbugly : "com.mogo.test:crashreport-bugly:${MOGO_COMMONS_VERSION}",
crashreportnoop : "com.mogo.test:crashreport-noop:${MOGO_COMMONS_VERSION}",
crashreportupgrade : "com.mogo.test:crashreport-upgrade:${MOGO_COMMONS_VERSION}",
skinsupportbase : "com.mogo.skin:skin-support-base:${MOGO_COMMONS_VERSION}",
skinsupportappcompat : "com.mogo.skin:skin-support-appcompat:${MOGO_COMMONS_VERSION}",
skinsupportcardview : "com.mogo.skin:skin-support-cardview:${MOGO_COMMONS_VERSION}",
skinsupportconstraintlayout : "com.mogo.skin:skin-support-constraint-layout:${MOGO_COMMONS_VERSION}",
skinsupportdesign : "com.mogo.skin:skin-support-design:${MOGO_COMMONS_VERSION}",
```

View File

@@ -275,11 +275,9 @@ dependencies {
} else {
implementation project(':tts:tts-pad')
implementation project(':core:function-impl:mogo-core-function-hmi')
androidTestImplementation project(':core:mogo-core-function-call')
androidTestImplementation project(':core:mogo-core-res')
androidTestImplementation project(':core:function-impl:mogo-core-function-notice')
}
apply from: "./functions/och.gradle"

View File

@@ -39,8 +39,6 @@ import com.mogo.eagle.core.utilcode.util.AppUtils
import com.mogo.eagle.core.utilcode.util.ProcessUtils
import com.mogo.eagle.core.utilcode.util.ThreadPoolService
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.map.location.GDLocationClient
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.rousetime.android_startup.AndroidStartup
import com.zhjt.mogo_core_function_devatools.env.EnvChangeManager
import com.zhjt.service.chain.ChainLog
@@ -78,14 +76,14 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
this.context = context
// TODO 需要与,陈扶风,确认为啥要限制仅在主进程
// if (ProcessUtils.isMainProcess(context)) {
initGDLoc()
initHttpDns()
initGDLoc()
initHttpDns()
// }
return true
}
private fun initGDLoc() {
GDLocationClient.getInstance(context).start()
CallerMapUIServiceManager.getGDLocationServer(context!!)?.start()
}
/**
@@ -155,12 +153,11 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
}
val httpDnsSimpleLocation =
if (mogoLocation != null && mogoLocation.latitude != 0.0 && mogoLocation.longitude != 0.0) {
if (mogoLocation.cityCode.isNullOrEmpty() && !GDLocationClient.getInstance(
context
).lastCityCode.isNullOrEmpty()
if (mogoLocation.cityCode.isNullOrEmpty()
&& !CallerMapUIServiceManager.getGDLocationServer(context!!)?.lastCityCode.isNullOrEmpty()
) {
HttpDnsSimpleLocation(
GDLocationClient.getInstance(context).lastCityCode,
CallerMapUIServiceManager.getGDLocationServer(context!!)?.lastCityCode ?: "010",
mogoLocation.latitude,
mogoLocation.longitude
)

View File

@@ -67,8 +67,6 @@ ext {
indicator : 'com.github.zhpanvip:viewpagerindicator:1.0.4',
strategy : 'com.zhidaoauto.mic:strategy:1.0.6',
carmanager : "com.zhidao.carmanager:common:1.0.30@aar",
//
jetbrainsannotationsjava5 : "org.jetbrains:annotations-java5:15.0",

View File

@@ -60,7 +60,6 @@ dependencies {
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_network
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
implementation project(':libraries:mogo-adas')
} else {
@@ -68,11 +67,8 @@ dependencies {
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-network')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(':libraries:mogo-adas')
implementation project(":libraries:mogo-map-api")
implementation project(":libraries:mogo-map")
}
}

View File

@@ -62,7 +62,6 @@ dependencies {
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
@@ -70,7 +69,6 @@ dependencies {
implementation rootProject.ext.dependencies.mogo_core_function_call
} else {
implementation project(":foudations:mogo-commons")
implementation project(':services:mogo-service-api')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')

View File

@@ -4,7 +4,6 @@ import android.content.Context;
import android.util.Log;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.data.config.HmiBuildConfig;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
@@ -12,12 +11,9 @@ import com.mogo.eagle.core.function.api.bindingcar.BindingcarCallBack;
import com.mogo.eagle.core.function.api.bindingcar.IMoGoBindingcarProvider;
import com.mogo.eagle.core.function.appupgrade.network.UpgradeAppNetWorkManager;
import com.mogo.eagle.core.function.bindingcar.network.BindingcarNetWorkManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager;
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager;
import com.mogo.eagle.core.function.ipcupgrade.IPCUpgradeManager;
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
import org.jetbrains.annotations.NotNull;
@@ -73,8 +69,9 @@ public class BindingcarProvider implements IMoGoBindingcarProvider {
/**
* 确认升级工控机docker版本
* @param images docker列表
* @param padSn SN
*
* @param images docker列表
* @param padSn SN
* @param releaseId 任务ID
*/
@Override
@@ -84,12 +81,13 @@ public class BindingcarProvider implements IMoGoBindingcarProvider {
/**
* 获取新工控机docker版本
* @param padSn SN
*
* @param padSn SN
* @param dockerVersion 当前工控机版本
*/
@Override
public void queryContainers(String padSn,String dockerVersion) {
IPCUpgradeManager.Companion.getINSTANCE().queryContainers(padSn,dockerVersion);
public void queryContainers(String padSn, String dockerVersion) {
IPCUpgradeManager.Companion.getINSTANCE().queryContainers(padSn, dockerVersion);
}
@Override
@@ -123,6 +121,7 @@ public class BindingcarProvider implements IMoGoBindingcarProvider {
/**
* 以后可能废弃
*
* @return
*/
private int getScreenType() {
@@ -139,11 +138,11 @@ public class BindingcarProvider implements IMoGoBindingcarProvider {
private int getCarType() {
int carType = -1;
if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
carType = 1; //bus
}
if(AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) {
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) {
carType = 2; //taxi
}
@@ -153,19 +152,19 @@ public class BindingcarProvider implements IMoGoBindingcarProvider {
private String getCarScreenType() {
String screenType = "";
if(AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
screenType = "1"; //taxi乘客端
}
if(AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
screenType = "2"; //taxi司机端
}
if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
screenType = "3"; //bus 乘客端
}
if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
screenType = "4"; //bus 司机端
}

View File

@@ -49,21 +49,14 @@ dependencies {
kapt rootProject.ext.dependencies.aroutercompiler
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogoserviceapi
implementation project(':libraries:map-usbcamera')
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
implementation rootProject.ext.dependencies.mogo_core_data
}else {
implementation project(':services:mogo-service-api')
implementation project(':libraries:map-usbcamera')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(':core:mogo-core-data')
}

View File

@@ -63,14 +63,12 @@ dependencies {
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_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
implementation rootProject.ext.dependencies.mogo_core_res
} else {
implementation project(':foudations:mogo-commons')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(':core:mogo-core-res')
}

View File

@@ -54,8 +54,6 @@ dependencies {
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.callchatprovider
implementation rootProject.ext.dependencies.mogo_core_data
@@ -65,9 +63,6 @@ dependencies {
} else {
implementation project(":foudations:mogo-commons")
implementation project(':services:mogo-service-api')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-network')

View File

@@ -57,12 +57,10 @@ dependencies {
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_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
} else {
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
}
}

View File

@@ -85,18 +85,14 @@ dependencies {
implementation rootProject.ext.dependencies.androidautoSize
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_res
}else {
implementation project(':services:mogo-service-api')
implementation project(':foudations:mogo-aicloud-services-sdk')
implementation project(':foudations:mogo-commons')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-res')

View File

@@ -7,31 +7,19 @@ import android.view.View
import android.view.WindowManager
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.Lifecycle.Event
import androidx.lifecycle.Lifecycle.Event.ON_CREATE
import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
import androidx.lifecycle.LifecycleCoroutineScope
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.lifecycleScope
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.data.msgbox.RecordBagMsg
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateListenerManager
import com.mogo.eagle.core.utilcode.kotlin.PX
import com.mogo.eagle.core.utilcode.kotlin.lifecycleOwner
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
import com.mogo.eagle.core.utilcode.reminder.Reminder
import com.mogo.eagle.core.utilcode.reminder.api.IReminder
import com.mogo.eagle.core.utilcode.reminder.api.IReminder.IGlobalStateChangeListener
import com.mogo.eagle.core.utilcode.util.*
import com.zhjt.mogo_core_function_devatools.badcase.biz.*
import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord
import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.BadCaseResponse.Reason
import com.zhjt.mogo_core_function_devatools.ext.enqueuePop
import com.zhjt.mogo_core_function_devatools.ext.toast
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
import me.jessyan.autosize.utils.AutoSizeUtils
@@ -47,7 +35,8 @@ internal object BadCaseManager : LifecycleEventObserver {
* 超过此时间case入口自动消失
*/
private val CASE_EXPIRE_DURATION: Long = TimeUnit.HOURS.toMillis(4)/* TimeUnit.SECONDS.toMillis(10) */
private val CASE_EXPIRE_DURATION: Long =
TimeUnit.HOURS.toMillis(4)/* TimeUnit.SECONDS.toMillis(10) */
private var hideFloat: (() -> Unit)? = null
@@ -85,15 +74,20 @@ internal object BadCaseManager : LifecycleEventObserver {
/**
* 展示BadCase配置页面
*/
fun showBadCaseConfigWindow(context: Context){
fun showBadCaseConfigWindow(context: Context) {
val badCaseConfigView = BadCaseConfigView(context)
badCaseConfigView.setClickListener(object: BadCaseConfigView.ClickListener{
badCaseConfigView.setClickListener(object : BadCaseConfigView.ClickListener {
override fun onClose() {
hideFloat?.invoke()
hideFloat = null
}
})
context.enqueuePop(badCaseConfigView,AutoSizeUtils.dp2px(context,960f), WindowManager.LayoutParams.MATCH_PARENT, key = "BadCaseConfigView").also {
context.enqueuePop(
badCaseConfigView,
AutoSizeUtils.dp2px(context, 960f),
WindowManager.LayoutParams.MATCH_PARENT,
key = "BadCaseConfigView"
).also {
hideFloat = it
}
}
@@ -101,37 +95,40 @@ internal object BadCaseManager : LifecycleEventObserver {
/**
* 主动采集BadCase
*/
fun initBadCase(view: View){
val activity = view.context as? FragmentActivity ?: throw IllegalStateException("please ensure context is FragmentActivity.")
fun initBadCase(view: View) {
val activity = view.context as? FragmentActivity
?: throw IllegalStateException("please ensure context is FragmentActivity.")
view.setOnClickListener {
if(ClickUtils.isFastClick()){
if(NetworkUtils.isConnected()){
if(BadCaseConfig.dockerVersion!=null){
if (ClickUtils.isFastClick()) {
if (NetworkUtils.isConnected()) {
if (BadCaseConfig.dockerVersion != null) {
//兼容老MAP版本
if(BadCaseConfig.dockerVersion!!.contains("2.3.0")
if (BadCaseConfig.dockerVersion!!.contains("2.3.0")
|| BadCaseConfig.dockerVersion!!.contains("2.4.0")
|| BadCaseConfig.dockerVersion!!.contains("2.5.0")
|| BadCaseConfig.dockerVersion!!.contains("2.6.0")
|| BadCaseConfig.dockerVersion!!.contains("2.8.0")){
|| BadCaseConfig.dockerVersion!!.contains("2.8.0")
) {
val initiativeBadCaseWindow = InitiativeBadCaseWindow(activity)
initiativeBadCaseWindow.setClickListener(object: InitiativeBadCaseWindow.ClickListener{
initiativeBadCaseWindow.setClickListener(object :
InitiativeBadCaseWindow.ClickListener {
override fun closeWindow() {
initiativeBadCaseWindow.hideFloatWindow()
}
})
initiativeBadCaseWindow.showFloatWindow(null)
}else{
} else {
val caseListDialog = CaseListDialog(activity)
caseListDialog.show()
}
}else{
} else {
ToastUtils.showShort("工控机连接状态异常")
}
}else{
} else {
ToastUtils.showShort("网络异常,请检查网络")
}
}else{
} else {
ToastUtils.showShort("请勿连续点击,稍后再试")
}
@@ -141,46 +138,48 @@ internal object BadCaseManager : LifecycleEventObserver {
/**
* AI数据采集
*/
fun initAiCollect(view: View){
val activity = view.context as? FragmentActivity ?: throw IllegalStateException("please ensure context is FragmentActivity.")
fun initAiCollect(view: View) {
val activity = view.context as? FragmentActivity
?: throw IllegalStateException("please ensure context is FragmentActivity.")
view.setOnClickListener {
if(ClickUtils.isFastClick()){
if(NetworkUtils.isConnected()){
if(BadCaseConfig.dockerVersion!=null){
if (ClickUtils.isFastClick()) {
if (NetworkUtils.isConnected()) {
if (BadCaseConfig.dockerVersion != null) {
val aiDataCollectWindow = AIDataCollectWindow(activity)
aiDataCollectWindow.setClickListener(object: AIDataCollectWindow.ClickListener{
aiDataCollectWindow.setClickListener(object :
AIDataCollectWindow.ClickListener {
override fun closeWindow() {
aiDataCollectWindow.hideFloatWindow()
}
})
aiDataCollectWindow.showFloatWindow()
}else{
} else {
ToastUtils.showShort("工控机连接状态异常")
}
}else{
} else {
ToastUtils.showShort("网络异常,请检查网络")
}
}else{
} else {
ToastUtils.showShort("请勿连续点击,稍后再试")
}
}
}
fun onReceiveBadCaseRecord(msgBoxBean: MsgBoxBean,activity: Activity,countdown: Boolean) {
fun onReceiveBadCaseRecord(msgBoxBean: MsgBoxBean, activity: Activity, countdown: Boolean) {
CallerLogger.d("$M_DEVA$TAG", "收到录包结果回调${record}")
CallerLogger.d("$M_DEVA$TAG", "开始创建被动录包弹窗,window num=${BadCaseConfig.windowNum}")
ThreadUtils.runOnUiThread {
val passiveBadCaseWindow = PassiveBadCaseWindow(activity)
passiveBadCaseWindow.setRecord(msgBoxBean)
passiveBadCaseWindow.setClickListener(object: PassiveBadCaseWindow.ClickListener{
passiveBadCaseWindow.setClickListener(object : PassiveBadCaseWindow.ClickListener {
override fun closeWindow() {
passiveBadCaseWindow.hideFloatWindow()
}
})
passiveBadCaseWindow.showFloatWindow()
if(countdown){
val countDownTimer = object: CountDownTimer(10000,1000){
if (countdown) {
val countDownTimer = object : CountDownTimer(10000, 1000) {
override fun onTick(p0: Long) {
}
@@ -202,7 +201,6 @@ internal object BadCaseManager : LifecycleEventObserver {
}
internal fun RecordPanelOuterClass.RecordPanel.toRecord(): AutoPilotRecord =
AutoPilotRecord().also {
it.id = this.id

View File

@@ -29,7 +29,6 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import mogo.telematics.pad.MessagePad
import record_cache.RecordPanelOuterClass
import java.lang.reflect.Field
import java.util.*
/**
@@ -38,7 +37,7 @@ import java.util.*
* @since: 2022/7/12
*/
class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener,
IMoGoAutopilotRecordListener , IMoGoAutopilotCarStateListener {
IMoGoAutopilotRecordListener, IMoGoAutopilotCarStateListener {
companion object {
const val TAG = "AIDataCollectWindow"
@@ -63,12 +62,14 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
private lateinit var tvCollectCancel: TextView //取消按钮
private var collectReason: String = "大型车:大货、大巴、特种车辆"
@Volatile
private var recordKey: String?=null //录制bag包key
private var recordKey: String? = null //录制bag包key
@Volatile
private var recordFileName: String?=null //录制文件包名
private var longitude: Double?=null
private var latitude: Double?=null
private var recordFileName: String? = null //录制文件包名
private var longitude: Double? = null
private var latitude: Double? = null
private lateinit var mFloatLayout: View
private var mInViewX = 0f
@@ -89,8 +90,9 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
}
@SuppressLint("SetTextI18n")
private fun initFloatWindow(){
mFloatLayout = LayoutInflater.from(mActivity).inflate(R.layout.view_ai_data_collect, null) as View
private fun initFloatWindow() {
mFloatLayout =
LayoutInflater.from(mActivity).inflate(R.layout.view_ai_data_collect, null) as View
mFloatLayout.setOnTouchListener(this)
tvCollectNum = mFloatLayout.findViewById(R.id.tvCollectNum)
tvCollectTime = mFloatLayout.findViewById(R.id.tvCollectTime)
@@ -105,14 +107,15 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
tvCollectReport = mFloatLayout.findViewById(R.id.tvCollectReport)
tvCollectCancel = mFloatLayout.findViewById(R.id.tvCollectCancel)
if(BadCaseConfig.windowNum<1){
if (BadCaseConfig.windowNum < 1) {
BadCaseConfig.windowNum = 1
}
tvCollectNum.text = BadCaseConfig.windowNum.toString()
BadCaseConfig.windowNum++
tvCollectTime.text ="时间:${millis2String(System.currentTimeMillis(),TimeUtils.getHourMinSecondFormat())}"
tvCollectTime.text =
"时间:${millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())}"
//采集结果回调监听
CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(),this)
CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(), this)
// 添加 ADAS车辆状态&定位 监听
CallerAutopilotCarStatusListenerManager.addListener(this.hashCode().toString(), this)
//开始录制AI数据采集Bag包
@@ -123,7 +126,7 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
12
)
//大型车
rbLargeCar.setOnClickListener{
rbLargeCar.setOnClickListener {
setRadioButtonStatus(
largeCarStatus = true,
trafficLightStatus = false,
@@ -216,12 +219,12 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
//上报
tvCollectReport.setOnClickListener {
GlobalScope.launch{
GlobalScope.launch {
val uploadResult = presenter.upload(mutableMapOf<String, String>().also { itx ->
itx["carLicense"] = AppConfigInfo.plateNumber?:"" //车牌号
itx["filename"] = recordFileName?:"" //bag包文件地址
itx["carLicense"] = AppConfigInfo.plateNumber ?: "" //车牌号
itx["filename"] = recordFileName ?: "" //bag包文件地址
itx["filesize"] = "0" //bag包文件大小
itx["key"] = recordKey?:"" //key
itx["key"] = recordKey ?: "" //key
itx["reason"] = collectReason //采集原因
itx["duration"] = "20" //采集时长固定为20S
itx["startTime"] = System.currentTimeMillis().toString() //上报时间(时间戳格式)
@@ -229,7 +232,7 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
itx["carSn"] = MoGoAiCloudClientConfig.getInstance().sn //SN
itx["userRole"] = "" //采集者角色
itx["audioUrl"] = "" //音频COS地址
itx["mapVersion"] = BadCaseConfig.dockerVersion ?:"" //工控机版本
itx["mapVersion"] = BadCaseConfig.dockerVersion ?: "" //工控机版本
itx["eyeVersion"] = AppUtils.getAppVersionName() //鹰眼版本
itx["coordinate"] = "latitude:${latitude};longitude:${longitude}" //坐标
@@ -266,23 +269,29 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
}
override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) {
CallerLogger.d("${M_DEVA}${TAG}", "-- 收到工控机录制任务回调 -- $recordPanel")
ThreadUtils.runOnUiThread{
if(recordKey==null){
ThreadUtils.runOnUiThread {
if (recordKey == null) {
recordKey = recordPanel.key.toString()
BadCaseConfig.recordKeyList.add(recordPanel.key)
}
if(recordFileName==null){
if (recordFileName == null) {
recordFileName = recordPanel.filename
}
}
}
private fun setRadioButtonStatus(largeCarStatus: Boolean,trafficLightStatus: Boolean,waterStatus: Boolean,
constructionStatus: Boolean,accidentStatus: Boolean,rainStatus: Boolean,nightTrafficStatus: Boolean){
private fun setRadioButtonStatus(
largeCarStatus: Boolean,
trafficLightStatus: Boolean,
waterStatus: Boolean,
constructionStatus: Boolean,
accidentStatus: Boolean,
rainStatus: Boolean,
nightTrafficStatus: Boolean
) {
rbLargeCar.isChecked = largeCarStatus
rbTrafficLight.isChecked = trafficLightStatus
rbWater.isChecked = waterStatus
@@ -323,7 +332,7 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
// 默认固定位置,靠屏幕右边缘的中间
mWindowManager!!.defaultDisplay.getMetrics(metrics)
mWindowParams!!.x = metrics.widthPixels
mWindowParams!!.y = metrics.heightPixels / 2 - BarUtils.getStatusBarHeight()-350
mWindowParams!!.y = metrics.heightPixels / 2 - BarUtils.getStatusBarHeight() - 350
mWindowManager!!.addView(mFloatLayout, mWindowParams)
}
}

View File

@@ -1,6 +1,5 @@
package com.zhjt.mogo_core_function_devatools.badcase.biz
import android.util.Log
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion

View File

@@ -70,9 +70,9 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
initEvent();
//获取所有Topic
CallerAutoPilotManager.INSTANCE.getBadCaseConfig(1, 0, new ArrayList<>());
if(recordType!=null){
if (recordType != null) {
tvCaseName.setText(recordType.getDesc());
if(recordType.getTopicsList().size()>0){
if (recordType.getTopicsList().size() > 0) {
topicListAdapter.setData(recordType.getTopicsList());
topicListAdapter.notifyDataSetChanged();
}
@@ -90,8 +90,8 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
CallerAutopilotRecordListenerManager.INSTANCE.removeListener(TAG);
}
public void setData(RecordTypeEntity recordTypeEntity){
if(recordTypeEntity!=null){
public void setData(RecordTypeEntity recordTypeEntity) {
if (recordTypeEntity != null) {
recordType = recordTypeEntity;
}
}
@@ -108,9 +108,9 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
rvTopicList.setLayoutManager(linearLayoutManager);
topicListAdapter = new TopicListAdapter();
topicListAdapter.setListener((topicName, clicked) -> {
if(clicked){
if (clicked) {
addTopicList.add(topicName);
}else{
} else {
addTopicList.remove(topicName);
}
});
@@ -132,15 +132,15 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
@Override
public void afterTextChanged(Editable s) {
searchStr = s.toString();
if(searchStr!=null && searchStr.length()>0){
if (searchStr != null && searchStr.length() > 0) {
ivSearch.setImageDrawable(getContext().getDrawable(R.drawable.icon_bad_case_delect));
} else {
ivSearch.setImageDrawable(getContext().getDrawable(R.drawable.icon_bad_case_search));
}
if(searchStr!=null && searchStr.length()>0){
if (searchStr != null && searchStr.length() > 0) {
searchTopicList.clear();
for(int index=0;index<recordType.getTopicsList().size();index++){
if(recordType.getTopicsList().get(index).getTopicName().contains(searchStr)){
for (int index = 0; index < recordType.getTopicsList().size(); index++) {
if (recordType.getTopicsList().get(index).getTopicName().contains(searchStr)) {
searchTopicList.add(recordType.getTopicsList().get(index));
}
}
@@ -151,7 +151,7 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
});
ivSearch.setOnClickListener(v -> {
if(searchStr!=null && searchStr.length()>0){
if (searchStr != null && searchStr.length() > 0) {
etSearch.setText("");
ivSearch.setImageDrawable(getContext().getDrawable(R.drawable.icon_bad_case_search));
topicListAdapter.setData(recordType.getTopicsList());
@@ -159,11 +159,11 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
}
});
tvSave.setOnClickListener(v -> {
if(recordType!=null){
Boolean success=CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2,recordType.getId(),addTopicList);
if(Boolean.TRUE.equals(success)){
if (recordType != null) {
Boolean success = CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2, recordType.getId(), addTopicList);
if (Boolean.TRUE.equals(success)) {
ToastUtils.showShort("Topic设置成功");
if(recordType.getId() == 0){
if (recordType.getId() == 0) {
//自定义Topic
BadCaseConfig.customTopicList.clear();
BadCaseConfig.customTopicList.addAll(addTopicList);
@@ -171,7 +171,7 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
addTopicList.clear();
recordType.getTopicsList().removeAll(allTopicList);
dismiss();
}else{
} else {
ToastUtils.showShort("Topic设置失败");
}
}

View File

@@ -38,8 +38,6 @@ import kotlinx.coroutines.launch
import mogo.telematics.pad.MessagePad
import record_cache.RecordPanelOuterClass
import java.io.File
import java.lang.StringBuilder
import java.lang.reflect.Field
import java.util.*
@@ -79,15 +77,17 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
private lateinit var tvInitiativeCancel: TextView
private var audioStatus = false
private var audioFileName:String?=null //录音文件名称
private var audioFileName: String? = null //录音文件名称
private var uploadReason: StringBuilder = StringBuilder() //上报原因,标签
@Volatile
private var recordKey: String?=null //录制bag包key
private var recordKey: String? = null //录制bag包key
@Volatile
private var recordFileName: String?=null //录制文件包名
private var longitude: Double?=null
private var latitude: Double?=null
private var recordFileName: String? = null //录制文件包名
private var longitude: Double? = null
private var latitude: Double? = null
private var mInViewX = 0f
private var mInViewY = 0f
@@ -107,8 +107,9 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
}
@SuppressLint("SetTextI18n")
private fun initFloatWindow(){
mFloatLayout = LayoutInflater.from(mActivity).inflate(R.layout.view_initiative_bad_case, null) as View
private fun initFloatWindow() {
mFloatLayout =
LayoutInflater.from(mActivity).inflate(R.layout.view_initiative_bad_case, null) as View
mFloatLayout.setOnTouchListener(this)
tvInitiativeNum = mFloatLayout.findViewById(R.id.tvInitiativeNum)
@@ -127,16 +128,17 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
tvInitiativeReport = mFloatLayout.findViewById(R.id.tvInitiativeReport)
tvInitiativeCancel = mFloatLayout.findViewById(R.id.tvInitiativeCancel)
if(BadCaseConfig.windowNum<1){
if (BadCaseConfig.windowNum < 1) {
BadCaseConfig.windowNum = 1
}
tvInitiativeNum.text = BadCaseConfig.windowNum.toString()
BadCaseConfig.windowNum++
tvInitiativeTime.text = "时间:${millis2String(System.currentTimeMillis(),TimeUtils.getHourMinSecondFormat())}"
tvInitiativeTime.text =
"时间:${millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())}"
tvInitiativeIdentity.text = "身份:${BadCaseConfig.identity}"
//采集结果回调监听
CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(),this)
CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(), this)
// 添加 ADAS车辆状态&定位 监听
CallerAutopilotCarStatusListenerManager.addListener(this.hashCode().toString(), this)
viewAudioButton.setOnClickListener {
@@ -145,36 +147,37 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
}
tvInitiativeReport.setOnClickListener {
if(!rbOne.isChecked && !rbTwo.isChecked && !rbThree.isChecked &&
!rbFour.isChecked && !rbFive.isChecked && !rbSix.isChecked){
if (!rbOne.isChecked && !rbTwo.isChecked && !rbThree.isChecked &&
!rbFour.isChecked && !rbFive.isChecked && !rbSix.isChecked
) {
TipToast.shortTip("请选择至少一个Case")
return@setOnClickListener
}
if(rbOne.isChecked){
if (rbOne.isChecked) {
uploadReason.append("严重画龙 ")
}
if(rbTwo.isChecked){
if (rbTwo.isChecked) {
uploadReason.append("速度过慢 ")
}
if(rbThree.isChecked){
if (rbThree.isChecked) {
uploadReason.append("感知、定位、地图等其他 ")
}
if(rbFour.isChecked){
if (rbFour.isChecked) {
uploadReason.append("速度过快 ")
}
if(rbFive.isChecked){
if (rbFive.isChecked) {
uploadReason.append("存在碰撞风险 ")
}
if(rbSix.isChecked){
if (rbSix.isChecked) {
uploadReason.append("点刹、顿挫")
}
if(audioStatus){
if (audioStatus) {
audioStatus = !audioStatus
setAudio(audioStatus)
Handler().postDelayed({
uploadAudio()
},1000)
}else{
uploadAudio()
}, 1000)
} else {
uploadAudio()
}
}
@@ -197,10 +200,10 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
}
}
var countDownTimer: CountDownTimer?=null
var countDownTimer: CountDownTimer? = null
private fun setAudio(status: Boolean){
if(status){
private fun setAudio(status: Boolean) {
if (status) {
//开始录音
audioFileName = "Audio_${System.currentTimeMillis()}_BadCase"
RecordManager.getInstance().start(audioFileName)
@@ -208,11 +211,11 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
viewAudioButton.setImageResource(R.drawable.icon_bad_case_audio_select)
tvAudioCountDown.visibility = View.VISIBLE
//开始倒计时
if(countDownTimer==null){
if (countDownTimer == null) {
countDownTimer = object : CountDownTimer(60000, 1000) {
override fun onTick(millisUntilFinished: Long) {
tvAudioCountDown.text = "${millisUntilFinished/1000}S"
tvAudioCountDown.text = "${millisUntilFinished / 1000}S"
}
override fun onFinish() {
@@ -225,7 +228,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
}
countDownTimer?.start()
}
}else{
} else {
//结束倒计时
countDownTimer?.cancel()
countDownTimer?.onFinish()
@@ -235,11 +238,13 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
}
private fun uploadAudio(){
private fun uploadAudio() {
val singlePath = "/mnt/sdcard/mogo/DataCollection/${audioFileName}.wav"
val file = File(singlePath)
if(file.exists()){
LogInfoManagerFactory.createAudioUpload(mActivity.applicationContext,"Audio",singlePath,
if (file.exists()) {
LogInfoManagerFactory.createAudioUpload(mActivity.applicationContext,
"Audio",
singlePath,
object : OnUploadListener {
override fun onUploadSuccess(filePath: String, downloadUrl: String) {
CallerLogger.d("$M_DEVA$TAG", "语音文件上传成功downloadUrl=$downloadUrl")
@@ -255,7 +260,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
removeUploadListener(singlePath)
}
})
}else{
} else {
//上传到服务器
upload(null)
}
@@ -265,7 +270,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
* 将语音文件上传Cos监听移除
* @param filePath 文件路径
*/
private fun removeUploadListener(filePath: String){
private fun removeUploadListener(filePath: String) {
val pkgInfo: List<String> = filePath.substring(
filePath.lastIndexOf("/") + 1,
filePath.lastIndexOf(".")
@@ -278,21 +283,21 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
* 将记录上传到服务器
* @param downloadUrl 语音文件下载地址
*/
private fun upload(downloadUrl: String?){
GlobalScope.launch{
private fun upload(downloadUrl: String?) {
GlobalScope.launch {
val uploadResult = presenter.upload(mutableMapOf<String, String>().also { itx ->
itx["carLicense"] = AppConfigInfo.plateNumber?:"" //车牌号
itx["filename"] = recordFileName?:"" //bag包文件地址
itx["carLicense"] = AppConfigInfo.plateNumber ?: "" //车牌号
itx["filename"] = recordFileName ?: "" //bag包文件地址
itx["filesize"] = "0" //bag包文件大小
itx["key"] = recordKey?:"" //key
itx["reason"] = uploadReason.toString()?:"" //采集原因
itx["key"] = recordKey ?: "" //key
itx["reason"] = uploadReason.toString() ?: "" //采集原因
itx["duration"] = BadCaseConfig.totalDuration.toString() //采集时长固定为20S
itx["startTime"] = System.currentTimeMillis().toString() //上报时间(时间戳格式)
itx["channel"] = "1" //渠道
itx["carSn"] = MoGoAiCloudClientConfig.getInstance().sn //SN
itx["userRole"] = BadCaseConfig.identity //采集者角色
itx["audioUrl"] = downloadUrl?:"" //音频COS地址
itx["mapVersion"] = BadCaseConfig.dockerVersion ?:"" //工控机版本
itx["audioUrl"] = downloadUrl ?: "" //音频COS地址
itx["mapVersion"] = BadCaseConfig.dockerVersion ?: "" //工控机版本
itx["eyeVersion"] = AppUtils.getAppVersionName() //鹰眼版本
itx["coordinate"] = "latitude:${latitude};longitude:${longitude}" //坐标
@@ -338,15 +343,22 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
// 默认固定位置,靠屏幕右边缘的中间
mWindowManager!!.defaultDisplay.getMetrics(metrics)
mWindowParams!!.x = metrics.widthPixels
mWindowParams!!.y = metrics.heightPixels / 2 - BarUtils.getStatusBarHeight()-950
mWindowParams!!.y = metrics.heightPixels / 2 - BarUtils.getStatusBarHeight() - 950
mWindowManager!!.addView(mFloatLayout, mWindowParams)
//开启录包
if(recordCaseEntity!=null){
CallerAutoPilotManager.recordPackage(recordCaseEntity.caseId,Random(SystemClock.elapsedRealtime()).nextInt(),
BadCaseConfig.totalDuration, BadCaseConfig.previousDuration,recordCaseEntity.topicList)
}else{
CallerAutoPilotManager.recordPackage(BadCaseConfig.type,Random(SystemClock.elapsedRealtime()).nextInt(),
BadCaseConfig.totalDuration, BadCaseConfig.previousDuration)
if (recordCaseEntity != null) {
CallerAutoPilotManager.recordPackage(
recordCaseEntity.caseId,
Random(SystemClock.elapsedRealtime()).nextInt(),
BadCaseConfig.totalDuration,
BadCaseConfig.previousDuration,
recordCaseEntity.topicList
)
} else {
CallerAutoPilotManager.recordPackage(
BadCaseConfig.type, Random(SystemClock.elapsedRealtime()).nextInt(),
BadCaseConfig.totalDuration, BadCaseConfig.previousDuration
)
}
}
}
@@ -362,11 +374,11 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) {
CallerLogger.d("${M_DEVA}${TAG}", "-- 收到工控机录制任务回调 -- $recordPanel")
ThreadUtils.runOnUiThread {
if(recordKey==null){
if (recordKey == null) {
recordKey = recordPanel.key.toString()
BadCaseConfig.recordKeyList.add(recordPanel.key)
}
if(recordFileName==null){
if (recordFileName == null) {
recordFileName = recordPanel.filename
}
}

View File

@@ -7,7 +7,6 @@ import android.graphics.PixelFormat
import android.os.CountDownTimer
import android.os.Handler
import android.util.DisplayMetrics
import android.util.Log
import android.view.*
import android.widget.CheckBox
import android.widget.CompoundButton
@@ -17,7 +16,6 @@ import com.google.android.flexbox.FlexboxLayout
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.data.msgbox.MsgCategory
import com.mogo.eagle.core.data.msgbox.RecordBagMsg
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarStateListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarStatusListenerManager
@@ -29,17 +27,16 @@ import com.mogo.eagle.core.utilcode.util.*
import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String
import com.zhidao.loglib.call.LogInfoManagerFactory
import com.zhidao.loglib.upload.OnUploadListener
import com.zhidao.loglib.upload.UploadManager
import com.zhjt.mogo_core_function_devatools.R
import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
import com.zhjt.mogo_core_function_devatools.badcase.record.RecordManager
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import mogo.telematics.pad.MessagePad
import com.zhidao.loglib.upload.UploadManager
import me.jessyan.autosize.utils.AutoSizeUtils
import mogo.telematics.pad.MessagePad
import org.greenrobot.eventbus.EventBus
import java.io.File
import java.lang.reflect.Field
/**
* @author XuXinChao
@@ -59,14 +56,14 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
private lateinit var mFloatLayout: View
private var audioStatus = false
private var audioFileName:String?=null //录音文件名称
private var audioFileName: String? = null //录音文件名称
private var uploadReason: String = String() //上报原因,标签
private var recordKey: String?=null //录制bag包key
private var recordFileName: String?=null //录制文件包名
private var boxBean: MsgBoxBean ?= null
private var longitude: Double?=null
private var latitude: Double?=null
private var recordKey: String? = null //录制bag包key
private var recordFileName: String? = null //录制文件包名
private var boxBean: MsgBoxBean? = null
private var longitude: Double? = null
private var latitude: Double? = null
private var mInViewX = 0f
private var mInViewY = 0f
@@ -76,7 +73,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
private var mInScreenY = 0f
private var clickListener: ClickListener? = null
var countDownTimer: CountDownTimer?=null
var countDownTimer: CountDownTimer? = null
private lateinit var tvPassiveNum: TextView
private lateinit var tvPassiveTime: TextView
@@ -99,8 +96,9 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
}
@SuppressLint("SetTextI18n")
private fun initFloatWindow(){
mFloatLayout = LayoutInflater.from(mActivity).inflate(R.layout.view_passive_bad_case, null) as View
private fun initFloatWindow() {
mFloatLayout =
LayoutInflater.from(mActivity).inflate(R.layout.view_passive_bad_case, null) as View
mFloatLayout.setOnTouchListener(this)
tvPassiveNum = mFloatLayout.findViewById(R.id.tvPassiveNum)
tvPassiveTime = mFloatLayout.findViewById(R.id.tvPassiveTime)
@@ -110,12 +108,13 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
tvPassiveReport = mFloatLayout.findViewById(R.id.tvPassiveReport)
tvPassiveCancel = mFloatLayout.findViewById(R.id.tvPassiveCancel)
flReasonLayout = mFloatLayout.findViewById(R.id.flReasonLayout)
if(BadCaseConfig.windowNum<1){
if (BadCaseConfig.windowNum < 1) {
BadCaseConfig.windowNum = 1
}
tvPassiveNum.text = BadCaseConfig.windowNum.toString()
BadCaseConfig.windowNum++
tvPassiveTime.text = "时间:${millis2String(System.currentTimeMillis(),TimeUtils.getHourMinSecondFormat())}"
tvPassiveTime.text =
"时间:${millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())}"
tvPassiveIdentity.text = "身份:${BadCaseConfig.identity}"
// 添加 ADAS车辆状态&定位 监听
CallerAutopilotCarStatusListenerManager.addListener(TAG, this)
@@ -125,17 +124,17 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
}
tvPassiveReport.setOnClickListener {
if(uploadReason.isEmpty()){
if (uploadReason.isEmpty()) {
TipToast.shortTip("请选择至少一个Case")
return@setOnClickListener
}
if(audioStatus){
if (audioStatus) {
audioStatus = !audioStatus
setAudio(audioStatus)
Handler().postDelayed({
uploadAudio()
},1000)
}else{
}, 1000)
} else {
uploadAudio()
}
//删除记录
@@ -163,8 +162,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
}
}
private fun setAudio(status: Boolean){
if(status){
private fun setAudio(status: Boolean) {
if (status) {
//开始录音
audioFileName = "Audio_${System.currentTimeMillis()}_BadCase"
RecordManager.getInstance().start(audioFileName)
@@ -172,11 +171,11 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
viewAudioButton.setImageResource(R.drawable.icon_bad_case_audio_select)
tvAudioCountDown.visibility = View.VISIBLE
//开始倒计时
if(countDownTimer==null){
if (countDownTimer == null) {
countDownTimer = object : CountDownTimer(60000, 1000) {
override fun onTick(millisUntilFinished: Long) {
tvAudioCountDown.text = "${millisUntilFinished/1000}S"
tvAudioCountDown.text = "${millisUntilFinished / 1000}S"
}
override fun onFinish() {
@@ -189,7 +188,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
}
countDownTimer?.start()
}
}else{
} else {
//结束倒计时
countDownTimer?.cancel()
countDownTimer?.onFinish()
@@ -199,11 +198,13 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
}
private fun uploadAudio(){
private fun uploadAudio() {
val singlePath = "/mnt/sdcard/mogo/DataCollection/${audioFileName}.wav"
val file = File(singlePath)
if(file.exists()){
LogInfoManagerFactory.createAudioUpload(mActivity.applicationContext,"Audio",singlePath,
if (file.exists()) {
LogInfoManagerFactory.createAudioUpload(mActivity.applicationContext,
"Audio",
singlePath,
object : OnUploadListener {
override fun onUploadSuccess(filePath: String, downloadUrl: String) {
CallerLogger.d("$M_DEVA$TAG", "语音文件上传成功downloadUrl=$downloadUrl")
@@ -219,7 +220,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
removeUploadListener(singlePath)
}
})
}else{
} else {
//上传到服务器
upload(null)
}
@@ -229,7 +230,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
* 将语音文件上传Cos监听移除
* @param filePath 文件路径
*/
private fun removeUploadListener(filePath: String){
private fun removeUploadListener(filePath: String) {
val pkgInfo: List<String> = filePath.substring(
filePath.lastIndexOf("/") + 1,
filePath.lastIndexOf(".")
@@ -242,21 +243,21 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
* 将记录上传到服务器
* @param downloadUrl 语音文件下载地址
*/
private fun upload(downloadUrl: String?){
GlobalScope.launch{
private fun upload(downloadUrl: String?) {
GlobalScope.launch {
val uploadResult = presenter.upload(mutableMapOf<String, String>().also { itx ->
itx["carLicense"] = AppConfigInfo.plateNumber?:"" //车牌号
itx["filename"] = recordFileName?:"" //bag包文件地址
itx["carLicense"] = AppConfigInfo.plateNumber ?: "" //车牌号
itx["filename"] = recordFileName ?: "" //bag包文件地址
itx["filesize"] = "0" //bag包文件大小
itx["key"] = recordKey?:"" //key
itx["key"] = recordKey ?: "" //key
itx["reason"] = uploadReason //采集原因
itx["duration"] = BadCaseConfig.totalDuration.toString() //采集时长固定为20S
itx["startTime"] = System.currentTimeMillis().toString() //上报时间(时间戳格式)
itx["channel"] = "0" //渠道
itx["carSn"] = MoGoAiCloudClientConfig.getInstance().sn //SN
itx["userRole"] = BadCaseConfig.identity //采集者角色
itx["audioUrl"] = downloadUrl?:"" //音频COS地址
itx["mapVersion"] = BadCaseConfig.dockerVersion ?:"" //工控机版本
itx["audioUrl"] = downloadUrl ?: "" //音频COS地址
itx["mapVersion"] = BadCaseConfig.dockerVersion ?: "" //工控机版本
itx["eyeVersion"] = AppUtils.getAppVersionName() //鹰眼版本
itx["coordinate"] = "latitude:${latitude};longitude:${longitude}" //坐标
@@ -308,28 +309,33 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
// 默认固定位置,靠屏幕右边缘的中间
mWindowManager!!.defaultDisplay.getMetrics(metrics)
mWindowParams!!.x = metrics.widthPixels
mWindowParams!!.y = metrics.heightPixels - BarUtils.getStatusBarHeight()-950
mWindowParams!!.y = metrics.heightPixels - BarUtils.getStatusBarHeight() - 950
mWindowManager!!.addView(mFloatLayout, mWindowParams)
}
GlobalScope.launch{
GlobalScope.launch {
presenter.loadBadCases(true).also {
ThreadUtils.runOnUiThread {
it.iterator().forEach {
val checkBox = CheckBox(mActivity)
checkBox.setTextColor(Color.WHITE)
val lp = FlexboxLayout.LayoutParams(FlexboxLayout.LayoutParams.WRAP_CONTENT,
FlexboxLayout.LayoutParams.WRAP_CONTENT)
checkBox.buttonDrawable = mActivity.resources.getDrawable(R.drawable.badcase_radio_button_style)
checkBox.setPadding(SizeUtils.dp2px(10f),
val lp = FlexboxLayout.LayoutParams(
FlexboxLayout.LayoutParams.WRAP_CONTENT,
FlexboxLayout.LayoutParams.WRAP_CONTENT
)
checkBox.buttonDrawable =
mActivity.resources.getDrawable(R.drawable.badcase_radio_button_style)
checkBox.setPadding(
SizeUtils.dp2px(10f),
SizeUtils.dp2px(10f),
SizeUtils.dp2px(10f))
checkBox.textSize = AutoSizeUtils.dp2px(mActivity,18f).toFloat()
SizeUtils.dp2px(10f),
SizeUtils.dp2px(10f)
)
checkBox.textSize = AutoSizeUtils.dp2px(mActivity, 18f).toFloat()
checkBox.text = it.reason
checkBox.isChecked = it.isChecked
checkBox.setOnCheckedChangeListener(this@PassiveBadCaseWindow)
flReasonLayout.addView(checkBox,lp)
flReasonLayout.addView(checkBox, lp)
}
}
}
@@ -339,13 +345,13 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
buttonView?.text?.let {
if(isChecked){
if(!uploadReason.contains(it)){
if (isChecked) {
if (!uploadReason.contains(it)) {
uploadReason += it
}
}else{
if(uploadReason.contains(it)){
uploadReason = uploadReason.replace(it.toString(),"")
} else {
if (uploadReason.contains(it)) {
uploadReason = uploadReason.replace(it.toString(), "")
}
}
@@ -359,7 +365,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
if (mFloatLayout.parent != null) mWindowManager!!.removeView(mFloatLayout)
}
fun setRecord(msgBoxBean: MsgBoxBean){
fun setRecord(msgBoxBean: MsgBoxBean) {
boxBean = msgBoxBean
val recordBagMsg = (msgBoxBean.bean as RecordBagMsg)
recordKey = recordBagMsg.key.toString()

View File

@@ -7,23 +7,22 @@ import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.mogo.eagle.core.data.badcase.RecordTypeEntity
import com.zhjt.mogo_core_function_devatools.R
import com.zhjt.mogo_core_function_devatools.badcase.biz.BadCaseConfigView
/**
* @author XuXinChao
* @description 录制模板清单列表适配器
* @since: 2022/10/19
*/
class RecordTemplateAdapter : RecyclerView.Adapter<RecordTemplateAdapter.RecordTemplateHolder>(){
class RecordTemplateAdapter : RecyclerView.Adapter<RecordTemplateAdapter.RecordTemplateHolder>() {
private var data:List<RecordTypeEntity>? = null
private var data: List<RecordTypeEntity>? = null
private var clickTemplateListener: ClickTemplateListener? = null
fun setData( data: List<RecordTypeEntity>?){
fun setData(data: List<RecordTypeEntity>?) {
this.data = data
}
fun setListener(listener: ClickTemplateListener){
fun setListener(listener: ClickTemplateListener) {
clickTemplateListener = listener
}
@@ -34,7 +33,7 @@ class RecordTemplateAdapter : RecyclerView.Adapter<RecordTemplateAdapter.RecordT
}
override fun onBindViewHolder(holder: RecordTemplateHolder, position: Int) {
data?.let {recordTypeEntity->
data?.let { recordTypeEntity ->
holder.caseName.text = recordTypeEntity[position].desc
holder.caseName.setOnClickListener {
clickTemplateListener?.onClick(recordTypeEntity[position])
@@ -44,11 +43,11 @@ class RecordTemplateAdapter : RecyclerView.Adapter<RecordTemplateAdapter.RecordT
override fun getItemCount() = data?.size ?: 0
class RecordTemplateHolder(itemView: View): RecyclerView.ViewHolder(itemView){
class RecordTemplateHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var caseName: TextView = itemView.findViewById(R.id.caseName)
}
interface ClickTemplateListener{
interface ClickTemplateListener {
fun onClick(recordTypeEntity: RecordTypeEntity)
}

View File

@@ -12,11 +12,10 @@ import java.util.List;
public class Mp3EncodeThread extends Thread {
private static final String TAG = Mp3EncodeThread.class.getSimpleName();
private List<ChangeBuffer> cacheBufferList = Collections.synchronizedList(new LinkedList<ChangeBuffer>());
private File file;
private final List<ChangeBuffer> cacheBufferList = Collections.synchronizedList(new LinkedList<>());
private final File file;
private final byte[] mp3Buffer;
private FileOutputStream os;
private byte[] mp3Buffer;
private EncordFinishListener encordFinishListener;
/**
@@ -69,7 +68,7 @@ public class Mp3EncodeThread extends Thread {
private ChangeBuffer next() {
for (; ; ) {
if (cacheBufferList == null || cacheBufferList.size() == 0) {
if (cacheBufferList.size() == 0) {
try {
if (isOver) {
finish();
@@ -122,8 +121,8 @@ public class Mp3EncodeThread extends Thread {
}
public static class ChangeBuffer {
private short[] rawData;
private int readSize;
private final short[] rawData;
private final int readSize;
public ChangeBuffer(short[] rawData, int readSize) {
this.rawData = rawData.clone();

View File

@@ -3,13 +3,13 @@ package com.zhjt.mogo_core_function_devatools.badcase.repository.store
import androidx.datastore.core.DataStore
import androidx.datastore.core.DataStoreFactory
import androidx.datastore.core.Serializer
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
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.util.Utils
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager
import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.BadCaseResponse.Reason
import com.zhjt.mogo_core_function_devatools.badcase.generated.BadCauses
import com.zhjt.mogo_core_function_devatools.badcase.generated.Cause
import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.BadCaseResponse.Reason
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.firstOrNull
@@ -54,7 +54,12 @@ internal object BadCaseStore {
private val store: DataStore<BadCauses> by lazy {
DataStoreFactory.create(serializer = serializer) { File(Utils.getApp().filesDir, "bad_cases.pb") }
DataStoreFactory.create(serializer = serializer) {
File(
Utils.getApp().filesDir,
"bad_cases.pb"
)
}
}
suspend fun updateRecords(reasons: List<Reason>, isDriven: Boolean): BadCauses {
@@ -99,7 +104,10 @@ internal object BadCaseStore {
@OptIn(FlowPreview::class)
suspend fun records(isDriven: Boolean): List<Reason> {
CallerLogger.d("$M_DEVA${BadCaseManager.TAG}", "-- load cases from pb -- isDriven: $isDriven")
CallerLogger.d(
"$M_DEVA${BadCaseManager.TAG}",
"-- load cases from pb -- isDriven: $isDriven"
)
val causes = store.data.firstOrNull()
CallerLogger.d("$M_DEVA${BadCaseManager.TAG}", "-- load cases from pb -- result: $causes")
val list = if (isDriven) causes?.drivenDataList else causes?.drivingDataList

View File

@@ -64,7 +64,6 @@ dependencies {
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-network')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
}
}

View File

@@ -81,7 +81,6 @@ dependencies {
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
api rootProject.ext.dependencies.mogoaicloudservicesdk
api rootProject.ext.dependencies.mogocommons
api rootProject.ext.dependencies.mogoserviceapi
api rootProject.ext.dependencies.mogoservice
api rootProject.ext.dependencies.mogomap
api rootProject.ext.dependencies.crashreportupgrade
@@ -102,7 +101,6 @@ dependencies {
api rootProject.ext.dependencies.mogo_core_function_devatools
api rootProject.ext.dependencies.mogo_core_function_carcorder
api rootProject.ext.dependencies.mogo_core_function_call
api rootProject.ext.dependencies.mogo_core_function_api
api rootProject.ext.dependencies.mogo_core_function_msgbox
implementation project(':libraries:map-usbcamera')
@@ -110,9 +108,6 @@ dependencies {
} else {
api project(':foudations:mogo-aicloud-services-sdk')
api project(':foudations:mogo-commons')
api project(':services:mogo-service-api')
api project(':libraries:mogo-map')
api project(':test:crashreport-upgrade')
// api project(':test:crashreport-bugly')
api project(':test:crashreport-apmbyte')
@@ -135,8 +130,6 @@ dependencies {
api project(':core:function-impl:mogo-core-function-datacenter')
api project(':core:mogo-core-function-call')
api project(':core:mogo-core-function-api')
api project(':libraries:mogo-adas')
api project(':libraries:map-usbcamera')
}

View File

@@ -125,15 +125,6 @@
android:name="MAP_SDK_VERSION111111"
android:value="${MAP_SDK_VERSION}" />
<service
android:name="com.mogo.eagle.core.function.main.service.MogoMainService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.mogo.launcher.action.MAIN_SERVICE" />
</intent-filter>
</service>
<receiver android:name="com.mogo.eagle.core.function.hmi.receiver.V2XWarningBroadcastReceiver">
<intent-filter>
<action android:name="com.hmi.v2x.notification" />

View File

@@ -24,7 +24,7 @@ class ModifyBindingCarDialog(context: Context) : BaseFloatDialog(context), Lifec
private val statusChangedListenerForCheckNotice =
IMogoStatusChangedListener { descriptor, isTrue ->
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND) {
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND && isTrue) {
dismiss()
}
}

View File

@@ -23,7 +23,7 @@ class ToBindingCarDialog(context: Context) : BaseFloatDialog(context), Lifecycle
private var cancelTv: TextView? = null
private val statusChangedListenerForCheckNotice = IMogoStatusChangedListener { descriptor, isTrue ->
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND) {
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND && isTrue) {
dismiss()
}
}

View File

@@ -43,7 +43,7 @@ class NoticeCheckDialog(context: Context) : BaseFloatDialog(context), LifecycleO
private var playErrorImageView: ImageView? = null
private var connectTextView: TextView? = null
private val statusChangedListenerForCheckNotice = IMogoStatusChangedListener { descriptor, isTrue ->
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND) {
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND && isTrue) {
dismiss()
}
}

View File

@@ -443,7 +443,7 @@ public class NoticeTrafficDialog extends BaseFloatDialog implements LifecycleObs
}
private final IMogoStatusChangedListener statusChangedListenerForNotice = (descriptor, isTrue) -> {
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND) {
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND && isTrue) {
CallerLogger.INSTANCE.d(M_HMI + TAG, "onStatusChanged==MAIN_PAGE_IS_BACKGROUND");
dismiss();
}

View File

@@ -7,6 +7,7 @@ import android.content.ClipboardManager
import android.content.Context
import android.graphics.Color
import android.os.Build
import android.telecom.Call
import android.text.Html
import android.util.AttributeSet
import android.view.LayoutInflater
@@ -73,7 +74,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast
import com.mogo.eagle.core.utilcode.util.*
import com.mogo.map.MogoMapUIController
import com.mogo.map.uicontroller.VisualAngleMode
import com.mogo.map.uicontroller.VisualAngleMode.*
import com.mogo.eagle.core.function.business.routeoverlay.*
@@ -279,7 +279,7 @@ class DebugSettingView @JvmOverloads constructor(
}
btnOpenAllGestures.setOnClickListener {
MogoMapUIController.getInstance().setAllGesturesEnabled(true)
CallerMapUIServiceManager.getMapUIController()?.setAllGesturesEnabled(true)
}
/**

View File

@@ -5,8 +5,8 @@ import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.widget.FrameLayout
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController
import com.mogo.eagle.core.function.hmi.R
import com.mogo.map.MogoMapUIController
import com.mogo.map.uicontroller.VisualAngleMode
import kotlinx.android.synthetic.main.view_perspective_switch.view.*
@@ -28,25 +28,17 @@ class PerspectiveSwitchView @JvmOverloads constructor(
}
override fun onClick(v: View?) {
//切换地图的远近视图
if (MogoMapUIController.getInstance().currentMapVisualAngle.isLongSight) {
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
// .visibleAllMarkers()
MogoMapUIController.getInstance()
.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
textSwitch.setText(R.string.module_map_model_normal)
} else if (MogoMapUIController.getInstance().currentMapVisualAngle.isMediumSight) {
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
// .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS)
MogoMapUIController.getInstance()
.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null)
textSwitch.setText(R.string.module_map_model_faster)
} else {
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
// .visibleAllMarkers()
MogoMapUIController.getInstance()
.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
textSwitch.setText(R.string.module_map_model_normal)
getMapUIController()?.let {
if (it.currentMapVisualAngle.isLongSight) {
it.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
textSwitch.setText(R.string.module_map_model_normal)
} else if (it.currentMapVisualAngle.isMediumSight) {
it.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null)
textSwitch.setText(R.string.module_map_model_faster)
} else {
it.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null)
textSwitch.setText(R.string.module_map_model_faster)
}
}
}
}

View File

@@ -9,9 +9,9 @@ import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.map.MogoMapUIController
import java.util.*
/**
@@ -38,7 +38,7 @@ class SpeedPanelView @JvmOverloads constructor(
}
init {
initEvent(context)
initEvent()
setBackgroundResource(R.drawable.yi_biao_pan_bg_nor)
mContext = context
mSpeedChartView = SpeedChartView(context)
@@ -52,7 +52,7 @@ class SpeedPanelView @JvmOverloads constructor(
addView(mSpeedChartView)
}
private fun initEvent(context: Context) {
private fun initEvent() {
setOnLongClickListener {
CallerHmiManager.toggleDebugView()
false
@@ -69,8 +69,7 @@ class SpeedPanelView @JvmOverloads constructor(
val task = object : TimerTask() {
override fun run() {
mLatLng?.let {
mSpeedLimit = MogoMapUIController.getInstance()
.getLimitSpeed(it.longitude, it.latitude, it.bearing)
mSpeedLimit = CallerMapUIServiceManager.getMapUIController()!!.getLimitSpeed(it.longitude, it.latitude, it.bearing)
UiThreadHandler.post {
val speed = (it.speed * 3.6f).toInt()
mSpeedChartView.setArcColor(Color.parseColor(if (speed > mSpeedLimit) "#DB3137" else "#3E77F6"))

View File

@@ -1,283 +0,0 @@
package com.mogo.eagle.core.function.main;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI;
import android.location.Location;
import android.view.MotionEvent;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.main.registercenter.MogoRegisterCenterHandler;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.model.MogoPoi;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.VisualAngleMode;
import java.util.ArrayList;
import java.util.Iterator;
/**
* @author congtaowang
* @since 2020-04-24
* <p>
* 事件回调分发中心
*/
public class EventDispatchCenter implements
IMogoMarkerClickListener,
IMogoCarLocationChangedListener2,
IMogoMapListener,
IMogoLocationListener {
private static volatile EventDispatchCenter sInstance;
private Runnable mMapLoadedCallback;
private EventDispatchCenter() {
}
public static EventDispatchCenter getInstance() {
if (sInstance == null) {
synchronized (EventDispatchCenter.class) {
if (sInstance == null) {
sInstance = new EventDispatchCenter();
}
}
}
return sInstance;
}
private static final String TAG = "DispatchCenter";
@Override
public boolean onMarkerClicked(IMogoMarker marker) {
IMogoMarkerClickListener listener = MogoRegisterCenterHandler.getInstance().getMarkerListener(marker.getOwner());
if (listener != null) {
try {
return listener.onMarkerClicked(marker);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onMarkerClicked error : " + e);
}
}
return false;
}
@Override
public boolean onStaticMarkerClicked(IMogoMarker marker) {
ArrayList<IMogoMarkerClickListener> list = MogoRegisterCenterHandler.getInstance().getStaticMarkerListener(marker.getOwner());
if (list == null) {
return false;
}
try {
for (IMogoMarkerClickListener listener : list) {
return listener.onStaticMarkerClicked(marker);
}
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onStaticMarkerClicked error : " + e);
}
return false;
}
@Override
public void onCarLocationChanged2(Location latLng) {
Iterator<IMogoCarLocationChangedListener> iterator = MogoRegisterCenterHandler.getInstance().getCarLocationChangedListener();
if (iterator == null) {
return;
}
MogoLatLng target = null;
while (iterator.hasNext()) {
IMogoCarLocationChangedListener listener = iterator.next();
if (listener instanceof IMogoCarLocationChangedListener2) {
try {
((IMogoCarLocationChangedListener2) listener).onCarLocationChanged2(latLng);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/**
* 地图加载完成回调
*
* @param callback
*/
void setMapLoadedCallback(Runnable callback) {
this.mMapLoadedCallback = callback;
}
@Override
public void onMapLoaded() {
if (mMapLoadedCallback != null) {
mMapLoadedCallback.run();
mMapLoadedCallback = null;
}
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onMapLoaded();
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onMapLoaded error : " + e);
}
}
}
}
@Override
public void onTouch(MotionEvent motionEvent) {
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onTouch(motionEvent);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onTouch error : " + e);
}
}
}
}
@Override
public void onPOIClick(MogoPoi poi) {
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onPOIClick(poi);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onPOIClick error : " + e);
}
}
}
}
@Override
public void onMapClick(MogoLatLng latLng) {
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onMapClick(latLng);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onMapClick error : " + e);
}
}
}
}
@Override
public void onLockMap(boolean isLock) {
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onLockMap(isLock);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onLockMap error : " + e);
}
}
}
}
@Override
public void onMapModeChanged(EnumMapUI ui) {
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onMapModeChanged(ui);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onMapModeChanged error :" + e);
}
}
}
}
@Override
public void onMapVisualAngleChanged(VisualAngleMode visualAngleMode) {
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onMapVisualAngleChanged(visualAngleMode);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onMapVisualAngleChanged error : " + e);
}
}
}
}
@Override
public void onMapChanged(MogoLatLng location, float zoom, float tilt, float bearing) {
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onMapChanged(location, zoom, tilt, bearing);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onMapChanged error :" + e);
}
}
}
}
@Override
public void onLocationChanged(MogoLocation location) {
Iterator<IMogoLocationListener> iterator = MogoRegisterCenterHandler.getInstance().getLocationListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoLocationListener listener = iterator.next();
if (listener != null) {
try {
listener.onLocationChanged(location);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onLocationChanged error : " + e);
}
}
}
}
}

View File

@@ -6,7 +6,6 @@ import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_N
import static com.mogo.eagle.core.function.main.MainPresenter.MOGO_PERMISSION_REQUEST_CODE;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
@@ -36,15 +35,14 @@ import com.mogo.commons.mvp.BaseFragment;
import com.mogo.commons.mvp.MvpActivity;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
import com.mogo.eagle.core.data.config.HdMapBuildConfig;
import com.mogo.eagle.core.data.constants.MoGoFragmentPaths;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView;
import com.mogo.eagle.core.function.main.cards.MogoModulesManager;
import com.mogo.eagle.core.function.main.service.MogoMainService;
import com.mogo.eagle.core.function.main.modules.MogoModulesManager;
import com.mogo.eagle.core.function.main.stagetwo.AutopilotStartup;
import com.mogo.eagle.core.function.main.windowview.FloatingViewHandler;
import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils;
@@ -54,9 +52,9 @@ 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.ProcessUtils;
import com.mogo.map.listener.IMogoHosListenerRegister;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.listener.MogoMapListenerHandler;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.rousetime.android_startup.StartupManager;
@@ -81,7 +79,6 @@ import system_master.SystemStatusInfo;
* 描述:加载各个模块
*/
public class MainActivity extends MvpActivity<MainView, MainPresenter> implements MainView,
IMogoLocationListener,
IMoGoAutopilotStatusListener {
protected static final String TAG = "MainActivity";
@@ -129,8 +126,8 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
}
private void injectStatusBar() {
FrameLayout decorView =(FrameLayout) this.getWindow().getDecorView();
View contentView = ((ViewGroup)decorView.findViewById(android.R.id.content)).getChildAt(0);
FrameLayout decorView = (FrameLayout) this.getWindow().getDecorView();
View contentView = ((ViewGroup) decorView.findViewById(android.R.id.content)).getChildAt(0);
contentView.setFitsSystemWindows(false);
decorView.setClipToPadding(false);
@@ -228,29 +225,25 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
@Override
public void loadModules() {
final long start = System.currentTimeMillis();
MogoModulesManager.getInstance().init(this);
IMogoHosListenerRegister listenerRegister = CallerMapUIServiceManager.INSTANCE.getHostListenerRegister();
if (listenerRegister != null) {
listenerRegister.registerHostMapListener(TAG,EventDispatchCenter.getInstance());
listenerRegister.registerMarkerClickListener(TAG, EventDispatchCenter.getInstance());
}
MogoMapListenerHandler.Companion.getMogoMapListenerHandler().registerHostMapListener(TAG, new IMogoMapListener() {
@Override
public void onMapLoaded() {
// 延时加载其他模块
getWindow().getDecorView().post(() -> {
HdMapBuildConfig.isMapLoaded = true;
loadOthersModules();
loadFunctionFragment();
EventDispatchCenter.getInstance().setMapLoadedCallback(() -> {
CallerLogger.INSTANCE.d(M_HMI + TAG, "map loaded." + Thread.currentThread().getName());
// 延时加载其他模块
getWindow().getDecorView().post(() -> {
loadOthersModules();
loadFunctionFragment();
// TODO 这里临时兼容进入VR模式标记状态机。有些业务OCH会根据状态判断加载
MogoStatusManager.getInstance().setVrMode(TAG, true);
// 设置地图样式
MogoMapListenerHandler.Companion.getMogoMapListenerHandler().onMapModeChanged(EnumMapUI.MAP_STYLE_DAY_VR);
});
CallerLogger.INSTANCE.i(M_HMI + TAG, "App launch timer cost " + (System.currentTimeMillis() - start) + "ms");
// TODO 这里临时兼容进入VR模式标记状态机。有些业务OCH会根据状态判断加载
MogoStatusManager.getInstance().setVrMode(TAG, true);
// 设置地图样式
MogoMapListenerHandler.Companion.getMogoMapListenerHandler().onMapModeChanged(EnumMapUI.MAP_STYLE_DAY_VR);
});
CallerLogger.INSTANCE.i(M_HMI + TAG, "App launch timer cost " + (System.currentTimeMillis() - start) + "ms");
}
});
// 加载地图
loadFunctionMapView();
}
@@ -263,27 +256,16 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
MogoModulesManager.getInstance().loadFunctionModules();
mPresenter.delayOperations();
MogoModulesManager.getInstance().loadFunctionModulesServer();
// 启动一些基本的服务:定位等
startBaseService();
UiThreadHandler.postDelayed(() -> {
CallerLogger.INSTANCE.d(M_HMI + TAG, "5秒已过启动基础服务……");
MogoModulesManager.getInstance().loadBaseModule();
}, 5_000L);
if (DebugConfig.isDebug()) {
// 启动Native内存泄漏监测
startLeakMonitor();
}
}
/**
* 启动后台服务
*/
private void startBaseService() {
Intent intentMainService = new Intent(this, MogoMainService.class);
startService(intentMainService);
// USB 摄像头行车记录仪进程
// Intent intentCarcorderService = new Intent(this, CarcorderService.class);
// startService(intentCarcorderService);
}
private void startLeakMonitor() {
LeakMonitorConfig leakMonitorConfig = new LeakMonitorConfig.Builder()
.setLoopInterval(50000)
@@ -355,16 +337,11 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
return new MainPresenter(this);
}
@Override
public void onLocationChanged(MogoLocation location) {
EventDispatchCenter.getInstance().onLocationChanged(location);
}
@Override
protected void onResume() {
super.onResume();
MogoStatusManager.getInstance().setMainPageResumeStatus(TAG, true);
MogoStatusManager.getInstance().setMainPageIsBackgroundStatus(TAG, true);
MogoStatusManager.getInstance().setMainPageIsBackgroundStatus(TAG, false);
}
@Override
@@ -379,16 +356,6 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
MogoStatusManager.getInstance().setMainPageIsBackgroundStatus(TAG, true);
}
@Override
public void onBackPressed() {
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
@Override
public void onAutopilotStatusResponse(@NonNull AutopilotStatusInfo autoPilotStatusInfo) {
int status = autoPilotStatusInfo.getIpcConnStatus();
@@ -434,11 +401,7 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
protected void onDestroy() {
super.onDestroy();
CallerAutoPilotStatusListenerManager.INSTANCE.removeListener(TAG);
IMogoHosListenerRegister listenerRegister = CallerMapUIServiceManager.INSTANCE.getHostListenerRegister();
if (listenerRegister != null) {
listenerRegister.unregisterMarkerClickListener(TAG);
listenerRegister.unregisterHostMapListener(TAG);
}
MogoMapListenerHandler.Companion.getMogoMapListenerHandler().unregisterHostMapListener(TAG);
IMogoMapUIController mapUIController = CallerMapUIServiceManager.INSTANCE.getMapUIController();
if (mapUIController != null) {
mapUIController.destroy();

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.core.function.main.cards;
package com.mogo.eagle.core.function.main.modules;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI;

View File

@@ -1,75 +0,0 @@
package com.mogo.eagle.core.function.main.monitoring;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
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.check.CallerCheckManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
/**
* @author liujing
* @description 车辆监控,暂时隐藏该功能
* @since: 8/16/21
*/
public class VehicleMonitoring implements Handler.Callback {
private static final String TAG = "VehicleMonitoring";
private final Context mContext;
private final Handler mHandler = new Handler(this);
//自动驾驶状态下**分钟间隔弹框提示一次 后期根据需求做修改,暂定30秒自检一次
private static final long AUTO_CHECK_STATUS_DELAY = 30 * 1000;
//非自动驾驶测试数据 后期根据需求做修改
private static final long MANUAL_CHECK_STATUS_DELAY = 30 * 1000;
//自动驾驶状态
private static int AutopilotStatus = CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState();
public VehicleMonitoring(Context context) {
mContext = context;
}
public void vehicleCheck() {
//暂时隐藏自检功能
/**
*
if (AutopilotStatus == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) {
CallerLogger.INSTANCE.d(M_HMI + TAG, "自动驾驶中...");
mHandler.sendEmptyMessageDelayed(AutopilotStatus, AUTO_CHECK_STATUS_DELAY);
} else {
CallerLogger.INSTANCE.d(M_HMI + TAG, "非自动驾驶状态");
//非自动驾驶状态只展示一次
mHandler.sendEmptyMessageDelayed(AutopilotStatus, MANUAL_CHECK_STATUS_DELAY);
}
*/
}
@Override
public boolean handleMessage(Message msg) {
// AutopilotStatus = CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState();
// switch (msg.what) {
// case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING:
// vehicleMonitor();
// mHandler.sendEmptyMessageDelayed(AutopilotStatus, AUTO_CHECK_STATUS_DELAY);
// return true;
// case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE:
// case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE:
// vehicleMonitor();
// mHandler.sendEmptyMessageDelayed(AutopilotStatus, MANUAL_CHECK_STATUS_DELAY);
// return true;
// default:
// }
return false;
}
public void vehicleMonitor() {
CallerLogger.INSTANCE.d(M_HMI + TAG, "vehicleMonitor");
CallerCheckManager.checkMonitor(mContext);
}
}

View File

@@ -1,82 +0,0 @@
package com.mogo.eagle.core.function.main.registercenter;
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
import com.mogo.service.module.IMogoRegisterCenter;
import java.util.Iterator;
/**
* @author congtaowang
* @since 2020-01-09
* <p>
* 描述
*/
@Route(path = MogoServicePaths.PATH_REGISTER_CENTER)
public class MogoRegisterCenter implements IMogoRegisterCenter {
@Override
public void registerMogoMapListener(String moduleName, IMogoMapListener listener) {
MogoRegisterCenterHandler.getInstance().registerMogoMapListener(moduleName, listener);
}
@Override
public void unregisterMogoMapListener(String moduleName) {
MogoRegisterCenterHandler.getInstance().unregisterMogoMapListener(moduleName);
}
@Override
public void registerMogoLocationListener(String moduleName, IMogoLocationListener listener) {
MogoRegisterCenterHandler.getInstance().registerMogoLocationListener(moduleName, listener);
}
@Override
public Iterator<IMogoLocationListener> getLocationListeners() {
return MogoRegisterCenterHandler.getInstance().getLocationListeners();
}
@Override
public void unregisterMogoLocationListener(String moduleName) {
MogoRegisterCenterHandler.getInstance().unregisterMogoLocationListener(moduleName);
}
@Override
public void registerMogoMarkerClickListener(String moduleName, IMogoMarkerClickListener listener) {
MogoRegisterCenterHandler.getInstance().registerMogoMarkerClickListener(moduleName, listener);
}
@Override
public void unregisterMogoMarkerClickListener(String moduleName) {
MogoRegisterCenterHandler.getInstance().unregisterMogoMarkerClickListener(moduleName);
}
@Override
public void registerMogoStaticMarkerClickListener(String tag, IMogoMarkerClickListener listener) {
MogoRegisterCenterHandler.getInstance().registerMogoStaticMarkerClickListener(tag, listener);
}
@Override
public void unregisterMogoStaticMarkerClickListener(String tag, IMogoMarkerClickListener listener ) {
MogoRegisterCenterHandler.getInstance().unregisterMogoStaticMarkerClickListener(tag, listener);
}
@Override
public void registerCarLocationChangedListener(String tag, IMogoCarLocationChangedListener listener) {
MogoRegisterCenterHandler.getInstance().registerCarLocationChangedListener(tag, listener);
}
@Override
public void unregisterCarLocationChangedListener(String tag, IMogoCarLocationChangedListener listener) {
MogoRegisterCenterHandler.getInstance().unregisterCarLocationChangedListener(tag, listener);
}
@Override
public void init(Context context) {
}
}

View File

@@ -1,137 +0,0 @@
package com.mogo.eagle.core.function.main.registercenter;
import android.content.Context;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
import com.mogo.service.module.IMogoRegisterCenter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* @author congtaowang
* @since 2020-01-09
* <p>
* 描述
*/
public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
private static volatile MogoRegisterCenterHandler sInstance;
private final Map<String, IMogoMapListener> mMap = new HashMap<>();
private final Map<String, IMogoLocationListener> mLocation = new HashMap<>();
private final Map<String, IMogoMarkerClickListener> mMarker = new HashMap<>();
private final Map<String, ArrayList<IMogoMarkerClickListener>> mStaticMarker = new HashMap<>();
private final Map<String, IMogoCarLocationChangedListener> mCarLocations = new ConcurrentHashMap<>();
private MogoRegisterCenterHandler() {
}
public static MogoRegisterCenterHandler getInstance() {
if (sInstance == null) {
synchronized (MogoRegisterCenterHandler.class) {
if (sInstance == null) {
sInstance = new MogoRegisterCenterHandler();
}
}
}
return sInstance;
}
public synchronized void release() {
sInstance = null;
}
@Override
public void registerMogoMapListener(String tag, IMogoMapListener listener) {
mMap.put(tag, listener);
}
@Override
public void unregisterMogoMapListener(String tag) {
mMap.remove(tag);
}
@Override
public void registerMogoLocationListener(String tag, IMogoLocationListener listener) {
mLocation.put(tag, listener);
}
@Override
public void unregisterMogoLocationListener(String tag) {
mLocation.remove(tag);
}
@Override
public void registerMogoMarkerClickListener(String tag, IMogoMarkerClickListener listener) {
mMarker.put(tag, listener);
}
@Override
public void unregisterMogoMarkerClickListener(String tag) {
mMarker.remove(tag);
}
@Override
public void registerMogoStaticMarkerClickListener(String tag, IMogoMarkerClickListener listener) {
ArrayList<IMogoMarkerClickListener> list = mStaticMarker.get(tag);
if (list == null) {
list = new ArrayList<>();
list.add(listener);
mStaticMarker.put(tag, list);
}
list.add(listener);
mStaticMarker.put(tag, list);
}
@Override
public void unregisterMogoStaticMarkerClickListener(String tag, IMogoMarkerClickListener listener) {
ArrayList<IMogoMarkerClickListener> list = mStaticMarker.get(tag);
if (list == null) {
return;
}
list.remove(listener);
}
@Override
public void registerCarLocationChangedListener(String tag, IMogoCarLocationChangedListener listener) {
mCarLocations.put(tag, listener);
}
@Override
public void unregisterCarLocationChangedListener(String tag, IMogoCarLocationChangedListener listener) {
mCarLocations.remove(tag);
}
@Override
public void init(Context context) {
}
public IMogoMarkerClickListener getMarkerListener(String tag) {
return mMarker.get(tag);
}
public ArrayList<IMogoMarkerClickListener> getStaticMarkerListener(String tag){
return mStaticMarker.get(tag);
}
public Iterator<IMogoMapListener> getMapListeners() {
return mMap.values().iterator();
}
@Override
public Iterator<IMogoLocationListener> getLocationListeners() {
return mLocation.values().iterator();
}
public Iterator<IMogoCarLocationChangedListener> getCarLocationChangedListener() {
return mCarLocations.values().iterator();
}
}

View File

@@ -1,106 +0,0 @@
package com.mogo.eagle.core.function.main.service;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import androidx.annotation.Nullable;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.config.HdMapBuildConfig;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.function.main.EventDispatchCenter;
import com.mogo.eagle.core.function.main.cards.MogoModulesManager;
import com.mogo.eagle.core.function.main.monitoring.VehicleMonitoring;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.navi.MogoCarLocationChangedListenerRegister;
public
/**
* @author congtaowang
* @since 2020/6/10
*
* 描述
*/
@Route(path = "/service/base/info")
class MogoMainService extends Service implements IMogoLocationListener {
private static final String TAG = "MogoMainService";
/**
* 主模块管控定位,可以向各个模块发送统一定位信息
*/
private IMogoLocationClient mLocationClient;
@Override
public void onCreate() {
CallerLogger.INSTANCE.d(M_HMI + TAG, "基本服务启动");
initAndStartLocation();
UiThreadHandler.postDelayed(() -> {
CallerLogger.INSTANCE.d(M_HMI + TAG, "5秒已过启动基础服务……");
loadBaseModules();
initGpsSimulatorListener();
HdMapBuildConfig.isMapLoaded = true;
}, 5_000L
);
// 车辆检测
VehicleMonitoring monitoring = new VehicleMonitoring(this);
monitoring.vehicleCheck();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_NOT_STICKY;
}
private void initAndStartLocation() {
CallerLogger.INSTANCE.d(M_HMI + TAG, "开始定位");
mLocationClient = CallerMapUIServiceManager.INSTANCE.getSingletonLocationClient(AbsMogoApplication.getApp());
if (mLocationClient != null) {
mLocationClient.addLocationListener(this);
mLocationClient.start(2_000L);
}
}
/**
* 初始化自车定位监听
*/
private void initGpsSimulatorListener() {
CallerLogger.INSTANCE.d(M_HMI + TAG, "注册自车位置监听");
MogoCarLocationChangedListenerRegister.getInstance().registerCarLocationChangedListener(EventDispatchCenter.getInstance());
}
private void loadBaseModules() {
CallerLogger.INSTANCE.d(M_HMI + TAG, "加载基本模块");
MogoModulesManager.getInstance().loadBaseModule();
}
@Override
public void onLocationChanged(MogoLocation location) {
EventDispatchCenter.getInstance().onLocationChanged(location);
}
@Override
public void onDestroy() {
super.onDestroy();
if (mLocationClient != null) {
mLocationClient.removeLocationListener(this);
mLocationClient.stop();
mLocationClient.destroy();
mLocationClient = null;
}
}
}

View File

@@ -69,28 +69,20 @@ dependencies {
implementation rootProject.ext.dependencies.lifecycle_extension
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.mogo_core_res
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
implementation rootProject.ext.dependencies.mogomap
implementation rootProject.ext.dependencies.mogomapapi
} else {
implementation project(':services:mogo-service-api')
implementation project(':foudations:mogo-commons')
implementation project(':core:mogo-core-res')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(":libraries:mogo-map")
implementation project(":libraries:mogo-map-api")
}
}

View File

@@ -15,6 +15,8 @@ import com.mogo.map.MogoPoiSearch;
import com.mogo.map.MogoTrafficSearch;
import com.mogo.map.listener.IMogoHosListenerRegister;
import com.mogo.map.listener.MogoHosListenerRegister;
import com.mogo.map.location.GDLocationClient;
import com.mogo.map.location.IMogoGDLocationClient;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.overlay.IMogoOverlayManager;
@@ -78,6 +80,11 @@ public class MogoMapService implements IMogoMapService {
return new MogoTrafficSearch();
}
@Override
public IMogoGDLocationClient getGDLocationServer(Context context) {
return GDLocationClient.getInstance(context);
}
@Override
public void init(Context context) {
CallerVisualAngleManager.INSTANCE.init(context);

View File

@@ -55,13 +55,11 @@ dependencies {
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_res
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
} else {
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-res')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(":foudations:mogo-commons")
}

View File

@@ -66,8 +66,6 @@ dependencies {
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_res
@@ -75,8 +73,6 @@ dependencies {
implementation rootProject.ext.dependencies.mogo_core_function_call
} else {
implementation project(":foudations:mogo-commons")
implementation project(':services:mogo-service-api')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-res')

View File

@@ -51,14 +51,9 @@ dependencies {
kapt rootProject.ext.dependencies.aroutercompiler
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
api rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_function_call
} else {
api project(':services:mogo-service-api')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-call')

View File

@@ -57,19 +57,15 @@ dependencies {
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
implementation rootProject.ext.dependencies.mogo_core_res
} else {
implementation project(":foudations:mogo-commons")
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(':core:mogo-core-res')
implementation project(':libraries:mogo-adas')
implementation project(":libraries:mogo-map-api")
implementation project(":libraries:mogo-map")
}
}

View File

@@ -5,14 +5,14 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_V2X
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
import com.mogo.eagle.core.function.v2x.events.consts.MoGoV2XServicePaths;
import com.mogo.eagle.core.function.v2x.events.consts.V2XConst;
import com.mogo.eagle.core.function.v2x.events.entity.model.DrawLineInfo;
import com.mogo.eagle.core.function.v2x.events.manager.IMoGoPersonWarnPolylineManager;
import com.mogo.map.MogoOverlayManager;
import com.mogo.map.overlay.IMogoOverlayManager;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.overlay.MogoPolylineOptions;
@@ -55,7 +55,7 @@ public class MoGoPersonWarnPolylineManager implements IMoGoPersonWarnPolylineMan
options.add(locations.get(i));
}
// 绘制线的对象
IMogoOverlayManager overlay = MogoOverlayManager.getInstance();
IMogoOverlayManager overlay = CallerMapUIServiceManager.INSTANCE.getOverlayManager(AbsMogoApplication.getApp());
if (overlay != null) {
mMogoPolyline = overlay.addPolyline(options);
mMogoPolyline.setTransparency(0.5f);

View File

@@ -5,14 +5,14 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_V2X
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
import com.mogo.eagle.core.function.v2x.events.consts.MoGoV2XServicePaths;
import com.mogo.eagle.core.function.v2x.events.consts.V2XConst;
import com.mogo.eagle.core.function.v2x.events.entity.model.DrawLineInfo;
import com.mogo.eagle.core.function.v2x.events.manager.IMoGoStopPolylineManager;
import com.mogo.map.MogoOverlayManager;
import com.mogo.map.overlay.IMogoOverlayManager;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.overlay.MogoPolylineOptions;
@@ -54,7 +54,7 @@ public class MoGoStopPolylineManager implements IMoGoStopPolylineManager {
options.add(locations.get(i));
}
// 绘制线的对象
IMogoOverlayManager overlay = MogoOverlayManager.getInstance();
IMogoOverlayManager overlay = CallerMapUIServiceManager.INSTANCE.getOverlayManager(AbsMogoApplication.getApp());
if (overlay != null) {
mMogoPolyline = overlay.addPolyline(options);
}

View File

@@ -27,7 +27,6 @@ import com.mogo.eagle.core.function.v2x.events.marker.V2XMarkerAdapter;
import com.mogo.eagle.core.function.v2x.events.utils.EntityUtilsKt;
import com.mogo.eagle.core.function.v2x.events.utils.MapUtils;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.map.MogoMarkerManager;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.marker.IMogoMarkerManager;
@@ -164,7 +163,7 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
mAlarmInfoMarker = Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerService()).drawMarker(markerShowEntity);
} else {
optionsRipple.icon(V2XMarkerAdapter.getV2XRoadEventViewPng(context, roadEventEntity));
IMogoMarkerManager marker = MogoMarkerManager.getInstance(context);
IMogoMarkerManager marker = CallerMapUIServiceManager.INSTANCE.getMarkerManager(context);
if (marker != null) {
mAlarmInfoMarker = marker.addMarker(V2X_EVENT_ALARM_POI, optionsRipple);
}
@@ -210,7 +209,7 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
@Override
public void clearALLPOI() {
try {
IMogoMarkerManager markerManager = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
IMogoMarkerManager markerManager = CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp());
if (markerManager != null) {
markerManager.removeMarkers();
}

View File

@@ -5,13 +5,13 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_V2X
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
import com.mogo.eagle.core.function.v2x.events.consts.MoGoV2XServicePaths;
import com.mogo.eagle.core.function.v2x.events.entity.model.DrawLineInfo;
import com.mogo.eagle.core.function.v2x.events.manager.IMoGoWarnPolylineManager;
import com.mogo.map.MogoOverlayManager;
import com.mogo.map.overlay.IMogoOverlayManager;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.overlay.MogoPolylineOptions;
@@ -62,7 +62,7 @@ public class MoGoWarnPolylineManager implements IMoGoWarnPolylineManager {
}
// 绘制线的对象
IMogoOverlayManager overlay = MogoOverlayManager.getInstance();
IMogoOverlayManager overlay = CallerMapUIServiceManager.INSTANCE.getOverlayManager(AbsMogoApplication.getApp());
if (overlay != null) {
mMogoPolyline = overlay.addPolyline(options);
}

View File

@@ -1,11 +1,11 @@
package com.mogo.eagle.core.function.v2x.events.overlay;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.v2x.events.utils.LocationUtils;
import com.mogo.eagle.core.utilcode.util.ColorUtils;
import com.mogo.map.MogoOverlayManager;
import com.mogo.map.overlay.IMogoOverlayManager;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.overlay.MogoPolylineOptions;
@@ -66,7 +66,7 @@ public class V2XOptimalRouteOverlay {
// 线条粗细,渐变,渐变色值
mPolylineOptions.width(25).useGradient(true).colorValues(mPolylineColors);
// 绘制线
IMogoOverlayManager overlay = MogoOverlayManager.getInstance();
IMogoOverlayManager overlay = CallerMapUIServiceManager.INSTANCE.getOverlayManager(AbsMogoApplication.getApp());
if (overlay != null) {
mMoGoPolyline = overlay.addPolyline(mPolylineOptions);
}

View File

@@ -9,6 +9,7 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.mogo.commons.module.status.MogoStatusManager;
import com.mogo.eagle.core.data.config.HmiBuildConfig;
import com.mogo.eagle.core.data.map.entity.V2XMessageEntity;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.v2x.events.consts.V2XConst;
import com.mogo.eagle.core.function.v2x.events.scenario.IV2XScenarioManager;
import com.mogo.eagle.core.function.v2x.events.scenario.scene.road.V2XRoadEventScenario;
@@ -17,7 +18,6 @@ import com.mogo.eagle.core.function.v2x.events.scenario.scene.warning.V2XFrontWa
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.map.MogoMapUIController;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.map.uicontroller.VisualAngleMode;
@@ -105,7 +105,7 @@ public class V2XScenarioManager implements IV2XScenarioManager {
* 道路事件触发后,切换到中景
*/
private void sceneChange() {
IMogoMapUIController mapUiController = MogoMapUIController.getInstance();
IMogoMapUIController mapUiController = CallerMapUIServiceManager.INSTANCE.getMapUIController();
if (mapUiController != null && mapUiController.getCurrentMapVisualAngle() != VisualAngleMode.MODE_MEDIUM_SIGHT) {
mapUiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
}

View File

@@ -10,6 +10,7 @@ import androidx.lifecycle.*
import androidx.lifecycle.Lifecycle.Event
import androidx.lifecycle.Lifecycle.Event.ON_CREATE
import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.data.map.*
import com.mogo.eagle.core.data.map.MapRoadInfo.StopLine
import com.mogo.eagle.core.data.map.entity.V2XRoadEventEntity
@@ -47,7 +48,7 @@ object AiRoadMarker {
private val carLocation by lazy { AtomicReference<Triple<Double, Double, Double>>() }
private val overlayManager by lazy { MogoOverlayManager.getInstance() }
private val overlayManager by lazy { CallerMapUIServiceManager.getOverlayManager(AbsMogoApplication.getApp()) }
private val line by lazy { AtomicReference<IMogoPolyline>() }
@@ -300,7 +301,7 @@ object AiRoadMarker {
options.colorValues(colors)
Logger.d(TAG, "--- marker --- 7 --- points: ${points.size}")
if (line == null || line.isDestroyed) {
val l = overlayManager.addPolyline(options)
val l = overlayManager?.addPolyline(options)
this.line.set(l)
line = l
} else {

View File

@@ -3,13 +3,15 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene.road
import android.graphics.*
import android.util.*
import com.mogo.cloud.commons.utils.*
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.data.map.*
import com.mogo.eagle.core.data.map.entity.V2XRoadEventEntity
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.v2x.R
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi.context
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi.v2xMarker
import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils
import com.mogo.map.*
import com.mogo.map.R.raw
import com.mogo.map.marker.*
import com.mogo.map.overlay.*
import java.util.*
@@ -31,7 +33,7 @@ object V2XAiRoadEventMarker {
private val distance = AtomicInteger(0)
private val overlayManager by lazy { MogoOverlayManager.getInstance() }
private val overlayManager by lazy { CallerMapUIServiceManager.getOverlayManager(AbsMogoApplication.getApp()) }
fun drawMarkers(entity: V2XRoadEventEntity): Pair<IMogoPolyline?, List<IMogoMarker>?>? {
removeMarkers(current.get())
@@ -61,10 +63,12 @@ object V2XAiRoadEventMarker {
val p = polygons[i]
val options = MogoMarkerOptions().data(entity).latitude(p.second).longitude(p.first)
options.anchor(0.5f, 0.5f)
options.icon3DRes(raw.sanjiaozhui)
options.icon3DRes(R.raw.sanjiaozhui)
try {
val marker = MogoMarkerManager.getInstance(context()).addMarker("road_pyramid_" + entity.getPoiType(), options)
markers += marker
val marker = CallerMapUIServiceManager.getMarkerManager(AbsMogoApplication.getApp())?.addMarker("road_pyramid_" + entity.poiType, options)
marker?.let {
markers += it
}
} catch (t: Throwable) {
t.printStackTrace()
}
@@ -87,14 +91,14 @@ object V2XAiRoadEventMarker {
if (points.size > 2) {
points.add(points[0])
}
options.points(points);
options.points(points)
options.useGradient(true)
options.useFacade(true)
options.setGps(false)
options.width(5f)
options.zIndex(75000f)
options.maxIndex(800000f)
val line = overlayManager.addPolyline(options)
val line = overlayManager?.addPolyline(options)
current.set(Pair(line, markers))
if (line != null) {
line.isVisible = true

View File

@@ -21,7 +21,6 @@ import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XMarker;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.MogoMarkerManager;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.commons.utils.Trigonometric;
@@ -97,7 +96,7 @@ public class V2XWarningMarker implements IV2XMarker {
} else {
}
//二轮车和行人的渲染和移动
IMogoMarkerManager marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
IMogoMarkerManager marker = CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp());
if (marker != null) {
marker.removeMarkers(TYPE_MARKER_CLOUD_WARN_DATA);
}
@@ -218,7 +217,7 @@ public class V2XWarningMarker implements IV2XMarker {
stopPolyLineManager.clearLine();
}
IMogoMarkerManager marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
IMogoMarkerManager marker = CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp());
if (marker != null) {
//清除小箭头
marker.removeMarkers(WARNING_ARROWS);
@@ -267,7 +266,7 @@ public class V2XWarningMarker implements IV2XMarker {
private void handleStopLine() {
try {
if (mCloundWarningInfo != null) {
IMogoMarkerManager marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
IMogoMarkerManager marker = CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp());
if (marker != null) {
marker.removeMarkers(TYPE_MARKER_CLOUD_STOP_LINE_DATA);
}
@@ -448,7 +447,7 @@ public class V2XWarningMarker implements IV2XMarker {
@Override
public void clearPOI() {
IMogoMarkerManager marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
IMogoMarkerManager marker = CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp());
if (marker != null) {
marker.removeMarkers(V2X_FRONT_WARNING_MARKER);
}

View File

@@ -15,18 +15,16 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import com.mogo.cloud.trafficlive.api.ITrafficCarLiveCallBack;
import com.mogo.cloud.trafficlive.api.MoGoAiCloudTrafficLive;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.function.v2x.R;
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener;
import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants;
import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceManager;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.eagle.core.widget.RoundLayout;
import com.mogo.map.MogoLocationClient;
import com.mogo.map.location.IMogoLocationClient;
/**
@@ -99,12 +97,7 @@ public class CarZegoLiveVideoView extends RoundLayout {
*/
private void playLiveVideo() {
if (mSurfaceView != null) {
IMogoLocationClient locationClient = MogoLocationClient.getInstance(getContext());
MogoLocation mogoLocation = null;
if (locationClient != null) {
mogoLocation = locationClient.getLastKnowLocation();
}
MogoLocation mogoLocation = CallerMapLocationListenerManager.INSTANCE.getCurrentLocation();
if (mogoLocation != null) {
MoGoAiCloudTrafficLive.viewFrontVehicleLive(mogoLocation.getLatitude(), mogoLocation.getLongitude(), ((int) mogoLocation.getBearing()), mSurfaceView, new ITrafficCarLiveCallBack() {
@Override

View File

@@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.v2x.events.view;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_V2X;
import static com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer.PLAY_EVT_PLAY_BEGIN;
import static com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer.PLAY_EVT_PLAY_LOADING;
import android.content.Context;
import android.content.Intent;
import android.graphics.PorterDuff;
@@ -20,17 +21,15 @@ import com.mogo.cloud.trafficlive.api.MoGoAiCloudTrafficLive;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.data.map.entity.MarkerCarInfo;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager;
import com.mogo.eagle.core.function.v2x.R;
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener;
import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants;
import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.eagle.core.widget.RoundLayout;
import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer;
import com.mogo.map.MogoLocationClient;
import com.mogo.map.location.IMogoLocationClient;
import com.shuyu.gsyvideoplayer.GSYVideoManager;
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder;
import com.shuyu.gsyvideoplayer.cache.CacheFactory;
@@ -164,31 +163,28 @@ public class V2XCrossRoadVideoView extends RoundLayout {
}
//重新获取直播流地址
else {
IMogoLocationClient iMogoLocationClient = MogoLocationClient.getInstance(getContext());
if (iMogoLocationClient != null) {
MogoLocation mogoLocation = iMogoLocationClient.getLastKnowLocation();
if (mogoLocation == null) {
return;
}
MoGoAiCloudTrafficLive.viewFrontIntersectionLive(mogoLocation.getLatitude(), mogoLocation.getLongitude(), ((int) mogoLocation.getBearing()), new ITrafficIntersectionLiveCallBack() {
@Override
public void liveUrlResult(String liveUrl) {
if (!TextUtils.isEmpty(liveUrl)) {
MarkerCarInfo.CarLiveInfo carLiveInfo = new MarkerCarInfo.CarLiveInfo();
carLiveInfo.setVideoUrl(liveUrl);
setCarLiveInfo(carLiveInfo);
playLiveVideo(carLiveInfo);
} else {
CallerLogger.INSTANCE.d(M_V2X + TAG, "startLive 路口实况直播地址为空");
}
}
@Override
public void onError(String errorMsg) {
CallerLogger.INSTANCE.d(M_V2X + TAG, "获取路口实况失败");
}
});
MogoLocation mogoLocation = CallerMapLocationListenerManager.INSTANCE.getCurrentLocation();
if (mogoLocation == null) {
return;
}
MoGoAiCloudTrafficLive.viewFrontIntersectionLive(mogoLocation.getLatitude(), mogoLocation.getLongitude(), ((int) mogoLocation.getBearing()), new ITrafficIntersectionLiveCallBack() {
@Override
public void liveUrlResult(String liveUrl) {
if (!TextUtils.isEmpty(liveUrl)) {
MarkerCarInfo.CarLiveInfo carLiveInfo = new MarkerCarInfo.CarLiveInfo();
carLiveInfo.setVideoUrl(liveUrl);
setCarLiveInfo(carLiveInfo);
playLiveVideo(carLiveInfo);
} else {
CallerLogger.INSTANCE.d(M_V2X + TAG, "startLive 路口实况直播地址为空");
}
}
@Override
public void onError(String errorMsg) {
CallerLogger.INSTANCE.d(M_V2X + TAG, "获取路口实况失败");
}
});
}
}
}

View File

@@ -10,9 +10,9 @@ import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.call.v2x.CallLimitingVelocityListenerManager;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.MogoMapUIController;
import com.zhjt.service_biz.BizConfig;
import java.util.Timer;
@@ -52,7 +52,7 @@ public class SpeedLimitDataManager implements IMoGoMapLocationListener {
@Override
public void run() {
if (mLocation != null) {
if (MogoMapUIController.getInstance() != null) {
if(CallerMapUIServiceManager.INSTANCE.getMapUIController()!=null){
getSpeedLimit();
}
}
@@ -61,7 +61,7 @@ public class SpeedLimitDataManager implements IMoGoMapLocationListener {
@BizConfig(biz = V2I, dependentBizNode = "", bizNode = BIZ_SLW)
private void getSpeedLimit() {
if (!isShowObuLimitSpeedView) {
int speedLimit = MogoMapUIController.getInstance().getLimitSpeed(mLocation.getLongitude(), mLocation.getLatitude(), mLocation.getBearing());
int speedLimit = CallerMapUIServiceManager.INSTANCE.getMapUIController().getLimitSpeed(mLocation.getLongitude(), mLocation.getLatitude(), mLocation.getBearing());
UiThreadHandler.post(() -> {
if (speedLimit > 0) {
CallerHmiManager.INSTANCE.showLimitingVelocity(speedLimit);

View File

@@ -37,13 +37,6 @@ public class MogoServicePaths {
@Deprecated
public static final String PATH_VOICE_MANAGER = "/voicemanager/api";
/**
* 基础功能监听回调注册
*/
@Keep
@Deprecated
public static final String PATH_REGISTER_CENTER = "/registercenter/api";
/**
* 自研地图和高德地图切换
*/

View File

@@ -5,6 +5,7 @@ import android.content.Context;
import com.alibaba.android.arouter.facade.template.IProvider;
import com.mogo.eagle.core.function.api.map.marker.IMogoMarkerService;
import com.mogo.map.listener.IMogoHosListenerRegister;
import com.mogo.map.location.IMogoGDLocationClient;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.overlay.IMogoOverlayManager;
@@ -90,4 +91,10 @@ public interface IMogoMapService extends IProvider {
*/
IMogoTrafficSearch getTrafficSearchApi();
/**
* 获取高德定位服务
* @return
*/
IMogoGDLocationClient getGDLocationServer(Context context);
}

View File

@@ -55,16 +55,14 @@ dependencies {
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_function_api
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.mogocommons
} else {
implementation project(':libraries:mogo-adas')
api project(':libraries:mogo-map-api')
implementation project(':foudations:mogo-commons')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-api')
implementation project(':services:mogo-service-api')
implementation project(':foudations:mogo-commons')
api project(':core:mogo-core-function-api')
}
}

View File

@@ -5,10 +5,10 @@ import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.function.api.map.IMogoMapService
import com.mogo.eagle.core.function.api.map.marker.IMogoMarkerService
import com.mogo.eagle.core.function.call.base.CallerBase
import com.mogo.map.listener.IMogoHosListenerRegister
import com.mogo.map.location.IMogoGDLocationClient
import com.mogo.map.location.IMogoLocationClient
import com.mogo.map.marker.IMogoMarkerManager
import com.mogo.map.search.geo.IMogoGeoSearch
import com.mogo.map.overlay.IMogoOverlayManager
import com.mogo.map.uicontroller.IMogoMapUIController
object CallerMapUIServiceManager {
@@ -23,18 +23,10 @@ object CallerMapUIServiceManager {
return serviceProvider?.mapUIController
}
fun getHostListenerRegister(): IMogoHosListenerRegister? {
return serviceProvider?.hostListenerRegister
}
fun getSingletonLocationClient(context: Context): IMogoLocationClient? {
return serviceProvider?.getSingletonLocationClient(context)
}
fun getGeoSearch(context: Context): IMogoGeoSearch? {
return serviceProvider?.getGeoSearch(context)
}
fun getMarkerManager(context: Context): IMogoMarkerManager? {
return serviceProvider?.getMarkerManager(context)
}
@@ -42,4 +34,12 @@ object CallerMapUIServiceManager {
fun getMarkerService(): IMogoMarkerService? {
return serviceProvider?.markerService
}
fun getOverlayManager(context: Context): IMogoOverlayManager?{
return serviceProvider?.getOverlayManager(context)
}
fun getGDLocationServer(context: Context):IMogoGDLocationClient?{
return serviceProvider?.getGDLocationServer(context)
}
}

View File

@@ -63,7 +63,7 @@ BIZCONFIG_VERSION=1.3.2
SERVICE_BIZ_VERSION=1.2.4
################ 外部依赖引用 ################
# loglib
LOGLIB_VERSION=1.5.8
LOGLIB_VERSION=1.5.10
######## MogoAiCloudSDK Version ########
# 网络请求LOGLIB_VERSION
MOGO_NETWORK_VERSION=1.4.3.27

View File

@@ -44,7 +44,6 @@ public interface IMogoMap {
*/
IMogoMarker addMarker( String tag, MogoMarkerOptions options );
/**
* 批量更新锚点位置
*

View File

@@ -0,0 +1,20 @@
package com.mogo.map.location;
public interface IMogoGDLocationClient {
/**
* 开始定位
*/
void start();
/**
* 停止定位
*/
void stop();
/**
* 获取cityCode
*/
String getLastCityCode();
}

View File

@@ -1,12 +0,0 @@
package com.mogo.map.navi;
/**
* @author congtaowang
* @since 2020-03-14
* <p>
* 车辆位置变化
*/
public interface IMogoCarLocationChangedListener {
}

View File

@@ -1,14 +0,0 @@
package com.mogo.map.navi;
import android.location.Location;
/**
* @author congtaowang
* @since 2020-03-14
* <p>
* 车辆位置变化
*/
public interface IMogoCarLocationChangedListener2 extends IMogoCarLocationChangedListener {
void onCarLocationChanged2( Location latLng );
}

View File

@@ -1,18 +0,0 @@
package com.mogo.map.navi;
public
/**
* @author congtaowang
* @since 2020/10/23
*
* 描述
*/
interface IMogoCarLocationChangedListenerRegister {
/**
* 注册车辆位置变化监听,非业务使用
*
* @param listener
*/
void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener );
}

View File

@@ -1,50 +0,0 @@
package com.mogo.map.navi;
public
/**
* @author congtaowang
* @since 2020/10/23
*
* 描述
*/
class MogoCarLocationChangedListenerRegister implements IMogoCarLocationChangedListenerRegister {
private static volatile MogoCarLocationChangedListenerRegister sInstance;
private IMogoCarLocationChangedListener2 listener;
private MogoCarLocationChangedListenerRegister(){}
public static MogoCarLocationChangedListenerRegister getInstance(){
if( sInstance == null ){
synchronized( MogoCarLocationChangedListenerRegister.class ) {
if( sInstance == null ){
sInstance = new MogoCarLocationChangedListenerRegister();
}
}
}
return sInstance;
}
public synchronized void release(){
sInstance = null;
}
private Object readResolve() {
// 阻止反序列化,必须实现 Serializable 接口
return sInstance;
}
/**
* 注册车辆位置变化监听,非业务使用
*
* @param listener
*/
@Override
public void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener ) {
this.listener = listener;
}
public IMogoCarLocationChangedListener2 getListener() {
return listener;
}
}

View File

@@ -65,7 +65,7 @@ dependencies {
implementation project(':foudations:mogo-commons')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-function-call')
implementation project(':core:mogo-core-function-call') //todo 解除依赖
}
}

View File

@@ -46,7 +46,6 @@ import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.listener.MogoMapListenerHandler;
import com.mogo.map.navi.MogoCarLocationChangedListenerRegister;
import com.mogo.map.uicontroller.CarCursorOption;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
@@ -330,9 +329,9 @@ public class AMapViewWrapper implements IMogoMapView,
CallerLogger.INSTANCE.d(M_MAP + TAG, "map onDestroy");
}
if (mLocationTask != null) {
mainHandler.removeCallbacks(mLocationTask);
}
// if (mLocationTask != null) {
// mainHandler.removeCallbacks(mLocationTask);
// }
}
@Override
@@ -706,40 +705,40 @@ public class AMapViewWrapper implements IMogoMapView,
CallerMapDevaListenerManager.INSTANCE.invokeUploadLogFile(filePath);
}
private static class LocationTask implements Runnable {
// private static class LocationTask implements Runnable {
//
// private MogoLocation location;
//
// public void setMoGoLocation(MogoLocation location) {
// this.location = location;
// }
//
// @Override
// public void run() {
// if (location != null) {
// CallerMapLocationListenerManager.INSTANCE.invokeMapLocationChangeListener(location, 1, false);
// location = null;
// }
// }
// }
private MogoLocation location;
// private volatile LocationTask mLocationTask;
public void setMoGoLocation(MogoLocation location) {
this.location = location;
}
@Override
public void run() {
if (location != null) {
CallerMapLocationListenerManager.INSTANCE.invokeMapLocationChangeListener(location, 1, false);
location = null;
}
}
}
private volatile LocationTask mLocationTask;
private final Handler mainHandler = new Handler(Looper.getMainLooper());
// private final Handler mainHandler = new Handler(Looper.getMainLooper());
@Override
public void onLocationChanged(@NotNull com.zhidaoauto.map.sdk.open.location.MogoLocation location) {
MogoLocation currentLocation = ObjectUtils.fromLocation(location);
if (Looper.myLooper() == Looper.getMainLooper()) {
CallerMapLocationListenerManager.INSTANCE.invokeMapLocationChangeListener(currentLocation, 1, false);
} else {
if (mLocationTask == null) {
mLocationTask = new LocationTask();
}
mLocationTask.setMoGoLocation(currentLocation);
mainHandler.removeCallbacks(mLocationTask);
mainHandler.post(mLocationTask);
}
// MogoLocation currentLocation = ObjectUtils.fromLocation(location);
// if (Looper.myLooper() == Looper.getMainLooper()) {
// CallerMapLocationListenerManager.INSTANCE.invokeMapLocationChangeListener(currentLocation, 1, false);
// } else {
// if (mLocationTask == null) {
// mLocationTask = new LocationTask();
// }
// mLocationTask.setMoGoLocation(currentLocation);
// mainHandler.removeCallbacks(mLocationTask);
// mainHandler.post(mLocationTask);
// }
// 将有效经纬度暂存本地提供给下一次的Http-DNS使用防止首次请求位置获取不到
if (location.getLat() > 0 && location.getLon() > 0) {
@@ -753,20 +752,20 @@ public class AMapViewWrapper implements IMogoMapView,
.putString(SharedPrefsConstants.LOCATION_LONGITUDE, String.valueOf(location.getLon()));
}
// 同步给各个模块
Location sysLocation = new Location(location.getProvider());
sysLocation.setAltitude(location.getAltitude());
sysLocation.setLatitude(location.getLat());
sysLocation.setLongitude(location.getLon());
sysLocation.setProvider(location.getProvider());
sysLocation.setAccuracy(location.getAcceleration());
sysLocation.setTime(location.duration);
sysLocation.setBearing((float) location.getHeading());
sysLocation.setSpeed(location.getSpeed());
// // 同步给各个模块
// Location sysLocation = new Location(location.getProvider());
// sysLocation.setAltitude(location.getAltitude());
// sysLocation.setLatitude(location.getLat());
// sysLocation.setLongitude(location.getLon());
// sysLocation.setProvider(location.getProvider());
// sysLocation.setAccuracy(location.getAcceleration());
// sysLocation.setTime(location.duration);
// sysLocation.setBearing((float) location.getHeading());
// sysLocation.setSpeed(location.getSpeed());
if (MogoCarLocationChangedListenerRegister.getInstance().getListener() != null) {
MogoCarLocationChangedListenerRegister.getInstance().getListener().onCarLocationChanged2(sysLocation);
}
// if (MogoCarLocationChangedListenerRegister.getInstance().getListener() != null) {
// MogoCarLocationChangedListenerRegister.getInstance().getListener().onCarLocationChanged2(sysLocation);
// }
if (checkAMapView() && mMapLoaded) {
// 地图初始化完成后每隔5s自动判断当前地图的模式
if (mIsFirstLocated) {

View File

@@ -3,14 +3,12 @@ package com.mogo.map;
import android.graphics.Point;
import android.graphics.Rect;
import android.location.Location;
import android.util.Log;
import android.view.View;
import com.mogo.eagle.core.data.map.CenterLine;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.map.uicontroller.CarCursorOption;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.map.uicontroller.MapCameraPosition;
import com.mogo.map.uicontroller.MapControlResult;
@@ -40,6 +38,12 @@ public class MogoMapUIController implements IMogoMapUIController {
initDelegate();
}
private void initDelegate() {
if (mDelegate == null) {
mDelegate = MogoMapDelegateFactory.getMapUIControllerDelegate();
}
}
public static MogoMapUIController getInstance() {
if (sInstance == null) {
synchronized (MogoMapUIController.class) {
@@ -51,10 +55,6 @@ public class MogoMapUIController implements IMogoMapUIController {
return sInstance;
}
public void setDelegate(IMogoMapUIController mDelegate) {
this.mDelegate = mDelegate;
}
public static synchronized void release() {
sInstance = null;
}
@@ -347,14 +347,6 @@ public class MogoMapUIController implements IMogoMapUIController {
mDelegate = null;
}
private void initDelegate() {
if (mDelegate == null) {
mDelegate = MogoMapDelegateFactory.getMapUIControllerDelegate();
}
}
@Override
public void stepInVrMode(boolean isDayMode) {
initDelegate();

View File

@@ -10,7 +10,7 @@ import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.constants.SharedPrefsConstants;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
public class GDLocationClient implements AMapLocationListener {
public class GDLocationClient implements AMapLocationListener,IMogoGDLocationClient {
private volatile static GDLocationClient gdLocationClient;
private static final byte[] obj = new byte[0];
@@ -52,12 +52,20 @@ public class GDLocationClient implements AMapLocationListener {
}
}
@Override
public void start() {
if (mLocationClient != null) {
mLocationClient.startLocation();
}
}
@Override
public void stop() {
if (mLocationClient != null) {
mLocationClient.stopLocation();
}
}
@Override
public void onLocationChanged(AMapLocation aMapLocation) {
if (aMapLocation != null) {
@@ -70,6 +78,7 @@ public class GDLocationClient implements AMapLocationListener {
}
}
@Override
public String getLastCityCode() {
return mCityCode;
}

View File

@@ -7,7 +7,6 @@
:tts:tts-base
:tts:tts-pad
:libraries:mogo-map-api
:services:mogo-service-api
:foudations:mogo-aicloud-services-sdk
:foudations:mogo-commons
:libraries:map-usbcamera

View File

@@ -1 +0,0 @@
/build

View File

@@ -1,40 +0,0 @@
# 基础服务接口层
## adas 控制
## 数据统计、埋点
## 长链接口
## 数据分发
## 动态按钮控制entrance 层可以控制按钮功能
## fragment 管理
## 图片加载
## 事件监听:分发小智语音 command、广播接收者 intent
## 返回桌面
## 位置上报:部分产线需要自己上报位置
## 地图控制
## marker 绘制
## 监听注册中心
## poi 搜索 UI 控制
## 网络请求
## passport 接口
## 状态机
## 数据刷新策略接口
## 页面内部浮窗和顶部弹窗管理

View File

@@ -1,4 +0,0 @@
com.mogo.service.network
com.mogo.service.module
com.mogo.service.map
com.mogo.service

View File

@@ -1,68 +0,0 @@
plugins {
id 'com.android.library'
id 'kotlin-android'
id 'kotlin-android-extensions'
id 'kotlin-kapt'
id 'com.alibaba.arouter'
}
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion
versionCode Integer.valueOf(VERSION_CODE)
versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION")
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
//ARouter apt 参数
kapt {
useBuildCache = false
arguments {
arg("AROUTER_MODULE_NAME", project.getName())
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
api rootProject.ext.dependencies.androidxappcompat
implementation rootProject.ext.dependencies.arouter
kapt rootProject.ext.dependencies.aroutercompiler
api rootProject.ext.dependencies.carmanager
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
api rootProject.ext.dependencies.mogomapapi
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_function_api
} else {
api project(":libraries:mogo-map-api")
implementation project(':core:mogo-core-data')
api project(':core:mogo-core-function-api')
}
}
apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()

View File

@@ -1 +0,0 @@
#-----MogoServiceApi-----

View File

@@ -1,3 +0,0 @@
GROUP=com.mogo.service
POM_ARTIFACT_ID=mogo-service-api
VERSION_CODE=1

View File

@@ -1,24 +0,0 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
#-----MogoServiceApi-----
-keep class com.mogo.service.** {*;}

View File

@@ -1,2 +0,0 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.service" />

View File

@@ -1,107 +0,0 @@
package com.mogo.service.module;
import com.alibaba.android.arouter.facade.template.IProvider;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
import java.util.Iterator;
/**
* @author congtaowang
* @since 2020-01-09
* <p>
* 监听注册中心
*/
public interface IMogoRegisterCenter extends IProvider {
/**
* 注册地图监听函数
*
* @param tag
* @param listener
* @return
*/
void registerMogoMapListener( String tag, IMogoMapListener listener );
/**
* 注销地图监听函数
*
* @param tag
*/
void unregisterMogoMapListener( String tag );
/**
* 注册定位监听函数
*
* @param tag
* @param listener
* @return
*/
void registerMogoLocationListener( String tag, IMogoLocationListener listener );
/**
* 返回点位监听
*
* @return
*/
Iterator< IMogoLocationListener > getLocationListeners();
/**
* 注销定位监听函数
*
* @param tag
*/
void unregisterMogoLocationListener( String tag );
/**
* 注册marker点击监听函数
*
* @param tag
* @param listener
* @return
*/
void registerMogoMarkerClickListener( String tag, IMogoMarkerClickListener listener );
/**
* 注销定位监听函数
*
* @param tag
*/
void unregisterMogoMarkerClickListener( String tag );
/**
* 注册地图上静态marker点击监听函数
*
* @param tag
* @param listener
* @return
*/
void registerMogoStaticMarkerClickListener( String tag, IMogoMarkerClickListener listener );
/**
* 注销定位监听函数
*
* @param tag
*/
void unregisterMogoStaticMarkerClickListener( String tag, IMogoMarkerClickListener listener );
/**
* 注册车辆位置变化监听
*
* @param tag
* @param listener
*/
void registerCarLocationChangedListener( String tag, IMogoCarLocationChangedListener listener );
/**
* 注销车辆位置变化监听
*
* @param tag
* @param listener
*/
void unregisterCarLocationChangedListener( String tag, IMogoCarLocationChangedListener listener );
}

View File

@@ -51,9 +51,6 @@ include ':core:function-impl:mogo-core-function-chat'
// 消息盒子
include ':core:function-impl:mogo-core-function-datacenter'
// 服务
include ':services:mogo-service-api'
// 模块
include ':foudations:mogo-aicloud-services-sdk'
include ':foudations:mogo-commons'