Merge branch 'dev_arch_opt_3.0' into dev_robobus-m1-p-app-module_1.0.0_230112_1.0.0

This commit is contained in:
yangyakun
2023-02-12 12:33:45 +08:00
116 changed files with 1485 additions and 739 deletions

View File

@@ -22,6 +22,7 @@ import androidx.constraintlayout.widget.Group;
import com.mogo.commons.mvp.IView;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.commons.mvp.Presenter;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
@@ -29,6 +30,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager;
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView;
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView;
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
@@ -38,6 +40,7 @@ import com.mogo.eagle.core.function.view.MapBizView;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.MogoMapUIController;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.listener.MogoMapListenerHandler;
import com.mogo.map.uicontroller.IMogoMapUIController;
@@ -51,6 +54,8 @@ import com.mogo.och.common.module.utils.SoundPoolHelper;
import org.greenrobot.eventbus.EventBus;
import java.util.Objects;
import mogo.telematics.pad.MessagePad;
import record_cache.RecordPanelOuterClass;
@@ -141,10 +146,18 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
if (controller != null) {
//切换地图的远近视图
if (controller.getCurrentMapVisualAngle().isLongSight()) {
CallerVisualAngleManager.INSTANCE.updateLongSightLevel(false);
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(true);
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium);
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
CallerVisualAngleManager.INSTANCE.updateLongSightLevel(true);
if (FunctionBuildConfig.isRomaMode) {
controller.setRomaMode(1);
} else {
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(false);
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
}
mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long);
} else {
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);

View File

@@ -1,5 +1,7 @@
package com.mogo.och.taxi.passenger.model;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P;
import android.content.Context;
import com.amap.api.services.core.AMapException;
@@ -17,8 +19,6 @@ import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P;
/**
* @author: wangmingjun
* @date: 2021/12/6

View File

@@ -14,10 +14,12 @@ import androidx.fragment.app.FragmentTransaction;
import com.mogo.commons.module.status.MogoStatusManager;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.call.map.CallerSmpManager;
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager;
import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxBubbleView;
import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxButtonView;
import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxListView;
@@ -40,6 +42,7 @@ import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.lang.ref.WeakReference;
import java.util.Objects;
/**
@@ -147,10 +150,18 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
if (controller != null) {
//切换地图的远近视图
if (controller.getCurrentMapVisualAngle().isLongSight()) {
CallerVisualAngleManager.INSTANCE.updateLongSightLevel(false);
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(true);
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_medium);
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
CallerVisualAngleManager.INSTANCE.updateLongSightLevel(true);
if (FunctionBuildConfig.isRomaMode) {
controller.setRomaMode(1);
} else {
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(false);
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
}
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_long);
} else {
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);

View File

@@ -25,6 +25,7 @@ import androidx.fragment.app.FragmentTransaction;
import com.mogo.commons.mvp.IView;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.commons.mvp.Presenter;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
@@ -32,6 +33,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager;
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView;
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView;
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
@@ -41,6 +43,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.MogoMapUIController;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.map.uicontroller.VisualAngleMode;
@@ -48,6 +51,7 @@ import com.mogo.och.common.module.utils.AnimatorDrawableUtil;
import com.mogo.och.taxi.R;
import java.util.Arrays;
import java.util.Objects;
import mogo.telematics.pad.MessagePad;
import record_cache.RecordPanelOuterClass;
@@ -192,10 +196,18 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
if (controller != null) {
//切换地图的远近视图
if (controller.getCurrentMapVisualAngle().isLongSight()) {
CallerVisualAngleManager.INSTANCE.updateLongSightLevel(false);
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(true);
controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);
} else if (controller.getCurrentMapVisualAngle().isMediumSight()) {
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
CallerVisualAngleManager.INSTANCE.updateLongSightLevel(true);
if (FunctionBuildConfig.isRomaMode) {
controller.setRomaMode(1);
} else {
Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(false);
controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
}
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_long);
} else {
mSwitchBtnIcon.setImageResource(R.drawable.taxi_switch_map_medium);

View File

@@ -1031,12 +1031,6 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
DataDistribution.getInstance().addData(base);
}
@Override
public void onObuWarningData(MessagePad.Header header, ObuWarningEvent.ObuWarningData obuWarningData) {
ObuWarningData base = new ObuWarningData(header, obuWarningData, sdf);
DataDistribution.getInstance().addData(base);
}
@Override
public void onoObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) {

View File

@@ -546,11 +546,6 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
}
@Override
public void onObuWarningData(MessagePad.Header header, ObuWarningEvent.ObuWarningData obuWarningData) {
}
@Override
public void onoObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) {

View File

@@ -1,6 +1,7 @@
ext {
time = ""
kotlin_version = "1.4.31"
// kotlin_version = "1.4.31"
kotlin_version = "1.5.0"
dependencies = [
// androidx
androidxappcompat : "androidx.appcompat:appcompat:1.3.1",
@@ -22,9 +23,10 @@ ext {
// amapnavi3dmap : "com.amap.api:navi-3dmap:8.0.1_3dmap8.0.1",
// amapsearch : "com.amap.api:search:7.9.0",
// amaplocation : "com.amap.api:location:5.5.0",
amapnavi3dmap : "com.amap.api:navi-3dmap:9.5.1_3dmap9.5.0",
amapnavi3dmap : "com.amap.api:navi-3dmap:9.6.0_3dmap9.6.0",
amapsearch : "com.amap.api:search:9.5.0",
amaplocation : "com.amap.api:location:6.2.0",
// json 转换
gson : "com.google.code.gson:gson:2.8.4",
// 内存泄漏检测
@@ -135,10 +137,8 @@ ext {
mogologlib : "com.mogo.module:module-loglib:${LOGLIB_VERSION}",
kotlingradleplugin : "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}",
crashreport : "com.mogo.test:crashreport:${CRASHREPORT_VERSION}",
crashreportbugly : "com.mogo.test:crashreport-bugly:${CRASHREPORT_BUGLY_VERSION}",
crashreportapmbyte : "com.mogo.test:crashreport-apmbyte:${CRASHREPORT_APMBYTE_VERSION}",
crashreportnoop : "com.mogo.test:crashreport-noop:${CRASHREPORT_NOOP_VERSION}",
crashreportupgrade : "com.mogo.test:crashreport-upgrade:${CRASHREPORT_UPGRADE_VERSION}",
apm_insight : 'com.volcengine:apm_insight:1.4.9.cn-rc.5',
apm_insight_crash : 'com.volcengine:apm_insight_crash:1.4.6-rc.14',
cicle_indicator : 'me.relex:circleindicator:2.1.6',

View File

@@ -12,17 +12,17 @@ interface TrafficLightApiService {
//获取前方路口RoadID
@FormUrlEncoded
@POST("ai-roadInfo-service/cross/near")
@POST("eagle-eye-dns/ai-roadInfo-service/cross/near")
suspend fun getFrontRoadID(@FieldMap roadID: Map<String, String>): BaseResponse<RoadIDResult>
//获取前方红绿灯状态
@FormUrlEncoded
@POST("mec-etl-server/light/bgd/channel/realTime")
@POST("eagle-eye-dns/mec-etl-server/light/bgd/channel/realTime")
suspend fun getTrafficLight(@FieldMap status: Map<String, String>): BaseResponse<TrafficLightResult>
//变灯
@FormUrlEncoded
@POST("mec-etl-server/light/bdg/newTask")
@POST("eagle-eye-dns/mec-etl-server/light/bdg/newTask")
suspend fun changeLight(@FieldMap turnLight: Map<String, String>): BaseResponse<TrafficLightControl>
}

View File

@@ -1,18 +1,18 @@
package com.mogo.eagle.function.biz.v2x.trafficlight.network
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.constants.HostConst
import com.mogo.eagle.core.data.BaseResponse
import com.mogo.eagle.core.data.trafficlight.*
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.apiCall
import com.mogo.eagle.core.network.cancel
import com.mogo.eagle.core.network.request
import com.mogo.commons.constants.HostConst.CITY_HOST
import com.mogo.eagle.core.utilcode.util.GsonUtils
class TrafficLightNetWorkModel {
private fun getNetWorkApi(baseUrl: String = CITY_HOST): TrafficLightApiService {
private fun getNetWorkApi(baseUrl: String = HostConst.getEagleHost()): TrafficLightApiService {
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
.create(TrafficLightApiService::class.java)
}

View File

@@ -7,7 +7,7 @@ import retrofit2.http.*
interface VipApiService {
//查询是否为VIP车辆
@GET("/dataService/carUser/getVipStatusBySn")
@GET("eagle-eye-dns/dataService/carUser/getVipStatusBySn")
suspend fun requestVip(@Query("sn") sn: String): BaseResponse<VipRequest>
}

View File

@@ -1,17 +1,17 @@
package com.mogo.eagle.function.biz.v2x.vip.network
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.constants.HostConst
import com.mogo.eagle.core.data.BaseResponse
import com.mogo.eagle.core.data.v2x.VipRequest
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.apiCall
import com.mogo.eagle.core.network.request
import com.mogo.commons.constants.HostConst.DATA_SERVICE_HOST
class VipNetWorkModel {
private fun getNetWorkApi(baseUrl: String = DATA_SERVICE_HOST): VipApiService {
private fun getNetWorkApi(baseUrl: String = HostConst.getEagleHost()): VipApiService {
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
.create(VipApiService::class.java)
}

View File

@@ -44,7 +44,7 @@ MogoObuManager.getInstance().init(Context context);
```
## 连接
```java
//默认192.168.8.199
//默认192.168.1.199
MogoObuManager.getInstance().connect();
//自定义 IP
MogoObuManager.getInstance().connect(String ip);

View File

@@ -526,16 +526,6 @@ class MoGoAdasListenerImpl : OnAdasListener {
}
}
/**
* OBU预警事件
*
* @param header 头
* @param obuWarningData 数据
*/
override fun onObuWarningData(header: MessagePad.Header?, obuWarningData: ObuWarningEvent.ObuWarningData?) {
CallerObuDcCombineListenerManager.invokeObuDcData(obuWarningData)
}
/**
* OBU 红绿灯预警信息
*

View File

@@ -16,7 +16,9 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02Lis
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
import com.mogo.eagle.core.function.call.obu.CallerObuLocationWGS84ListenerManager
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
import com.mogo.eagle.core.utilcode.util.*
import com.mogo.eagle.core.utilcode.util.CoordinateTransform
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.Utils
import com.mogo.support.obu.model.MogoObuHvBasicsData
import mogo.telematics.pad.MessagePad
@@ -86,6 +88,11 @@ object MoGoLocationDispatcher :
lastGnssLocation.lastReceiveTime = TimeUtils.getNowMills()
// 将高德中的一些用于业务的数据进行融合例如CityCode、address等
mapLocation?.let {
//agps 高德
//agps_rtk 高德-高精
lastGnssLocation.locType = 1000 // 定位类型为WGS84进行转译的坐标
lastGnssLocation.satellite = 4
lastGnssLocation.cityName = it.city
lastGnssLocation.cityCode = it.cityCode
lastGnssLocation.provider = it.provider
@@ -142,6 +149,9 @@ object MoGoLocationDispatcher :
lastGaoDeLocation.satelliteTime = it.time
lastGaoDeLocation.lastReceiveTime = TimeUtils.getNowMills()
lastGaoDeLocation.locType = 1 // 定位类型为高德坐标(网路或者硬件定位)
lastGaoDeLocation.satellite = 4
lastGaoDeLocation.cityName = it.city
lastGaoDeLocation.cityCode = it.cityCode
lastGaoDeLocation.provider = it.provider
@@ -225,6 +235,11 @@ object MoGoLocationDispatcher :
// 将高德中的一些用于业务的数据进行融合例如CityCode、address等
mapLocation?.let {
//agps 高德
//agps_rtk 高德-高精
lastOBULocation.locType = 1000 // 定位类型为WGS84进行转译的坐标
lastOBULocation.satellite = 4
lastOBULocation.cityName = it.city
lastOBULocation.cityCode = it.cityCode
lastOBULocation.provider = it.provider

View File

@@ -22,8 +22,7 @@ class MoGoObuProvider : IMoGoObuProvider {
private val TAG = "MoGoObuProvider"
private var mContext: Context? = null
private val busObuIp = "192.168.8.199"
private val taxiObuIp = "192.168.1.199"
private val taxiObuIp = "192.168.1.199" //obu的taxi和bus的ip已经全部统一成1网段ip
override val functionName: String
get() = TAG
@@ -38,35 +37,16 @@ class MoGoObuProvider : IMoGoObuProvider {
CallerLogger.d("$M_OBU$TAG", "初始化蘑菇自研OBU…… localIp = " + CommonUtils.getLocalIPAddress())
//bus乘客版本obu功能去掉大理项目需要全部车辆接收不在限制
// if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)
// && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)
// ) {
// //不处理
// } else {
mContext = context
mContext?.let {
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { //bus 司机端
val ipAddress =
SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, busObuIp)
//mogo obu
MogoPrivateObuNewManager.INSTANCE.connectObu(
it,
ipAddress,
CommonUtils.getIpAddressString()
)
} else if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) { //taxi 司机端和乘客端
val ipAddress =
SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, taxiObuIp)
//mogo obu
MogoPrivateObuNewManager.INSTANCE.connectObu(
it,
ipAddress,
CommonUtils.getIpAddressString()
)
}
}
// }
mContext = context
mContext?.let {
val ipAddress = SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, taxiObuIp)
//mogo obu
MogoPrivateObuNewManager.INSTANCE.connectObu(
it,
ipAddress,
CommonUtils.getIpAddressString()
)
}
}
/**

View File

@@ -148,6 +148,10 @@ class DevaToolsProvider : IDevaToolsProvider {
upgradeManager.downLoadPackage(mContext!!, downloadKey, downloadUrl)
}
override fun updateUpgradeProgress() {
upgradeManager.updateUpgradeProgress(mContext!!)
}
override fun showStatusBar(ctx: Context, container: ViewGroup) {
StatusManager.init(ctx)
StatusManager.show(container)

View File

@@ -8,9 +8,9 @@ import retrofit2.http.*
internal interface BadCaseApi {
@FormUrlEncoded
@POST("/yycp-vehicle-management-service/tool/badcase/add/v2")
@POST("eagle-eye-dns/yycp-vehicle-management-service/tool/badcase/add/v2")
suspend fun post(@FieldMap map: Map<String, String>): Response<UploadResult>
@GET("/yycp-vehicle-management-service/tool/badcase/reasons")
@GET("eagle-eye-dns/yycp-vehicle-management-service/tool/badcase/reasons")
suspend fun get(@Query("channel", encoded = true) channel: String, @Query("pageNo") pageNo: Int): Response<BadCaseResponse>
}

View File

@@ -17,6 +17,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
import com.zhjt.mogo_core_function_devatools.upgrade.IPCUpgradeManager.Companion.ipcUpgradeManager
import com.zhjt.mogo_core_function_devatools.upgrade.ObuUpgradeAppNetWorkManager
import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeAppNetWorkManager
import mogo.telematics.pad.MessagePad
@@ -160,4 +161,13 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener {
.getAppUpgradeInfo(mContext, mAddress, role.toString() + "")
}
}
/**
* 司机屏 处理obu升级即可,乘客屏不需要处理 TODO OBU的角色
*
*/
fun queryObuUpgrade() {
ObuUpgradeAppNetWorkManager.getInstance().getObuUpgradeInfo(mContext, mAddress, role.toString() + "")
}
}

