[Update]Map按照新架构重构

This commit is contained in:
chenfufeng
2022-03-16 17:50:57 +08:00
parent 95c7251b54
commit 989f59678d
111 changed files with 5552 additions and 524 deletions

View File

@@ -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
@@ -127,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)

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)
}
}
}

View File

@@ -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)
}
}
}

View File

@@ -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')

View File

@@ -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.");

View File

@@ -21,13 +21,15 @@ import com.mogo.eagle.core.data.constants.MoGoConfig;
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.logger.CallerLogger;
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;
@@ -186,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
@@ -257,9 +259,12 @@ 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);
});
}
}
}

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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')
}
}

View File

@@ -0,0 +1,89 @@
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;
import com.mogo.map.MogoMapUIController;
import com.mogo.map.MogoMarkerManager;
import com.mogo.map.MogoOverlayManager;
import com.mogo.map.MogoPoiSearch;
import com.mogo.map.MogoTrafficSearch;
import com.mogo.map.listener.IMogoHosListenerRegister;
import com.mogo.map.listener.MogoHosListenerRegister;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.overlay.IMogoOverlayManager;
import com.mogo.map.search.geo.IMogoGeoSearch;
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;
/**
* @author congtaowang
* @since 2019-12-18
* <p>
* 地图对外地接口
*/
@Route(path = MogoServicePaths.PATH_SERVICES_MAP)
public class MogoMapService implements IMogoMapService {
@Override
public IMogoLocationClient getSingletonLocationClient(Context context) {
return MogoLocationClient.getInstance(context);
}
@Override
public IMogoGeoSearch getGeoSearch(Context context) {
return new MogoGeoSearch(context);
}
@Override
public IMogoPoiSearch getPoiSearch(Context context, MogoPoiSearchQuery query) {
return new MogoPoiSearch(context, query);
}
@Override
public IMogoMarkerManager getMarkerManager(Context context) {
return MogoMarkerManager.getInstance(context);
}
@Override
public IMogoMapUIController getMapUIController() {
return MogoMapUIController.getInstance();
}
@Override
public IMogoHosListenerRegister getHostListenerRegister() {
return MogoHosListenerRegister.getInstance();
}
@Override
public IMogoOverlayManager getOverlayManager(Context context) {
return MogoOverlayManager.getInstance();
}
@Override
public IMogoTrafficSearch getTrafficSearchApi() {
return new MogoTrafficSearch();
}
@Override
public String getMapVersion() {
if (MogoMap.getInstance().getMogoMap() != null) {
return MogoMap.getInstance().getMogoMap().getMapVersion();
} else {
return "0";
}
}
@Override
public void init(Context context) {
}
}

View File

@@ -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
}
}

View File

@@ -0,0 +1,46 @@
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.marker.MapMarkerManager;
/**
* @author congtaowang
* @since 2020-05-27
* <p>
* 调用 #mogo-module-service# 模块的样式打点
*/
@Route( path = MogoServicePaths.PATH_MARKER_SERVICE )
public class MogoMarkerServiceImpl implements IMogoMarkerService {
private static final String TAG = "MogoMarkerServiceImpl";
@Nullable
@Override
public IMogoMarker drawMarker( Object object ) {
if ( object instanceof MarkerShowEntity ) {
return MapMarkerManager.getInstance().drawMapMarker( ( ( MarkerShowEntity ) object ), MarkerDrawer.MARKER_Z_INDEX_HIGH );
}
return null;
}
@Override
public void init( Context context ) {
}
@Override
public IMogoMapUIController getMapUIController() {
return MogoMapUIController.getInstance();
}
}

View File

@@ -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

View File

@@ -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
/**

View File

@@ -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);

View File

@@ -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))

View File

@@ -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())

View File

@@ -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)
}

View File

@@ -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()

View File

@@ -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
}

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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();
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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();
}

View File

@@ -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();
}

View File

@@ -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);
}

View File

@@ -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();
}

View File

@@ -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()
}

View File

@@ -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();

View File

@@ -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) {

View File

@@ -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}"

View File

@@ -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() {

View File

@@ -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(),
{

View File

@@ -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", "变灯请求成功")
},