diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml
index 577835099a..b16e94637a 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml
+++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml
@@ -55,23 +55,15 @@
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible" />
-
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/V2XProvider.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/V2XProvider.kt
index 5b9758baec..c2da09d47c 100644
--- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/V2XProvider.kt
+++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/V2XProvider.kt
@@ -5,6 +5,7 @@ import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.constants.MogoServicePaths.PATH_V2X_MODULE
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider
import com.mogo.eagle.core.function.call.trafficlight.CallTrafficLightManager
+import com.mogo.eagle.core.function.v2x.speedlimit.SpeedLimitDataManager
import com.mogo.eagle.core.function.v2x.vip.VipCarManager
@Route(path = PATH_V2X_MODULE)
@@ -16,6 +17,7 @@ class V2XProvider : IMoGoFunctionServerProvider {
override fun init(context: Context) {
CallTrafficLightManager.getTrafficLightProvider().initTrafficLightServer(context)
VipCarManager.INSTANCE.initServer(context)
+ SpeedLimitDataManager.getInstance().start();
}
override fun onDestroy() {
diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/speedlimit/SpeedLimitDataManager.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/speedlimit/SpeedLimitDataManager.java
new file mode 100644
index 0000000000..1a998227f2
--- /dev/null
+++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/speedlimit/SpeedLimitDataManager.java
@@ -0,0 +1,71 @@
+package com.mogo.eagle.core.function.v2x.speedlimit;
+
+import android.content.Context;
+import android.location.Location;
+
+import com.mogo.eagle.core.data.map.MogoLatLng;
+import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
+import com.mogo.map.navi.IMogoCarLocationChangedListener2;
+import com.mogo.module.common.MogoApisHandler;
+import com.mogo.utils.UiThreadHandler;
+import com.mogo.utils.logger.Logger;
+
+import java.util.Date;
+import java.util.Timer;
+import java.util.TimerTask;
+
+public class SpeedLimitDataManager implements IMogoCarLocationChangedListener2 {
+
+ private static SpeedLimitDataManager instance ;
+ private Location mLocation;
+// private static Context mContext;
+ private Timer mTimer;
+ private SpeedLimitDataManager(){
+ }
+ public static SpeedLimitDataManager getInstance(){
+ if (instance == null){
+ synchronized (SpeedLimitDataManager.class){
+ if (instance == null){
+ instance = new SpeedLimitDataManager();
+ }
+ }
+ }
+ return instance;
+ }
+ private class SpeedTimerTask extends TimerTask{
+ @Override
+ public void run() {
+ if (mLocation != null){
+ int speedLimmit = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getSpeedLimmit(mLocation.getLongitude(),mLocation.getLatitude(),mLocation.getBearing());
+ UiThreadHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ int speed = (int) (mLocation.getSpeed() * 3.6f);
+ Logger.e("lianglihui","SpeedTimerTask : "+ speed+" - "+ speedLimmit);
+ if (speed > speedLimmit){
+ CallerHmiManager.INSTANCE.showLimitingVelocity(speedLimmit);
+ }else {
+ CallerHmiManager.INSTANCE.disableLimitingVelocity();
+ }
+ }
+ });
+ }
+ }
+ };
+
+ public void start(){
+ MogoApisHandler.getInstance().getApis().getRegisterCenterApi().registerCarLocationChangedListener("SpeedLimitDataManager",this);
+ mTimer = new Timer();
+ mTimer.schedule(new SpeedTimerTask(), new Date(),1000);
+
+ }
+ @Override
+ public void onCarLocationChanged2(Location latLng) {
+ mLocation = latLng;
+ }
+
+ @Override
+ public void onCarLocationChanged(MogoLatLng latLng) {
+
+ }
+}