View File

@@ -8,7 +8,7 @@ import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import com.mogo.eagle.core.data.mofang.MfConstants
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.updateMfStatusView
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager.invokeMoFangStatus
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_F
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
@@ -96,7 +96,7 @@ class MoFangManager private constructor() {
BluetoothDevice.ACTION_ACL_CONNECTED -> { //蓝牙设备已连接
if (!isMfConnect) {
// showBondedDevice(mBluetoothAdapter)
updateMfStatusView(TAG, true)
invokeMoFangStatus(true)
isMfConnect = true
mContext?.let { SharedPrefsMgr.getInstance(it).putBoolean(MfConstants.BLUETOOTH_STATUS, true) }
}
@@ -106,7 +106,7 @@ class MoFangManager private constructor() {
BluetoothDevice.ACTION_ACL_DISCONNECTED -> { //蓝牙设备已断开 主动更新
CallerLogger.d("$M_F${TAG}","bluetoothMonitorReceiver ACTION_ACL_DISCONNECTED ----- isMfConnect = $isMfConnect ")
if (isMfConnect) {
updateMfStatusView(TAG, false)
invokeMoFangStatus(false)
isMfConnect = false
mContext?.let { SharedPrefsMgr.getInstance(it).putBoolean(MfConstants.BLUETOOTH_STATUS, false) }
}

View File

@@ -0,0 +1,95 @@
package com.zhjt.mogo_core_function_devatools.upgrade;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BINDING;
import android.content.Context;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.constants.HostConst;
import com.mogo.eagle.core.data.bindingcar.UpgradeAppInfo;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.network.MoGoRetrofitFactory;
import com.mogo.eagle.core.network.utils.GsonUtil;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.AppUtils;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.RequestBody;
/**
* @author lixiaopeng
* @description 获取obu升级信息
* @since: 3/25/22
*/
public class ObuUpgradeAppNetWorkManager {
private static volatile ObuUpgradeAppNetWorkManager requestNoticeManager;
private final UpgradeApiService mUpgradeApiService;
private static final String TAG = "ObuUpgrade";
private ObuUpgradeAppNetWorkManager() {
mUpgradeApiService = MoGoRetrofitFactory.getInstance(HostConst.getHost())
.create(UpgradeApiService.class);
}
public static ObuUpgradeAppNetWorkManager getInstance() {
if (requestNoticeManager == null) {
synchronized (ObuUpgradeAppNetWorkManager.class) {
if (requestNoticeManager == null) {
requestNoticeManager = new ObuUpgradeAppNetWorkManager();
}
}
}
return requestNoticeManager;
}
/**
* 获取obu升级信息
* mac 工控机mac地址
* screenType 类型
*/
public void getObuUpgradeInfo(Context context, String mac, String screenType) {
// String sn = "X20202203105S688HZ";
// String mac = "48:b0:2d:3a:bc:78";
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
int versionCode = AppUtils.getAppVersionCode();
CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo mac = " + mac + "---type = " + screenType + "---sn = " + sn + "---versionCode =" + versionCode);
UpgradeAppRequest request = new UpgradeAppRequest(sn, mac, screenType);
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request));
mUpgradeApiService.getUpgradeInfo(requestBody)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<UpgradeAppInfo>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull UpgradeAppInfo info) {
if (info != null && info.result != null) {
CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo url = " + info.result.getAppUrl() + "----code = " + info.result.getVersionCode() + "--versionCode =" + versionCode + "--info.result = " + info.result);
if (info.result.getVersionCode() > versionCode) {
CallerHmiManager.INSTANCE.showUpgradeDialog(info.result.getAppUrl().substring(info.result.getAppUrl().lastIndexOf("/")+1), info.result.getAppUrl(), info.result.getInstallTitle(), info.result.getInstallContent(), info.result.getInstallType());
}
} else {
CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo onNext info == null");
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
}

View File

@@ -1,7 +1,12 @@
package com.zhjt.mogo_core_function_devatools.upgrade
import android.app.NotificationManager
import android.content.Context
import androidx.core.app.NotificationCompat
import com.elegant.utils.UiThreadHandler
import com.mogo.eagle.core.function.api.devatools.IMogoDevaToolsUpgradeListener
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsUpgradeListenerManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.updateStatusBarDownloadView
import com.mogo.eagle.core.utilcode.breakpoint.Config
import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean
import com.mogo.eagle.core.utilcode.breakpoint.callback.IDownload
@@ -110,4 +115,36 @@ class UpgradeManager : IDownload {
}
}
}
fun updateUpgradeProgress(context: Context) {
val builder = NotificationCompat.Builder(context)
// builder.setSmallIcon(R.mipmap.icon1001);//todo emArrow 更换图标,去除地图下载图标的依赖关系
builder.setContentTitle("下载")
builder.setContentText("正在下载")
val manager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
CallerDevaToolsUpgradeListenerManager.addListener(
TAG,
object : IMogoDevaToolsUpgradeListener {
override fun onStart(url: String?) {}
override fun onPause(url: String?) {}
override fun onProgress(url: String?, length: Int) {
builder.setProgress(100, length, false)
manager.notify(0x3, builder.build())
//下载进度提示
builder.setContentText("已下载$length%")
updateStatusBarDownloadView(true, "download", length)
}
override fun onFinished(url: String?) {
builder.setContentText("已下载" + 100 + "%")
UiThreadHandler.postDelayed({
manager.cancel(0x3)
updateStatusBarDownloadView(false, "download", 100)
}, 1000)
}
override fun onError(url: String?, errorMsg: String?) {}
})
}
}

View File

@@ -80,18 +80,17 @@ dependencies {
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
compileOnly rootProject.ext.dependencies.mogocommons
compileOnly rootProject.ext.dependencies.mogo_core_res
api rootProject.ext.dependencies.mogo_core_res
compileOnly rootProject.ext.dependencies.mogo_core_utils
compileOnly rootProject.ext.dependencies.mogo_core_function_datacenter
compileOnly rootProject.ext.dependencies.mogo_core_function_call
compileOnly project(':libraries:mogo-adas')
} else {
api project(':test:crashreport-upgrade')
api project(':test:crashreport-apmbyte')
compileOnly project(':core:function-impl:mogo-core-function-datacenter')
compileOnly project(':foudations:mogo-commons')
compileOnly project(':core:mogo-core-res')
api project(':core:mogo-core-res')
compileOnly project(':core:mogo-core-utils')
compileOnly project(':core:mogo-core-function-call')
compileOnly project(':libraries:mogo-adas')

View File

@@ -1,7 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.mogo.eagle.core.function.hmi">
<uses-permission android:name="android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />
<uses-permission android:name="android.permission.BIND_APPWIDGET" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
<uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS" />
<uses-permission android:name="com.android.launcher3.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission
android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
@@ -39,6 +56,7 @@
android:clearTaskOnLaunch="${ACTIVITY_ROOT}"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
android:enabled="true"
android:hardwareAccelerated="true"
android:launchMode="singleTop"
android:resizeableActivity="false"
android:resumeWhilePausing="true"
@@ -119,6 +137,16 @@
</intent-filter>
</activity>
<activity
android:name="com.mogo.eagle.core.function.main.AppListActivity"
android:exported="true"
android:launchMode="singleTask">
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN"/>-->
<!-- <category android:name="android.intent.category.LAUNCHER"/>-->
<!-- </intent-filter>-->
</activity>
<meta-data
android:name="MAP_SDK_VERSION111111"
android:value="${MAP_SDK_VERSION}" />

View File

@@ -87,10 +87,6 @@ class MoGoHmiProvider : IMoGoHmiProvider {
)
}
override fun updateMfStatus(tag: String, status: Boolean) {
CallerHmiViewControlListenerManager.updateMfStatus(StatusBarView.TAG, tag, status)
}
/**
* 不展示顶部弹窗,其它保留
*/

View File

@@ -629,6 +629,33 @@ internal class DebugSettingView @JvmOverloads constructor(
}
}
tbV2NFromCar.isChecked = FunctionBuildConfig.isV2NFromCar
//v2n车端预警
tbV2NFromCar.setOnCheckedChangeListener { _, isChecked ->
FunctionBuildConfig.isV2NFromCar = isChecked
if (!FunctionBuildConfig.isV2NFromCar) {
tbV2NFromCar.isChecked = false
}
}
tbDrawAiCloudFusion.isChecked = FunctionBuildConfig.isDrawAiCloudFusion
//云端感知绘制
tbDrawAiCloudFusion.setOnCheckedChangeListener { _, isChecked ->
FunctionBuildConfig.isDrawAiCloudFusion = isChecked
if (!FunctionBuildConfig.isDrawAiCloudFusion) {
tbDrawAiCloudFusion.isChecked = false
}
}
tbDrawRomaMode.isChecked = FunctionBuildConfig.isRomaMode
//roma
tbDrawRomaMode.setOnCheckedChangeListener { _, isChecked ->
FunctionBuildConfig.isRomaMode = isChecked
if (!FunctionBuildConfig.isRomaMode) {
tbDrawRomaMode.isChecked = false
}
}
//重启工控机所有节点
btnIpcReboot.onClick {
CallerAutoPilotControlManager.sendIpcReboot()

View File

@@ -175,11 +175,7 @@ internal class SOPSettingView @JvmOverloads constructor(
tbObu.isChecked = CallerObuApiManager.isConnected()
tbObu.setOnCheckedChangeListener { _, isChecked ->
if (!isChecked) {
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) {
CallerObuApiManager.resetObuIpAddress("192.168.1.199")
} else if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
CallerObuApiManager.resetObuIpAddress("192.168.8.199")
}
CallerObuApiManager.resetObuIpAddress("192.168.1.199")
} else {
//断开链接
CallerObuApiManager.disConnectObu()

View File

@@ -77,8 +77,11 @@ class PncActionsView @JvmOverloads constructor(
UiThreadHandler.post {
var actions: String? = null
planningActionMsg.actionMsg?.let { it ->
actions = PncActionsHelper.getAction(it.drivingState.number, it.drivingAction.number)
try {
actions = PncActionsHelper.getAction(it.drivingState.number, it.drivingAction.number)
} catch (e:Exception){
e.printStackTrace()
}
//如果是存在云端红绿灯数据条件下,设置云端数据
if (PncActionsHelper.isWaitingTrafficlight(it.drivingState.number, it.drivingAction.number)
&& mTrafficLightResult != null

View File

@@ -4,7 +4,13 @@ import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.RelativeLayout
import com.mogo.eagle.core.data.mofang.MfConstants
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
import kotlinx.android.synthetic.main.view_blue_tooth.view.*
import kotlinx.android.synthetic.main.view_status_bar.view.*
/**
* 魔戒蓝牙控件
@@ -14,10 +20,38 @@ class BlueToothView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : RelativeLayout(context, attrs, defStyleAttr) {
) : RelativeLayout(context, attrs, defStyleAttr),IMoGoDevaToolsListener {
companion object{
private const val TAG = "BlueToothView"
}
init {
LayoutInflater.from(context).inflate(R.layout.view_blue_tooth, this, true)
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
val isBluetoothConnect =
SharedPrefsMgr.getInstance(context).getBoolean(MfConstants.BLUETOOTH_STATUS, false)
if (isBluetoothConnect) {
mofangStatus(true)
}
CallerDevaToolsListenerManager.addListener(TAG, this)
}
override fun mofangStatus(status: Boolean) {
super.mofangStatus(status)
if (status) {
mofangView.setImageResource(R.drawable.icon_bluetooth_p)
} else {
mofangView.setImageResource(R.drawable.blue_tooth)
}
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
CallerDevaToolsListenerManager.removeListener(TAG)
}
}

View File

@@ -7,14 +7,12 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.LinearLayout
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.mofang.MfConstants
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
import kotlinx.android.synthetic.main.view_status_bar.view.*
import java.util.concurrent.CopyOnWriteArrayList
@@ -39,11 +37,6 @@ class StatusBarView @JvmOverloads constructor(
override fun onAttachedToWindow() {
super.onAttachedToWindow()
viewStatusBarRight.addView(BatteryGroupView(this.context))
val isBluetoothConnect =
SharedPrefsMgr.getInstance(context).getBoolean(MfConstants.BLUETOOTH_STATUS, false)
if (isBluetoothConnect) {
updateMfStatus("MoFangManager", true)
}
//添加view控制
CallerHmiViewControlListenerManager.addListener(TAG,this)
@@ -106,14 +99,6 @@ class StatusBarView @JvmOverloads constructor(
}
}
override fun updateMfStatus(tag: String, status: Boolean) {
if (status) {
viewMofangStatus.setImageResource(R.drawable.icon_bluetooth_p)
} else {
viewMofangStatus.setImageResource(R.drawable.blue_tooth)
}
}
private fun setTextColor(color: Int) {
viewTextClock.setTextColor(color)
viewStatusBarTag.setTextColor(color)

View File

@@ -11,7 +11,9 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.main.AppListActivity
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.util.ActivityUtils
import com.mogo.eagle.core.utilcode.util.AppUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import kotlinx.android.synthetic.main.view_version_name.view.*
@@ -44,6 +46,12 @@ class VersionNameView @JvmOverloads constructor(
showCurrentPadVersion()
showCurrentMapVersion()
}
// 调试入口应对M1、M2没有安装Launcher的情况
setOnLongClickListener {
ActivityUtils.startActivity(AppListActivity::class.java)
true
}
}
/**

View File

@@ -0,0 +1,40 @@
package com.mogo.eagle.core.function.main
import android.os.Bundle
import android.view.WindowManager
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.GridLayoutManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.main.adapter.AppListAdapter
import com.mogo.eagle.core.utilcode.util.ActivityUtils
import com.mogo.eagle.core.utilcode.util.BarUtils
import kotlinx.android.synthetic.main.activity_app_list.*
/**
* 系统应用列表,调试使用,暂不对外显示开放,只通过隐藏后门进入
*/
class AppListActivity : AppCompatActivity(), AppListAdapter.OnItemClickedListener {
override fun onCreate(savedInstanceState: Bundle?) {
BarUtils.hideStatusBarAndSticky(this.window)
window.setFlags(
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_app_list)
val linearLayoutManager = GridLayoutManager(this, 6) //第二个参数为网格的列数
recyclerViewAppList.layoutManager = linearLayoutManager
recyclerViewAppList.itemAnimator = DefaultItemAnimator()
val appListAdapter =
AppListAdapter(this)
recyclerViewAppList.adapter = appListAdapter
}
override fun onItemClicked(appListAdapter: AppListAdapter, position: Int) {
ActivityUtils.startLauncherActivity(appListAdapter.getItem(position).packageName)
}
}

View File

@@ -104,7 +104,7 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
decorView.clipToPadding = false
var statusBarView = decorView.findViewWithTag<View>("status_bar")
if (statusBarView == null) {
statusBarView = StatusBarView(this)
statusBarView = statusBar
statusBarView.setTag("status_bar")
}
val statusBarLP = FrameLayout.LayoutParams(
@@ -117,10 +117,10 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
}
/**
* 修改statusBar 重写实现,需要继承 StatusBarViewxml中基础系统控件不要修改其id拿来即用
* 修改statusBar重新赋值
* @return StatusBarView
*/
protected val statusBarView: StatusBarView
protected val statusBar: View
get() = StatusBarView(this)
override fun onCreate(savedInstanceState: Bundle?) {
@@ -353,30 +353,4 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
}
}
/**
* 由于应用是单页面的所以采用Fragment将各模块的UI进行分割解耦合
*
* @param newFragment 功能UI
* @param tagName UI绑定的Tag
* @param containerId 要加入的资源ID
*/
private fun addFragment(newFragment: Fragment, tagName: String, containerId: Int) {
var fragment = supportFragmentManager.findFragmentByTag(tagName)
if (fragment == null) {
fragment = newFragment
}
if (fragment == null) {
e(
SceneConstant.M_HMI + TAG,
"add fragment fail cause fragment == null, container is " + ResourcesHelper.getResNameById(
applicationContext, containerId
)
)
return
}
supportFragmentManager.beginTransaction()
.replace(containerId, fragment, tagName)
.commitAllowingStateLoss()
}
}

View File

@@ -31,6 +31,7 @@ import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.util.ActivityUtils;
import com.mogo.eagle.core.utilcode.util.MultiDisplayUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
@@ -91,6 +92,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
@Override
protected void onResume() {
super.onResume();
ActivityUtils.setDefaultL(this);
}
@Override

View File

@@ -55,14 +55,11 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
return;
}
start = System.currentTimeMillis();
connectAmiIp();
// Crash 日志收集
initCrashConfig();
initLogConfig();
initTipToast();
initModules();
//查询是否有版本的更新
queryAppUpgrade();
if (ProcessUtils.isMainProcess(this)) {
initOverviewDb();
if (DebugConfig.isDebug()) {
@@ -71,7 +68,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
clearMessageBoxTable();
CallerMsgBoxManager.INSTANCE.queryAllMessages(this);
}
upgradeProgressListener();
CallerDevaToolsManager.INSTANCE.updateUpgradeProgress();
}
@Override
@@ -80,15 +77,6 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
return true;
}
private void queryAppUpgrade() {
UiThreadHandler.postDelayed(new Runnable() {
@Override
public void run() {
CallerDevaToolsManager.INSTANCE.queryAppUpgrade();
}
},9000);
}
@SuppressLint("SimpleDateFormat")
private void clearMessageBoxTable() {
new Thread(() -> {
@@ -121,52 +109,6 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
}).start();
}
private void upgradeProgressListener() {
final NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
// builder.setSmallIcon(R.mipmap.icon1001);//todo emArrow 更换图标,去除地图下载图标的依赖关系
builder.setContentTitle("下载");
builder.setContentText("正在下载");
final NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
CallerDevaToolsUpgradeListenerManager.INSTANCE.addListener(TAG, new IMogoDevaToolsUpgradeListener() {
@Override
public void onStart(@Nullable String url) {
}
@Override
public void onPause(@Nullable String url) {
}
@Override
public void onProgress(@Nullable String url, int length) {
builder.setProgress(100, length,false);
manager.notify(0x3, builder.build());
//下载进度提示
builder.setContentText("已下载" + length + "%");
CallerHmiManager.INSTANCE.updateStatusBarDownloadView(true, "download", length);
}
@Override
public void onFinished(@Nullable String url) {
builder.setContentText("已下载" + 100 + "%");
UiThreadHandler.postDelayed(new Runnable() {
@Override
public void run() {
manager.cancel(0x3);
CallerHmiManager.INSTANCE.updateStatusBarDownloadView(false, "download", 100);
}
}, 1000);
}
@Override
public void onError(@Nullable String url, @Nullable String errorMsg) {
}
});
}
private void initKoom() {
KoomInitTask.INSTANCE.init(this);
}
@@ -197,14 +139,6 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
CallerFuncBizManager.getBizProvider().initOverViewDb(this);
}
/**
* 连接ami
*/
private void connectAmiIp() {
String ipAddress = SharedPrefsMgr.getInstance(AbsMogoApplication.getApp().getBaseContext()).getString(MoGoConfig.OBU_IP, "192.168.1.199");
// AmiClientManager.getInstance().setObuIp(ipAddress);
}
private void initModules() {
CallerLogger.INSTANCE.d(M_HMI + TAG, "initModules");
// OBU 模块

View File

@@ -0,0 +1,92 @@
package com.mogo.eagle.core.function.main.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.utilcode.util.AppUtils;
import java.util.ArrayList;
import java.util.List;
public class AppListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private OnItemClickedListener mOnItemClickedListener;
public interface OnItemClickedListener {
void onItemClicked(AppListAdapter appListAdapter, int position);
}
public static class AppViewHolder extends RecyclerView.ViewHolder {
public ImageView iconIv;
public TextView nameTv;
public AppViewHolder(View itemView) {
super(itemView);
iconIv = (ImageView) itemView.findViewById(R.id.list_item_app_icon_iv);
nameTv = (TextView) itemView.findViewById(R.id.list_item_app_name_tv);
}
}
private ArrayList<String> showApps = new ArrayList<>();
public AppListAdapter(OnItemClickedListener onItemClickedListener) {
// 设置被允许展示的APP
showApps.add("com.android.settings");
mOnItemClickedListener = onItemClickedListener;
mApps = new ArrayList<>();
for (AppUtils.AppInfo appInfo : AppUtils.getAppsInfo()) {
if (!appInfo.isSystem()) {
mApps.add(appInfo);
} else {
if (showApps.contains(appInfo.getPackageName())) {
mApps.add(appInfo);
}
}
}
}
private List<AppUtils.AppInfo> mApps;
public AppUtils.AppInfo getItem(int position) {
return mApps.get(position);
}
@Override
public int getItemCount() {
return mApps.size();
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_app_list, parent, false);
return new AppViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
AppViewHolder itemViewHolder = (AppViewHolder) holder;
itemViewHolder.iconIv.setImageDrawable(mApps.get(position).getIcon());
itemViewHolder.nameTv.setText(mApps.get(position).getName());
itemViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickedListener != null) {
mOnItemClickedListener.onItemClicked(AppListAdapter.this, position);
}
}
});
}
}

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/recyclerViewAppList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/main_splash_bg"
android:clipToPadding="false"
android:padding="20dp"
android:scrollbarStyle="outsideOverlay"
android:scrollbars="vertical"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:spanCount="6"
tools:itemCount="11"
tools:listitem="@layout/item_app_list" />

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="250dp"
android:layout_height="250dp"
android:gravity="center"
android:orientation="vertical"
android:paddingStart="10dp"
android:paddingTop="10dp"
android:paddingEnd="10dp"
android:paddingBottom="10dp">
<ImageView
android:id="@+id/list_item_app_icon_iv"
android:layout_width="150dp"
android:layout_height="150dp"
android:src="@drawable/icon_ad" />
<TextView
android:id="@+id/list_item_app_name_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:singleLine="true"
android:text="应用名称"
android:textColor="@color/color_FFFFFF"
android:textSize="30dp" />
</LinearLayout>

