Merge branch 'dev_robotaxi-d-app-module_260_220304_2.6.0' of gitlab.zhidaoauto.com:zhjt/AndroidApp/MoGoEagleEye into dev_robotaxi-d-app-module_260_220304_2.6.0
This commit is contained in:
@@ -8,6 +8,7 @@ import androidx.fragment.app.FragmentActivity;
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.map.MogoMapUIController;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.och.bus.constant.OchBusConst;
|
||||
import com.mogo.och.bus.fragment.OchBusFragment;
|
||||
@@ -36,10 +37,7 @@ public class OchBusProvider implements IMogoOCH {
|
||||
*/
|
||||
private void stepIntoVrMode(){
|
||||
Logger.d( TAG, "进入vr模式" );
|
||||
MogoApisHandler.getInstance()
|
||||
.getApis()
|
||||
.getMapServiceApi()
|
||||
.getMapUIController()
|
||||
MogoMapUIController.getInstance()
|
||||
.openVrMode(false);
|
||||
}
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
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.uicontroller.VisualAngleMode;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
@@ -119,15 +121,13 @@ public abstract class BaseOchBusTabFragment<V extends IView, P extends Presenter
|
||||
@Override
|
||||
public void onClickImpl(View v) {
|
||||
//切换地图的远近视图
|
||||
if (MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getCurrentMapVisualAngle().isLongSight()) {
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(AbsMogoApplication.getApp()).visibleAllMarkers();
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi()
|
||||
.getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isLongSight()) {
|
||||
MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers();
|
||||
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
mSwitchText.setText(R.string.bus_map_model_normal);
|
||||
} else if (MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getCurrentMapVisualAngle().isMediumSight()) {
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(AbsMogoApplication.getApp()).inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS);
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi()
|
||||
.getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||
} else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) {
|
||||
MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS);
|
||||
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||
mSwitchText.setText(R.string.bus_map_model_faster);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
|
||||
import com.mogo.map.MogoMarkerManager;
|
||||
import com.mogo.map.marker.MogoMarkerOptions;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.och.bus.R;
|
||||
@@ -331,12 +332,10 @@ public class OchBusFragment extends BaseOchBusTabFragment<OchBusFragment, OchBus
|
||||
options.icon(bitmap);
|
||||
options.latitude(lat);
|
||||
options.longitude(longi);
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi()
|
||||
.getMarkerManager(AbsMogoApplication.getApp()).addMarker(uuid, options);
|
||||
} else {
|
||||
Log.d("RemoveMapMaker=", uuid + "=latitude=" + lat + ",longitude=" + longi);
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi()
|
||||
.getMarkerManager(AbsMogoApplication.getApp()).removeMarkers(uuid);
|
||||
MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).addMarker(uuid, options);
|
||||
}else {
|
||||
Log.d("RemoveMapMaker=",uuid+"=latitude="+lat+",longitude="+longi);
|
||||
MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).removeMarkers(uuid);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ import io.reactivex.exceptions.UndeliverableException;
|
||||
import io.reactivex.functions.Consumer;
|
||||
import io.reactivex.plugins.RxJavaPlugins;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
@@ -788,7 +789,7 @@ public class OchBusOrderModel {
|
||||
* 到站
|
||||
* @param data
|
||||
*/
|
||||
public void onArriveAt( AutopilotStationInfo data){
|
||||
public void onArriveAt( MessagePad.ArrivalNotification data){
|
||||
if ( currentStationIndex > stationList.size() - 1 ) {
|
||||
Logger.e( TAG, "到站异常,取消后续操作结束" );
|
||||
return;
|
||||
|
||||
@@ -8,6 +8,7 @@ import androidx.fragment.app.FragmentActivity;
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.map.MogoMapUIController;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst;
|
||||
import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment;
|
||||
@@ -43,10 +44,7 @@ class MogoOCHTaxi implements IMogoOCH, IMogoStatusChangedListener {
|
||||
*/
|
||||
private void stepIntoVrMode() {
|
||||
Logger.d( TAG, "进入vr模式" );
|
||||
MogoApisHandler.getInstance()
|
||||
.getApis()
|
||||
.getMapServiceApi()
|
||||
.getMapUIController()
|
||||
MogoMapUIController.getInstance()
|
||||
.openVrMode( false );
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.mogo.eagle.core.data.map.MogoLatLng;
|
||||
import com.mogo.eagle.core.data.map.MogoLocation;
|
||||
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 +33,7 @@ public class OCHTaxiOverlayManager {
|
||||
// 引导线颜色
|
||||
mPolylineColors = new ArrayList<>();
|
||||
mContext = context;
|
||||
mogoOverlayManager = MogoApisHandler.getInstance().getApis().getMapServiceApi().getOverlayManager(mContext);
|
||||
mogoOverlayManager = MogoOverlayManager.getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,11 +4,10 @@ package com.mogo.och.taxi.passenger.callback;
|
||||
import java.util.List;
|
||||
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2021/11/1
|
||||
*/
|
||||
interface IOCHTaxiAutopilotPlanningCallback {
|
||||
public interface IOCHTaxiPassengerAutopilotPlanningCallback {
|
||||
void routeResult(List<MessagePad.Location> models);
|
||||
}
|
||||
@@ -4,7 +4,6 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.location.Location;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
@@ -14,7 +13,6 @@ import com.mogo.cloud.commons.utils.CoordinateUtils;
|
||||
import com.mogo.commons.debug.DebugConfig;
|
||||
import com.mogo.eagle.core.data.autopilot.ADASTrajectoryInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||
@@ -57,6 +55,9 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import mogo_msg.MogoReportMsg;
|
||||
|
||||
/**
|
||||
* Created by pangfan on 2021/8/19
|
||||
*
|
||||
@@ -472,6 +473,11 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
|
||||
|
||||
private IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener(){
|
||||
|
||||
@Override
|
||||
public void onAutopilotGuardian(@Nullable MogoReportMsg.MogoReportMessage guardianInfo) {
|
||||
|
||||
}
|
||||
|
||||
private boolean arriveAtEnd = false; //乘客app专用字段
|
||||
|
||||
@Override
|
||||
@@ -525,18 +531,13 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotGuardian(@Nullable AutopilotGuardianStatusInfo autopilotGuardianStatusInfo) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotArriveAtStation(@Nullable AutopilotStationInfo data) {
|
||||
public void onAutopilotArriveAtStation(@Nullable MessagePad.ArrivalNotification arrivalNotification) {
|
||||
if (FunctionBuildConfig.isDemoMode
|
||||
&& AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
|
||||
arriveAtEnd = true;
|
||||
}
|
||||
|
||||
if (data == null || !checkCurrentOCHOrder()
|
||||
if (arrivalNotification == null || !checkCurrentOCHOrder()
|
||||
|| (getCurOrderStatus() == TaxiPassengerOrderStatusEnum.ArriveAtEndStation)) {
|
||||
return;
|
||||
}
|
||||
@@ -544,28 +545,29 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
|
||||
// TipToast.shortTip("到达目的地");
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
private IMoGoAutopilotPlanningListener moGoAutopilotPlanningListener = new IMoGoAutopilotPlanningListener(){
|
||||
private final IMoGoAutopilotPlanningListener moGoAutopilotPlanningListener = new IMoGoAutopilotPlanningListener(){
|
||||
|
||||
@Override
|
||||
public void onAutopilotRotting(@Nullable MessagePad.GlobalPathResp routeList) {
|
||||
if (null != routeList && routeList.getWayPointsList().size() > 0){
|
||||
mAutopilotPlanningCallback.routeResult(routeList.getWayPointsList());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotTrajectory(ArrayList<ADASTrajectoryInfo> trajectoryInfos) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotRotting(AutopilotRouteInfo routeList) {
|
||||
if (null != routeList && routeList.getModels() != null){
|
||||
mAutopilotPlanningCallback.routeResult(routeList.getModels());
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 限速监听
|
||||
*/
|
||||
private LimitingVelocityListener limitingVelocityListener = new LimitingVelocityListener(){
|
||||
private final LimitingVelocityListener limitingVelocityListener = new LimitingVelocityListener(){
|
||||
|
||||
@Override
|
||||
public void onLimitingVelocityChange(int limitingVelocity) {
|
||||
@@ -597,7 +599,4 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* END
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ import androidx.annotation.RequiresApi;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
|
||||
import com.mogo.commons.mvp.Presenter;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
|
||||
import com.mogo.eagle.core.data.map.MogoLatLng;
|
||||
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerAutopilotPlanningCallback;
|
||||
@@ -21,6 +20,8 @@ import com.mogo.och.taxi.passenger.ui.TaxiPassengerServingOrderFragment;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2022/3/14
|
||||
@@ -59,11 +60,11 @@ public class TaxiPassengerServingOrderPresenter extends Presenter<TaxiPassengerS
|
||||
}
|
||||
|
||||
@Override
|
||||
public void routeResult(List<AutopilotRouteInfo.RouteModels> models) {
|
||||
public void routeResult(List<MessagePad.Location> models) {
|
||||
if (models == null) return;
|
||||
List<MogoLatLng> latLngList = new ArrayList<>();
|
||||
for (AutopilotRouteInfo.RouteModels routeModel : models) {
|
||||
latLngList.add(new MogoLatLng(routeModel.getLat(), routeModel.getLon()));
|
||||
for (MessagePad.Location routeModel : models) {
|
||||
latLngList.add(new MogoLatLng(routeModel.getLatitude(), routeModel.getLongitude()));
|
||||
}
|
||||
mView.routeResult(latLngList);
|
||||
}
|
||||
@@ -81,7 +82,7 @@ public class TaxiPassengerServingOrderPresenter extends Presenter<TaxiPassengerS
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public void onCurrentOrderDistToEndChanged(int meters, int timeInSecond) {
|
||||
mView.onCurrentOrderDistToEndChanged(meters,timeInSecond);
|
||||
mView.onCurrentOrderDistToEndChanged(meters,timeInSecond);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -91,14 +92,14 @@ public class TaxiPassengerServingOrderPresenter extends Presenter<TaxiPassengerS
|
||||
|
||||
@Override
|
||||
public void onCarLocationChanged(Location location) {
|
||||
if (location != null){
|
||||
mView.onCarLocationChanged(location);
|
||||
}
|
||||
if (location != null){
|
||||
mView.onCarLocationChanged(location);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLimitingVelocityChange(int limitingVelocity) {
|
||||
mView.onLimitingVelocityChange(limitingVelocity);
|
||||
mView.onLimitingVelocityChange(limitingVelocity);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -106,4 +107,5 @@ public class TaxiPassengerServingOrderPresenter extends Presenter<TaxiPassengerS
|
||||
super.onDestroy(owner);
|
||||
releaseListener();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@ 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.hmi.CallerHmiManager;
|
||||
import com.mogo.eagle.core.function.call.map.CallerSmpManager;
|
||||
import com.mogo.map.MogoMapUIController;
|
||||
import com.mogo.map.MogoMarkerManager;
|
||||
import com.mogo.map.listener.IMogoMapListener;
|
||||
import com.mogo.map.uicontroller.VisualAngleMode;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
@@ -39,6 +41,7 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
|
||||
private ImageView mAutopilotImage;
|
||||
private ImageView mMapswitchBtn;
|
||||
private TaxiPassengerTrafficLightView mTrafficLightView;
|
||||
private TaxiPassengerV2XNotificationView mV2XNotificationView;
|
||||
|
||||
protected TaxiPassengerServingOrderFragment ochServingOrderFragment = null;
|
||||
|
||||
@@ -64,24 +67,21 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
|
||||
|
||||
mTrafficLightView = findViewById(R.id.traffic_light_view);
|
||||
CallerHmiManager.INSTANCE.setProxyTrafficLightView(mTrafficLightView);
|
||||
mV2XNotificationView = new TaxiPassengerV2XNotificationView(getContext());
|
||||
CallerHmiManager.INSTANCE.setProxyNotificationView(mV2XNotificationView);
|
||||
|
||||
mMapswitchBtn = findViewById(R.id.module_och_taxi_swich_map_iv);
|
||||
mMapswitchBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
//视角切换
|
||||
if (MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController()
|
||||
if (MogoMapUIController.getInstance()
|
||||
.getCurrentMapVisualAngle().isLongSight()) {
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi()
|
||||
.getMarkerManager(AbsMogoApplication.getApp()).visibleAllMarkers();
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi()
|
||||
.getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
} else if (MogoApisHandler.getInstance().getApis().getMapServiceApi()
|
||||
.getMapUIController().getCurrentMapVisualAngle().isMediumSight()) {
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi()
|
||||
.getMarkerManager(AbsMogoApplication.getApp()).inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS);
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi()
|
||||
.getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||
MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers();
|
||||
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
} else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) {
|
||||
MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS);
|
||||
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -16,7 +16,6 @@ import android.widget.TextView;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import com.mogo.commons.mvp.BaseFragment;
|
||||
import com.mogo.commons.mvp.MvpFragment;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
|
||||
import com.mogo.eagle.core.data.map.MogoLatLng;
|
||||
@@ -24,11 +23,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.och.taxi.passenger.R;
|
||||
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerAutopilotPlanningCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.ITaxiPassengerMapViewCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.ITaxiPassengerVeloctityCallback;
|
||||
import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum;
|
||||
import com.mogo.och.taxi.passenger.model.TaxiPassengerModel;
|
||||
import com.mogo.och.taxi.passenger.model.TaxiPassengerNaviToDestinationModel;
|
||||
@@ -40,6 +35,8 @@ import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2022/3/8
|
||||
@@ -91,7 +88,7 @@ public class TaxiPassengerServingOrderFragment extends
|
||||
protected void initViews() {
|
||||
|
||||
mTPSpeedTv = findViewById(R.id.taxi_p_speed_tv);
|
||||
mTPSpeedTv.setText(getSpeedTextStyle("0",true));
|
||||
mTPSpeedTv.setText(getSpeedTextStyle("0", true));
|
||||
|
||||
mTPOrderStatus = findViewById(R.id.taxi_p_order_status_tv);
|
||||
mTPOrderStartStation = findViewById(R.id.taxi_p_order_status_start_station_tv);
|
||||
@@ -106,17 +103,18 @@ public class TaxiPassengerServingOrderFragment extends
|
||||
mTPOrderStatus.setOnLongClickListener(new View.OnLongClickListener() { //测试用
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
List<AutopilotRouteInfo.RouteModels> list = new ArrayList<>();
|
||||
for (int i = 0; i < 200 ; i++){
|
||||
List<MessagePad.Location> list = new ArrayList<>();
|
||||
for (int i = 0; i < 200; i++) {
|
||||
MessagePad.Location.Builder builder = MessagePad.Location.newBuilder();
|
||||
AutopilotRouteInfo.RouteModels routeModels = new AutopilotRouteInfo.RouteModels();
|
||||
if (i <= 100){
|
||||
routeModels.setLat(40.199248903658166);
|
||||
routeModels.setLon(116.73435586102245 + i * 0.0001);
|
||||
}else {
|
||||
routeModels.setLat(40.199248903658166 + i * 0.0001);
|
||||
routeModels.setLon(116.73435586102245 + 100 * 0.0001);
|
||||
if (i <= 100) {
|
||||
builder.setLatitude(40.199248903658166);
|
||||
builder.setLongitude(116.73435586102245 + i * 0.0001);
|
||||
} else {
|
||||
builder.setLatitude(40.199248903658166 + i * 0.0001);
|
||||
builder.setLongitude(116.73435586102245 + 100 * 0.0001);
|
||||
}
|
||||
list.add(routeModels);
|
||||
list.add(builder.build());
|
||||
}
|
||||
mPresenter.routeResult(list);
|
||||
return true;
|
||||
@@ -142,10 +140,10 @@ public class TaxiPassengerServingOrderFragment extends
|
||||
/**
|
||||
* 设置进度条最大值为 起点终点首次规划出的值
|
||||
*/
|
||||
private void setSeekBarMax(){
|
||||
private void setSeekBarMax() {
|
||||
//计算订单起点和终点距离
|
||||
int maxInt = TaxiPassengerModel.getInstance().calculateOrderDistanceSum();
|
||||
Logger.d(TAG,"maxInt = "+maxInt);
|
||||
Logger.d(TAG, "maxInt = " + maxInt);
|
||||
mProgressSeekBar.setMax(maxInt);
|
||||
}
|
||||
|
||||
@@ -153,7 +151,7 @@ public class TaxiPassengerServingOrderFragment extends
|
||||
* 行驶进度值更新
|
||||
*/
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
private void updateDriveProcessLoading(int progressLoading){
|
||||
private void updateDriveProcessLoading(int progressLoading) {
|
||||
mProgressSeekBar.setProgress(
|
||||
TaxiPassengerModel.getInstance().calculateOrderDistanceSum() - progressLoading
|
||||
, true);
|
||||
@@ -198,6 +196,7 @@ public class TaxiPassengerServingOrderFragment extends
|
||||
|
||||
/**
|
||||
* 绘制
|
||||
*
|
||||
* @param coordinates
|
||||
*/
|
||||
private void drawablePolyline(List<MogoLatLng> coordinates) {
|
||||
@@ -212,7 +211,7 @@ public class TaxiPassengerServingOrderFragment extends
|
||||
}
|
||||
}
|
||||
|
||||
private void clearPolyline(){
|
||||
private void clearPolyline() {
|
||||
if (mMapDirectionView != null) {
|
||||
UiThreadHandler.post(new Runnable() {
|
||||
@Override
|
||||
@@ -227,13 +226,13 @@ public class TaxiPassengerServingOrderFragment extends
|
||||
mTPOrderStartStation.setText(order.startSiteAddr);
|
||||
mTPOrderEndStation.setText(order.endSiteAddr);
|
||||
|
||||
if (TaxiPassengerOrderStatusEnum.ArriveAtStartStation.getCode() == order.orderStatus){
|
||||
if (TaxiPassengerOrderStatusEnum.ArriveAtStartStation.getCode() == order.orderStatus) {
|
||||
mTPOrderStatus.setText(getString(R.string.taxi_p_arrive_to_start));
|
||||
setSeekBarMax();
|
||||
return;
|
||||
}
|
||||
|
||||
if (TaxiPassengerOrderStatusEnum.OnTheWayToEndStation.getCode() == order.orderStatus){
|
||||
if (TaxiPassengerOrderStatusEnum.OnTheWayToEndStation.getCode() == order.orderStatus) {
|
||||
mTPOrderStatus.setText(R.string.taxi_p_start_to_end);
|
||||
return;
|
||||
}
|
||||
@@ -246,7 +245,7 @@ public class TaxiPassengerServingOrderFragment extends
|
||||
DecimalFormat fnum = new DecimalFormat("##0.00");
|
||||
String remainDis = fnum.format((float) meters / 1000);
|
||||
int remainTime = (int) timeInSecond / 60;
|
||||
updateOrderDisAndTimeView(remainDis,remainTime,arriveTime);
|
||||
updateOrderDisAndTimeView(remainDis, remainTime, arriveTime);
|
||||
updateDriveProcessLoading(meters);
|
||||
}
|
||||
|
||||
@@ -266,39 +265,41 @@ public class TaxiPassengerServingOrderFragment extends
|
||||
|
||||
/**
|
||||
* 更新速度
|
||||
*
|
||||
* @param newSpeed
|
||||
*/
|
||||
private void updateSpeedView(float newSpeed) {
|
||||
int speed = (int) (Math.abs(newSpeed) * 3.6F); // 倒车时工控机反馈定位信息中speed为负值
|
||||
if (speed < mLimitingVelocity ){
|
||||
mTPSpeedTv.setText(getSpeedTextStyle(String.valueOf(speed),true));
|
||||
}else {
|
||||
if (speed < mLimitingVelocity) {
|
||||
mTPSpeedTv.setText(getSpeedTextStyle(String.valueOf(speed), true));
|
||||
} else {
|
||||
mTPSpeedTv.setText(getSpeedTextStyle(String.valueOf(speed), false));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置速度的颜色
|
||||
*
|
||||
* @param content
|
||||
* @param isNormal 正常状态 true, 超速状态
|
||||
* @return
|
||||
*/
|
||||
private SpannableStringBuilder getSpeedTextStyle(String content,boolean isNormal){
|
||||
if (isNormal){
|
||||
private SpannableStringBuilder getSpeedTextStyle(String content, boolean isNormal) {
|
||||
if (isNormal) {
|
||||
return TaxiPassengerUtils.getGradientFontSpan(content
|
||||
, 0xFFCEEEFF ,0xFFA1DAFF);
|
||||
}else {//超速
|
||||
, 0xFFCEEEFF, 0xFFA1DAFF);
|
||||
} else {//超速
|
||||
return TaxiPassengerUtils.getGradientFontSpan(content
|
||||
,0xFFFE2505 ,0xFFFF6F62);
|
||||
, 0xFFFE2505, 0xFFFF6F62);
|
||||
}
|
||||
}
|
||||
|
||||
private void runOnUIThread( Runnable executor ) {
|
||||
if ( executor == null ) {
|
||||
private void runOnUIThread(Runnable executor) {
|
||||
if (executor == null) {
|
||||
return;
|
||||
}
|
||||
if ( Looper.myLooper() != Looper.getMainLooper() ) {
|
||||
UiThreadHandler.post( executor );
|
||||
if (Looper.myLooper() != Looper.getMainLooper()) {
|
||||
UiThreadHandler.post(executor);
|
||||
} else {
|
||||
executor.run();
|
||||
}
|
||||
@@ -311,6 +312,7 @@ public class TaxiPassengerServingOrderFragment extends
|
||||
|
||||
/**
|
||||
* 设置指南针旋转
|
||||
*
|
||||
* @param bearing
|
||||
*/
|
||||
private void startIvCompass(float bearing) {
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
package com.mogo.och.taxi.passenger.ui;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.mogo.eagle.core.data.enums.SidePattern;
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewNotification;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.och.taxi.passenger.R;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* V2X预警事件view:通过FloatWindow呈现,无需加入到自定义layout中
|
||||
*
|
||||
* Created on 2022/3/16
|
||||
*/
|
||||
public class TaxiPassengerV2XNotificationView extends IViewNotification {
|
||||
|
||||
private ImageView mV2XNotificationIcon;
|
||||
private TextView mV2XNotificationText;
|
||||
|
||||
public TaxiPassengerV2XNotificationView(@Nullable Context context) {
|
||||
this(context, null, 0);
|
||||
}
|
||||
|
||||
public TaxiPassengerV2XNotificationView(@Nullable Context context, @Nullable AttributeSet attrs) {
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
public TaxiPassengerV2XNotificationView(@Nullable Context context, @Nullable AttributeSet attrs,
|
||||
int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
init(context);
|
||||
}
|
||||
|
||||
private void init(Context context) {
|
||||
LayoutInflater.from(context).inflate(R.layout.taxi_p_v2x_notification_view, this,
|
||||
true);
|
||||
|
||||
mV2XNotificationIcon = findViewById(R.id.taxi_p_v2x_notification_icon_iv);
|
||||
mV2XNotificationText = findViewById(R.id.taxi_p_v2x_notification_text_tv);
|
||||
|
||||
// 设置View的出场位置
|
||||
setSidePattern(SidePattern.LEFT);
|
||||
setLayoutGravity(Gravity.LEFT);
|
||||
// 设置View的停留位置:相对屏幕左上角的位置
|
||||
setOffsetX(getResources().
|
||||
getDimensionPixelSize(R.dimen.taxi_p_v2x_notification_view_margin_left));
|
||||
setOffsetY(getResources().
|
||||
getDimensionPixelSize(R.dimen.taxi_p_v2x_notification_view_margin_top));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWarningIcon(int warningIcon) {
|
||||
super.setWarningIcon(warningIcon);
|
||||
UiThreadHandler.post(() -> {
|
||||
mV2XNotificationIcon.setImageResource(warningIcon);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWarningIcon(@Nullable Drawable drawable) {
|
||||
super.setWarningIcon(drawable);
|
||||
UiThreadHandler.post(() -> {
|
||||
mV2XNotificationIcon.setImageDrawable(drawable);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWarningContent(@Nullable CharSequence warningContent) {
|
||||
super.setWarningContent(warningContent);
|
||||
UiThreadHandler.post(() -> {
|
||||
mV2XNotificationText.setText(warningContent);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWarningContent(int warningContentId) {
|
||||
super.setWarningContent(warningContentId);
|
||||
UiThreadHandler.post(() -> {
|
||||
mV2XNotificationText.setText(warningContentId);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<solid android:color="@color/taxi_p_v2x_notification_bg_color"/>
|
||||
<corners android:radius="@dimen/taxi_p_v2x_notification_bg_corner"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="@dimen/taxi_p_v2x_notification_view_padding"
|
||||
android:background="@drawable/bg_taxi_p_v2x_notification_view">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/taxi_p_v2x_notification_icon_iv"
|
||||
android:layout_width="@dimen/taxi_p_v2x_notification_icon_size"
|
||||
android:layout_height="@dimen/taxi_p_v2x_notification_icon_size"
|
||||
android:src="@drawable/icon_warning_v2x_abnormal_vehicle"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/taxi_p_v2x_notification_text_tv"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/taxi_p_v2x_notification_text_margin_left"
|
||||
android:text="预警信息"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="@dimen/taxi_p_v2x_notification_text_size"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/taxi_p_v2x_notification_icon_iv"
|
||||
app:layout_constraintLeft_toRightOf="@+id/taxi_p_v2x_notification_icon_iv"
|
||||
app:layout_constraintTop_toTopOf="@+id/taxi_p_v2x_notification_icon_iv"
|
||||
tools:text="前车碰撞预警" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -39,4 +39,12 @@
|
||||
<dimen name="taxi_p_traffic_light_icon_size">154px</dimen>
|
||||
<dimen name="taxi_p_traffic_light_time_view_width">127px</dimen>
|
||||
<dimen name="taxi_p_traffic_light_time_size">60px</dimen>
|
||||
|
||||
<dimen name="taxi_p_v2x_notification_view_margin_left">31px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_view_margin_top">110px</dimen> <!-- 距离Pad顶部 -->
|
||||
<dimen name="taxi_p_v2x_notification_view_padding">10px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_bg_corner">70px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_icon_size">120px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_text_size">39px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_text_margin_left">20px</dimen>
|
||||
</resources>
|
||||
@@ -102,4 +102,12 @@
|
||||
<dimen name="taxi_p_traffic_light_icon_size">154px</dimen>
|
||||
<dimen name="taxi_p_traffic_light_time_view_width">127px</dimen>
|
||||
<dimen name="taxi_p_traffic_light_time_size">60px</dimen>
|
||||
|
||||
<dimen name="taxi_p_v2x_notification_view_margin_left">31px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_view_margin_top">110px</dimen> <!-- 距离Pad顶部 -->
|
||||
<dimen name="taxi_p_v2x_notification_view_padding">10px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_bg_corner">70px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_icon_size">120px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_text_size">39px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_text_margin_left">20px</dimen>
|
||||
</resources>
|
||||
@@ -23,4 +23,6 @@
|
||||
<color name="taxi_p_traffic_light_green_color_down">#006D43</color>
|
||||
<color name="taxi_p_traffic_light_yellow_color_up">#FFE198</color>
|
||||
<color name="taxi_p_traffic_light_yellow_color_down">#FF9B00</color>
|
||||
|
||||
<color name="taxi_p_v2x_notification_bg_color">#80000000</color>
|
||||
</resources>
|
||||
@@ -100,4 +100,12 @@
|
||||
<dimen name="taxi_p_traffic_light_icon_size">154px</dimen>
|
||||
<dimen name="taxi_p_traffic_light_time_view_width">127px</dimen>
|
||||
<dimen name="taxi_p_traffic_light_time_size">60px</dimen>
|
||||
|
||||
<dimen name="taxi_p_v2x_notification_view_margin_left">31px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_view_margin_top">110px</dimen> <!-- 距离Pad顶部 -->
|
||||
<dimen name="taxi_p_v2x_notification_view_padding">10px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_bg_corner">70px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_icon_size">120px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_text_size">39px</dimen>
|
||||
<dimen name="taxi_p_v2x_notification_text_margin_left">20px</dimen>
|
||||
</resources>
|
||||
@@ -9,6 +9,7 @@ import androidx.fragment.app.FragmentActivity;
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.map.MogoMapUIController;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.och.taxi.constant.OCHTaxiConst;
|
||||
import com.mogo.och.taxi.ui.OCHTaxiFragment;
|
||||
@@ -44,10 +45,7 @@ class MogoOCHTaxi implements IMogoOCH , IMogoStatusChangedListener {
|
||||
*/
|
||||
private void stepIntoVrMode() {
|
||||
Logger.d( TAG, "进入vr模式" );
|
||||
MogoApisHandler.getInstance()
|
||||
.getApis()
|
||||
.getMapServiceApi()
|
||||
.getMapUIController()
|
||||
MogoMapUIController.getInstance()
|
||||
.openVrMode( false );
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.mogo.eagle.core.data.map.MogoLatLng;
|
||||
import com.mogo.eagle.core.data.map.MogoLocation;
|
||||
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 +33,7 @@ public class OCHTaxiOverlayManager {
|
||||
// 引导线颜色
|
||||
mPolylineColors = new ArrayList<>();
|
||||
mContext = context;
|
||||
mogoOverlayManager = MogoApisHandler.getInstance().getApis().getMapServiceApi().getOverlayManager(mContext);
|
||||
mogoOverlayManager = MogoOverlayManager.getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -36,6 +36,8 @@ 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.CallerSmpManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
import com.mogo.map.MogoMapUIController;
|
||||
import com.mogo.map.MogoMarkerManager;
|
||||
import com.mogo.map.listener.IMogoMapListener;
|
||||
import com.mogo.map.uicontroller.VisualAngleMode;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
@@ -115,14 +117,12 @@ public abstract class BaseOchTaxiTabFragment<V extends IView, P extends Presente
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
//视角切换
|
||||
if (MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getCurrentMapVisualAngle().isLongSight()) {
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(AbsMogoApplication.getApp()).visibleAllMarkers();
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi()
|
||||
.getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
} else if (MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getCurrentMapVisualAngle().isMediumSight()) {
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(AbsMogoApplication.getApp()).inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS);
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi()
|
||||
.getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||
if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isLongSight()) {
|
||||
MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) .visibleAllMarkers();
|
||||
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
} else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) {
|
||||
MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS);
|
||||
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
|
||||
import com.mogo.eagle.core.utilcode.util.DateTimeUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.map.MogoMarkerManager;
|
||||
import com.mogo.map.marker.MogoMarkerOptions;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.och.taxi.callback.IOCHTaxiNaviChangedCallback;
|
||||
@@ -534,10 +535,10 @@ public class OCHTaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implem
|
||||
options.icon(bitmap);
|
||||
options.latitude(station.get(1));
|
||||
options.longitude(station.get(0));
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(AbsMogoApplication.getApp()).addMarker(uuid, options);
|
||||
MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) .addMarker(uuid, options);
|
||||
}else {
|
||||
Log.d("RemoveMapMaker=",uuid+"=latitude="+station.get(1)+",longitude="+station.get(0));
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(AbsMogoApplication.getApp()).removeMarkers(uuid);
|
||||
MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) .removeMarkers(uuid);
|
||||
}
|
||||
}
|
||||
/**
|
||||
|
||||
@@ -19,8 +19,7 @@ import androidx.test.filters.LargeTest
|
||||
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
|
||||
import com.mogo.eagle.core.function.hmi.notification.WarningFloat
|
||||
import com.mogo.eagle.core.function.hmi.notification.anim.DefaultAnimator
|
||||
import com.mogo.eagle.core.function.hmi.notification.enums.SidePattern
|
||||
import com.mogo.eagle.core.function.hmi.ui.widget.V2XNotificationView
|
||||
import com.mogo.eagle.core.data.enums.SidePattern
|
||||
import com.mogo.eagle.core.function.main.MainLauncherActivity
|
||||
import com.mogo.eagle.core.utilcode.kotlin.shape
|
||||
import com.mogo.eagle.core.utilcode.reminder.Reminder
|
||||
@@ -28,7 +27,6 @@ import com.mogo.eagle.core.utilcode.reminder.api.impl.ActivityReminder
|
||||
import com.mogo.eagle.core.utilcode.reminder.api.impl.PopupWindowReminder
|
||||
import com.mogo.eagle.core.utilcode.reminder.api.impl.ViewReminder
|
||||
import com.mogo.eagle.core.utilcode.util.AppStateManager
|
||||
import com.mogo.module.common.enums.EventTypeEnum
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.runBlocking
|
||||
|
||||
@@ -112,6 +112,8 @@ public class MogoApplication extends MainMoGoApplication {
|
||||
HmiBuildConfig.isShowLimitingVelocityView = false;
|
||||
//是否显示 红绿等
|
||||
HmiBuildConfig.isShowTrafficLightView = false;
|
||||
//是否显示 路侧监控
|
||||
HmiBuildConfig.isShowCameraView = false;
|
||||
}
|
||||
//och模块
|
||||
MogoModulePaths.addModuleFunction(new MogoModule("/och/api", "IMoGoFunctionProvider"));
|
||||
|
||||
1
app_ipc_monitoring/.gitignore
vendored
1
app_ipc_monitoring/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
/build
|
||||
21
app_ipc_monitoring/proguard-rules.pro
vendored
21
app_ipc_monitoring/proguard-rules.pro
vendored
@@ -1,21 +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
|
||||
@@ -110,8 +110,13 @@ class MoGoAutopilotProvider :
|
||||
NettyClientListener<MogoProtocolMsg> {
|
||||
override fun onMessageResponseClient(msg: MogoProtocolMsg?, sign: String?) {
|
||||
// 乘客端收到adas数据直接解析,后续分发解析后的数据流程同司机端
|
||||
msg?.let {
|
||||
AdasManager.getInstance().parseIPCData(it.body)
|
||||
try {
|
||||
msg?.let {
|
||||
AdasManager.getInstance().parseIPCData(it.body)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
CallerLogger.e("$M_ADAS_IMPL$TAG", "乘客屏解析数据流程中出现异常:${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -264,7 +269,7 @@ class MoGoAutopilotProvider :
|
||||
}
|
||||
|
||||
override fun setIPCReboot() {
|
||||
AdasManager.getInstance().rebootIPC()
|
||||
AdasManager.getInstance().rebootAPDocker()
|
||||
}
|
||||
|
||||
override fun recordCause(key: String?, name: String?, id: String?, reason: String?) {
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListen
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateListenerManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showAdUpgradeStatus
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showDockerRebootResult
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.module.common.MogoApisHandler
|
||||
import com.mogo.module.common.datacenter.SnapshotLocationDataCenter
|
||||
@@ -61,6 +62,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
const val TAG = "OnAdasListenerAdapter"
|
||||
}
|
||||
|
||||
//车前引导线
|
||||
@ChainLog(
|
||||
linkCode = CHAIN_LINK_ADAS,
|
||||
endpoint = PAD,
|
||||
@@ -90,6 +92,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
}
|
||||
}
|
||||
|
||||
//感知物体
|
||||
@ChainLog(
|
||||
linkCode = CHAIN_LINK_ADAS,
|
||||
linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA,
|
||||
@@ -107,6 +110,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
}
|
||||
}
|
||||
|
||||
//自车定位信息
|
||||
@ChainLog(
|
||||
linkCode = CHAIN_LINK_ADAS,
|
||||
linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA,
|
||||
@@ -124,7 +128,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
MogoApisHandler.getInstance().apis.adasControllerApi.satelliteTime =
|
||||
java.lang.Double.valueOf(gnssInfo.satelliteTime).toLong()
|
||||
if (1 == FunctionBuildConfig.gpsProvider) {
|
||||
MarkerServiceHandler.getApis().mapServiceApi.mapUIController.syncLocation2Map(
|
||||
CallerMapUIServiceManager.getMapUIController()?.syncLocation2Map(
|
||||
gnssInfo
|
||||
)
|
||||
SnapshotLocationDataCenter.getInstance().syncAdasLocationInfo(gnssInfo)
|
||||
@@ -132,6 +136,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
}
|
||||
}
|
||||
|
||||
//自车状态(底盘),车灯等。
|
||||
override fun onVehicleState(
|
||||
header: MessagePad.Header,
|
||||
vehicleState: VehicleStateOuterClass.VehicleState?
|
||||
@@ -144,6 +149,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
}
|
||||
}
|
||||
|
||||
//自动驾驶状态
|
||||
@ChainLog(
|
||||
linkCode = CHAIN_LINK_ADAS,
|
||||
linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA,
|
||||
@@ -181,6 +187,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
}
|
||||
}
|
||||
|
||||
//监控
|
||||
@ChainLog(
|
||||
linkCode = CHAIN_LINK_ADAS,
|
||||
linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA,
|
||||
@@ -205,6 +212,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
invokeAutopilotSNRequest()
|
||||
}
|
||||
|
||||
//工控机基础配置信息
|
||||
override fun onCarConfigResp(
|
||||
header: MessagePad.Header,
|
||||
carConfigResp: MessagePad.CarConfigResp?
|
||||
@@ -214,6 +222,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
}
|
||||
}
|
||||
|
||||
//数据采集,badCase
|
||||
@ChainLog(
|
||||
linkCode = CHAIN_LINK_ADAS,
|
||||
linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA,
|
||||
@@ -231,6 +240,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
}
|
||||
}
|
||||
|
||||
//全局路径规划
|
||||
@ChainLog(
|
||||
linkCode = CHAIN_LINK_ADAS,
|
||||
linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA,
|
||||
@@ -248,6 +258,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
}
|
||||
}
|
||||
|
||||
//预警信息
|
||||
@ChainLog(
|
||||
linkCode = CHAIN_LINK_ADAS,
|
||||
linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA,
|
||||
@@ -260,6 +271,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
invokeAutopilotWarnMessage(warn)
|
||||
}
|
||||
|
||||
//到站回调
|
||||
@ChainLog(
|
||||
linkCode = CHAIN_LINK_ADAS,
|
||||
linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA,
|
||||
|
||||
@@ -38,6 +38,7 @@ import com.mogo.eagle.core.function.chat.facade.utils.log
|
||||
import com.mogo.eagle.core.function.chat.facade.voice.VoiceControlFacade
|
||||
import com.mogo.eagle.core.utilcode.kotlin.safeCancel
|
||||
import com.mogo.eagle.core.utilcode.util.Utils
|
||||
import com.mogo.map.MogoLocationClient
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.android.asCoroutineDispatcher
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
@@ -580,7 +581,7 @@ object MoGoChatFacade: IMoGoChatFacade {
|
||||
}
|
||||
//告之服务器给发送方下发接收通话消息
|
||||
try {
|
||||
val location = BridgeApi.locationClient()?.lastKnowLocation
|
||||
val location = MogoLocationClient.getInstance(context())?.lastKnowLocation
|
||||
val response = serverApi.requestConnectStatus(ConnectStatusParam(MoGoAiCloudClientConfig.getInstance().sn, sn, roomId, PUSH_MSG_AGREE_ENTER, CALL_TYPE_VOICE.type).also {
|
||||
it.nickName = mySelf.get().name
|
||||
it.headImgUrl = mySelf.get().icon
|
||||
@@ -811,7 +812,7 @@ object MoGoChatFacade: IMoGoChatFacade {
|
||||
}
|
||||
val response = serverApi.inviteJoinVehicleTeam(CallRequestParam().also {
|
||||
val user = mySelf.get()
|
||||
val location = BridgeApi.locationClient()?.lastKnowLocation
|
||||
val location = MogoLocationClient.getInstance(context())?.lastKnowLocation
|
||||
it.snSender = mySn
|
||||
it.snReceiver = sn
|
||||
it.nickName = user.name
|
||||
@@ -957,7 +958,7 @@ object MoGoChatFacade: IMoGoChatFacade {
|
||||
}
|
||||
//告之服务器给发送方下发接收通话消息
|
||||
try {
|
||||
val location = BridgeApi.locationClient()?.lastKnowLocation
|
||||
val location = MogoLocationClient.getInstance(context())?.lastKnowLocation
|
||||
val response = serverApi.requestConnectStatus(ConnectStatusParam(MoGoAiCloudClientConfig.getInstance().sn, sn, roomId, PUSH_MSG_AGREE_ENTER, CALL_TYPE_VEHICLE_TEAM.type).also {
|
||||
it.nickName = mySelf.get().name
|
||||
it.headImgUrl = mySelf.get().icon
|
||||
|
||||
@@ -21,8 +21,6 @@ internal object BridgeApi {
|
||||
|
||||
internal fun context(): Context = contextHolder?.get() ?: Utils.getApp()
|
||||
|
||||
internal fun locationClient() = apis?.mapServiceApi?.getSingletonLocationClient(context())
|
||||
|
||||
internal fun intentManager() = apis?.intentManagerApi
|
||||
|
||||
internal fun statusManager() = apis?.statusManagerApi
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.google.gson.Gson
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonObject
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.data.BaseResponse
|
||||
import com.mogo.eagle.core.data.chat.UserInfo
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths
|
||||
@@ -15,6 +16,7 @@ import com.mogo.eagle.core.function.chat.facade.consts.ChatHttp
|
||||
import com.mogo.eagle.core.function.chat.facade.consts.ChatHttp.Companion.getConfig
|
||||
import com.mogo.eagle.core.function.chat.facade.net.bean.*
|
||||
import com.mogo.eagle.core.function.chat.facade.utils.log
|
||||
import com.mogo.map.MogoLocationClient
|
||||
import com.mogo.service.IMogoServiceApis
|
||||
import retrofit2.http.*
|
||||
import java.lang.IllegalStateException
|
||||
@@ -72,7 +74,7 @@ internal class ChatServiceModel {
|
||||
suspend fun requestConnectStatus(params: ConnectStatusParam): BaseResponse<Any> {
|
||||
val map = hashMapOf<String, String>()
|
||||
val sn = MoGoAiCloudClientConfig.getInstance().sn
|
||||
val location = BridgeApi.locationClient()?.lastKnowLocation
|
||||
val location = MogoLocationClient.getInstance(AbsMogoApplication.getApp())?.lastKnowLocation
|
||||
if (location != null) {
|
||||
params.lon = location.longitude
|
||||
params.lat = location.latitude
|
||||
@@ -103,7 +105,7 @@ internal class ChatServiceModel {
|
||||
|
||||
suspend fun requestRoomInfo(param: CallRequestParam): BaseResponse<RoomInfo> {
|
||||
val map = hashMapOf<String, String>()
|
||||
val location = BridgeApi.locationClient()?.lastKnowLocation
|
||||
val location = MogoLocationClient.getInstance(AbsMogoApplication.getApp())?.lastKnowLocation
|
||||
if (location != null) {
|
||||
param.lat = location.latitude
|
||||
param.lon = location.longitude
|
||||
|
||||
@@ -19,8 +19,8 @@ import com.mogo.eagle.core.utilcode.kotlin.onClick
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.Utils
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.api.entity.BadCaseResponse.Reason
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.mvp.BadCasePresenter
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.mvp.BadCaseView
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.biz.BadCasePresenter
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.biz.BadCaseView
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
package com.zhjt.mogo_core_function_devatools.badcase.mvp
|
||||
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.api.entity.UploadResult
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.mvp.biz.IBadCasePresenter
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.repository.Repository
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord
|
||||
|
||||
internal class BadCasePresenter : IBadCasePresenter {
|
||||
|
||||
private val repository by lazy {
|
||||
Repository()
|
||||
}
|
||||
|
||||
override suspend fun loadBadCases() = repository.loadBadCases()
|
||||
|
||||
override suspend fun insertRecord(record: AutoPilotRecord) {
|
||||
try {
|
||||
repository.insert(record)
|
||||
} catch (t: Throwable) {
|
||||
CallerLogger.e("$M_DEVA${BadCaseManager.TAG}", "-- 插入数据失败 -- msg: $t")
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun getUnConsumedRecords(): List<AutoPilotRecord> {
|
||||
return try {
|
||||
repository.getAllUnConsumedRecord() ?: emptyList()
|
||||
} catch (t: Throwable) {
|
||||
CallerLogger.e("$M_DEVA${BadCaseManager.TAG}", "-- 获取所有未消费的数据失败 -- msg: $t")
|
||||
emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun deleteRecord(record: AutoPilotRecord) {
|
||||
try {
|
||||
repository.deleteRecord(record)
|
||||
} catch (t: Throwable) {
|
||||
CallerLogger.e("$M_DEVA${BadCaseManager.TAG}", "-- 删除某条记录失败 -- msg: $t")
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun upload(map: Map<String, String>): UploadResult? = repository.upload(map)
|
||||
|
||||
override suspend fun updateLastModified(timestamp: Long) {
|
||||
repository.uploadLastModified(timestamp)
|
||||
}
|
||||
|
||||
override suspend fun getLastModified(): Long {
|
||||
CallerLogger.d("$M_DEVA${BadCaseManager.TAG}", " --- 2 ----")
|
||||
return repository.getLastModified()
|
||||
}
|
||||
}
|
||||
@@ -1,176 +0,0 @@
|
||||
package com.zhjt.mogo_core_function_devatools.badcase.mvp
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.graphics.drawable.GradientDrawable
|
||||
import android.graphics.drawable.StateListDrawable
|
||||
import android.util.AttributeSet
|
||||
import android.util.StateSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.eagle.core.data.autopilot.AutoPilotRecordResult
|
||||
import com.mogo.eagle.core.utilcode.kotlin.*
|
||||
import com.zhjt.mogo_core_function_devatools.R
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.api.entity.BadCaseResponse.Reason
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord
|
||||
import kotlinx.android.synthetic.main.layout_badcase_collect.view.*
|
||||
import kotlinx.coroutines.launch
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
internal class BadCaseView: ConstraintLayout {
|
||||
|
||||
@Volatile
|
||||
private var selectCase: Reason? = null
|
||||
|
||||
@Volatile
|
||||
private var cases: List<Reason>? = null
|
||||
|
||||
private val presenter by lazy {
|
||||
BadCasePresenter()
|
||||
}
|
||||
|
||||
private var onDismiss: (() -> Unit)? = null
|
||||
private var onSelect:(suspend (reason: Reason) -> Unit)? = null
|
||||
|
||||
private val scope by lazy {
|
||||
lifecycleOwner.lifecycleScope
|
||||
}
|
||||
|
||||
private var record: AutoPilotRecord? = null
|
||||
|
||||
constructor(context: Context) : this(context, null)
|
||||
|
||||
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
|
||||
|
||||
@SuppressLint("SetTextI18n") constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
|
||||
LayoutInflater.from(context).inflate(R.layout.layout_badcase_collect, this, true)
|
||||
background = ColorDrawable(Color.parseColor("#F0151D41"))
|
||||
isClickable = true
|
||||
layoutParams = ViewGroup.LayoutParams(960.toPixels().toInt(), 1528.toPixels().toInt())
|
||||
close?.onClick {
|
||||
onDismiss?.invoke()
|
||||
}
|
||||
cancel?.also {
|
||||
it.background = shape(solid = Color.parseColor("#3B4577"), radius = 16)
|
||||
it.onClick {
|
||||
onDismiss?.invoke()
|
||||
}
|
||||
}
|
||||
ok?.also {
|
||||
val enabled = gradient(radius = 16.toPixels().toInt(), orientation = GradientDrawable.Orientation.LEFT_RIGHT, centerX = 0.06f, startColor = Color.rgb(35, 146, 252), endColor = Color.rgb(28, 75, 252))
|
||||
val disabled = gradient(radius = 16.toPixels().toInt(), orientation = GradientDrawable.Orientation.LEFT_RIGHT, centerX = 0.06f, startColor = Color.rgb(24, 71, 129), endColor = Color.rgb(21, 46, 129))
|
||||
it.background = object : StateListDrawable() {}.also { itx ->
|
||||
itx.addState(intArrayOf(android.R.attr.state_enabled), enabled)
|
||||
itx.addState(StateSet.WILD_CARD, disabled)
|
||||
}
|
||||
it.onClick {
|
||||
selectCase?.run {
|
||||
scope.launch {
|
||||
onSelect?.invoke(this@run)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
scope.launchWhenCreated {
|
||||
time_of_take_over?.text = "接管时间:${SimpleDateFormat("yyyy.MM.dd HH:mm", Locale.getDefault()).format(record?.toLongTime() ?: System.currentTimeMillis())}"
|
||||
showLoading()
|
||||
presenter.loadBadCases().also {
|
||||
cases = it
|
||||
refresh(it)
|
||||
}
|
||||
hideLoading()
|
||||
}
|
||||
}
|
||||
|
||||
private fun refresh(causes: List<Reason>) {
|
||||
cases = causes
|
||||
rv_take_over?.let {
|
||||
it.layoutManager = LinearLayoutManager(it.context, LinearLayoutManager.VERTICAL, false)
|
||||
it.adapter = object : RecyclerView.Adapter<BadCaseViewHolder>() {
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BadCaseViewHolder = BadCaseViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.layout_badcase_item, parent, false))
|
||||
override fun onBindViewHolder(holder: BadCaseViewHolder, position: Int) {
|
||||
val cases = cases
|
||||
if (cases == null || cases.isEmpty()) {
|
||||
return
|
||||
}
|
||||
if (position >= cases.size) {
|
||||
return
|
||||
}
|
||||
val case = cases[position]
|
||||
holder.bindData(case)
|
||||
}
|
||||
override fun getItemCount(): Int = cases?.size ?: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun showLoading() {
|
||||
pb?.let {
|
||||
it.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
private fun hideLoading() {
|
||||
pb?.let {
|
||||
it.visibility = View.INVISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
private inner class BadCaseViewHolder(item: View) : RecyclerView.ViewHolder(item) {
|
||||
|
||||
private val check: ImageView = item.findViewById(R.id.check)
|
||||
private val reason: TextView = item.findViewById(R.id.reason)
|
||||
|
||||
init {
|
||||
check.background = StateListDrawable().also {
|
||||
it.addState(intArrayOf(android.R.attr.state_selected), ContextCompat.getDrawable(itemView.context, R.drawable.icon_ap_badcase_check))
|
||||
it.addState(StateSet.WILD_CARD, ContextCompat.getDrawable(itemView.context, R.drawable.icon_ap_badcase_default))
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
fun bindData(case: Reason) {
|
||||
check.isSelected = case.isChecked
|
||||
reason.text = case.reason ?: ""
|
||||
if (case.isChecked) {
|
||||
ok?.isSelected = true
|
||||
}
|
||||
itemView.onClick {
|
||||
case.isChecked = !case.isChecked
|
||||
selectCase = case
|
||||
cancelOtherChecked(case)
|
||||
ok?.isEnabled = hasCheckedItem()
|
||||
rv_take_over?.adapter?.notifyDataSetChanged()
|
||||
}
|
||||
}
|
||||
|
||||
private fun hasCheckedItem(): Boolean = cases?.find { it.isChecked } != null
|
||||
|
||||
private fun cancelOtherChecked(case: Reason) {
|
||||
val cases = cases
|
||||
if (cases == null || cases.isEmpty()) {
|
||||
return
|
||||
}
|
||||
cases.filterNot { it == case }.forEach {
|
||||
it.isChecked = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun register(record: AutoPilotRecord?, onDismiss: () -> Unit, onSelect:suspend (reason: Reason) -> Unit) {
|
||||
this.record = record
|
||||
this.onDismiss = onDismiss
|
||||
this.onSelect = onSelect
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
package com.zhjt.mogo_core_function_devatools.badcase.mvp.biz
|
||||
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.api.entity.BadCaseResponse.Reason
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.api.entity.UploadResult
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
|
||||
internal interface IBadCasePresenter {
|
||||
|
||||
suspend fun loadBadCases(): List<Reason>
|
||||
|
||||
suspend fun updateLastModified(timestamp: Long)
|
||||
|
||||
suspend fun getLastModified(): Long
|
||||
|
||||
suspend fun upload(map: Map<String, String>): UploadResult?
|
||||
|
||||
suspend fun insertRecord(record: AutoPilotRecord)
|
||||
|
||||
suspend fun getUnConsumedRecords(): List<AutoPilotRecord>
|
||||
|
||||
suspend fun deleteRecord(record: AutoPilotRecord)
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.zhjt.mogo_core_function_devatools.scene
|
||||
|
||||
|
||||
//todo 1. SceneLogCache增加模块名称,提供场景需要
|
||||
//todo 2. 对特定场景提供数据, 网约车,调度...
|
||||
class SceneManager {
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -6,11 +6,10 @@ import android.view.View
|
||||
import androidx.appcompat.view.ContextThemeWrapper
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.lifecycle.ProcessLifecycleOwner
|
||||
import com.mogo.eagle.core.function.hmi.notification.enums.SidePattern
|
||||
import com.mogo.eagle.core.data.enums.SidePattern
|
||||
import com.mogo.eagle.core.function.hmi.notification.interfaces.OnFloatAnimator
|
||||
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
|
||||
import com.mogo.eagle.core.utilcode.reminder.Reminder
|
||||
import com.mogo.eagle.core.utilcode.reminder.api.impl.ViewReminder
|
||||
|
||||
@@ -12,7 +12,7 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import com.mogo.eagle.core.function.hmi.notification.anim.AnimatorManager
|
||||
import com.mogo.eagle.core.function.hmi.notification.enums.ShowPattern
|
||||
import com.mogo.eagle.core.data.enums.ShowPattern
|
||||
import com.mogo.eagle.core.function.hmi.notification.widget.ParentFrameLayout
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
|
||||
@@ -24,8 +24,8 @@ import com.mogo.eagle.core.utilcode.util.WindowUtils
|
||||
* 弹窗Window 管理
|
||||
*/
|
||||
internal class WarningFloatWindowHelper(
|
||||
val context: Context,
|
||||
var config: WarningNotificationConfig
|
||||
val context: Context,
|
||||
var config: WarningNotificationConfig
|
||||
) {
|
||||
|
||||
var TAG = "WarningFloatWindowHelper"
|
||||
@@ -85,7 +85,7 @@ internal class WarningFloatWindowHelper(
|
||||
frameLayout?.tag = config.floatTag
|
||||
// 将浮窗布局文件添加到父容器frameLayout中,并返回该浮窗文件
|
||||
val floatingView = config.layoutView?.also { frameLayout?.addView(it) }
|
||||
?: LayoutInflater.from(context).inflate(config.layoutId!!, frameLayout, true)
|
||||
?: LayoutInflater.from(context).inflate(config.layoutId!!, frameLayout, true)
|
||||
// 为了避免创建的时候闪一下,我们先隐藏视图,不能直接设置GONE,否则定位会出现问题
|
||||
floatingView.visibility = View.INVISIBLE
|
||||
// 将frameLayout添加到系统windowManager中
|
||||
@@ -142,34 +142,34 @@ internal class WarningFloatWindowHelper(
|
||||
config.statusListenerMapIMoGo.forEach { listener ->
|
||||
listener.onShow()
|
||||
}
|
||||
if (frameLayout == null|| frameLayout?.isAttachedToWindow == false || config.isAnim) return
|
||||
if (frameLayout == null || frameLayout?.isAttachedToWindow == false || config.isAnim) return
|
||||
enterAnimator = AnimatorManager(frameLayout!!, params, windowManager, config)
|
||||
.enterAnim()?.apply {
|
||||
// 可以延伸到屏幕外,动画结束按需去除该属性,不然旋转屏幕可能置于屏幕外部
|
||||
params.flags =
|
||||
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
|
||||
.enterAnim()?.apply {
|
||||
// 可以延伸到屏幕外,动画结束按需去除该属性,不然旋转屏幕可能置于屏幕外部
|
||||
params.flags =
|
||||
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
|
||||
|
||||
addListener(object : Animator.AnimatorListener {
|
||||
override fun onAnimationRepeat(animation: Animator?) {}
|
||||
addListener(object : Animator.AnimatorListener {
|
||||
override fun onAnimationRepeat(animation: Animator?) {}
|
||||
|
||||
override fun onAnimationEnd(animation: Animator?) {
|
||||
config.isAnim = false
|
||||
if (!config.immersionStatusBar) {
|
||||
// 不需要延伸到屏幕外了,防止屏幕旋转的时候,浮窗处于屏幕外
|
||||
params.flags =
|
||||
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
|
||||
override fun onAnimationEnd(animation: Animator?) {
|
||||
config.isAnim = false
|
||||
if (!config.immersionStatusBar) {
|
||||
// 不需要延伸到屏幕外了,防止屏幕旋转的时候,浮窗处于屏幕外
|
||||
params.flags =
|
||||
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAnimationCancel(animation: Animator?) {}
|
||||
override fun onAnimationCancel(animation: Animator?) {}
|
||||
|
||||
override fun onAnimationStart(animation: Animator?) {
|
||||
floatingView.visibility = View.VISIBLE
|
||||
config.isAnim = true
|
||||
}
|
||||
})
|
||||
start()
|
||||
}
|
||||
override fun onAnimationStart(animation: Animator?) {
|
||||
floatingView.visibility = View.VISIBLE
|
||||
config.isAnim = true
|
||||
}
|
||||
})
|
||||
start()
|
||||
}
|
||||
if (enterAnimator == null) {
|
||||
floatingView.visibility = View.VISIBLE
|
||||
windowManager.updateViewLayout(floatingView, params)
|
||||
@@ -183,16 +183,16 @@ internal class WarningFloatWindowHelper(
|
||||
config.statusListenerMapIMoGo.forEach { listener ->
|
||||
listener.onDismiss()
|
||||
}
|
||||
if (frameLayout == null|| frameLayout?.isAttachedToWindow == false || (config.isAnim && enterAnimator == null)) return
|
||||
if (frameLayout == null || frameLayout?.isAttachedToWindow == false || (config.isAnim && enterAnimator == null)) return
|
||||
enterAnimator?.cancel()
|
||||
val animator: Animator? =
|
||||
AnimatorManager(frameLayout!!, params, windowManager, config).exitAnim()
|
||||
AnimatorManager(frameLayout!!, params, windowManager, config).exitAnim()
|
||||
if (animator == null) remove() else {
|
||||
// 二次判断,防止重复调用引发异常
|
||||
if (config.isAnim) return
|
||||
config.isAnim = true
|
||||
params.flags =
|
||||
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
|
||||
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
|
||||
animator.addListener(object : Animator.AnimatorListener {
|
||||
override fun onAnimationRepeat(animation: Animator?) {}
|
||||
|
||||
@@ -214,7 +214,14 @@ internal class WarningFloatWindowHelper(
|
||||
config.isAnim = false
|
||||
WarningFloatWindowManager.remove(config.floatTag)
|
||||
// removeView是异步删除,在Activity销毁的时候会导致窗口泄漏,所以使用removeViewImmediate直接删除view
|
||||
windowManager.run { if (force) removeViewImmediate(frameLayout) else removeView(frameLayout) }
|
||||
windowManager.run {
|
||||
frameLayout?.removeAllViews()
|
||||
if (force) {
|
||||
removeViewImmediate(frameLayout)
|
||||
} else {
|
||||
removeView(frameLayout)
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
CallerLogger.e("$M_HMI$TAG", "浮窗关闭出现异常:$e")
|
||||
}
|
||||
@@ -235,9 +242,9 @@ internal class WarningFloatWindowHelper(
|
||||
view.getLocationOnScreen(location)
|
||||
// 通过绝对高度和相对高度比较,判断包含顶部状态栏
|
||||
val statusBarHeight =
|
||||
if (location[1] > params.y) WindowUtils.getStatusBarHeight(view.context.applicationContext) else 0
|
||||
if (location[1] > params.y) WindowUtils.getStatusBarHeight(view.context.applicationContext) else 0
|
||||
val parentBottom =
|
||||
WindowUtils.getScreenHeight(view.context.applicationContext) - statusBarHeight
|
||||
WindowUtils.getScreenHeight(view.context.applicationContext) - statusBarHeight
|
||||
when (config.gravity) {
|
||||
// 右上
|
||||
Gravity.END, Gravity.END or Gravity.TOP, Gravity.RIGHT, Gravity.RIGHT or Gravity.TOP ->
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.mogo.eagle.core.function.hmi.notification
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import com.mogo.eagle.core.function.hmi.notification.anim.DefaultAnimator
|
||||
import com.mogo.eagle.core.function.hmi.notification.enums.ShowPattern
|
||||
import com.mogo.eagle.core.function.hmi.notification.enums.SidePattern
|
||||
import com.mogo.eagle.core.data.enums.ShowPattern
|
||||
import com.mogo.eagle.core.data.enums.SidePattern
|
||||
import com.mogo.eagle.core.function.hmi.notification.interfaces.OnFloatAnimator
|
||||
import com.mogo.eagle.core.function.hmi.notification.interfaces.OnFloatCallbacks
|
||||
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
|
||||
@@ -16,55 +16,55 @@ import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
|
||||
*/
|
||||
data class WarningNotificationConfig(
|
||||
// 浮窗的xml布局文件
|
||||
var layoutId: Int? = null,
|
||||
var layoutView: View? = null,
|
||||
var layoutId: Int? = null,
|
||||
var layoutView: View? = null,
|
||||
|
||||
// 当前浮窗的tag
|
||||
var floatTag: String? = null,
|
||||
var floatTag: String? = null,
|
||||
// 是否正在执行动画
|
||||
var isAnim: Boolean = false,
|
||||
var isAnim: Boolean = false,
|
||||
// 是否显示
|
||||
var isShow: Boolean = false,
|
||||
var isShow: Boolean = false,
|
||||
// 状态栏沉浸
|
||||
var immersionStatusBar: Boolean = false,
|
||||
var immersionStatusBar: Boolean = false,
|
||||
|
||||
// 浮窗的吸附方式(默认不吸附,拖到哪里是哪里)
|
||||
var sidePattern: SidePattern = SidePattern.DEFAULT,
|
||||
var sidePattern: SidePattern = SidePattern.DEFAULT,
|
||||
|
||||
// 浮窗显示类型(默认只在当前页显示)
|
||||
var showPattern: ShowPattern = ShowPattern.CURRENT_ACTIVITY,
|
||||
var showPattern: ShowPattern = ShowPattern.CURRENT_ACTIVITY,
|
||||
|
||||
// 倒计时关闭window,-1 表示不自动关闭, 单位毫秒。1s = 1000ms
|
||||
var countDownTime: Long = 0,
|
||||
var countDownTime: Long = 0,
|
||||
|
||||
// 浮窗的摆放方式,使用系统的Gravity属性
|
||||
var gravity: Int = 0,
|
||||
var gravity: Int = 0,
|
||||
// 坐标的偏移量
|
||||
var offsetPair: Pair<Int, Int> = Pair(0, 0),
|
||||
var offsetPair: Pair<Int, Int> = Pair(0, 0),
|
||||
// 固定的初始坐标,左上角坐标
|
||||
var locationPair: Pair<Int, Int> = Pair(0, 0),
|
||||
var locationPair: Pair<Int, Int> = Pair(0, 0),
|
||||
// ps:优先使用固定坐标,若固定坐标不为原点坐标,gravity属性和offset属性无效
|
||||
|
||||
// 四周边界值
|
||||
var leftBorder: Int = 0,
|
||||
var topBorder: Int = -999,
|
||||
var rightBorder: Int = 9999,
|
||||
var bottomBorder: Int = 9999,
|
||||
var leftBorder: Int = 0,
|
||||
var topBorder: Int = -999,
|
||||
var rightBorder: Int = 9999,
|
||||
var bottomBorder: Int = 9999,
|
||||
|
||||
// 出入动画
|
||||
var floatAnimator: OnFloatAnimator? = DefaultAnimator(),
|
||||
var floatAnimator: OnFloatAnimator? = DefaultAnimator(),
|
||||
|
||||
// 设置视图状态监听;show,dismiss
|
||||
var statusListenerMapIMoGo: ArrayList< IMoGoWarningStatusListener> = ArrayList(),
|
||||
var statusListenerMapIMoGo: ArrayList< IMoGoWarningStatusListener> = ArrayList(),
|
||||
|
||||
// Callbacks
|
||||
var callbacks: OnFloatCallbacks? = null,
|
||||
var callbacks: OnFloatCallbacks? = null,
|
||||
|
||||
// 窗口宽度
|
||||
var width: Int = WindowManager.LayoutParams.WRAP_CONTENT,
|
||||
var width: Int = WindowManager.LayoutParams.WRAP_CONTENT,
|
||||
|
||||
// 窗口高度
|
||||
var height: Int = WindowManager.LayoutParams.WRAP_CONTENT
|
||||
var height: Int = WindowManager.LayoutParams.WRAP_CONTENT
|
||||
) {
|
||||
var isEnqueue: Boolean = false
|
||||
var isOverride: Boolean = true
|
||||
|
||||
@@ -5,7 +5,7 @@ import android.animation.ValueAnimator
|
||||
import android.graphics.Rect
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import com.mogo.eagle.core.function.hmi.notification.enums.SidePattern
|
||||
import com.mogo.eagle.core.data.enums.SidePattern
|
||||
import com.mogo.eagle.core.function.hmi.notification.interfaces.OnFloatAnimator
|
||||
import com.mogo.eagle.core.utilcode.util.WindowUtils
|
||||
import kotlin.math.min
|
||||
@@ -32,11 +32,11 @@ open class DefaultAnimator : OnFloatAnimator {
|
||||
): Animator? = getAnimator(view, params, windowManager, sidePattern, true)
|
||||
|
||||
private fun getAnimator(
|
||||
view: View,
|
||||
params: WindowManager.LayoutParams,
|
||||
windowManager: WindowManager,
|
||||
sidePattern: SidePattern,
|
||||
isExit: Boolean
|
||||
view: View,
|
||||
params: WindowManager.LayoutParams,
|
||||
windowManager: WindowManager,
|
||||
sidePattern: SidePattern,
|
||||
isExit: Boolean
|
||||
): Animator {
|
||||
val triple = initValue(view, params, windowManager, sidePattern)
|
||||
// 退出动画的起始值、终点值,与入场动画相反
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.mogo.eagle.core.function.hmi.notification.interfaces
|
||||
import android.animation.Animator
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import com.mogo.eagle.core.function.hmi.notification.enums.SidePattern
|
||||
import com.mogo.eagle.core.data.enums.SidePattern
|
||||
|
||||
/**
|
||||
* @author: donghongyu
|
||||
|
||||
@@ -15,31 +15,34 @@ import com.mogo.eagle.core.data.autopilot.AdUpgradeStateHelper
|
||||
import com.mogo.eagle.core.data.camera.CameraEntity
|
||||
import com.mogo.eagle.core.data.config.HmiBuildConfig
|
||||
import com.mogo.eagle.core.data.constants.MoGoFragmentPaths
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
|
||||
import com.mogo.eagle.core.data.enums.SidePattern
|
||||
import com.mogo.eagle.core.data.enums.WarningDirectionEnum
|
||||
import com.mogo.eagle.core.data.notice.NoticeNormalData
|
||||
import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener
|
||||
import com.mogo.eagle.core.function.api.hmi.IMoGoHmiViewProxy
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewLimitingVelocity
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewNotification
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight
|
||||
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWaringProvider
|
||||
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager
|
||||
import com.mogo.eagle.core.function.call.check.CallerCheckManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapDataCollectorManager
|
||||
import com.mogo.eagle.core.function.call.monitor.CallerMonitorManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.hmi.WaringConst
|
||||
import com.mogo.eagle.core.function.hmi.notification.WarningFloat
|
||||
import com.mogo.eagle.core.function.hmi.notification.anim.DefaultAnimator
|
||||
import com.mogo.eagle.core.function.hmi.notification.enums.SidePattern
|
||||
import com.mogo.eagle.core.function.hmi.ui.camera.CameraListView
|
||||
import com.mogo.eagle.core.function.hmi.ui.notice.NoticeBannerView
|
||||
import com.mogo.eagle.core.function.hmi.ui.notice.NoticeNormalBannerView
|
||||
import com.mogo.eagle.core.function.hmi.ui.setting.DebugSettingView
|
||||
import com.mogo.eagle.core.function.hmi.ui.tools.AutoPilotAndCheckView
|
||||
import com.mogo.eagle.core.function.hmi.ui.widget.V2XNotificationView
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.Utils
|
||||
@@ -56,8 +59,10 @@ import java.util.*
|
||||
*/
|
||||
@Route(path = MoGoFragmentPaths.PATH_FRAGMENT_HMI)
|
||||
class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>(),
|
||||
IMoGoWaringProvider,
|
||||
MoGoWarningContract.View, IMoGoAutopilotIdentifyListener {
|
||||
IMoGoWaringProvider,
|
||||
IMoGoHmiViewProxy,
|
||||
MoGoWarningContract.View,
|
||||
IMoGoAutopilotIdentifyListener {
|
||||
private val TAG = "MoGoHmiFragment"
|
||||
|
||||
// DebugSettingView
|
||||
@@ -83,8 +88,12 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
|
||||
private var upgradeTipsView: (() -> View)? = null
|
||||
|
||||
// HMI 视图控件代理
|
||||
// 红绿灯View代理
|
||||
private var mViewTrafficLightVr: IViewTrafficLight? = null
|
||||
// 红绿灯 View代理
|
||||
private var mViewTrafficLight: IViewTrafficLight? = null
|
||||
// 限速 View代理
|
||||
private var mViewLimitingVelocity: IViewLimitingVelocity? = null
|
||||
// V2X预警弹窗 View 代理
|
||||
private var mViewNotification: IViewNotification? = null
|
||||
|
||||
|
||||
override fun vipIdentification(visible: Boolean) {
|
||||
@@ -132,7 +141,10 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
|
||||
activity?.let { CarcorderPreviewView.show(it) }
|
||||
}, 1000)*/
|
||||
|
||||
// 首次初始化使用默认视图
|
||||
setProxyTrafficLightView(viewTrafficLightVr)
|
||||
setProxyLimitingSpeedView(viewLimitingVelocity)
|
||||
setProxyNotificationView(V2XNotificationView(view.context))
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
@@ -180,8 +192,16 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
|
||||
}
|
||||
}
|
||||
|
||||
override fun setProxyNotificationView(view: IViewNotification) {
|
||||
mViewNotification = view
|
||||
}
|
||||
|
||||
override fun setProxyTrafficLightView(view: IViewTrafficLight) {
|
||||
mViewTrafficLightVr = view
|
||||
mViewTrafficLight = view
|
||||
}
|
||||
|
||||
override fun setProxyLimitingSpeedView(view: IViewLimitingVelocity) {
|
||||
mViewLimitingVelocity = view
|
||||
}
|
||||
|
||||
private fun showToolsFloat() {
|
||||
@@ -279,23 +299,24 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
|
||||
setToolsViewVisibility(View.GONE)
|
||||
}
|
||||
|
||||
// 控制 BadCase 按钮展示
|
||||
if (HmiBuildConfig.isShowBadCaseView) {
|
||||
CallerDevaToolsManager.initBadCase(vsBadCaseToolsView)
|
||||
}
|
||||
|
||||
// 控制 限速UI 展示
|
||||
if (HmiBuildConfig.isShowLimitingVelocityView) {
|
||||
showLimitingVelocity(View.VISIBLE)
|
||||
} else {
|
||||
showLimitingVelocity(View.GONE)
|
||||
}
|
||||
|
||||
// 控制 红绿灯 展示
|
||||
if (HmiBuildConfig.isShowTrafficLightView) {
|
||||
setTrafficLightVrVisibility(View.VISIBLE)
|
||||
} else {
|
||||
setTrafficLightVrVisibility(View.GONE)
|
||||
}
|
||||
|
||||
// 控制 远程摄像头图标 展示
|
||||
if (HmiBuildConfig.isShowCameraView) {
|
||||
setCameraViewVisibility(View.VISIBLE)
|
||||
} else {
|
||||
setCameraViewVisibility(View.GONE)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
@@ -315,7 +336,7 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
|
||||
}
|
||||
|
||||
override fun setTrafficLightVrVisibility(visibility: Int) {
|
||||
mViewTrafficLightVr?.visibility = visibility
|
||||
mViewTrafficLight?.visibility = visibility
|
||||
}
|
||||
|
||||
override fun setAutopilotStatusViewVisibility(visibility: Int) {
|
||||
@@ -330,6 +351,10 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
|
||||
ivToolsIcon?.visibility = visibility
|
||||
}
|
||||
|
||||
override fun setCameraViewVisibility(visibility: Int) {
|
||||
ivCameraIcon?.visibility = visibility
|
||||
}
|
||||
|
||||
/**
|
||||
* 开关DebugView
|
||||
*/
|
||||
@@ -399,63 +424,65 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
|
||||
val floatWindow = mWarningFloat
|
||||
val showTag = floatWindow?.config?.floatTag
|
||||
if (floatWindow == null || TextUtils.isEmpty(showTag) || !floatWindow.isShow() || floatWindow.config.floatTag != tag) {
|
||||
val notificationView = V2XNotificationView(it)
|
||||
notificationView.setWarningIcon(EventTypeEnum.getWarningIcon(v2xType.toString()))
|
||||
val warningContent = alertContent
|
||||
?: EventTypeEnum.getWarningContent(v2xType.toString())
|
||||
if (warningContent.isEmpty()) {
|
||||
CallerLogger.e("$M_HMI$TAG", "Show warningContent is null or empty!")
|
||||
return@launchWhenResumed
|
||||
} else {
|
||||
notificationView.setWarningContent(warningContent)
|
||||
}
|
||||
if (floatWindow != null && floatWindow.isShow()) {
|
||||
WarningFloat.dismiss(floatWindow.config.floatTag, true)
|
||||
}
|
||||
mWarningFloat = WarningFloat.with(it)
|
||||
.setTag(tag)
|
||||
.setLayout(notificationView)
|
||||
.setSidePattern(SidePattern.RESULT_TOP)
|
||||
.setCountDownTime(expireTime)
|
||||
.setGravity(Gravity.CENTER_HORIZONTAL, offsetY = 110)
|
||||
.setImmersionStatusBar(true)
|
||||
.isEnqueue(true)
|
||||
.addWarningStatusListener(listenerIMoGo)
|
||||
.addWarningStatusListener(object : IMoGoWarningStatusListener {
|
||||
override fun onShow() {
|
||||
// 创建弹窗成功才进行TTS播报
|
||||
CallerLogger.d(
|
||||
"$M_HMI$TAG",
|
||||
"mWarningFloat = $mWarningFloat---ttsContent = $ttsContent"
|
||||
)
|
||||
if (mWarningFloat != null && !TextUtils.isEmpty(ttsContent) && playTts) {
|
||||
CallerLogger.d("$M_HMI$TAG", "---> ttsContent = $ttsContent")
|
||||
AIAssist.getInstance(activity)
|
||||
.speakTTSVoice(ttsContent)
|
||||
}
|
||||
}
|
||||
})
|
||||
.setAnimator(object : DefaultAnimator() {
|
||||
override fun enterAnim(
|
||||
view: View,
|
||||
params: WindowManager.LayoutParams,
|
||||
windowManager: WindowManager,
|
||||
sidePattern: SidePattern
|
||||
): Animator? =
|
||||
super.enterAnim(view, params, windowManager, sidePattern)?.apply {
|
||||
interpolator = OvershootInterpolator()
|
||||
}
|
||||
// 代理View初始化了才可以弹窗
|
||||
mViewNotification?.let { notificationView->
|
||||
notificationView.setWarningIcon(EventTypeEnum.getWarningIcon(v2xType.toString()))
|
||||
val warningContent = alertContent
|
||||
?: EventTypeEnum.getWarningContent(v2xType.toString())
|
||||
if (warningContent.isEmpty()) {
|
||||
CallerLogger.e("$M_HMI$TAG", "Show warningContent is null or empty!")
|
||||
return@launchWhenResumed
|
||||
} else {
|
||||
notificationView.setWarningContent(warningContent)
|
||||
}
|
||||
if (floatWindow != null && floatWindow.isShow()) {
|
||||
WarningFloat.dismiss(floatWindow.config.floatTag, true)
|
||||
}
|
||||
mWarningFloat = WarningFloat.with(it)
|
||||
.setTag(tag)
|
||||
.setLayout(notificationView)
|
||||
.setSidePattern(notificationView.sidePattern)
|
||||
.setCountDownTime(expireTime)
|
||||
.setGravity(notificationView.layoutGravity, offsetX = notificationView.offsetX, offsetY = notificationView.offsetY)
|
||||
.setImmersionStatusBar(true)
|
||||
.isEnqueue(true)
|
||||
.addWarningStatusListener(listenerIMoGo)
|
||||
.addWarningStatusListener(object : IMoGoWarningStatusListener {
|
||||
override fun onShow() {
|
||||
// 创建弹窗成功才进行TTS播报
|
||||
CallerLogger.d(
|
||||
"$M_HMI$TAG",
|
||||
"mWarningFloat = $mWarningFloat---ttsContent = $ttsContent"
|
||||
)
|
||||
if (mWarningFloat != null && !TextUtils.isEmpty(ttsContent) && playTts) {
|
||||
CallerLogger.d("$M_HMI$TAG", "---> ttsContent = $ttsContent")
|
||||
AIAssist.getInstance(activity)
|
||||
.speakTTSVoice(ttsContent)
|
||||
}
|
||||
}
|
||||
})
|
||||
.setAnimator(object : DefaultAnimator() {
|
||||
override fun enterAnim(
|
||||
view: View,
|
||||
params: WindowManager.LayoutParams,
|
||||
windowManager: WindowManager,
|
||||
sidePattern: SidePattern
|
||||
): Animator? =
|
||||
super.enterAnim(view, params, windowManager, sidePattern)?.apply {
|
||||
interpolator = OvershootInterpolator()
|
||||
}
|
||||
|
||||
override fun exitAnim(
|
||||
view: View,
|
||||
params: WindowManager.LayoutParams,
|
||||
windowManager: WindowManager,
|
||||
sidePattern: SidePattern
|
||||
): Animator? =
|
||||
super.exitAnim(view, params, windowManager, sidePattern)
|
||||
?.setDuration(200)
|
||||
})
|
||||
.show()
|
||||
override fun exitAnim(
|
||||
view: View,
|
||||
params: WindowManager.LayoutParams,
|
||||
windowManager: WindowManager,
|
||||
sidePattern: SidePattern
|
||||
): Animator? =
|
||||
super.exitAnim(view, params, windowManager, sidePattern)
|
||||
?.setDuration(200)
|
||||
})
|
||||
.show()
|
||||
}
|
||||
} else {
|
||||
val notification = floatWindow.config.layoutView as? V2XNotificationView
|
||||
if (alertContent?.isNotEmpty() == true) {
|
||||
@@ -483,30 +510,30 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
|
||||
* @param checkLightId 0-都是默认不亮起,1-红,2-黄,3-绿
|
||||
*/
|
||||
override fun showWarningTrafficLight(checkLightId: Int) {
|
||||
mViewTrafficLightVr?.showWarningTrafficLight(checkLightId)
|
||||
mViewTrafficLight?.showWarningTrafficLight(checkLightId)
|
||||
}
|
||||
|
||||
override fun isWarningTrafficLightShow(): Boolean {
|
||||
return mViewTrafficLightVr?.visibility == View.VISIBLE
|
||||
return mViewTrafficLight?.visibility == View.VISIBLE
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭红绿灯预警展示,并重制灯态
|
||||
*/
|
||||
override fun disableWarningTrafficLight() {
|
||||
mViewTrafficLightVr?.disableWarningTrafficLight()
|
||||
mViewTrafficLight?.disableWarningTrafficLight()
|
||||
}
|
||||
|
||||
override fun changeCountdownRed(redNum: Int) {
|
||||
mViewTrafficLightVr?.changeCountdownRed(redNum)
|
||||
mViewTrafficLight?.changeCountdownRed(redNum)
|
||||
}
|
||||
|
||||
override fun changeCountdownYellow(yellowNum: Int) {
|
||||
mViewTrafficLightVr?.changeCountdownYellow(yellowNum)
|
||||
mViewTrafficLight?.changeCountdownYellow(yellowNum)
|
||||
}
|
||||
|
||||
override fun changeCountdownGreen(greenNum: Int) {
|
||||
mViewTrafficLightVr?.changeCountdownGreen(greenNum)
|
||||
mViewTrafficLight?.changeCountdownGreen(greenNum)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -515,19 +542,24 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
|
||||
* @param greenNum 绿灯倒计时
|
||||
*/
|
||||
override fun changeCountdownTrafficLightNum(readNum: Int, yellowNum: Int, greenNum: Int) {
|
||||
mViewTrafficLightVr?.changeCountdownTrafficLightNum(readNum, yellowNum, greenNum)
|
||||
mViewTrafficLight?.changeCountdownTrafficLightNum(readNum, yellowNum, greenNum)
|
||||
}
|
||||
|
||||
/**
|
||||
* 控制展示限速标志及内容
|
||||
*/
|
||||
override fun showLimitingVelocity(limitingSpeed: Int) {
|
||||
if (limitingSpeed > 0) {
|
||||
tvLimitingVelocity?.visibility = View.VISIBLE
|
||||
tvLimitingVelocity?.text = "$limitingSpeed"
|
||||
// 控制 限速UI 展示
|
||||
if (HmiBuildConfig.isShowLimitingVelocityView) {
|
||||
if (limitingSpeed > 0) {
|
||||
mViewLimitingVelocity?.visibility = View.VISIBLE
|
||||
mViewLimitingVelocity?.updateLimitingSpeed(limitingSpeed)
|
||||
} else {
|
||||
mViewLimitingVelocity?.visibility = View.INVISIBLE
|
||||
mViewLimitingVelocity?.updateLimitingSpeed(0)
|
||||
}
|
||||
} else {
|
||||
tvLimitingVelocity?.visibility = View.INVISIBLE
|
||||
tvLimitingVelocity?.text = "0"
|
||||
disableLimitingVelocity()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -535,8 +567,8 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
|
||||
* 控制关闭限速标志及内容
|
||||
*/
|
||||
override fun disableLimitingVelocity() {
|
||||
tvLimitingVelocity?.visibility = View.GONE
|
||||
tvLimitingVelocity?.text = "0"
|
||||
mViewLimitingVelocity?.visibility = View.GONE
|
||||
mViewLimitingVelocity?.updateLimitingSpeed(0)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -15,7 +15,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.hmi.notification.WarningFloat
|
||||
import com.mogo.eagle.core.function.hmi.notification.anim.DefaultAnimator
|
||||
import com.mogo.eagle.core.function.hmi.notification.enums.SidePattern
|
||||
import com.mogo.eagle.core.data.enums.SidePattern
|
||||
import com.mogo.usbcamera.UVCCameraHelper
|
||||
import com.serenegiant.usb.ParentPreviewConstraintLayout
|
||||
import com.serenegiant.usb.widget.CameraViewInterface
|
||||
|
||||
@@ -27,6 +27,7 @@ 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.CallerHDMapManager
|
||||
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.map.CallerSmpManager
|
||||
import com.mogo.eagle.core.function.call.obu.CallerOBUManager
|
||||
import com.mogo.eagle.core.function.call.obu.CallerObuListenerManager
|
||||
@@ -89,7 +90,7 @@ class DebugSettingView @JvmOverloads constructor(
|
||||
private var mRouteInfoSize = 0
|
||||
|
||||
private val mapUiController by lazy {
|
||||
MogoApisHandler.getInstance().apis?.mapServiceApi?.mapUIController
|
||||
CallerMapUIServiceManager.getMapUIController()
|
||||
}
|
||||
|
||||
private var lastVisualAngleMode: VisualAngleMode? = null
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.mogo.eagle.core.function.hmi.ui.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewLimitingVelocity
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import kotlinx.android.synthetic.main.view_limiting_speed_vr.view.*
|
||||
|
||||
/**
|
||||
* 限速控件
|
||||
*/
|
||||
class LimitingVelocityView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : IViewLimitingVelocity(context, attrs, defStyleAttr) {
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.view_limiting_speed_vr, this, true)
|
||||
}
|
||||
|
||||
override fun updateLimitingSpeed(limitingSpeed: Int) {
|
||||
super.updateLimitingSpeed(limitingSpeed)
|
||||
tvLimitingVelocity.text = "$limitingSpeed"
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,8 @@ import android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.map.MogoMapUIController
|
||||
import com.mogo.map.MogoMarkerManager
|
||||
import com.mogo.map.uicontroller.VisualAngleMode
|
||||
import com.mogo.module.common.MogoApisHandler
|
||||
import com.mogo.module.common.constants.DataTypes
|
||||
@@ -31,19 +33,16 @@ class PerspectiveSwitchView @JvmOverloads constructor(
|
||||
|
||||
override fun onClick(v: View?) {
|
||||
//切换地图的远近视图
|
||||
if (MogoApisHandler.getInstance().apis.mapServiceApi.mapUIController.currentMapVisualAngle.isLongSight) {
|
||||
MogoApisHandler.getInstance().apis.mapServiceApi.getMarkerManager(AbsMogoApplication.getApp())
|
||||
if (MogoMapUIController.getInstance().currentMapVisualAngle.isLongSight) {
|
||||
MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
|
||||
.visibleAllMarkers()
|
||||
MogoApisHandler.getInstance().apis.mapServiceApi
|
||||
.mapUIController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
|
||||
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
|
||||
textSwitch.setText(R.string.module_map_model_normal)
|
||||
} else if (MogoApisHandler.getInstance().apis.mapServiceApi.mapUIController.currentMapVisualAngle.isMediumSight) {
|
||||
MogoApisHandler.getInstance().apis.mapServiceApi.getMarkerManager(AbsMogoApplication.getApp())
|
||||
} else if (MogoMapUIController.getInstance().currentMapVisualAngle.isMediumSight) {
|
||||
MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
|
||||
.inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS)
|
||||
MogoApisHandler.getInstance().apis.mapServiceApi
|
||||
.mapUIController.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null)
|
||||
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null)
|
||||
textSwitch.setText(R.string.module_map_model_faster)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -11,6 +11,7 @@ import com.mogo.eagle.core.data.constants.MogoServicePaths
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.map.MogoMapUIController
|
||||
import com.mogo.map.navi.IMogoCarLocationChangedListener2
|
||||
import com.mogo.service.IMogoServiceApis
|
||||
import java.util.*
|
||||
@@ -63,18 +64,13 @@ class SpeedPanelView @JvmOverloads constructor(
|
||||
private val timerTask = object : TimerTask() {
|
||||
override fun run() {
|
||||
if (mLatLng != null) {
|
||||
if (mMogoServiceApis.mapServiceApi != null && mMogoServiceApis.mapServiceApi.mapUIController != null) {
|
||||
mSpeedLimmit = mMogoServiceApis.mapServiceApi.mapUIController.getSpeedLimmit(
|
||||
mLatLng!!.longitude,
|
||||
mLatLng!!.latitude,
|
||||
mLatLng!!.bearing
|
||||
)
|
||||
UiThreadHandler.post {
|
||||
val speed = (mLatLng!!.speed * 3.6f).toInt()
|
||||
mSpeedChartView.setArcColor(Color.parseColor(if (speed > mSpeedLimmit) "#DB3137" else "#3E77F6"))
|
||||
mSpeedChartView.setValues(speed)
|
||||
setBackgroundResource(if (speed > mSpeedLimmit) R.drawable.yi_biao_pan_bg_speeding else R.drawable.yi_biao_pan_bg_nor)
|
||||
}
|
||||
mSpeedLimmit = MogoMapUIController.getInstance()
|
||||
.getSpeedLimmit(mLatLng!!.longitude, mLatLng!!.latitude, mLatLng!!.bearing)
|
||||
UiThreadHandler.post {
|
||||
val speed = (mLatLng!!.speed * 3.6f).toInt()
|
||||
mSpeedChartView.setArcColor(Color.parseColor(if (speed > mSpeedLimmit) "#DB3137" else "#3E77F6"))
|
||||
mSpeedChartView.setValues(speed)
|
||||
setBackgroundResource(if (speed > mSpeedLimmit) R.drawable.yi_biao_pan_bg_speeding else R.drawable.yi_biao_pan_bg_nor)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,49 +3,58 @@ package com.mogo.eagle.core.function.hmi.ui.widget
|
||||
import android.content.Context
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.util.AttributeSet
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.annotation.Nullable
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.eagle.core.data.enums.SidePattern
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewNotification
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import kotlinx.android.synthetic.main.notification_v2x_msg_vr.view.*
|
||||
|
||||
/**
|
||||
* 默认预警弹窗实现
|
||||
*@author xiaoyuzhou
|
||||
*@date 2021/8/6 12:25 下午
|
||||
*/
|
||||
class V2XNotificationView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr) {
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : IViewNotification(context, attrs, defStyleAttr) {
|
||||
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.notification_v2x_msg_vr, this, true)
|
||||
// 设置View的出场位置
|
||||
sidePattern = SidePattern.RESULT_TOP
|
||||
layoutGravity = Gravity.CENTER_HORIZONTAL
|
||||
// 设置View的停留位置
|
||||
offsetX = 0
|
||||
offsetY = 110
|
||||
}
|
||||
|
||||
fun setWarningIcon(@DrawableRes warningIcon: Int) {
|
||||
override fun setWarningIcon(@DrawableRes warningIcon: Int) {
|
||||
UiThreadHandler.post {
|
||||
ivWaringIcon.setImageResource(warningIcon)
|
||||
}
|
||||
}
|
||||
|
||||
fun setWarningIcon(@Nullable drawable: Drawable) {
|
||||
override fun setWarningIcon(@Nullable drawable: Drawable) {
|
||||
UiThreadHandler.post {
|
||||
ivWaringIcon.setImageDrawable(drawable)
|
||||
}
|
||||
}
|
||||
|
||||
fun setWarningContent(@Nullable warningContent: CharSequence) {
|
||||
override fun setWarningContent(@Nullable warningContent: CharSequence) {
|
||||
UiThreadHandler.post {
|
||||
tvWaringContent.text = warningContent
|
||||
}
|
||||
}
|
||||
|
||||
fun setWarningContent(@StringRes warningContentId: Int) {
|
||||
override fun setWarningContent(@StringRes warningContentId: Int) {
|
||||
UiThreadHandler.post {
|
||||
tvWaringContent.setText(warningContentId)
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:visibility="gone" />
|
||||
tools:visibility="visible" />
|
||||
|
||||
|
||||
<!-- <com.mogo.eagle.core.function.hmi.ui.widget.SpeedLimitStatusView-->
|
||||
@@ -135,8 +135,8 @@
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLimitingVelocity"
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.LimitingVelocityView
|
||||
android:id="@+id/viewLimitingVelocity"
|
||||
android:layout_width="130px"
|
||||
android:layout_height="130px"
|
||||
android:layout_marginTop="30px"
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
android:background="@color/color_FF2966EC"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/llSpeedPosition"
|
||||
android:visibility="gone"/>
|
||||
android:visibility="visible"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvSystemOperation"
|
||||
@@ -162,7 +162,7 @@
|
||||
android:textSize="42px"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/llSpeedPosition"
|
||||
android:visibility="gone"/>
|
||||
android:visibility="visible"/>
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.CheckSystemView
|
||||
android:id="@+id/checkSystemView"
|
||||
@@ -171,7 +171,7 @@
|
||||
android:layout_marginTop="40px"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvSystemOperation"
|
||||
android:visibility="gone"/>
|
||||
android:visibility="visible"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/viewSystemVersion"
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLimitingVelocity"
|
||||
android:layout_width="130px"
|
||||
android:layout_height="130px"
|
||||
android:background="@drawable/bg_waring_limiting_velocity"
|
||||
android:elevation="@dimen/dp_10"
|
||||
android:gravity="center"
|
||||
android:text="60"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="@dimen/dp_60"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/ivCameraIcon"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
@@ -70,7 +70,7 @@ dependencies {
|
||||
api rootProject.ext.dependencies.mogoserviceapi
|
||||
api rootProject.ext.dependencies.moduleservice
|
||||
api rootProject.ext.dependencies.mogoservice
|
||||
api rootProject.ext.dependencies.mapcustom
|
||||
api rootProject.ext.dependencies.mogomap
|
||||
api rootProject.ext.dependencies.crashreportupgrade
|
||||
// api rootProject.ext.dependencies.crashreportbugly
|
||||
|
||||
@@ -96,7 +96,7 @@ dependencies {
|
||||
api project(':services:mogo-service')
|
||||
|
||||
api project(':modules:mogo-module-service')
|
||||
api project(':libraries:map-custom')
|
||||
api project(':libraries:mogo-map')
|
||||
api project(':test:crashreport-upgrade')
|
||||
// api project(':test:crashreport-bugly')
|
||||
api project(':test:crashreport-apmbyte')
|
||||
|
||||
@@ -270,7 +270,6 @@ public class EventDispatchCenter implements
|
||||
}
|
||||
}
|
||||
}
|
||||
CallerLogger.INSTANCE.i(M_MAIN +TAG, "onMapChanged event cost " + (System.currentTimeMillis() - start) + "ms");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.mogo.commons.mvp.MvpFragment;
|
||||
import com.mogo.eagle.core.data.constants.MoGoFragmentPaths;
|
||||
import com.mogo.eagle.core.data.map.MogoLocation;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||
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.utils.DisplayEffectsHelper;
|
||||
@@ -34,9 +35,11 @@ import com.mogo.eagle.core.utilcode.mogo.permissions.PermissionsDialogUtils;
|
||||
import com.mogo.eagle.core.utilcode.mogo.toast.ResourcesHelper;
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.ProcessUtils;
|
||||
import com.mogo.map.listener.IMogoHosListenerRegister;
|
||||
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.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.service.IMogoServiceApis;
|
||||
import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
|
||||
@@ -104,14 +107,14 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
|
||||
// if (CallChatApi.getInstance().getApiProvider() != null) {
|
||||
// CallChatApi.getInstance().getApiProvider().initVehicleTeamContainer("init", R.id.module_main_id_message_history_fragment_container, this);
|
||||
// }
|
||||
//申请悬浮窗权限
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
// 检查是否有悬浮窗权限
|
||||
if (Settings.canDrawOverlays(this)) {
|
||||
return;
|
||||
}
|
||||
PermissionsDialogUtils.openAppDetails(this, "显示悬浮窗", REQUEST_CODE_DIALOG);
|
||||
}
|
||||
// //申请悬浮窗权限
|
||||
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
// // 检查是否有悬浮窗权限
|
||||
// if (Settings.canDrawOverlays(this)) {
|
||||
// return;
|
||||
// }
|
||||
// PermissionsDialogUtils.openAppDetails(this, "显示悬浮窗", REQUEST_CODE_DIALOG);
|
||||
// }
|
||||
}
|
||||
|
||||
// 隐藏布局
|
||||
@@ -189,9 +192,10 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
|
||||
|
||||
MogoModulesManager.getInstance().init(this);
|
||||
|
||||
if (mServiceApis.getMapServiceApi() != null) {
|
||||
mServiceApis.getMapServiceApi().getHostListenerRegister().registerHostMapListener(EventDispatchCenter.getInstance());
|
||||
mServiceApis.getMapServiceApi().getHostListenerRegister().registerMarkerClickListener(EventDispatchCenter.getInstance());
|
||||
IMogoHosListenerRegister listenerRegister = CallerMapUIServiceManager.INSTANCE.getHostListenerRegister();
|
||||
if (listenerRegister != null) {
|
||||
listenerRegister.registerHostMapListener(EventDispatchCenter.getInstance());
|
||||
listenerRegister.registerMarkerClickListener(EventDispatchCenter.getInstance());
|
||||
}
|
||||
|
||||
initAdasControlStatusListener();
|
||||
@@ -376,8 +380,11 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
mServiceApis.getMapServiceApi().getHostListenerRegister().unregisterMarkerClickListener();
|
||||
mServiceApis.getMapServiceApi().getHostListenerRegister().unregisterHostMapListener();
|
||||
IMogoHosListenerRegister listenerRegister = CallerMapUIServiceManager.INSTANCE.getHostListenerRegister();
|
||||
if (listenerRegister != null) {
|
||||
listenerRegister.unregisterMarkerClickListener();
|
||||
listenerRegister.unregisterHostMapListener();
|
||||
}
|
||||
mServiceApis.getRegisterCenterApi().unregisterADASControlStatusChangedListener(TAG);
|
||||
mMogoStatusManager.setMainPageLaunchedStatus(TAG, false);
|
||||
mMogoStatusManager.setMainPageIsBackgroundStatus(TAG, false);
|
||||
@@ -386,7 +393,8 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
|
||||
mMogoFragmentManager.destroy();
|
||||
mMogoFragmentManager = null;
|
||||
}
|
||||
mServiceApis.getMapServiceApi().getMapUIController().destroy();
|
||||
IMogoMapUIController mapUIController = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
if (mapUIController != null) mapUIController.destroy();
|
||||
AdasConfigApiController.getInstance().release();
|
||||
mServiceApis.getAdasControllerApi().release();
|
||||
CallerLogger.INSTANCE.d(M_MAIN + TAG, "destroy.");
|
||||
|
||||
@@ -22,11 +22,14 @@ import com.mogo.eagle.core.data.constants.MogoServicePaths;
|
||||
import com.mogo.eagle.core.data.map.MogoLocation;
|
||||
import com.mogo.eagle.core.function.api.chat.biz.ChatConsts;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||
import com.mogo.eagle.core.function.notice.PushUIConstants;
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils;
|
||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
|
||||
import com.mogo.eagle.core.utilcode.util.ProcessUtils;
|
||||
import com.mogo.map.MapApiPath;
|
||||
import com.mogo.map.location.IMogoLocationClient;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.module.common.MogoModule;
|
||||
import com.mogo.module.common.MogoModulePaths;
|
||||
@@ -185,11 +188,11 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
||||
// clientConfig.setUseOriginSocket(true);
|
||||
|
||||
clientConfig.setIHttpDnsCurrentLocation(() -> {
|
||||
MogoLocation mogoLocation =
|
||||
MogoApisHandler.getInstance()
|
||||
.getApis().getMapServiceApi()
|
||||
.getSingletonLocationClient(getApp())
|
||||
.getLastKnowLocation();
|
||||
MogoLocation mogoLocation = null;
|
||||
IMogoLocationClient locationClient = CallerMapUIServiceManager.INSTANCE.getSingletonLocationClient(getApp());
|
||||
if (locationClient != null) {
|
||||
mogoLocation = locationClient.getLastKnowLocation();
|
||||
}
|
||||
HttpDnsSimpleLocation httpDnsSimpleLocation;
|
||||
if (mogoLocation != null
|
||||
&& mogoLocation.getLatitude() != 0
|
||||
@@ -214,7 +217,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
||||
e.printStackTrace();
|
||||
httpDnsSimpleLocation = new HttpDnsSimpleLocation("010", 1, 1);
|
||||
}
|
||||
CallerLogger.INSTANCE.d(M_MAIN+TAG, "使用缓存GPS信息:" + httpDnsSimpleLocation);
|
||||
CallerLogger.INSTANCE.d(M_MAIN + TAG, "使用缓存GPS信息:" + httpDnsSimpleLocation);
|
||||
}
|
||||
return httpDnsSimpleLocation;
|
||||
});
|
||||
@@ -224,7 +227,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
||||
new IMoGoTokenCallback() {
|
||||
@Override
|
||||
public void onTokenGot(String token, String sn) {
|
||||
CallerLogger.INSTANCE.d(M_MAIN+TAG, "onTokenGot ");
|
||||
CallerLogger.INSTANCE.d(M_MAIN + TAG, "onTokenGot ");
|
||||
// 异步初始化NetConfig
|
||||
asyncInit();
|
||||
// HttpDns ttl回调 --- socketTTL
|
||||
@@ -235,7 +238,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
||||
|
||||
@Override
|
||||
public void onError(int code, String msg) {
|
||||
CallerLogger.INSTANCE.d(M_MAIN+TAG, "初始化MogoAiCloudSdk failed ,reason : " + msg + " , 未能开启长链服务和初始化Modules服务");
|
||||
CallerLogger.INSTANCE.d(M_MAIN + TAG, "初始化MogoAiCloudSdk failed ,reason : " + msg + " , 未能开启长链服务和初始化Modules服务");
|
||||
}
|
||||
}
|
||||
);
|
||||
@@ -256,33 +259,36 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
||||
if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) {
|
||||
IMogoServiceApis apis = MogoApisHandler.getInstance().getApis();
|
||||
apis.getLocationInfoApi().start();
|
||||
apis.getMapServiceApi().getSingletonLocationClient(getApplicationContext()).addLocationListener(location -> {
|
||||
apis.getLocationInfoApi().provideLocation(location);
|
||||
});
|
||||
IMogoLocationClient locationClient = CallerMapUIServiceManager.INSTANCE.getSingletonLocationClient(getApplicationContext());
|
||||
if (locationClient != null) {
|
||||
locationClient.addLocationListener(location -> {
|
||||
apis.getLocationInfoApi().provideLocation(location);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void startSocketService() {
|
||||
CallerLogger.INSTANCE.d(M_MAIN+TAG, "startSocketService");
|
||||
CallerLogger.INSTANCE.d(M_MAIN + TAG, "startSocketService");
|
||||
IMogoServiceApis apis = MogoApisHandler.getInstance().getApis();
|
||||
// 关闭长链服务
|
||||
apis.getSocketManagerApi(getApplicationContext()).destroy();
|
||||
apis.getSocketManagerApi(this).registerLifecycleListener(10020, new IMogoLifecycleListener() {
|
||||
@Override
|
||||
public void onConnectFailure() {
|
||||
CallerLogger.INSTANCE.d(M_MAIN+TAG, "socket-onConnectFailure");
|
||||
CallerLogger.INSTANCE.d(M_MAIN + TAG, "socket-onConnectFailure");
|
||||
DebugConfig.setDownloadSnapshot(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectSuccess() {
|
||||
CallerLogger.INSTANCE.d(M_MAIN+TAG, "socket-onConnectSuccess");
|
||||
CallerLogger.INSTANCE.d(M_MAIN + TAG, "socket-onConnectSuccess");
|
||||
DebugConfig.setDownloadSnapshot(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectLost() {
|
||||
CallerLogger.INSTANCE.d(M_MAIN+TAG, "socket-onConnectLost");
|
||||
CallerLogger.INSTANCE.d(M_MAIN + TAG, "socket-onConnectLost");
|
||||
DebugConfig.setDownloadSnapshot(false);
|
||||
}
|
||||
});
|
||||
@@ -297,7 +303,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
||||
}
|
||||
|
||||
private void initModules() {
|
||||
CallerLogger.INSTANCE.d(M_MAIN+TAG, "initModules");
|
||||
CallerLogger.INSTANCE.d(M_MAIN + TAG, "initModules");
|
||||
//mogo deva tools
|
||||
MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_DEVA_TOOLS, "IMoGoDevaToolsProvider"));
|
||||
// 初始化 bugly 升级
|
||||
@@ -328,21 +334,10 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
||||
// 推送模块
|
||||
MogoModulePaths.addModule(new MogoModule(PushUIConstants.PATH, "PUSH_UI"));
|
||||
|
||||
|
||||
/*
|
||||
* 不同身份加载的特殊模块
|
||||
*/
|
||||
switch (FunctionBuildConfig.appIdentityMode) {
|
||||
// 司机身份专属模块
|
||||
case 0x00:
|
||||
// 地图数据收集模块
|
||||
MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_MAP_DATA_COLLECT_PROVIDER, "MoGoMapDataCollector"));
|
||||
break;
|
||||
case 0x01:
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
// 司机身份专属模块
|
||||
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
// 地图数据收集模块
|
||||
MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_MAP_DATA_COLLECT_PROVIDER, "MoGoMapDataCollector"));
|
||||
}
|
||||
|
||||
if (!DebugConfig.isLauncher()) {
|
||||
@@ -350,7 +345,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
||||
.getInstance().initManager(this);
|
||||
}
|
||||
|
||||
CallerLogger.INSTANCE.i(M_MAIN+TAG, "App launch timer cost " + (System.currentTimeMillis() - start) + "ms");
|
||||
CallerLogger.INSTANCE.i(M_MAIN + TAG, "App launch timer cost " + (System.currentTimeMillis() - start) + "ms");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -6,12 +6,15 @@ import android.os.Message;
|
||||
import android.os.SystemClock;
|
||||
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.eagle.core.data.BaseData;
|
||||
import com.mogo.eagle.core.data.map.MogoLocation;
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||
import com.mogo.eagle.core.network.RequestOptions;
|
||||
import com.mogo.eagle.core.network.SubscribeImpl;
|
||||
import com.mogo.eagle.core.network.utils.GsonUtil;
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
|
||||
import com.mogo.map.location.IMogoLocationClient;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
@@ -103,7 +106,11 @@ public class DelayCheckUtil implements Handler.Callback {
|
||||
}
|
||||
|
||||
private void startUpload() {
|
||||
MogoLocation lastLocation = MogoApisHandler.getInstance().getApis().getMapServiceApi().getSingletonLocationClient(context).getLastKnowLocation();
|
||||
IMogoLocationClient locationClient = CallerMapUIServiceManager.INSTANCE.getSingletonLocationClient(AbsMogoApplication.getApp());
|
||||
MogoLocation lastLocation = null;
|
||||
if (locationClient != null) {
|
||||
lastLocation = locationClient.getLastKnowLocation();
|
||||
}
|
||||
if (lastLocation == null) {
|
||||
handler.sendEmptyMessageDelayed(MSG_START_DELAY_CHECK, DELAY_CHECK_DELAY);
|
||||
return;
|
||||
|
||||
@@ -17,6 +17,7 @@ import com.mogo.eagle.core.function.main.EventDispatchCenter;
|
||||
import com.mogo.eagle.core.function.main.cards.MogoModulesManager;
|
||||
import com.mogo.eagle.core.function.main.delaycheck.DelayCheckUtil;
|
||||
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;
|
||||
@@ -76,8 +77,8 @@ class MogoMainService extends Service implements IMogoLocationListener {
|
||||
|
||||
private void initAndStartLocation() {
|
||||
CallerLogger.INSTANCE.d(M_MAIN + TAG, "开始定位");
|
||||
if (mServiceApis != null) {
|
||||
mLocationClient = mServiceApis.getMapServiceApi().getSingletonLocationClient(AbsMogoApplication.getApp());
|
||||
mLocationClient = CallerMapUIServiceManager.INSTANCE.getSingletonLocationClient(AbsMogoApplication.getApp());
|
||||
if (mLocationClient != null) {
|
||||
mLocationClient.addLocationListener(this);
|
||||
mLocationClient.start(2_000L);
|
||||
}
|
||||
|
||||
@@ -68,6 +68,7 @@ dependencies {
|
||||
|
||||
implementation rootProject.ext.dependencies.mogomap
|
||||
implementation rootProject.ext.dependencies.mogomapapi
|
||||
implementation rootProject.ext.dependencies.moduleservice
|
||||
} else {
|
||||
implementation project(':modules:mogo-module-common')
|
||||
implementation project(':services:mogo-service-api')
|
||||
@@ -81,6 +82,7 @@ dependencies {
|
||||
implementation project(":libraries:mogo-map")
|
||||
implementation project(":libraries:mogo-map-api")
|
||||
implementation project(':libraries:mogo-adas')
|
||||
implementation project(':modules:mogo-module-service')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package com.mogo.service.impl.map;
|
||||
package com.mogo.eagle.core.function.impl;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths;
|
||||
import com.mogo.eagle.core.function.api.map.IMogoMapService;
|
||||
import com.mogo.map.MogoGeoSearch;
|
||||
import com.mogo.map.MogoLocationClient;
|
||||
import com.mogo.map.MogoMap;
|
||||
@@ -22,7 +23,6 @@ import com.mogo.map.search.poisearch.IMogoPoiSearch;
|
||||
import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery;
|
||||
import com.mogo.map.search.traffic.IMogoTrafficSearch;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.service.map.IMogoMapService;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
@@ -1,34 +0,0 @@
|
||||
package com.mogo.eagle.core.function.impl.map
|
||||
|
||||
import android.content.Context
|
||||
import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths
|
||||
import com.mogo.eagle.core.function.api.map.location.IMoGoLocationUpdater4AutoPilot
|
||||
import com.mogo.eagle.core.utilcode.util.Utils
|
||||
import com.mogo.module.common.MogoApisHandler
|
||||
import com.mogo.service.IMogoServiceApis
|
||||
|
||||
|
||||
@Route(path = MogoServicePaths.PATH_MAP_LOCATION_UPDATE_4_AUTO_PILOT)
|
||||
class MoGoLocationUpdater4AutoPilot: IMoGoLocationUpdater4AutoPilot {
|
||||
|
||||
private val TAG = "MoGoLocationUpdater4AutoPilot"
|
||||
|
||||
override val functionName = TAG;
|
||||
|
||||
private val api: IMogoServiceApis? by lazy {
|
||||
MogoApisHandler.getInstance().apis
|
||||
}
|
||||
|
||||
override fun updateLocation(location: Any?) {
|
||||
api?.mapServiceApi?.getSingletonLocationClient(Utils.getApp())?.updateLocation(location);
|
||||
}
|
||||
|
||||
override fun init(context: Context?) {
|
||||
//DO NOTING
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
//DO NOTHING
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,18 @@
|
||||
package com.mogo.module.service.marker;
|
||||
package com.mogo.eagle.core.function.impl.marker;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths;
|
||||
import com.mogo.eagle.core.function.api.map.marker.IMogoMarkerService;
|
||||
import com.mogo.map.MogoMapUIController;
|
||||
import com.mogo.map.marker.IMogoMarker;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.module.common.drawer.MarkerDrawer;
|
||||
import com.mogo.module.common.entity.MarkerShowEntity;
|
||||
import com.mogo.module.service.MarkerServiceHandler;
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths;
|
||||
import com.mogo.service.module.IMogoMarkerService;
|
||||
import com.mogo.module.service.marker.MapMarkerManager;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
@@ -27,7 +29,7 @@ public class MogoMarkerServiceImpl implements IMogoMarkerService {
|
||||
@Override
|
||||
public IMogoMarker drawMarker( Object object ) {
|
||||
if ( object instanceof MarkerShowEntity ) {
|
||||
return MarkerServiceHandler.getMapMarkerManager().drawMapMarker( ( ( MarkerShowEntity ) object ), MarkerDrawer.MARKER_Z_INDEX_HIGH );
|
||||
return MapMarkerManager.getInstance().drawMapMarker( ( ( MarkerShowEntity ) object ), MarkerDrawer.MARKER_Z_INDEX_HIGH );
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -36,4 +38,9 @@ public class MogoMarkerServiceImpl implements IMogoMarkerService {
|
||||
public void init( Context context ) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMogoMapUIController getMapUIController() {
|
||||
return MogoMapUIController.getInstance();
|
||||
}
|
||||
}
|
||||
@@ -9,14 +9,17 @@ import androidx.annotation.Nullable;
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.mogo.commons.mvp.MvpFragment;
|
||||
import com.mogo.eagle.core.data.constants.MoGoFragmentPaths;
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths;
|
||||
import com.mogo.eagle.core.function.api.map.IMogoMapFrameController;
|
||||
import com.mogo.eagle.core.function.api.map.hd.IMoGoMapFragmentProvider;
|
||||
import com.mogo.eagle.core.function.call.base.CallerBase;
|
||||
import com.mogo.map.IMogoMap;
|
||||
import com.mogo.map.IMogoUiSettings;
|
||||
import com.mogo.map.MogoMapView;
|
||||
import com.mogo.map.uicontroller.EnumMapUI;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.service.map.IMogoMapFrameController;
|
||||
import com.mogo.service.IMogoServiceApis;
|
||||
|
||||
/**
|
||||
* @author donghongyu
|
||||
@@ -48,7 +51,7 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter >
|
||||
|
||||
@Override
|
||||
protected void initViews() {
|
||||
MogoApisHandler.getInstance().getApis().getMapFrameControllerApi().initDelegate( this );
|
||||
CallerBase.getApiInstance(IMogoMapFrameController.class, MogoServicePaths.PATH_MAP_FRAME_CONTROLLER).initDelegate(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -173,7 +176,7 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter >
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
MogoApisHandler.getInstance().getApis().getMapFrameControllerApi().destroy();
|
||||
CallerBase.getApiInstance(IMogoMapFrameController.class, MogoServicePaths.PATH_MAP_FRAME_CONTROLLER).destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,7 +4,7 @@ import android.content.Context;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths;
|
||||
import com.mogo.service.map.IMogoMapFrameController;
|
||||
import com.mogo.eagle.core.function.api.map.IMogoMapFrameController;
|
||||
|
||||
public
|
||||
/**
|
||||
|
||||
@@ -9,6 +9,7 @@ import android.text.TextUtils;
|
||||
|
||||
import com.mogo.cloud.socket.entity.SocketDownData;
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.function.monitoring.R;
|
||||
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
|
||||
@@ -77,7 +78,7 @@ public class CameraLiveNoticeHelper implements IMogoCloudOnMsgListener {
|
||||
|
||||
Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.icon_space, null);
|
||||
options.icon(bitmap);
|
||||
mMogoMarker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext)
|
||||
mMogoMarker = CallerMapUIServiceManager.INSTANCE.getMarkerManager(mContext)
|
||||
.addMarker(PushDataType.TYPE_PUSH_CAMERA_DATA, options);
|
||||
if (mMogoMarker != null) {
|
||||
mMogoMarker.setInfoWindowAdapter(new CameraWindow3DAdapter(AbsMogoApplication.getApp(), options));
|
||||
@@ -107,7 +108,7 @@ public class CameraLiveNoticeHelper implements IMogoCloudOnMsgListener {
|
||||
|
||||
Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.module_camera_normal_traffic, null);
|
||||
options.icon(bitmap);
|
||||
mMogoMarker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext)
|
||||
mMogoMarker = CallerMapUIServiceManager.INSTANCE.getMarkerManager(mContext)
|
||||
.addMarker(PushDataType.TYPE_PUSH_CAMERA_DATA, options);
|
||||
if (mMogoMarker != null) {
|
||||
mMogoMarker.setOwner(PushDataType.TYPE_PUSH_CAMERA_DATA);
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.function.monitoring.net.CameraListServices
|
||||
import com.mogo.map.MogoLocationClient
|
||||
import com.mogo.module.common.MogoApisHandler
|
||||
import com.mogo.module.common.constants.HostConst
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
@@ -86,7 +87,7 @@ class CronTaskManager(private var context: Context?) {
|
||||
* 请求路口一定范围内的设备信息(包含:摄像头、灯)
|
||||
*/
|
||||
private fun requestDeviceList() {
|
||||
MogoApisHandler.getInstance().apis.mapServiceApi.getSingletonLocationClient(context).lastKnowLocation?.let { location ->
|
||||
MogoLocationClient.getInstance(context).lastKnowLocation?.let { location ->
|
||||
disposable = netWork.create(CameraListServices::class.java, HostConst.CITY_HOST)
|
||||
.getDeviceList(location.longitude, location.latitude, 500)
|
||||
.subscribeOn(Schedulers.io())
|
||||
@@ -119,7 +120,7 @@ class CronTaskManager(private var context: Context?) {
|
||||
}
|
||||
|
||||
private fun requestCarCameraList() {
|
||||
MogoApisHandler.getInstance().apis.mapServiceApi.getSingletonLocationClient(context).lastKnowLocation?.let { location ->
|
||||
MogoLocationClient.getInstance(context).lastKnowLocation?.let { location ->
|
||||
carDisposable =
|
||||
netWork.create(CameraListServices::class.java, HostConst.CITY_HOST)
|
||||
.getCarCameraList(ReqLiveCarBean(location.longitude, location.latitude))
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.mogo.eagle.core.function.notice.model.PushBean
|
||||
import com.mogo.eagle.core.function.notice.utils.HandlerUtils
|
||||
import com.mogo.eagle.core.function.notice.view.getApis
|
||||
import com.mogo.eagle.core.function.notice.viewmodel.PushViewModel
|
||||
import com.mogo.map.MogoLocationClient
|
||||
import com.mogo.service.statusmanager.IMogoStatusChangedListener
|
||||
import com.mogo.service.statusmanager.StatusDescriptor
|
||||
import java.util.*
|
||||
@@ -48,7 +49,7 @@ class PushRepository(mContext: Context) {
|
||||
.pushBeanDao()
|
||||
}
|
||||
private val locationClient =
|
||||
getApis(mContext).mapServiceApi.getSingletonLocationClient(appContext)
|
||||
MogoLocationClient.getInstance(appContext)
|
||||
|
||||
private val mHandler = Handler(Looper.getMainLooper())
|
||||
|
||||
|
||||
@@ -12,11 +12,11 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.function.call.obu.CallerObuListenerManager
|
||||
import com.mogo.eagle.core.function.obu.mogo.utils.TrafficDataConvertUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
||||
import com.mogo.map.MogoMapUIController
|
||||
import com.mogo.module.common.datacenter.SnapshotLocationDataCenter
|
||||
import com.mogo.module.common.drawer.TrafficMarkerDrawer
|
||||
import com.mogo.module.common.enums.EventTypeEnum
|
||||
import com.mogo.service.IMogoServiceApis
|
||||
import com.mogo.service.map.IMogoMapService
|
||||
import com.zhidao.support.obu.MogoObuManager
|
||||
import com.zhidao.support.obu.OnMogoObuListener
|
||||
import com.zhidao.support.obu.constants.ObuConstants
|
||||
@@ -38,7 +38,6 @@ class MogoPrivateObuManager private constructor() {
|
||||
}
|
||||
|
||||
private var mMogoServiceApis: IMogoServiceApis? = null
|
||||
private var mIMogoMapService: IMogoMapService? = null
|
||||
private var mContext: Context? = null
|
||||
private var mObuStatusInfo = CallerObuListenerManager.getObuStatusInfo()
|
||||
|
||||
@@ -47,8 +46,6 @@ class MogoPrivateObuManager private constructor() {
|
||||
mMogoServiceApis = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS)
|
||||
.navigation(context) as IMogoServiceApis
|
||||
mContext = context
|
||||
mIMogoMapService = mMogoServiceApis!!.mapServiceApi
|
||||
|
||||
connectObu(context, ipAddress)
|
||||
MogoObuManager.getInstance().registerListener(mogoObuListener)
|
||||
}
|
||||
@@ -179,7 +176,7 @@ class MogoPrivateObuManager private constructor() {
|
||||
|
||||
// 使用与渠道配置一样的gps提供者提供的数据,app/productFlavors/fPadLenovo.gradle GPS_PROVIDER 0-Android系统,1-工控机,2-OBU
|
||||
if (2 == FunctionBuildConfig.gpsProvider) {
|
||||
mIMogoMapService?.mapUIController?.syncLocation2Map(data)
|
||||
MogoMapUIController.getInstance().syncLocation2Map(data)
|
||||
SnapshotLocationDataCenter.getInstance().syncAdasLocationInfo(data)
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.function.v2x.events.alarm.V2XAlarmServer
|
||||
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi
|
||||
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi.context
|
||||
@@ -341,7 +342,7 @@ object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallb
|
||||
v2xPolyline.points = pointsOdl
|
||||
|
||||
//CallerLogger.d("$M_V2X$TAG", "当前地图的缩放比例为:" + zoomLevel);
|
||||
val zoomLevel: Float = BridgeApi.mapUiController()?.zoomLevel ?: 0.0f
|
||||
val zoomLevel: Float = CallerMapUIServiceManager.getMapUIController()?.zoomLevel ?: 0.0f
|
||||
//CallerLogger.d("$M_V2X$TAG", "当前地图的缩放比例为:" + zoomLevel);
|
||||
if (zoomLevel > 0 && zoomLevel <= 17 && BridgeApi.v2xStatus()?.isRoadEventWindowShow == false) { // 缩放地图
|
||||
val context: Context = context()
|
||||
|
||||
@@ -7,7 +7,6 @@ import com.mogo.eagle.core.function.v2x.events.consts.MoGoV2XServicePaths
|
||||
import com.mogo.eagle.core.function.v2x.events.manager.*
|
||||
import com.mogo.eagle.core.function.v2x.events.network.V2XRefreshModel
|
||||
import com.mogo.eagle.core.utilcode.util.Utils
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController
|
||||
import com.mogo.module.common.MogoApisHandler
|
||||
import com.mogo.service.statusmanager.IMogoStatusManager
|
||||
import java.lang.ref.WeakReference
|
||||
@@ -61,18 +60,10 @@ internal object BridgeApi {
|
||||
|
||||
fun context(): Context = this.context.get()?.get() ?: Utils.getApp()
|
||||
|
||||
fun mapUiController(): IMogoMapUIController? = apis?.mapServiceApi?.mapUIController
|
||||
|
||||
fun map() = apis?.mapServiceApi
|
||||
|
||||
fun statusManager(): IMogoStatusManager? = apis?.statusManagerApi
|
||||
|
||||
fun analytics() = apis?.analyticsApi
|
||||
|
||||
fun overlay() = apis?.mapServiceApi?.getOverlayManager(context())
|
||||
|
||||
fun marker() = apis?.mapServiceApi?.getMarkerManager(context())
|
||||
|
||||
fun v2xMarker() = v2xMarker
|
||||
|
||||
fun v2xPolyline() = v2xPolyline
|
||||
@@ -98,8 +89,4 @@ internal object BridgeApi {
|
||||
fun intentManager() = apis?.intentManagerApi
|
||||
|
||||
fun actionManager() = apis?.actionManagerApi
|
||||
|
||||
fun locationClient() = apis?.mapServiceApi?.getSingletonLocationClient(context())
|
||||
|
||||
fun markerService() = apis?.markerService
|
||||
}
|
||||
@@ -12,6 +12,7 @@ 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;
|
||||
@@ -54,7 +55,7 @@ public class MoGoPersonWarnPolylineManager implements IMoGoPersonWarnPolylineMan
|
||||
options.add(locations.get(i));
|
||||
}
|
||||
// 绘制线的对象
|
||||
IMogoOverlayManager overlay = BridgeApi.INSTANCE.overlay();
|
||||
IMogoOverlayManager overlay = MogoOverlayManager.getInstance();
|
||||
if (overlay != null) {
|
||||
mMogoPolyline = overlay.addPolyline(options);
|
||||
mMogoPolyline.setTransparency(0.5f);
|
||||
|
||||
@@ -12,6 +12,7 @@ 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;
|
||||
@@ -53,7 +54,7 @@ public class MoGoStopPolylineManager implements IMoGoStopPolylineManager {
|
||||
options.add(locations.get(i));
|
||||
}
|
||||
// 绘制线的对象
|
||||
IMogoOverlayManager overlay = BridgeApi.INSTANCE.overlay();
|
||||
IMogoOverlayManager overlay = MogoOverlayManager.getInstance();
|
||||
if (overlay != null) {
|
||||
mMogoPolyline = overlay.addPolyline(options);
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
|
||||
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.data.map.MogoLocation;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
@@ -21,6 +22,8 @@ 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.util.ViewUtils;
|
||||
import com.mogo.map.MogoMapUIController;
|
||||
import com.mogo.map.MogoMarkerManager;
|
||||
import com.mogo.map.marker.IMogoMarker;
|
||||
import com.mogo.map.marker.IMogoMarkerClickListener;
|
||||
import com.mogo.map.marker.IMogoMarkerManager;
|
||||
@@ -74,7 +77,7 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
|
||||
}
|
||||
clearAlarmPOI();
|
||||
// 锁车
|
||||
IMogoMapUIController mapUiController = BridgeApi.INSTANCE.mapUiController();
|
||||
IMogoMapUIController mapUiController = MogoMapUIController.getInstance();
|
||||
if (mapUiController != null) {
|
||||
mapUiController.recoverLockMode();
|
||||
}
|
||||
@@ -231,7 +234,7 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
|
||||
@Override
|
||||
public void drawableAlarmPOI(Context context, V2XRoadEventEntity roadEventEntity, IMogoMarkerClickListener clickListener) {
|
||||
try {
|
||||
IMogoMapUIController mapUiController = BridgeApi.INSTANCE.mapUiController();
|
||||
IMogoMapUIController mapUiController = MogoMapUIController.getInstance();
|
||||
if (mapUiController != null) {
|
||||
mapUiController.changeMapMode(EnumMapUI.NorthUP_2D);
|
||||
}
|
||||
@@ -273,7 +276,7 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
|
||||
mAlarmInfoMarker = MarkerDrawer.getInstance().drawMapMarkerImpl(markerShowEntity, MarkerDrawer.MARKER_Z_INDEX_HIGH, clickListener);
|
||||
} else {
|
||||
optionsRipple.icon(V2XMarkerAdapter.getV2XRoadEventViewPng(context, roadEventEntity));
|
||||
IMogoMarkerManager marker = BridgeApi.INSTANCE.marker();
|
||||
IMogoMarkerManager marker = MogoMarkerManager.getInstance(context);
|
||||
if (marker != null) {
|
||||
mAlarmInfoMarker = marker.addMarker(V2X_EVENT_ALARM_POI, optionsRipple);
|
||||
}
|
||||
@@ -319,7 +322,7 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
|
||||
@Override
|
||||
public void clearALLPOI() {
|
||||
try {
|
||||
IMogoMarkerManager markerManager = BridgeApi.INSTANCE.marker();
|
||||
IMogoMarkerManager markerManager = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
|
||||
if (markerManager != null) {
|
||||
markerManager.removeMarkers();
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.mogo.eagle.core.function.v2x.events.consts.MoGoV2XServicePaths;
|
||||
import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XPolylineManager;
|
||||
import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XStatusManager;
|
||||
import com.mogo.eagle.core.function.v2x.events.manager.V2XStatusManager;
|
||||
import com.mogo.map.MogoOverlayManager;
|
||||
import com.mogo.map.overlay.IMogoOverlayManager;
|
||||
import com.mogo.map.overlay.IMogoPolyline;
|
||||
import com.mogo.map.overlay.MogoPolylineOptions;
|
||||
@@ -90,7 +91,7 @@ public class MoGoV2XPolylineManager implements IMoGoV2XPolylineManager {
|
||||
options.add(V2XStatusManager.getInstance().getTargetMoGoLatLng());
|
||||
|
||||
// 绘制线的对象
|
||||
IMogoOverlayManager overlay = BridgeApi.INSTANCE.overlay();
|
||||
IMogoOverlayManager overlay = MogoOverlayManager.getInstance();
|
||||
if (overlay != null) {
|
||||
mMogoPolyline = overlay.addPolyline(options);
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ 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;
|
||||
@@ -61,7 +62,7 @@ public class MoGoWarnPolylineManager implements IMoGoWarnPolylineManager {
|
||||
}
|
||||
// 绘制线的对象
|
||||
|
||||
IMogoOverlayManager overlay = BridgeApi.INSTANCE.overlay();
|
||||
IMogoOverlayManager overlay = MogoOverlayManager.getInstance();
|
||||
if (overlay != null) {
|
||||
mMogoPolyline = overlay.addPolyline(options);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.mogo.eagle.core.data.map.MogoLocation;
|
||||
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
|
||||
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;
|
||||
@@ -65,7 +66,7 @@ public class V2XOptimalRouteOverlay {
|
||||
// 线条粗细,渐变,渐变色值
|
||||
mPolylineOptions.width(25).useGradient(true).colorValues(mPolylineColors);
|
||||
// 绘制线
|
||||
IMogoOverlayManager overlay = BridgeApi.INSTANCE.overlay();
|
||||
IMogoOverlayManager overlay = MogoOverlayManager.getInstance();
|
||||
if (overlay != null) {
|
||||
mMoGoPolyline = overlay.addPolyline(mPolylineOptions);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.mogo.eagle.core.function.v2x.events.scenario.scene.warning.V2XFrontWa
|
||||
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
|
||||
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;
|
||||
import com.mogo.module.common.entity.V2XMessageEntity;
|
||||
@@ -105,7 +106,7 @@ public class V2XScenarioManager implements IV2XScenarioManager {
|
||||
* 道路事件触发后,切换到中景
|
||||
*/
|
||||
private void sceneChange() {
|
||||
IMogoMapUIController mapUiController = BridgeApi.INSTANCE.mapUiController();
|
||||
IMogoMapUIController mapUiController = MogoMapUIController.getInstance();
|
||||
if (mapUiController != null && mapUiController.getCurrentMapVisualAngle() != VisualAngleMode.MODE_MEDIUM_SIGHT) {
|
||||
mapUiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
|
||||
import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XMarkerManager;
|
||||
import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XPolylineManager;
|
||||
import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XMarker;
|
||||
import com.mogo.map.MogoMapUIController;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.module.common.entity.V2XRoadEventEntity;
|
||||
|
||||
@@ -31,7 +32,7 @@ public class V2XRoadEventMarker implements IV2XMarker<V2XRoadEventEntity> {
|
||||
@Override
|
||||
public void clearPOI() {
|
||||
// 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随
|
||||
IMogoMapUIController mapUiController = BridgeApi.INSTANCE.mapUiController();
|
||||
IMogoMapUIController mapUiController = MogoMapUIController.getInstance();
|
||||
if (mapUiController != null) {
|
||||
mapUiController.loseLockMode();
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.mogo.eagle.core.function.v2x.events.entity.net.V2XOptimalRouteDataRes
|
||||
import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XMarkerManager;
|
||||
import com.mogo.eagle.core.function.v2x.events.observer.V2XOptimalRouteObserver;
|
||||
import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XMarker;
|
||||
import com.mogo.map.MogoMapUIController;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
|
||||
/**
|
||||
@@ -41,7 +42,7 @@ public class V2XOptimalRouteVREventMarker implements IV2XMarker<V2XOptimalRouteD
|
||||
@Override
|
||||
public void clearPOI() {
|
||||
// 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随
|
||||
IMogoMapUIController mapUiController = BridgeApi.INSTANCE.mapUiController();
|
||||
IMogoMapUIController mapUiController = MogoMapUIController.getInstance();
|
||||
if (mapUiController != null) {
|
||||
mapUiController.loseLockMode();
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_CLOUD_STOP_
|
||||
import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_CLOUD_WARN_DATA;
|
||||
|
||||
import com.mogo.cloud.commons.utils.CoordinateUtils;
|
||||
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.utilcode.mogo.logger.CallerLogger;
|
||||
@@ -17,6 +18,7 @@ import com.mogo.eagle.core.function.v2x.events.manager.IMoGoWarnPolylineManager;
|
||||
import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XMarker;
|
||||
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.module.common.MogoApisHandler;
|
||||
@@ -92,7 +94,7 @@ public class V2XWarningMarker implements IV2XMarker {
|
||||
} else {
|
||||
}
|
||||
//二轮车和行人的渲染和移动
|
||||
IMogoMarkerManager marker = BridgeApi.INSTANCE.marker();
|
||||
IMogoMarkerManager marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
|
||||
if (marker != null) {
|
||||
marker.removeMarkers(TYPE_MARKER_CLOUD_WARN_DATA);
|
||||
}
|
||||
@@ -208,7 +210,7 @@ public class V2XWarningMarker implements IV2XMarker {
|
||||
stopPolyLineManager.clearLine();
|
||||
}
|
||||
|
||||
IMogoMarkerManager marker = BridgeApi.INSTANCE.marker();
|
||||
IMogoMarkerManager marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
|
||||
if (marker != null) {
|
||||
//清除小箭头
|
||||
marker.removeMarkers(WARNING_ARROWS);
|
||||
@@ -257,7 +259,7 @@ public class V2XWarningMarker implements IV2XMarker {
|
||||
private void handleStopLine() {
|
||||
try {
|
||||
if (mCloundWarningInfo != null) {
|
||||
IMogoMarkerManager marker = BridgeApi.INSTANCE.marker();
|
||||
IMogoMarkerManager marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
|
||||
if (marker != null) {
|
||||
marker.removeMarkers(TYPE_MARKER_CLOUD_STOP_LINE_DATA);
|
||||
}
|
||||
@@ -435,7 +437,7 @@ public class V2XWarningMarker implements IV2XMarker {
|
||||
|
||||
@Override
|
||||
public void clearPOI() {
|
||||
IMogoMarkerManager marker = BridgeApi.INSTANCE.marker();
|
||||
IMogoMarkerManager marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
|
||||
if (marker != null) {
|
||||
marker.removeMarkers(V2X_FRONT_WARNING_MARKER);
|
||||
}
|
||||
|
||||
@@ -2,10 +2,13 @@ package com.mogo.eagle.core.function.v2x.events.utils;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_V2X;
|
||||
|
||||
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.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.utilcode.util.AppUtils;
|
||||
import com.mogo.map.location.IMogoLocationClient;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
@@ -31,14 +34,14 @@ public class LocationUtils {
|
||||
MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat(),
|
||||
MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon()
|
||||
);
|
||||
IMogoLocationClient locationClient = BridgeApi.INSTANCE.locationClient();
|
||||
IMogoLocationClient locationClient = CallerMapUIServiceManager.INSTANCE.getSingletonLocationClient(AbsMogoApplication.getApp());
|
||||
if (locationClient != null) {
|
||||
MogoLocation location = locationClient.getLastKnowLocation();
|
||||
if (location != null) {
|
||||
latLon = new MogoLatLng(location.getLatitude(), location.getLongitude());
|
||||
}
|
||||
}
|
||||
IMogoMapUIController mapUiController = BridgeApi.INSTANCE.mapUiController();
|
||||
IMogoMapUIController mapUiController = CallerMapUIServiceManager.INSTANCE.getMapUIController();
|
||||
if (mapUiController != null) {
|
||||
latLon = mapUiController.getWindowCenterLocation();
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.v2x.events.utils
|
||||
import android.content.Context
|
||||
import android.graphics.Rect
|
||||
import com.mogo.eagle.core.data.map.MogoLatLng
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi
|
||||
import com.mogo.eagle.core.utilcode.util.WindowUtils
|
||||
import com.mogo.module.common.MogoApisHandler
|
||||
@@ -45,7 +46,9 @@ class MapUtils {
|
||||
MogoApisHandler.getInstance().apis.adasControllerApi.lastLon
|
||||
)
|
||||
// 调整自适应的地图镜头
|
||||
BridgeApi.mapUiController()?.showBounds("MapUtils", carLocation, listOf(latLng), mBoundRect, true)
|
||||
carLocation?.let {
|
||||
CallerMapUIServiceManager.getMapUIController()?.showBounds("MapUtils", it, listOf(latLng), mBoundRect, true)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ 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;
|
||||
|
||||
/**
|
||||
@@ -98,7 +99,7 @@ public class CarZegoLiveVideoView extends RoundLayout {
|
||||
*/
|
||||
private void playLiveVideo() {
|
||||
if (mSurfaceView != null) {
|
||||
IMogoLocationClient locationClient = BridgeApi.INSTANCE.locationClient();
|
||||
IMogoLocationClient locationClient = MogoLocationClient.getInstance(getContext());
|
||||
MogoLocation mogoLocation = null;
|
||||
if (locationClient != null) {
|
||||
mogoLocation = locationClient.getLastKnowLocation();
|
||||
|
||||
@@ -28,6 +28,7 @@ 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.eagle.core.widget.media.video.SimpleVideoPlayer;
|
||||
import com.mogo.map.MogoLocationClient;
|
||||
import com.mogo.map.location.IMogoLocationClient;
|
||||
import com.mogo.module.common.entity.MarkerCarInfo;
|
||||
import com.shuyu.gsyvideoplayer.GSYVideoManager;
|
||||
@@ -163,7 +164,7 @@ public class V2XCrossRoadVideoView extends RoundLayout {
|
||||
}
|
||||
//重新获取直播流地址
|
||||
else {
|
||||
IMogoLocationClient iMogoLocationClient = BridgeApi.INSTANCE.locationClient();
|
||||
IMogoLocationClient iMogoLocationClient = MogoLocationClient.getInstance(getContext());
|
||||
if (iMogoLocationClient != null) {
|
||||
MogoLocation mogoLocation = iMogoLocationClient.getLastKnowLocation();
|
||||
if (mogoLocation == null) {
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener
|
||||
import com.mogo.eagle.core.function.api.vip.IMoGoVipSetListener
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.function.call.trafficlight.CallTrafficLightListenerManager
|
||||
import com.mogo.eagle.core.function.call.vip.CallVipSetListenerManager
|
||||
import com.mogo.eagle.core.function.v2x.vip.VipCarManager
|
||||
@@ -97,11 +98,10 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener,
|
||||
CallerLogger.d("$M_V2X$TAG", "speed is:$speed")
|
||||
if (speed <= 2.5f) return// 小于等于9km/h不处理
|
||||
// 由于到路口100m时回调不准,手动计算直线距离
|
||||
val distance = MogoApisHandler.getInstance().apis.mapServiceApi
|
||||
.mapUIController.calculateLineDistance(
|
||||
MogoLatLng(it.latitude, it.longitude),
|
||||
MogoLatLng(trafficLightResult.lat, trafficLightResult.lon)
|
||||
)
|
||||
val distance = CallerMapUIServiceManager.getMapUIController()?.calculateLineDistance(
|
||||
MogoLatLng(it.latitude, it.longitude),
|
||||
MogoLatLng(trafficLightResult.lat, trafficLightResult.lon)
|
||||
) ?: 0f
|
||||
CallerLogger.d(
|
||||
"$M_V2X$TAG",
|
||||
"路口经度为:${trafficLightResult.lon},纬度为:${trafficLightResult.lat};车的经度为:${it.longitude},纬度为:${it.latitude};两点距离为:${distance}"
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.location.Location;
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
|
||||
import com.mogo.eagle.core.function.call.v2x.CallLimitingVelocityListenerManager;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.map.MogoMapUIController;
|
||||
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
|
||||
@@ -33,8 +34,8 @@ public class SpeedLimitDataManager implements IMogoCarLocationChangedListener2 {
|
||||
@Override
|
||||
public void run() {
|
||||
if (mLocation != null){
|
||||
if (MogoApisHandler.getInstance().getApis().getMapServiceApi() != null && MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController() != null) {
|
||||
int speedLimmit = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getSpeedLimmit(mLocation.getLongitude(), mLocation.getLatitude(), mLocation.getBearing());
|
||||
if (MogoMapUIController.getInstance() != null) {
|
||||
int speedLimmit = MogoMapUIController.getInstance().getSpeedLimmit(mLocation.getLongitude(), mLocation.getLatitude(), mLocation.getBearing());
|
||||
UiThreadHandler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.mogo.eagle.core.data.trafficlight.TrafficLightDetail
|
||||
import com.mogo.eagle.core.data.trafficlight.TrafficLightResult
|
||||
import com.mogo.eagle.core.data.trafficlight.isInRange
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.function.call.trafficlight.CallTrafficLightListenerManager
|
||||
import com.mogo.eagle.core.function.v2x.trafficlight.TrafficLightHMIManager
|
||||
import com.mogo.eagle.core.function.v2x.trafficlight.core.TrafficLightThreadHandler.Companion.MSG_WHAT_LOOP_SEARCH_CROSS_ROAD
|
||||
@@ -53,8 +54,7 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 {
|
||||
CallTrafficLightListenerManager.resetTrafficLightData()
|
||||
}
|
||||
mLocation?.let { it ->
|
||||
val tileId = MogoApisHandler.getInstance().apis
|
||||
.mapServiceApi.mapUIController.getTileId(it.longitude, it.latitude)
|
||||
val tileId = CallerMapUIServiceManager.getMapUIController()?.getTileId(it.longitude, it.latitude) ?: 0
|
||||
trafficLightNetWorkModel.requestRoadID(
|
||||
tileId, it.latitude, it.longitude, it.bearing.toDouble(),
|
||||
{
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.location.Location
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.Message
|
||||
import androidx.core.content.contentValuesOf
|
||||
import com.mogo.cloud.commons.utils.CoordinateUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X
|
||||
import com.mogo.eagle.core.data.trafficlight.*
|
||||
@@ -13,6 +14,7 @@ import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
|
||||
import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.function.call.trafficlight.CallTrafficLightListenerManager
|
||||
import com.mogo.eagle.core.function.call.vip.CallVipSetListenerManager
|
||||
import com.mogo.eagle.core.function.v2x.trafficlight.core.MogoTrafficLightManager
|
||||
@@ -130,16 +132,24 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
|
||||
//如果上次结果和本次灯态结果变化比较大,则已变灯,控制HMI展示弹窗
|
||||
if (abs(currentResult!!.remain - it.remain) > 5 && currentResult.isGreen()) {
|
||||
CallerLogger.d("$M_V2X$TAG", "调用showWarningV2X to show")
|
||||
CallerHmiManager.showWarningV2X(EventTypeEnum.TYPE_VIP_IDENTIFICATION.poiType.toInt(), EventTypeEnum.TYPE_VIP_IDENTIFICATION.content, EventTypeEnum.TYPE_VIP_IDENTIFICATION.tts, EventTypeEnum.TYPE_VIP_IDENTIFICATION.poiType, object : IMoGoWarningStatusListener {
|
||||
override fun onShow() {}
|
||||
override fun onDismiss() {
|
||||
CallerLogger.d(
|
||||
"$M_V2X$TAG",
|
||||
"showWarningV2X vip dismiss , resetConditions"
|
||||
)
|
||||
resetConditions()
|
||||
}
|
||||
}, true, 5000L)
|
||||
CallerHmiManager.showWarningV2X(
|
||||
EventTypeEnum.TYPE_VIP_IDENTIFICATION.poiType.toInt(),
|
||||
EventTypeEnum.TYPE_VIP_IDENTIFICATION.content,
|
||||
EventTypeEnum.TYPE_VIP_IDENTIFICATION.tts,
|
||||
EventTypeEnum.TYPE_VIP_IDENTIFICATION.poiType,
|
||||
object : IMoGoWarningStatusListener {
|
||||
override fun onShow() {}
|
||||
override fun onDismiss() {
|
||||
CallerLogger.d(
|
||||
"$M_V2X$TAG",
|
||||
"showWarningV2X vip dismiss , resetConditions"
|
||||
)
|
||||
resetConditions()
|
||||
}
|
||||
},
|
||||
true,
|
||||
5000L
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,12 +244,14 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
|
||||
}
|
||||
|
||||
private fun turnLight(controlTime: Int) {
|
||||
result?.let {
|
||||
val bearing =
|
||||
MogoApisHandler.getInstance().apis.mapServiceApi.getSingletonLocationClient(mContext).lastKnowLocation.bearing.toDouble()
|
||||
if (result == null || mContext == null) return
|
||||
val locationClient = CallerMapUIServiceManager.getSingletonLocationClient(mContext!!)
|
||||
if (locationClient != null) {
|
||||
var bearing =
|
||||
locationClient.lastKnowLocation.bearing.toDouble()
|
||||
CallerLogger.d("$M_V2X$TAG", "turnLight -- bearing : $bearing")
|
||||
MogoTrafficLightManager.INSTANCE.turnLightToGreen(
|
||||
it.lightId, it.crossId, bearing, controlTime,
|
||||
result!!.lightId, result!!.crossId, bearing, controlTime,
|
||||
{
|
||||
CallerLogger.d("$M_V2X$TAG", "变灯请求成功")
|
||||
},
|
||||
|
||||
@@ -65,4 +65,10 @@ object HmiBuildConfig {
|
||||
*/
|
||||
@JvmField
|
||||
var isShowTrafficLightView = false
|
||||
|
||||
/**
|
||||
* 是否显示摄像头图标
|
||||
*/
|
||||
@JvmField
|
||||
var isShowCameraView = true
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.eagle.core.function.hmi.notification.enums
|
||||
package com.mogo.eagle.core.data.enums
|
||||
|
||||
/**
|
||||
* @author: donghongyu
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.eagle.core.function.hmi.notification.enums
|
||||
package com.mogo.eagle.core.data.enums
|
||||
|
||||
/**
|
||||
* @author: donghongyu
|
||||
@@ -51,9 +51,11 @@ dependencies {
|
||||
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
|
||||
implementation rootProject.ext.dependencies.mogo_core_data
|
||||
compileOnly rootProject.ext.dependencies.adasHigh
|
||||
compileOnly rootProject.ext.dependencies.mogomapapi
|
||||
} else {
|
||||
implementation project(':core:mogo-core-data')
|
||||
compileOnly project(':libraries:mogo-adas')
|
||||
compileOnly project(':libraries:mogo-map-api')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.mogo.eagle.core.function.api.hmi
|
||||
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewLimitingVelocity
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewNotification
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight
|
||||
|
||||
/**
|
||||
* 设置HMI中控件代理接口
|
||||
*/
|
||||
interface IMoGoHmiViewProxy {
|
||||
|
||||
|
||||
/**
|
||||
* 设置 V2X预警 代理View
|
||||
* @param view
|
||||
*/
|
||||
fun setProxyNotificationView(view: IViewNotification)
|
||||
|
||||
/**
|
||||
* 设置 红绿灯 代理View
|
||||
* @param view
|
||||
*/
|
||||
fun setProxyTrafficLightView(view: IViewTrafficLight)
|
||||
|
||||
/**
|
||||
* 设置 限速 代理View
|
||||
* @param view
|
||||
*/
|
||||
fun setProxyLimitingSpeedView(view: IViewLimitingVelocity)
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.mogo.eagle.core.function.api.hmi.view
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.widget.LinearLayout
|
||||
|
||||
/**
|
||||
* 定义限速View具备的接口
|
||||
*/
|
||||
abstract class IViewLimitingVelocity(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) :
|
||||
LinearLayout(context, attrs, defStyleAttr) {
|
||||
|
||||
/**
|
||||
* 更新限速数据
|
||||
* @param limitingSpeed 限速值,单位:km/h
|
||||
*/
|
||||
open fun updateLimitingSpeed(limitingSpeed: Int) {}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.mogo.eagle.core.function.api.hmi.view
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.util.AttributeSet
|
||||
import android.view.Gravity
|
||||
import android.widget.LinearLayout
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.annotation.IntDef
|
||||
import androidx.annotation.Nullable
|
||||
import androidx.annotation.StringRes
|
||||
import com.mogo.eagle.core.data.enums.SidePattern
|
||||
|
||||
/**
|
||||
* 定义 通知视图 接口
|
||||
*/
|
||||
abstract class IViewNotification(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) :
|
||||
LinearLayout(context, attrs, defStyleAttr) {
|
||||
|
||||
@kotlin.annotation.Retention(AnnotationRetention.SOURCE)
|
||||
@IntDef(*[
|
||||
Gravity.LEFT, Gravity.RIGHT,
|
||||
Gravity.TOP, Gravity.BOTTOM,
|
||||
Gravity.START, Gravity.END,
|
||||
Gravity.CENTER_HORIZONTAL, Gravity.CENTER_VERTICAL,
|
||||
Gravity.FILL_HORIZONTAL, Gravity.FILL_VERTICAL,
|
||||
])
|
||||
annotation class GravityFlag
|
||||
|
||||
/**
|
||||
* 视图布局
|
||||
*/
|
||||
@GravityFlag
|
||||
open var layoutGravity: Int = Gravity.CENTER_HORIZONTAL
|
||||
|
||||
/**
|
||||
* 视图动画的出场方式
|
||||
*/
|
||||
open var sidePattern: SidePattern = SidePattern.RESULT_TOP
|
||||
|
||||
/**
|
||||
* 距离屏幕左上角 0,0点 X 轴距离,单位:px
|
||||
*/
|
||||
open var offsetX: Int = 0
|
||||
|
||||
/**
|
||||
* 距离屏幕左上角 0,0点 Y 轴距离,单位:px
|
||||
*/
|
||||
open var offsetY: Int = 0
|
||||
|
||||
open fun setWarningIcon(@DrawableRes warningIcon: Int) {}
|
||||
|
||||
open fun setWarningIcon(@Nullable drawable: Drawable) {}
|
||||
|
||||
open fun setWarningContent(@Nullable warningContent: CharSequence) {}
|
||||
|
||||
open fun setWarningContent(@StringRes warningContentId: Int) {}
|
||||
}
|
||||
@@ -4,13 +4,13 @@ import android.view.View
|
||||
import com.mogo.eagle.core.data.enums.WarningDirectionEnum
|
||||
import com.mogo.eagle.core.data.notice.NoticeNormalData
|
||||
import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight
|
||||
import com.mogo.eagle.core.function.api.hmi.IMoGoHmiViewProxy
|
||||
|
||||
/**
|
||||
* @author xiaoyuzhou
|
||||
* @date 2021/8/2 7:36 下午
|
||||
*/
|
||||
interface IMoGoWaringProvider {
|
||||
interface IMoGoWaringProvider : IMoGoHmiViewProxy {
|
||||
|
||||
/**
|
||||
* 隐藏 脉速表
|
||||
@@ -42,6 +42,8 @@ interface IMoGoWaringProvider {
|
||||
*/
|
||||
fun setToolsViewVisibility(visibility: Int)
|
||||
|
||||
fun setCameraViewVisibility(visibility: Int)
|
||||
|
||||
/**
|
||||
* 控制转向灯
|
||||
*/
|
||||
@@ -213,9 +215,4 @@ interface IMoGoWaringProvider {
|
||||
fun showBadCaseFloat(tag: String = "BadCaseFloat", floatView: View): () -> Unit
|
||||
|
||||
|
||||
/**
|
||||
* 设置红绿灯代理View
|
||||
* @param view
|
||||
*/
|
||||
fun setProxyTrafficLightView(view: IViewTrafficLight)
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.service.map;
|
||||
package com.mogo.eagle.core.function.api.map;
|
||||
|
||||
import com.alibaba.android.arouter.facade.template.IProvider;
|
||||
import com.mogo.map.IDestroyable;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.service.map;
|
||||
package com.mogo.eagle.core.function.api.map;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
package com.mogo.eagle.core.function.api.map.location
|
||||
|
||||
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider
|
||||
|
||||
/**
|
||||
* @author renwj
|
||||
* @date 2021/11/04 16:10 下午
|
||||
* 此类主要用来同步自动驾驶定位信息给各业务方
|
||||
*/
|
||||
interface IMoGoLocationUpdater4AutoPilot : IMoGoFunctionServerProvider {
|
||||
|
||||
fun updateLocation(location: Any?)
|
||||
}
|
||||
@@ -1,9 +1,10 @@
|
||||
package com.mogo.service.module;
|
||||
package com.mogo.eagle.core.function.api.map.marker;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.alibaba.android.arouter.facade.template.IProvider;
|
||||
import com.mogo.map.marker.IMogoMarker;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
@@ -19,4 +20,6 @@ public interface IMogoMarkerService extends IProvider {
|
||||
*/
|
||||
@Nullable
|
||||
IMogoMarker drawMarker( Object object );
|
||||
|
||||
IMogoMapUIController getMapUIController();
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user