View File

@@ -5,10 +5,11 @@
android:layout_height="@dimen/dp_54">
<ImageView
android:scaleType="fitXY"
android:src="@drawable/blue_tooth"
android:id="@+id/mofangView"
android:layout_width="@dimen/dp_54"
android:layout_height="@dimen/dp_54"
android:scaleType="fitXY"
android:src="@drawable/blue_tooth"
tools:ignore="ContentDescription" />
</RelativeLayout>

View File

@@ -242,6 +242,42 @@
android:textOn="关闭感知优化模式"
android:textSize="@dimen/dp_24" />
<ToggleButton
android:id="@+id/tbV2NFromCar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_10"
android:padding="@dimen/dp_20"
android:background="@drawable/radio_button_normal_background_right"
android:textColor="#000"
android:textOff="开启车端V2N预警"
android:textOn="关闭车端V2N预警"
android:textSize="@dimen/dp_24" />
<ToggleButton
android:id="@+id/tbDrawAiCloudFusion"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_10"
android:padding="@dimen/dp_20"
android:background="@drawable/radio_button_normal_background_right"
android:textColor="#000"
android:textOff="开启云端感知绘制"
android:textOn="关闭云端感知绘制"
android:textSize="@dimen/dp_24" />
<ToggleButton
android:id="@+id/tbDrawRomaMode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_10"
android:padding="@dimen/dp_20"
android:background="@drawable/radio_button_normal_background_right"
android:textColor="#000"
android:textOff="开启漫游模式"
android:textOn="关闭漫游模式"
android:textSize="@dimen/dp_24" />
<ToggleButton
android:id="@+id/tbMojie"
android:layout_width="match_parent"

View File

@@ -29,6 +29,7 @@
android:textColor="@color/color_2C2E30"
android:textSize="@dimen/dp_35" />
<!--Wifi状态-->
<com.mogo.eagle.core.function.hmi.ui.widget.WifiStateView
android:layout_width="@dimen/dp_54"
android:layout_height="@dimen/dp_54"
@@ -36,8 +37,7 @@
android:layout_marginStart="@dimen/dp_18" />
<!--魔方连接状态-->
<ImageView
android:id="@+id/viewMofangStatus"
<com.mogo.eagle.core.function.hmi.ui.widget.BlueToothView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/blue_tooth"

View File

@@ -1,5 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.eagle.core.function.view">
package="com.mogo.eagle.core.function.map">
<application>
<receiver android:name="com.mogo.eagle.core.function.business.ai.AiCloudRangeBroadcastReceiver">
<intent-filter>
<action android:name="com.map.aiCloud.notification" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
</application>
</manifest>

View File

@@ -2,10 +2,12 @@ package com.mogo.eagle.core.function
import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider
import com.mogo.eagle.core.function.business.MapPointCloudSubscriber
import com.mogo.eagle.core.function.business.SpeedLimitDataManager
import com.mogo.eagle.core.function.business.ai.AiCloudIdentifyDataManager.Companion.aiCloudIdentifyDataManager
import com.mogo.eagle.core.function.business.identify.MapIdentifySubscriber
import com.mogo.eagle.core.function.business.routeoverlay.MogoRouteOverlayManager
@@ -20,6 +22,7 @@ class MapBizProvider :IMoGoFunctionServerProvider{
MogoRouteOverlayManager.getInstance().init()
MapPointCloudSubscriber.instance
SpeedLimitDataManager.getInstance().start()
aiCloudIdentifyDataManager.init(AbsMogoApplication.getApp())
}
override fun onDestroy() {

View File

@@ -0,0 +1,91 @@
package com.mogo.eagle.core.function.business.ai
import android.content.Context
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.function.business.ai.net.AiCloudIdentifyNetWorkModel
import com.mogo.eagle.core.function.business.identify.MapIdentifySubscriber
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP
import com.mogo.map.listener.IMogoMapListener
import com.mogo.map.uicontroller.VisualAngleMode
import mogo.yycp.api.proto.SocketDownData
class AiCloudIdentifyDataManager : IMogoMapListener {
companion object {
private const val TAG = "AiCloudIdentifyData"
var START_METRE = 200
var END_METRE = 2000
@JvmStatic
val aiCloudIdentifyDataManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
AiCloudIdentifyDataManager()
}
}
private val aiCloudIdentifyNetWorkModel = AiCloudIdentifyNetWorkModel()
private var showAiCloud = false
fun init(mContext: Context) {
MogoAiCloudSocketManager.getInstance(mContext)
.registerOnMessageListener(
0x040003, //低频数据
object : IMogoOnMessageListener<SocketDownData.SocketDownDataProto> {
override fun target(): Class<SocketDownData.SocketDownDataProto> {
return SocketDownData.SocketDownDataProto::class.java
}
override fun onMsgReceived(obj: SocketDownData.SocketDownDataProto?) {
if (!FunctionBuildConfig.isDrawAiCloudFusion) {
MapIdentifySubscriber.instance.clearAiCloudRoma()
return
}
obj?.let {
obj.data?.let {
if (showAiCloud) {
if (it.allListList == null || it.allListList.size == 0) {
MapIdentifySubscriber.instance.clearAiCloudRoma()
return
}
MapIdentifySubscriber.instance.renderAiCloudResult(it.allListList)
}
}
}
}
})
requestRangeOfIdentify()
}
fun requestRangeOfIdentify() {
aiCloudIdentifyNetWorkModel.requestIdentifyRange({
CallerLogger.d(
M_MAP + TAG,
"requestIdentifyRange ok startRange:$START_METRE, endRange:$END_METRE"
)
}, {
CallerLogger.d(
M_MAP + TAG,
"requestIdentifyRange error : $it , startRange:$START_METRE, endRange:$END_METRE"
)
})
}
override fun onMapVisualAngleChanged(visualAngleMode: VisualAngleMode) {
super.onMapVisualAngleChanged(visualAngleMode)
when {
visualAngleMode.isRoma -> {
showAiCloud = true
FunctionBuildConfig.isDrawIdentifyData = false
}
else -> {
showAiCloud = false
FunctionBuildConfig.isDrawIdentifyData = true
MapIdentifySubscriber.instance.clearAiCloudRoma()
}
}
}
}

View File

@@ -0,0 +1,30 @@
package com.mogo.eagle.core.function.business.ai
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import com.mogo.eagle.core.function.business.ai.AiCloudIdentifyDataManager.Companion.END_METRE
import com.mogo.eagle.core.function.business.ai.AiCloudIdentifyDataManager.Companion.START_METRE
import com.mogo.eagle.core.function.business.ai.AiCloudIdentifyDataManager.Companion.aiCloudIdentifyDataManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP
class AiCloudRangeBroadcastReceiver : BroadcastReceiver() {
companion object {
private const val TAG = "AiCloudRangeBroadcastReceiver"
private const val START_RANGE = "startRange"
private const val END_RANGE = "endRange"
// adb shell am broadcast -a com.map.aiCloud.notification --ei startRange 140 --ei endRange 2000
}
override fun onReceive(context: Context, intent: Intent) {
val startRange = intent.getIntExtra(START_RANGE, START_METRE)
val endRange = intent.getIntExtra(END_RANGE, END_METRE)
START_METRE = startRange
END_METRE = endRange
CallerLogger.d("$M_MAP$TAG", "startRange:$startRange, endRange:$endRange")
aiCloudIdentifyDataManager.requestRangeOfIdentify()
}
}

View File

@@ -0,0 +1,63 @@
package com.mogo.eagle.core.function.business.ai.net
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.BaseResponse
import com.mogo.eagle.core.function.business.ai.AiCloudIdentifyDataManager.Companion.END_METRE
import com.mogo.eagle.core.function.business.ai.AiCloudIdentifyDataManager.Companion.START_METRE
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.apiCall
import com.mogo.eagle.core.network.request
import com.zhjt.service_biz.FuncConfig
class AiCloudIdentifyNetWorkModel {
companion object {
val aiCloudIdentifyNetWorkModel by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
AiCloudIdentifyNetWorkModel()
}
}
private fun getHost(): String {
var host = "http://dzt-city.zhidaozhixing.com"
when (DebugConfig.getNetMode()) {
DebugConfig.NET_MODE_DEV,
DebugConfig.NET_MODE_QA -> host = "http://dzt-qa-city.zhidaozhixing.com"
}
return host
}
private fun getNetWorkApi(baseUrl: String = getHost()): IAiCloudIdentifyApiService {
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
.create(IAiCloudIdentifyApiService::class.java)
}
fun requestIdentifyRange(
onSuccess: (() -> Unit),
onError: ((String) -> Unit)
) {
request<BaseResponse<Any>> {
val map = mutableMapOf<String, Any>()
start {
map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
map["status"] = true
map["startMetre"] = START_METRE
map["endMetre"] = END_METRE
map["type"] = 1
}
loader {
apiCall {
getNetWorkApi().identifyRange(map)
}
}
onSuccess {
onSuccess.invoke()
}
onError {
it.message?.let { errorMsg ->
onError.invoke(errorMsg)
}
}
}
}
}

View File

@@ -0,0 +1,13 @@
package com.mogo.eagle.core.function.business.ai.net
import com.mogo.eagle.core.data.BaseResponse
import retrofit2.http.Body
import retrofit2.http.Headers
import retrofit2.http.POST
interface IAiCloudIdentifyApiService {
@Headers("Content-type:application/json;charset=UTF-8")
@POST("yycp-c-v2x-service/dataFusion/remoteDrivingSet")
suspend fun identifyRange(@Body map: MutableMap<String, Any>): BaseResponse<Any>
}

View File

@@ -3,16 +3,35 @@ package com.mogo.eagle.core.function.business.identify
import com.mogo.eagle.core.data.traffic.TrafficData
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.yycp.api.proto.SocketDownData
interface Identify {
fun renderAdasRecognizedResult(resultList: List<TrackedObject>?)
fun renderAdasRecognizedResult(resultList: List<TrackedObject>?) {
fun renderPlanningWarningObj(planningObjects: List<MessagePad.PlanningObject>?)
}
fun renderAiCloudResult(resultList: List<SocketDownData.CloudRoadDataProto>) {
}
fun renderPlanningWarningObj(planningObjects: List<MessagePad.PlanningObject>?) {
}
fun renderOBUWarningObj(exist: Boolean, obuTrafficData: TrafficData) {
}
fun clearOldMarker()
fun clearOldMarker() {
}
fun clearAiMarker() {
}
fun getIdentifyObj(uuid: String): TrackedObject? {
return null
}
}

View File

@@ -0,0 +1,102 @@
package com.mogo.eagle.core.function.business.identify
import android.annotation.SuppressLint
import androidx.collection.ArraySet
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.w
import com.mogo.map.MogoMarkerManager
import mogo.yycp.api.proto.SocketDownData
import java.util.concurrent.ConcurrentHashMap
class IdentifyAiCloudDataDrawer : Identify {
companion object {
private const val TAG = "IdentifyDataDrawer"
}
/**
* 上一帧数据的缓存
*/
private val mMarkersCaches = ConcurrentHashMap<String, SocketDownData.CloudRoadDataProto>()
/**
* 记录每次实际绘制的交通元素UUID
*/
@SuppressLint("NewApi")
private val trafficDataUuidList = ArraySet<String>()
/**
* 过滤后的数据集合
*/
@SuppressLint("NewApi")
private val mFilterTrafficData = HashMap<String, SocketDownData.CloudRoadDataProto>()
@SuppressLint("NewApi")
override fun renderAiCloudResult(resultList: List<SocketDownData.CloudRoadDataProto>) {
if (resultList.isEmpty()) {
clearOldMarker()
w(TAG, "感知数据为空无需渲染……")
return
}
if (!MogoStatusManager.getInstance().isVrMode) {
clearOldMarker()
w(TAG, "渲染 adas 识别的数据 当前不是VR模式")
return
}
//清除缓存
for (data in resultList) {
if (trafficDataUuidList.size > 0 && trafficDataUuidList.contains("" + data.uuid)) {
trafficDataUuidList.remove("" + data.uuid)
}
}
//清除缓存,删除marker
val it: MutableIterator<*> = trafficDataUuidList.iterator()
while (it.hasNext()) {
val key = it.next() as String
it.remove()
mMarkersCaches.remove(key)
MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
.removeMarker(key.hashCode().toString())
}
val filterList = filterTrafficData(resultList)
if (filterList.size > 0) {
// 绘制新数据
MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
.updateBatchAiMarkerPosition(filterList)
}
}
/**
* 数据过滤器
*
* @return 过滤后的数据集合
*/
@SuppressLint("NewApi")
private fun filterTrafficData(trafficData: List<SocketDownData.CloudRoadDataProto>): HashMap<String, SocketDownData.CloudRoadDataProto> {
mFilterTrafficData.clear()
trafficDataUuidList.clear()
for (data in trafficData) {
val uuid = "" + data.uuid
mMarkersCaches[uuid] = data
trafficDataUuidList.add(uuid)
mFilterTrafficData[uuid] = data
}
return mFilterTrafficData
}
@SuppressLint("NewApi")
override fun clearAiMarker() {
trafficDataUuidList.clear()
mMarkersCaches.forEach { (uuid, _) ->
mMarkersCaches.remove(uuid)
MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
.removeMarker(uuid.hashCode().toString())
}
mFilterTrafficData.clear()
}
}

View File

@@ -9,6 +9,7 @@ import com.mogo.eagle.core.function.call.obu.CallerObuWarningListenerManager
import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.yycp.api.proto.SocketDownData
object IdentifyFactory : Identify, IMoGoObuStatusListener {
@@ -22,7 +23,12 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener {
internal val beautifyDataDrawer = IdentifyBeautifyDataDrawer()
}
object AiIdentify {
internal val aiCloudDataDrawer = IdentifyAiCloudDataDrawer()
}
private var identify: Identify? = null
private var aiCloudIdentify: Identify? = null
init {
identify = if (FunctionBuildConfig.isBeautyMode) {
@@ -30,14 +36,17 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener {
} else {
DriverIdentify.originDataDrawer
}
aiCloudIdentify = AiIdentify.aiCloudDataDrawer
CallerObuWarningListenerManager.addListener(TAG, this)
}
private const val MSG_DATA_TRACK = 0
private const val MSG_DATA_WARNING = 1
private const val MSG_DATA_OBU_WARNING_UPDATE = 2
private const val MSG_DATA_OBU_WARNING_REMOVE = 3
private const val MSG_DATA_CLEAR = 4
private const val MSG_DATA_AI_TRACK = 1
private const val MSG_DATA_WARNING = 2
private const val MSG_DATA_OBU_WARNING_UPDATE = 3
private const val MSG_DATA_OBU_WARNING_REMOVE = 4
private const val MSG_DATA_CLEAR = 5
private const val MSG_DATA_AI_CLEAR = 6
// 维护一个线程定时轮询数据进行地图绘制
private val mDrawerHandler: Handler =
@@ -63,6 +72,11 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener {
identify!!.renderAdasRecognizedResult(msg.obj as List<TrackedObject>?)
}
}
MSG_DATA_AI_TRACK -> {
if (msg.obj is List<*>) {
aiCloudIdentify!!.renderAiCloudResult(msg.obj as List<SocketDownData.CloudRoadDataProto>)
}
}
MSG_DATA_WARNING -> {
if (msg.obj is List<*>) {
identify!!.renderPlanningWarningObj(msg.obj as List<MessagePad.PlanningObject>?)
@@ -81,6 +95,9 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener {
MSG_DATA_CLEAR -> {
identify!!.clearOldMarker()
}
MSG_DATA_AI_CLEAR -> {
aiCloudIdentify!!.clearAiMarker()
}
}
}
}
@@ -92,6 +109,13 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener {
mDrawerHandler.sendMessage(message)
}
override fun renderAiCloudResult(resultList: List<SocketDownData.CloudRoadDataProto>) {
val message = Message.obtain()
message.what = MSG_DATA_AI_TRACK
message.obj = resultList
mDrawerHandler.sendMessage(message)
}
override fun renderPlanningWarningObj(planningObjects: List<MessagePad.PlanningObject>?) {
val message = Message.obtain()
message.what = MSG_DATA_WARNING
@@ -105,6 +129,16 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener {
mDrawerHandler.sendMessage(message)
}
override fun clearAiMarker() {
val message = Message.obtain()
message.what = MSG_DATA_AI_CLEAR
mDrawerHandler.sendMessage(message)
}
override fun getIdentifyObj(uuid: String): TrackedObject? {
return identify?.getIdentifyObj(uuid)
}
override fun updateTrackerWarningInfo(trafficData: TrafficData) {
super.updateTrackerWarningInfo(trafficData)
val message = Message.obtain()

View File

@@ -1,12 +1,17 @@
package com.mogo.eagle.core.function.business.identify
import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.constants.MogoServicePaths.PATH_IDENTIFY
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener
import com.mogo.eagle.core.function.api.base.IMoGoSubscriber
import com.mogo.eagle.core.function.api.map.marker.IMoGoIdentifyListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.yycp.api.proto.SocketDownData
/**
* 订阅感知数据的订阅者
@@ -14,7 +19,8 @@ import mogo.telematics.pad.MessagePad.TrackedObject
*
* @author donghongyu
*/
class MapIdentifySubscriber private constructor() : IMoGoSubscriber,
@Route(path = PATH_IDENTIFY)
class MapIdentifySubscriber private constructor() : IMoGoIdentifyListener, IMoGoSubscriber,
IMoGoAutopilotIdentifyListener {
private val TAG = "MapIdentifySubscriber"
@@ -36,7 +42,6 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber,
override fun onDestroy() {
CallerAutopilotIdentifyListenerManager.removeListener(TAG)
}
override fun onAutopilotIdentifyDataUpdate(trafficData: List<TrackedObject>?) {
@@ -53,6 +58,26 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber,
}
}
fun renderAiCloudResult(cloudData: List<SocketDownData.CloudRoadDataProto>) {
try {
if (FunctionBuildConfig.isDrawAiCloudFusion) {
ThreadUtils.getSinglePool().execute {
// aiCloudDataDrawer.renderAiCloudResult(cloudData)
IdentifyFactory.renderAiCloudResult(cloudData)
}
} else {
clearAiCloudRoma()
}
} catch (e: Exception) {
e.printStackTrace()
}
}
fun clearAiCloudRoma() {
// aiCloudDataDrawer.clearAiMarker()
IdentifyFactory.clearAiMarker()
}
override fun onAutopilotIdentifyPlanningObj(planningObjects: List<MessagePad.PlanningObject>?) {
try {
if (FunctionBuildConfig.isDrawIdentifyData && FunctionBuildConfig.debugTrackerProvider == 0) {
@@ -67,7 +92,12 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber,
}
}
override fun onAutopilotWarnMessage(warn: MessagePad.Warn?) {
override fun getIdentifyObj(uuid: String): TrackedObject? {
return IdentifyFactory.getIdentifyObj(uuid)
}
override fun init(context: Context?) {
}
}

View File

@@ -107,18 +107,18 @@ public class TrackObj {
private void calHeading() {
//更正数据,速度小于LIMIT_SPEED使用上一帧数据
if (relativeStatic()) {
if (roadAngle != 0.0) {
CenterLine centerLine = CallerMapUIServiceManager.INSTANCE.getMapUIController().getCenterLineInfo(lon, lat, -1);
if (centerLine != null && centerLine.getAngle() != 0) {
cacheData = cacheData.toBuilder().setHeading(centerLine.getAngle()).build();
} else {
cacheData = cacheData.toBuilder().setHeading(circleQueue.getLastFrame().getHeading()).build();
}
} else {
cacheData = cacheData.toBuilder().setHeading(circleQueue.getLastFrame().getHeading()).build();
}
}
// if (relativeStatic()) {
// if (roadAngle != 0.0) {
// CenterLine centerLine = CallerHDMapManager.INSTANCE.getCenterLineInfo(lon, lat, -1);
// if (centerLine != null && centerLine.getAngle() != 0) {
// cacheData = cacheData.toBuilder().setHeading(centerLine.getAngle()).build();
// } else {
// cacheData = cacheData.toBuilder().setHeading(circleQueue.getLastFrame().getHeading()).build();
// }
// } else {
// cacheData = cacheData.toBuilder().setHeading(circleQueue.getLastFrame().getHeading()).build();
// }
// }
}
public double getRecentlyTime() {

View File

@@ -9,9 +9,8 @@ object TrackerSourceColorHelper {
@SuppressLint("NewApi")
fun filterData(data: TrackedObject): Boolean {
if (!FunctionBuildConfig.isDrawUnknownIdentifyData && data.type == TrafficTypeEnum.TYPE_TRAFFIC_ID_WEI_ZHI.type
|| data.type == TrafficTypeEnum.TYPE_TRAFFIC_ID_501.type || data.type == TrafficTypeEnum.TYPE_TRAFFIC_ID_502.type
) {
if (!FunctionBuildConfig.isDrawUnknownIdentifyData && (data.type == TrafficTypeEnum.TYPE_TRAFFIC_ID_WEI_ZHI.type
|| data.type == TrafficTypeEnum.TYPE_TRAFFIC_ID_501.type || data.type == TrafficTypeEnum.TYPE_TRAFFIC_ID_502.type)) {
return true
}
var trackIPCFilter = true

View File

@@ -5,7 +5,7 @@ import android.content.Context;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.function.impl.marker.AdasRecognizedType;
import com.mogo.eagle.core.function.view.R;
import com.mogo.eagle.core.function.map.R;
/**
* @author congtaowang

View File

@@ -9,7 +9,7 @@ import android.widget.ImageView;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.data.map.entity.MarkerShowEntity;
import com.mogo.eagle.core.function.view.R;
import com.mogo.eagle.core.function.map.R;
import com.mogo.map.marker.MogoMarkerOptions;
/**

View File

@@ -12,7 +12,7 @@ import android.widget.LinearLayout;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.data.map.entity.MarkerShowEntity;
import com.mogo.eagle.core.function.view.R;
import com.mogo.eagle.core.function.map.R;
import com.mogo.eagle.core.utilcode.mogo.glide.GlideImageLoader;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.eagle.core.utilcode.util.ViewUtils;

View File

@@ -13,7 +13,7 @@ import com.mogo.commons.module.status.MogoStatusManager;
import com.mogo.eagle.core.data.map.PoiWrapper;
import com.mogo.eagle.core.data.map.entity.MarkerExploreWay;
import com.mogo.eagle.core.data.map.entity.MarkerShowEntity;
import com.mogo.eagle.core.function.view.R;
import com.mogo.eagle.core.function.map.R;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.eagle.core.data.config.CloudPoiManager;

View File

@@ -5,7 +5,7 @@ import android.graphics.BitmapFactory;
import android.view.View;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.function.view.R;
import com.mogo.eagle.core.function.map.R;
import com.mogo.map.marker.IMogoMarker;
import java.lang.ref.SoftReference;

View File

@@ -14,7 +14,7 @@ import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.maps.model.Polyline;
import com.autonavi.amap.mapcore.IPoint;
import com.mogo.eagle.core.function.view.R;
import com.mogo.eagle.core.function.map.R;
import java.util.concurrent.ScheduledExecutorService;

View File

@@ -4,7 +4,7 @@ import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.eagle.core.function.view.R
import com.mogo.eagle.core.function.map.R
import kotlinx.android.synthetic.main.view_maker_with_count.view.*
class MakerWithCount @JvmOverloads constructor(

View File

@@ -6,7 +6,7 @@ import android.view.LayoutInflater
import android.widget.ImageView
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.eagle.core.function.view.R
import com.mogo.eagle.core.function.map.R
class V2XMarkerView @JvmOverloads constructor(
context: Context,

View File

@@ -22,7 +22,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager
import com.mogo.eagle.core.function.view.R
import com.mogo.eagle.core.function.map.R
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.MapAssetStyleUtils
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger

View File

@@ -28,6 +28,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02Lis
import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager
import com.mogo.eagle.core.function.call.biz.CallerFuncBizListenerManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showVideoDialog
import com.mogo.eagle.core.function.map.R
import com.mogo.eagle.core.function.smp.MakerWithCount
import com.mogo.eagle.core.function.smp.MarkerDrawerManager
import com.mogo.eagle.core.function.smp.MarkerDrawerManager.callback

View File

@@ -114,7 +114,6 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
// 设置是否是直播推流的主播
clientConfig.isAnchor = true
when (DebugConfig.getCarMachineType()) {
DebugConfig.CAR_MACHINE_TYPE_BYD -> clientConfig.thirdPartyAppKey = "bydauto"
DebugConfig.CAR_MACHINE_TYPE_LENOVO -> clientConfig.thirdPartyAppKey = "pfieouqg"
else -> clientConfig.thirdPartyAppKey = "wbvpzgar"
}
@@ -133,8 +132,6 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
} else {
clientConfig.thirdPartyDeviceId = Utils.getDevicesId()
}
// 设置循环检测间隔时间每隔2小时loop一次httpDnsConfig
clientConfig.loopCheckDelay = (60 * 60 * 2 * 1000).toLong()
//设置长链接的secretKey //todo 通过SHA1和包名找中台服务生成后续包名分渠道,需要做对应操作
clientConfig.secretKey = "YMj2VFDFxJ3Q4gNoZceJ"

View File

@@ -1,5 +1,6 @@
package com.mogo.eagle.core.function.v2x.events
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.os.Handler
@@ -16,6 +17,7 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_C
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_CLOUD
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CLOUD_V2N
import com.mogo.eagle.core.data.enums.DataSourceType
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.enums.EventTypeEnumNew
import com.mogo.eagle.core.data.enums.EventTypeHelper
import com.mogo.eagle.core.data.enums.TrafficTypeEnum
@@ -26,11 +28,14 @@ import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.data.msgbox.MsgBoxType
import com.mogo.eagle.core.data.msgbox.V2XMsg
import com.mogo.eagle.core.data.traffic.TrafficData
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.call.map.CallerMapIdentifyManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.Default
@@ -43,6 +48,7 @@ import com.mogo.eagle.core.function.v2x.events.consts.V2XConst.BROADCAST_SCENE_H
import com.mogo.eagle.core.function.v2x.events.receiver.SceneBroadcastReceiver
import com.mogo.eagle.core.function.v2x.events.scenario.impl.V2XScenarioManager
import com.mogo.eagle.core.function.v2x.events.utils.toRoadMarker
import com.mogo.eagle.core.function.v2x.events.utils.toV2XRoadEventEntity
import com.mogo.eagle.core.function.v2x.internal.V2XManager
import com.mogo.eagle.core.function.v2x.internal.callback.IV2XCallback
import com.mogo.eagle.core.function.v2x.internal.config.V2XConfig
@@ -53,7 +59,6 @@ import com.mogo.eagle.core.function.v2x.internal.event.V2XEvent
import com.mogo.eagle.core.function.v2x.road.V2XEventServiceApi
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
@@ -71,9 +76,10 @@ import kotlinx.coroutines.cancel
import kotlinx.coroutines.launch
import java.util.concurrent.TimeUnit
import java.util.concurrent.atomic.AtomicBoolean
import mogo.telematics.pad.MessagePad
object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IMoGoTokenCallback, IV2XCallback {
object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IMoGoTokenCallback, IV2XCallback,
IMoGoAutopilotIdentifyListener {
private const val TAG = "V2XEventManager"
@@ -115,11 +121,13 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IMoGoTokenCallback,
private fun registerListener() {
V2XManager.addCallback(this)
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, this)
CallerAutopilotIdentifyListenerManager.addListener(TAG, this)
}
private fun unRegisterListener() {
V2XManager.removeCallback(this)
CallerChassisLocationGCJ02ListenerManager.removeListener(TAG)
CallerAutopilotIdentifyListenerManager.removeListener(TAG)
mogoMarkersHandler.unregisterMarkerClickListener(CARD_TYPE_ROAD_CONDITION)
}
@@ -196,19 +204,50 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IMoGoTokenCallback,
handleWarningTargetEvent(event.data)
}
is V2XEvent.RoadAI -> {
/*
TODO zhongchao 先注掉,编译通过
if(FunctionBuildConfig.isV2NFromCar){
return
}*/
}
handleRoadMarkerEvent(event.data.toRoadMarker())
}
}
}
is V2XEvent.RoadEventX -> {
handleRoadMarkerEvent(event.data.toRoadMarker())
}
else -> {
Logger.d(TAG, "other event: $event")
@SuppressLint("NewApi")
override fun onAutopilotIdentifyPlanningObj(planningObjects: List<MessagePad.PlanningObject>?) {
super.onAutopilotIdentifyPlanningObj(planningObjects)
if(!FunctionBuildConfig.isV2NFromCar){
return
}
planningObjects?.let {
if (it.isNotEmpty()) {
val first = it.stream()
.filter { planningObj: MessagePad.PlanningObject -> planningObj.type >= 1000 }
.findFirst()
if (first.isPresent) {
val poiType = when (first.get().type) {
// 1004 -> { //V2N_RSM,静止事件,包括异常停车、异常静止障碍物
// }
1005 -> { //V2N_RSI,施工事件,包括锥桶或者挡板围城的施工场景,是个多边形包围区域
EventTypeEnumNew.TYPE_SOCKET_ROAD_SHIGONG.poiType
}
1007 -> { //三角牌
EventTypeEnumNew.FOURS_ACCIDENT_04.poiType
}
else -> {
return
}
}
CallerLogger.d("$M_V2X$TAG", "poiType : $poiType , 触发道路事件")
val trackedObj =
CallerMapIdentifyManager.getIdentifyObj(first.get().uuid.toString())
trackedObj?.let { t ->
CallerLogger.d("$M_V2X$TAG", "polygon size : ${(t.polygonList.size)}")
val v2XMessageEntity = V2XMessageEntity<V2XRoadEventEntity>()
v2XMessageEntity.type = V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_WARNING
v2XMessageEntity.content = t.toRoadMarker(poiType).toV2XRoadEventEntity()
V2XScenarioManager.getInstance().handlerMessage(v2XMessageEntity)
}
}
}
}
}

View File

@@ -10,6 +10,7 @@ import android.util.Log;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.data.enums.EventTypeEnumNew;
import com.mogo.eagle.core.data.enums.WarningDirectionEnum;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.data.map.entity.V2XMessageEntity;
@@ -64,8 +65,9 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMoGoChas
CallerLogger.INSTANCE.d(M_V2X + TAG, "----- show --- 1 --:\n" + (mMarkerEntity == null ? "null" : mMarkerEntity.toString()));
if (mMarkerEntity != null) {
CallerLogger.INSTANCE.d(M_V2X + TAG, "----- show --- 2 --:\n" + mMarkerEntity);
int v2xType = getV2XTypeForFrontWarning(mMarkerEntity);
if (v2xType != 0) {
String v2xType = getV2XTypeForFrontWarning(mMarkerEntity);
V2XMessageEntity entity = getV2XMessageEntity();
if (!v2xType.equals("0")) {
if (getAlertContentForFrontWarning(mMarkerEntity).toString() == null
|| getAlertContentForFrontWarning(mMarkerEntity).toString().isEmpty()
|| mMarkerEntity.getTts() == null || mMarkerEntity.getTts().isEmpty()) {
@@ -87,19 +89,19 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMoGoChas
}
}
private int getV2XTypeForFrontWarning(V2XWarningTarget entity) {
private String getV2XTypeForFrontWarning(V2XWarningTarget entity) {
switch (entity.getType()) {
case 1:
case 11:
entity.setTts("注意行人");
return 0X2B0201;
return EventTypeEnumNew.TYPE_USECASE_ID_VRUCW_PERSON.getPoiType();
case 2:
entity.setTts("注意自行车");
case 4:
entity.setTts("注意摩托车");
return 0X2B0202;
return EventTypeEnumNew.TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.getPoiType();
}
return 0;
return "0";
}
private CharSequence getAlertContentForFrontWarning(V2XWarningTarget entity) {

View File

@@ -4,6 +4,7 @@ import com.elegant.network.utils.GsonUtil
import com.elegant.network.utils.SignUtil
import com.elegant.utils.CommonUtils
import com.mogo.cloud.network.RetrofitFactory
import com.mogo.commons.constants.HostConst
import com.mogo.eagle.core.function.v2x.internal.V2XManager
import com.mogo.eagle.core.function.v2x.internal.config.V2XConfig
import com.mogo.eagle.core.function.v2x.internal.data.V2XLocation
@@ -26,7 +27,7 @@ internal class V2XRefreshModel {
callback: IV2XRefreshCallback<V2XMarkerResponse>?
): Disposable? {
val config = V2XManager.getConfig()
val retrofit = RetrofitFactory.getInstance(config.baseUrl) ?: return null
val retrofit = RetrofitFactory.getInstance(HostConst.getEagleHost()) ?: return null
return retrofit
.create(V2XApiService::class.java)
.querySnapshotSync(buildParams(longitude, latitude, config))

View File

@@ -9,6 +9,6 @@ import retrofit2.http.POST
internal interface V2XApiService {
@FormUrlEncoded
@POST("/yycp-launcherSnapshot/launcherSnapshot/querySnapshotSync")
@POST("eagle-eye-dns/yycp-launcherSnapshot/launcherSnapshot/querySnapshotSync")
fun querySnapshotSync(@FieldMap parameters: Map<String, @JvmSuppressWildcards Any>): Maybe<V2XMarkerResponse?>
}

View File

@@ -48,6 +48,14 @@ object FunctionBuildConfig {
@JvmField
var detouringSpeed = 3
/**
* 是否从车端融合过来的v2n事件
* 默认关闭开启后接收车端融合预警关闭云端长链V2N
*/
@Volatile
@JvmField
var isV2NFromCar = false
/**
* 是否是感知优化模式
* 默认开启
@@ -59,6 +67,20 @@ object FunctionBuildConfig {
@JvmField
var isBeautyMode = true
/**
* 是否绘制云端感知物
*/
@Volatile
@JvmField
var isDrawAiCloudFusion = true
/**
* 是否开启roma
*/
@Volatile
@JvmField
var isRomaMode = false
/**
* 是否开启感知物替换颜色功能
* 默认关闭

View File

@@ -92,4 +92,8 @@ public class MogoServicePaths {
@Keep
public static final String PATH_DATA_CENTER_MODULE = "/data_center/api";
@Keep
public static final String PATH_IDENTIFY = "/map/identify";
}

View File

@@ -109,6 +109,11 @@ interface IDevaToolsProvider : IProvider {
*/
fun downLoadPackage(downloadKey: String, downloadUrl: String)
/**
* 更新下载进度
*/
fun updateUpgradeProgress()
/**
* 展示状态栏
*/

View File

@@ -51,4 +51,8 @@ interface IMoGoDevaToolsListener {
}
fun mofangStatus(status:Boolean){
}
}

View File

@@ -36,9 +36,4 @@ interface IViewControlListener {
*/
fun updateStatusBarDownloadView(insert: Boolean, tag: String, progress: Int){}
/**
* 更新魔方的连接状态
*/
fun updateMfStatus(tag: String, status: Boolean){}
}

View File

@@ -136,9 +136,5 @@ interface IMoGoHmiProvider :IProvider{
*/
fun updateStatusBarDownloadView(insert: Boolean, tag: String, progress: Int)
/**
* 更新魔方的连接状态
*/
fun updateMfStatus(tag: String, status: Boolean)
}

View File

@@ -0,0 +1,10 @@
package com.mogo.eagle.core.function.api.map.marker
import com.alibaba.android.arouter.facade.template.IProvider
import mogo.telematics.pad.MessagePad
interface IMoGoIdentifyListener :IProvider{
fun getIdentifyObj(uuid: String): MessagePad.TrackedObject?
}

View File

@@ -55,4 +55,11 @@ object CallerDevaToolsListenerManager : CallerBase<IMoGoDevaToolsListener>() {
}
}
fun invokeMoFangStatus(status:Boolean){
M_LISTENERS.forEach {
val listener = it.value
listener.mofangStatus(status)
}
}
}

View File

@@ -147,6 +147,13 @@ object CallerDevaToolsManager {
devaToolsProviderApi?.downLoadPackage(downloadKey, downloadUrl)
}
/**
* 更新下载进度
*/
fun updateUpgradeProgress() {
devaToolsProviderApi?.updateUpgradeProgress()
}
/**
* 展示状态栏
*/

View File

@@ -212,11 +212,4 @@ object CallerHmiManager {
hmiProviderApi?.updateStatusBarDownloadView(insert, tag, progress)
}
/**
* 更新魔方的链接状态
*/
fun updateMfStatusView(tag: String, status: Boolean) {
hmiProviderApi?.updateMfStatus(tag, status)
}
}

View File

@@ -45,8 +45,4 @@ object CallerHmiViewControlListenerManager : CallerBase<IViewControlListener>()
M_LISTENERS[tag]?.updateStatusBarDownloadView(insert, tag, progress)
}
fun updateMfStatus(tag: String, viewTag: String, status: Boolean) {
M_LISTENERS[tag]?.updateMfStatus(viewTag, status)
}
}

View File

@@ -0,0 +1,19 @@
package com.mogo.eagle.core.function.call.map
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.eagle.core.data.constants.MogoServicePaths.PATH_IDENTIFY
import com.mogo.eagle.core.function.api.map.marker.IMoGoIdentifyListener
import com.mogo.eagle.core.function.call.base.CallerBase
import mogo.telematics.pad.MessagePad
object CallerMapIdentifyManager : CallerBase<IMoGoIdentifyListener>() {
private val identifyApi: IMoGoIdentifyListener
get() = ARouter.getInstance().build(PATH_IDENTIFY)
.navigation() as IMoGoIdentifyListener
fun getIdentifyObj(uuid: String): MessagePad.TrackedObject? {
return identifyApi.getIdentifyObj(uuid)
}
}

View File

@@ -243,11 +243,21 @@ object CallerVisualAngleManager {
PriorityQueue<Record>()
}
@Volatile
private var mLevel:Boolean = false
fun updateLongSightLevel(level:Boolean){
mLevel = level
}
fun changeVisualAngle(current: Scene) {
val appIdentityMode = FunctionBuildConfig.appIdentityMode
if (AppIdentityModeUtils.isBus(appIdentityMode) && AppIdentityModeUtils.isPassenger(appIdentityMode)) {
return
}
if(mLevel){
return
}
val triggerTime = SystemClock.elapsedRealtime()
scope.launch {
Log.d("${M_DEVA}${TAG}", "--- 1 ---")

View File

@@ -5,20 +5,18 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.AnimRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -26,6 +24,13 @@ import androidx.core.app.ActivityOptionsCompat;
import androidx.core.util.Pair;
import androidx.fragment.app.Fragment;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
/**
* <pre>
* author: Blankj
@@ -2136,4 +2141,65 @@ public final class ActivityUtils {
return Utils.getApp();
}
}
public static void setDefaultL(Context context) {
if (AppUtils.isDefaultHome(context)) {
return;
}
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory("android.intent.category.HOME");
intent.addCategory("android.intent.category.DEFAULT");
try {
intent.setComponent(new ComponentName("android", "com.android.internal.app.ResolverActivity"));
startActivity(intent);
} catch (Exception e) {//还不行,就只能应用程序设置了
intent = new Intent(Settings.ACTION_APPLICATION_SETTINGS);
startActivity(intent);
}
}
/**
* @param context
* @param componentName
*/
public static void setDefaultLauncherApp(Context context, ComponentName componentName) {
PackageManager packageManager = context.getPackageManager();
Class<?> refPackageManager = packageManager.getClass();
Method[] methods = refPackageManager.getDeclaredMethods();
Method mReplacePreferredActivity = null;
Method mGetHomeActivities = null;
for (Method method : methods) {
if (method.getName().equals("replacePreferredActivity")) {
mReplacePreferredActivity = method;
}
if (method.getName().equals("getHomeActivities")) {
mGetHomeActivities = method;
}
}
mReplacePreferredActivity.setAccessible(true);
mGetHomeActivities.setAccessible(true);
IntentFilter HOME_FILTER = new IntentFilter(Intent.ACTION_MAIN);
HOME_FILTER.addCategory(Intent.CATEGORY_HOME);
HOME_FILTER.addCategory(Intent.CATEGORY_DEFAULT);
final List<ComponentName> allComponents = new ArrayList<>();
final List<ResolveInfo> homeActivities = new ArrayList<>();
try {
mGetHomeActivities.invoke(packageManager, homeActivities);
for (ResolveInfo info : homeActivities) {
final ActivityInfo appInfo = info.activityInfo;
ComponentName activityName = new ComponentName(appInfo.packageName, appInfo.name);
allComponents.add(activityName);
}
mReplacePreferredActivity.invoke(
packageManager,
HOME_FILTER,
IntentFilter.MATCH_CATEGORY_EMPTY,
allComponents.toArray(new ComponentName[0]),
componentName);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
}

View File

@@ -10,6 +10,7 @@ import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.Signature;
import android.content.pm.SigningInfo;
import android.graphics.drawable.Drawable;
@@ -18,15 +19,15 @@ import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* <pre>
* author: Blankj
@@ -1017,4 +1018,18 @@ public final class AppUtils {
"\n}";
}
}
/**
* 判断自己是否为默认桌面
*/
public static boolean isDefaultHome(Context context) {
Intent intent = new Intent(Intent.ACTION_MAIN);//Intent.ACTION_VIEW
intent.addCategory("android.intent.category.HOME");
intent.addCategory("android.intent.category.DEFAULT");
PackageManager pm = context.getPackageManager();
ResolveInfo info = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
boolean isDefault = context.getPackageName().equals(info.activityInfo.packageName);
return isDefault;
}
}

View File

@@ -43,9 +43,7 @@ public abstract class AbsMogoApplication extends Application {
AppStateManager.INSTANCE.init(this);
initRxJavaErrorHandler();
FinalizeCrashFixer.fix();
// if (!shouldInit()) {
AutoSize.checkAndInit(this);
// }
ScreenHelper.setScreenConfig(this);
Utils.init(this);
@@ -71,8 +69,7 @@ public abstract class AbsMogoApplication extends Application {
return null;
}
try {
View contentView = generateToastView(context, message, tipDrawable);
return contentView;
return generateToastView(context, message, tipDrawable);
} catch (Exception e) {
e.printStackTrace();
}

View File

@@ -8,7 +8,6 @@ import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.text.TextUtils;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.module.intent.IMogoIntentListener;
import com.mogo.commons.module.intent.IntentHandlerFactory;
import com.mogo.commons.module.intent.IntentManager;
@@ -18,7 +17,6 @@ import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.data.config.CloudPoiManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
import com.mogo.realtime.api.MoGoAiCloudRealTime;
import java.util.List;
@@ -57,10 +55,6 @@ public class MogoServices implements IMogoIntentListener {
Intent intent = new Intent("com.freedom.ser.ACTION");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
mContext.sendBroadcast(intent);
// if (DebugConfig.isNeedUploadCoordinatesDurationInTime()) {
// MoGoAiCloudRealTime.startRealTime(mContext, DebugConfig.getSocketAppId());
// }
}
private void registerMogoReceiver(Context context) {
@@ -105,9 +99,6 @@ public class MogoServices implements IMogoIntentListener {
public void destroy() {
CallerLogger.INSTANCE.d(M_OLD_OTHER + TAG, "MogoServices do nothings.");
// if (DebugConfig.isNeedUploadCoordinatesDurationInTime()) {
// MoGoAiCloudRealTime.stopRealTime();
// }
}
}

View File

@@ -10,7 +10,7 @@
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx2048m
org.gradle.jvmargs=-Xmx3048m
#开启gradle缓存
org.gradle.caching=true
android.enableBuildCache=true
@@ -85,7 +85,7 @@ MOGO_LOCATION_VERSION=1.4.3.32-beta3
MOGO_TELEMATIC_VERSION=1.4.3.32-beta2
######## MogoAiCloudSDK Version ########
# 自研地图
MAP_SDK_VERSION=2.9.0.8_gamap_02
MAP_SDK_VERSION=2.10.0.2_test_01
MAP_SDK_OPERATION_VERSION=1.1.4.1
# websocket
WEBSOCKET_VERSION=1.1.7
@@ -119,10 +119,8 @@ MOGO_MODULE_V2X_VERSION=2.1.16.10
MOGO_MODULE_OBU_MOGO_VERSION=2.1.16.10
# bugly
CRASHREPORT_VERSION=2.1.16.10
CRASHREPORT_BUGLY_VERSION=2.1.16.10
CRASHREPORT_NOOP_VERSION=2.1.16.10
CRASHREPORT_APMBYTE_VERSION=2.1.16.10
CRASHREPORT_UPGRADE_VERSION=2.1.16.10
## tts
TTS_BASE_VERSION=2.1.16.10
TTS_DI_VERSION=2.1.16.10

View File

@@ -0,0 +1,78 @@
syntax = "proto3";
package mogo.yycp.service;
option java_package = "mogo.yycp.api.proto";
option java_outer_classname = "SocketDownData";
/*
message xxx {
// 字段规则required -> 字段只能也必须出现 1 次
// 字段规则optional -> 字段可出现 0 次或1次
// 字段规则repeated -> 字段可出现任意多次(包括 0
// 类型int32、int64、sint32、sint64、string、32-bit ....
// 字段编号0 ~ 536870911除去 19000 到 19999 之间的数字)
字段规则 类型 名称 = 字段编号;
}
*/
//返回车机主实体
message SocketDownDataProto {
uint64 seq = 1;
uint32 msgType = 2;
string sn = 3;
LauncherSnapshotProto data = 4;
uint64 utcTime = 5;
uint64 upUtcTime = 6;
string cityCode = 7;
}
//LauncherSnapshot数据响应VO
message LauncherSnapshotProto {
//总数据集合 RoadDataVo
repeated CloudRoadDataProto allList = 1;
//前方50米数据集合 RoadDataVo
repeated CloudRoadDataProto nearList = 2;
//摄像头 RoadDataVo
CloudRoadDataProto camera = 3;
string msgId = 4;
uint64 time = 5;
//过期时间
uint64 expire = 6;
}
//RoadDataVo
message CloudRoadDataProto {
/**物体类型 1-人 2-自行车 3-小轿车 4-摩托车 5-红绿灯 6-bus 8-truck 9-路边摄像头*/
uint32 type = 1;
/**数据来源 1,"自车数据" 2,"ADAS数据" 3,"路测设备识别数据" */
uint32 fromType = 2;
/**
* 车机上行pgs坐标给latlon两个成员变量
*
* 在下发车机时计算高德经纬度
* 1.将gpslatlon给wgslat,wgalon
* 2.高德算法算出高德经纬度给lat,lon
*/
double lat = 3; //gps->gd
double lon = 4; //gps->gd
double wgslat = 5; //原gps
double wgslon = 6; //原gps
//车机sn
string sn = 7;
//车辆UUID
string uuid = 8;
/** 车牌号 */
string cardId = 9;
/**速度*/
double speed = 10;
/**方向*/
double heading = 11;
/** 系统时间 */
uint64 systemTime = 12;
/** 星历时间 */
uint64 satelliteTime = 13;
/**红绿灯状态 1红 2绿 3黄*/
uint32 lightStatus = 14;
/**红绿灯剩余时间 读秒*/
uint32 lightLeftTime = 15;
/**视频流直播地址*/
string rtmpUrl = 16;
/**距离*/
double distance = 17;
}

View File

@@ -195,14 +195,6 @@ public interface OnAdasListener {
*/
void onPlanningActionMsg(MessagePad.Header header, MessagePad.PlanningActionMsg planningActionMsg);
/**
* OBU预警事件
*
* @param header 头
* @param obuWarningData 数据
*/
void onObuWarningData(MessagePad.Header header, ObuWarningEvent.ObuWarningData obuWarningData);
/**
* OBU 红绿灯预警信息
*

View File

@@ -26,7 +26,7 @@ public class ObuWarningDataMessage extends MyAbstractMessageHandler {
if (CupidLogUtils.isEnableLog())
nowTime = SystemClock.elapsedRealtime();
if (adasListener != null) {
adasListener.onObuWarningData(raw.getHeader(), obuWarningData);
// adasListener.onObuWarningData(raw.getHeader(), obuWarningData);
}
AdasChannel.calculateTimeConsumingBusiness("OBU预警事件", nowTime);

View File

@@ -1,5 +1,6 @@
package com.mogo.map;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.map.center.CenterLine;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
@@ -12,6 +13,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import mogo.telematics.pad.MessagePad;
import mogo.yycp.api.proto.SocketDownData;
/**
* @author congtaowang
@@ -51,6 +53,13 @@ public interface IMogoMap {
*/
void updateBatchMarkerPosition(HashMap<String, MessagePad.TrackedObject> optionsArrayList);
/**
* 批量更新锚点位置
*
* @param optionsArrayList 锚点集合
*/
void updateBatchAiMarkerPosition(HashMap<String, SocketDownData.CloudRoadDataProto> optionsArrayList);
/**
* 添加感知使用到的3d模型
*

View File

@@ -10,6 +10,7 @@ import java.util.List;
import java.util.Map;
import mogo.telematics.pad.MessagePad;
import mogo.yycp.api.proto.SocketDownData;
/**
* @author congtaowang
@@ -44,6 +45,13 @@ public interface IMogoMarkerManager {
*/
void updateBatchMarkerPosition(HashMap<String, MessagePad.TrackedObject> optionsArrayList);
/**
* 批量更新锚点位置
*
* @param optionsArrayList 锚点集合
*/
void updateBatchAiMarkerPosition(HashMap<String, SocketDownData.CloudRoadDataProto> optionsArrayList);
/**
* 添加感知使用到的3d模型
*

View File

@@ -13,6 +13,7 @@ import com.mogo.eagle.core.data.map.MogoLocation;
import java.util.List;
/**
* @author congtaowang
* @since 2019-12-26
@@ -48,6 +49,17 @@ public interface IMogoMapUIController {
*/
void changeMapVisualAngle(VisualAngleMode angelMode, MogoLatLng mogoLatLng);
/**
* 设置漫游路径
* @param trajectory
*/
void setRoamTrajectory(String trajectory);
/**
* 设置漫游模式 , 0:自由漫游1:路径漫游
*/
void setRomaMode(int mode);
/**
* 获得当前地图视距模式
*

View File

@@ -35,7 +35,12 @@ public enum VisualAngleMode implements IMogoMapVisualAngle {
/**
* 十字路口视角
*/
MAP_STYLE_VR_ANGLE_CROSS(5);
MAP_STYLE_VR_ANGLE_CROSS(5),
/**
* 漫游模式
*/
MAP_STYLE_VR_ROMA(7);
private final int code;
@@ -62,4 +67,8 @@ public enum VisualAngleMode implements IMogoMapVisualAngle {
public boolean isMediumSight() {
return code == MODE_MEDIUM_SIGHT.getCode();
}
public boolean isRoma(){
return code == MAP_STYLE_VR_ROMA.getCode();
}
}

File diff suppressed because one or more lines are too long

View File

@@ -6,6 +6,7 @@ import android.graphics.Point;
import android.util.Pair;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.map.center.CenterLine;
import com.mogo.map.marker.AMapInfoWindowAdapter;
@@ -41,6 +42,7 @@ import java.util.HashMap;
import java.util.List;
import mogo.telematics.pad.MessagePad;
import mogo.yycp.api.proto.SocketDownData;
/**
* @author congtaowang
@@ -123,6 +125,24 @@ public class AMapWrapper implements IMogoMap {
MarkerHelper.INSTANCE.updateBatchMarkerPositon(markerOptionsArrayList, false, FunctionBuildConfig.isBeautyMode ? 8.0f : 0f, 1, time, 1);
}
@SuppressLint("NewApi")
@Override
public void updateBatchAiMarkerPosition(HashMap<String, SocketDownData.CloudRoadDataProto> optionsArrayList) {
if (!checkAMap()) {
return;
}
ArrayList<MarkerSimpleData> markerOptionsArrayList = new ArrayList<>();
optionsArrayList.forEach((s, trackedObject) -> {
MarkerSimpleData markerOptions = ObjectUtils.fromAiData(trackedObject);
if (markerOptions != null) {
markerOptionsArrayList.add(markerOptions);
}
});
long time = markerOptionsArrayList.get(0).getTime();
// 最后一个参数,是否管理锚点的删除
MarkerHelper.INSTANCE.updateBatchMarkerPositon(markerOptionsArrayList, false, FunctionBuildConfig.isBeautyMode ? 8.0f : 0f, 1, time, 0);
}
@Override
public String addPreVehicleModel(int type, int modelRes) {
try {

View File

@@ -16,6 +16,7 @@ import com.mogo.map.uicontroller.VisualAngleMode;
import java.util.List;
/**
* @author congtaowang
* @since 2019-12-26
@@ -81,6 +82,23 @@ public class MogoMapUIController implements IMogoMapUIController {
}
}
@Override
public void setRoamTrajectory(String trajectory) {
initDelegate();
if (mDelegate != null) {
mDelegate.setRoamTrajectory(trajectory);
}
}
@Override
public void setRomaMode(int mode) {
initDelegate();
if (mDelegate != null) {
CallerLogger.INSTANCE.d(TAG, "set setRomaMode: " + mode);
mDelegate.setRomaMode(mode);
}
}
@Override
public VisualAngleMode getCurrentMapVisualAngle() {
initDelegate();

View File

@@ -15,6 +15,7 @@ import java.util.List;
import java.util.Map;
import mogo.telematics.pad.MessagePad;
import mogo.yycp.api.proto.SocketDownData;
/**
* @author congtaowang
@@ -29,17 +30,17 @@ public class MogoMarkerManager implements IMogoMarkerManager {
private static volatile MogoMarkerManager sInstance;
private Context mApplicationContext;
private MogoMarkerManager( Context context ) {
if ( context != null ) {
private MogoMarkerManager(Context context) {
if (context != null) {
mApplicationContext = context.getApplicationContext();
}
}
public static MogoMarkerManager getInstance( Context context ) {
if ( sInstance == null ) {
synchronized ( MogoMarkerManager.class ) {
if ( sInstance == null ) {
sInstance = new MogoMarkerManager( context );
public static MogoMarkerManager getInstance(Context context) {
if (sInstance == null) {
synchronized (MogoMarkerManager.class) {
if (sInstance == null) {
sInstance = new MogoMarkerManager(context);
}
}
}
@@ -51,27 +52,27 @@ public class MogoMarkerManager implements IMogoMarkerManager {
}
@Override
public IMogoMarker addMarker( String tag, MogoMarkerOptions options ) {
public IMogoMarker addMarker(String tag, MogoMarkerOptions options) {
try {
return MogoMap.getInstance().getMogoMap().addMarker( tag, options );
} catch ( Exception e ) {
return MogoMap.getInstance().getMogoMap().addMarker(tag, options);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
public List< IMogoMarker > addMarkers( String tag, ArrayList< MogoMarkerOptions > options, boolean moveToCenter ) {
public List<IMogoMarker> addMarkers(String tag, ArrayList<MogoMarkerOptions> options, boolean moveToCenter) {
try {
return MogoMap.getInstance().getMogoMap().addMarkers( tag, options, moveToCenter );
} catch ( Exception e ) {
return MogoMap.getInstance().getMogoMap().addMarkers(tag, options, moveToCenter);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
public void updateBatchMarkerPosition(HashMap<String,MessagePad.TrackedObject> optionsArrayList) {
public void updateBatchMarkerPosition(HashMap<String, MessagePad.TrackedObject> optionsArrayList) {
try {
MogoMap.getInstance().getMogoMap().updateBatchMarkerPosition(optionsArrayList);
} catch (Exception e) {
@@ -79,6 +80,15 @@ public class MogoMarkerManager implements IMogoMarkerManager {
}
}
@Override
public void updateBatchAiMarkerPosition(HashMap<String, SocketDownData.CloudRoadDataProto> optionsArrayList) {
try {
MogoMap.getInstance().getMogoMap().updateBatchAiMarkerPosition(optionsArrayList);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public String addPreVehicleModel(int type, int modelRes) {
try {
@@ -100,9 +110,9 @@ public class MogoMarkerManager implements IMogoMarkerManager {
@Override
public void removeMarkers( String tag ) {
public void removeMarkers(String tag) {
CallMarkersClearManager.INSTANCE.invokeClearAllMarkersOfTag(tag);
MogoMarkersHandler.Companion.getMogoMarkersHandler().remove( tag );
MogoMarkersHandler.Companion.getMogoMarkersHandler().remove(tag);
}
@Override
@@ -123,27 +133,27 @@ public class MogoMarkerManager implements IMogoMarkerManager {
}
@Override
public void inVisibleWithoutMarkers(String ...owner) {
public void inVisibleWithoutMarkers(String... owner) {
MogoMarkersHandler.Companion.getMogoMarkersHandler().inVisibleMarkers(owner);
}
@Override
public List< IMogoMarker > getMarkers( String tag ) {
return MogoMarkersHandler.Companion.getMogoMarkersHandler().getMarkers( tag );
public List<IMogoMarker> getMarkers(String tag) {
return MogoMarkersHandler.Companion.getMogoMarkersHandler().getMarkers(tag);
}
@Override
public Map< String, List< IMogoMarker > > getAllMarkers() {
public Map<String, List<IMogoMarker>> getAllMarkers() {
return MogoMarkersHandler.Companion.getMogoMarkersHandler().getAllMarkers();
}
@Override
public void removeMarkersExcept( String tag ) {
MogoMarkersHandler.Companion.getMogoMarkersHandler().deleteAllExcept( tag );
public void removeMarkersExcept(String tag) {
MogoMarkersHandler.Companion.getMogoMarkersHandler().deleteAllExcept(tag);
}
@Override
public void addRouteWay(Context context, MogoLatLng startPoint, MogoLatLng endPoint, List< MogoLatLng > wayPoints ) {
public void addRouteWay(Context context, MogoLatLng startPoint, MogoLatLng endPoint, List<MogoLatLng> wayPoints) {
}
@Override

View File

@@ -11,6 +11,7 @@ import com.zhidaoauto.map.sdk.open.MapAutoApi;
import java.util.List;
/**
* @author congtaowang
* @since 2019-12-26
@@ -19,8 +20,6 @@ import java.util.List;
*/
public class AMapUIController implements IMogoMapUIController {
private static final String TAG = "AMapUIController";
private static volatile AMapUIController sInstance;
private IMogoMapUIController mClient;
@@ -70,6 +69,20 @@ public class AMapUIController implements IMogoMapUIController {
}
}
@Override
public void setRoamTrajectory(String trajectory) {
if (mClient != null) {
mClient.setRoamTrajectory(trajectory);
}
}
@Override
public void setRomaMode(int mode) {
if (mClient != null) {
mClient.setRomaMode(mode);
}
}
@Override
public VisualAngleMode getCurrentMapVisualAngle() {
if (mClient != null) {

View File

@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.List;
import mogo.telematics.pad.MessagePad;
import mogo.yycp.api.proto.SocketDownData;
/**
* @author congtaowang
@@ -117,6 +118,26 @@ public class ObjectUtils {
return markerOptions;
}
public static MarkerSimpleData fromAiData(SocketDownData.CloudRoadDataProto aiData) {
if (aiData == null) {
return null;
}
MarkerSimpleData markerOptions = null;
try {
markerOptions = new MarkerSimpleData();
markerOptions.setId(aiData.getUuid().hashCode());
markerOptions.setMarkerType(aiData.getType());
markerOptions.setRotateAngle((float) aiData.getHeading());
markerOptions.setLat(aiData.getWgslat());
markerOptions.setLon(aiData.getWgslon());
markerOptions.setTime(Double.valueOf(aiData.getSatelliteTime()).longValue());
markerOptions.setColor("#00FF00FF");
} catch (Exception e) {
e.printStackTrace();
}
return markerOptions;
}
private static BitmapDescriptor getBitmapDescriptorFromMogo(MogoMarkerOptions options) {
if (options == null) {
return null;

View File

@@ -17,7 +17,6 @@
:test:crashreport
:test:crashreport-apm
:test:crashreport-noop
:test:crashreport-upgrade
:core:function-impl:mogo-core-function-datacenter
:core:function-impl:mogo-core-function-hmi
:core:function-impl:mogo-core-function-map

View File

@@ -55,9 +55,7 @@ include ':tts:tts-pad'
// 测试DEBUG
include ':test:crashreport'
//include ':test:crashreport-bugly'
include ':test:crashreport-noop'
include ':test:crashreport-upgrade'
include ':test:crashreport-apmbyte'
//OCH 业务模块

Some files were not shown because too many files have changed in this diff Show More