From 8810b9c40ac9acb9df4056e0475dca2e37a94f9c Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Mon, 7 Jun 2021 18:26:16 +0800 Subject: [PATCH 1/2] add xingyun obu --- config.gradle | 1 + .../extensions/entrance/EntranceFragment.java | 27 ---------- .../com/mogo/module/service/MogoServices.java | 2 - modules/mogo-module-v2x/build.gradle | 2 + .../com/mogo/module/v2x/V2XObuManager.java | 51 +++++++++++++++++++ .../impl/statusmanager/MogoStatusManager.java | 1 - 6 files changed, 54 insertions(+), 30 deletions(-) diff --git a/config.gradle b/config.gradle index 325b270279..40fc573a16 100644 --- a/config.gradle +++ b/config.gradle @@ -169,6 +169,7 @@ ext { // obu sdk obusdk : "com.zhidao.enterprise.smartv2x:smartv2x:1.0.0.3", + mebulaobu : 'com.zhidao.support.nebulaobu:nebulaobu:1.0.0.1', // 左侧面板 moduleleftpanel : "com.mogo.module:module-left-panel:${MOGO_MODULE_LEFT_PANEL_VERSION}", // 左侧面板空实现 diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index 69a96ba205..c7663c4a29 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -926,7 +926,6 @@ public class EntranceFragment extends MvpFragment "); -// if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_LENOVO ) { -// if ( ui == EnumMapUI.Type_VR ) { -// Log.d("liyz", "onMapModeChanged mLastStatusIsVr = " + mLastStatusIsVr + "--ui = " +ui); -// if ( !mLastStatusIsVr ) { -// MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, true ); -// MapCenterPointStrategy.resetByChangeMode(); -//// MapMarkerManager.getInstance().redrawMarkerByStyleChanged(); -// if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_LENOVO ) { -// AIAssist.getInstance( getContext() ).speakTTSVoice( "已开启鹰眼模式" ); -// } -// mLastStatusIsVr = true; -// } -// } else { -// if ( mLastStatusIsVr ) { -// mLastStatusIsVr = false; -// MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, false ); -// MapCenterPointStrategy.resetByChangeMode(); -//// MapMarkerManager.getInstance().redrawMarkerByStyleChanged(); -// if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_LENOVO ) { -// AIAssist.getInstance( getContext() ).speakTTSVoice( "已退出鹰眼模式" ); -// } -// } -// } -// } - if (mCameraMode == null) { return; } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index d9e2d98bf4..788ea3028c 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -938,9 +938,7 @@ public class MogoServices implements IMogoMapListener, @Override public void onMapModeChanged( EnumMapUI ui ) { - Log.d("liyz", "onMapModeChanged ----> ui = " + ui); if ( ui == EnumMapUI.Type_VR ) { - Log.d("liyz", "onMapModeChanged mLastStatusIsVr = " + mLastStatusIsVr + "--ui = " +ui); if ( !mLastStatusIsVr ) { MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, true ); MapCenterPointStrategy.resetByChangeMode(); diff --git a/modules/mogo-module-v2x/build.gradle b/modules/mogo-module-v2x/build.gradle index b84e556603..83006d78b3 100644 --- a/modules/mogo-module-v2x/build.gradle +++ b/modules/mogo-module-v2x/build.gradle @@ -94,6 +94,8 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' implementation project(':modules:mogo-module-obu') +// implementation rootProject.ext.dependencies.mebulaobu + } apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString() diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java index 548639f6c4..2ab522c913 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java @@ -8,6 +8,7 @@ import android.os.Handler; import android.os.Message; import android.os.SystemClock; import android.util.ArrayMap; +import android.util.Log; import androidx.localbroadcastmanager.content.LocalBroadcastManager; @@ -32,10 +33,15 @@ import com.zhidao.mogo.module.obu.obu.IObuCallback; import com.zhidao.mogo.module.obu.obu.bean.MogoObuEventInfo; import com.zhidao.mogo.module.obu.obu.bean.MogoObuLocationInfo; import com.zhidao.mogo.module.obu.obu.bean.MogoObuTrafficLightInfo; +//import com.zhidao.support.nebulaobu.NebulaObuClient; +//import com.zhidao.support.nebulaobu.OnObuListener; +//import com.zhidao.support.nebulaobu.model.ActiveSafetyInfo; +//import com.zhidao.support.nebulaobu.model.ObuInfo; import org.json.JSONArray; import org.json.JSONObject; +import java.util.List; import java.util.Map; import static com.mogo.module.v2x.V2XConst.MODULE_NAME; @@ -76,14 +82,59 @@ public class V2XObuManager implements IObuCallback, Handler.Callback { public void init(Context context) { Logger.d(MODULE_NAME, "obuManager初始化--"); + //之前内部对接的obu obuManager = new ObuManager(); obuManager.init(context); obuManager.registerObuDataChangedListener(this); + Logger.d("liyz", "obuManager初始化------> "); + //使用adas部门obu sdk (星云) +// NebulaObuClient.getInstance().init(context); +// NebulaObuClient.getInstance().registerObu(100); +// NebulaObuClient.getInstance().registerObuListener(listener); + IntentFilter filter = new IntentFilter("com.mogo.launcher.v2x.action.EXCHANGE_OBU_TYPE"); context.registerReceiver(obuTypeExchangeReceiver, filter); } + +// public void release() { +// NebulaObuClient.getInstance().unregisterObu(); +// NebulaObuClient.getInstance().unregisterObuListener(); +// } + + + /** + * 星云obu数据监听 + */ +// private OnObuListener listener = new OnObuListener() { +// @Override +// public void onRegister() { +// Log.d("liyz", "onRegister ------> "); +// } +// +// @Override +// public void onConnectFail(boolean isNeedReconnect) { +// Log.d("liyz", "onConnectFail ------> "); +// } +// +// @Override +// public void onUnregister() { +// Log.d("liyz", "onUnregister ------> "); +// } +// +// @Override +// public void onObuInfo(ObuInfo info) { +// Log.d("liyz", "onObuInfo ------> "); +// } +// +// @Override +// public void onWarningInfo(List infoList) { +// Log.d("liyz", "onWarningInfo ------> "); +// } +// }; + + /** * 用来处理30秒内不重复播报的情况 */ diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java index 42aa23f9a3..34181e7e32 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java @@ -169,7 +169,6 @@ public class MogoStatusManager implements IMogoStatusManager { @Override public void setVrMode(String tag, boolean vrMode) { - Log.d("liyz", "setVrMode --------> "); doSetStatus(tag, StatusDescriptor.VR_MODE, vrMode); } From 03129ba83be7d7bbefb39e97926395098b62a6b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Thu, 10 Jun 2021 18:08:34 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B0=8F=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E4=BD=8D=E7=BD=AE=E6=9C=AA=E8=B7=9F=E9=9A=8Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../small/map/SmallMapDirectionView.java | 176 ++++++++---------- .../module/small/map/SmpServiceManager.java | 45 +++++ 2 files changed, 124 insertions(+), 97 deletions(-) create mode 100644 modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmpServiceManager.java diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java index 6d0bdb7db5..0141fd5a96 100644 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java @@ -2,8 +2,8 @@ package com.mogo.module.small.map; import android.content.Context; import android.graphics.BitmapFactory; +import android.location.Location; import android.util.AttributeSet; -import android.util.Log; import android.view.LayoutInflater; import android.view.MotionEvent; import android.widget.RelativeLayout; @@ -14,15 +14,18 @@ import com.amap.api.maps.AMap; import com.amap.api.maps.CameraUpdate; import com.amap.api.maps.CameraUpdateFactory; import com.amap.api.maps.UiSettings; +import com.amap.api.maps.model.CustomMapStyleOptions; +import com.amap.api.navi.AMapNavi; import com.amap.api.navi.AMapNaviView; import com.amap.api.navi.AMapNaviViewOptions; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.debug.DebugConfig; +import com.mogo.map.MogoLatLng; +import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.view.RoundLayout; -import com.mogo.utils.FileUtils; - -import java.io.IOException; +import com.mogo.module.small.map.utils.MapAssetStyleUtils; +import com.mogo.utils.logger.Logger; /** * 小地图的方向View @@ -30,13 +33,17 @@ import java.io.IOException; * @author donghongyu * @date 12/14/20 4:40 PM */ -public class SmallMapDirectionView extends RelativeLayout { - private String styleFilePath = "/mnt/sdcard/amap/small_map_style.data"; +public class SmallMapDirectionView extends RelativeLayout implements IMogoCarLocationChangedListener2 { + /** + * 小地图名称 + */ + public static final String MODULE_NAME = "SmallMap"; private RoundLayout rlSmallMapBorder; private AMapNaviView mAMapNaviView; + private AMap mAMap; + private AMapNavi mAMapNavi; private int zoomLevel = 15; - private boolean mapIsLoaded = false; public SmallMapDirectionView(Context context) { this(context, null); @@ -62,15 +69,63 @@ public class SmallMapDirectionView extends RelativeLayout { rlSmallMapBorder = findViewById(R.id.rlSmallMapBorder); rlSmallMapBorder.addView(mAMapNaviView); + initAMapView(); + + // 注册定位监听 + SmpServiceManager.getMogoRegisterCenter() + .registerCarLocationChangedListener(MODULE_NAME, this); + + setOnClickListener(view -> { + if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_LENOVO) { + MogoApisHandler.getInstance().getApis() + .getMapServiceApi() + .getMapUIController() + .changeMapMode( + MogoApisHandler.getInstance() + .getApis() + .getAdasControllerApi() + .getCurrentSkinMode() + ); + } + }); + } + + private void initAMapView() { // 车头朝上 mAMapNaviView.setNaviMode(AMapNaviView.CAR_UP_MODE); // 设置电子眼所在路线的可见性 mAMapNaviView.setRouteOverlayVisible(false); - AMap aMap = mAMapNaviView.getMap(); + mAMap = mAMapNaviView.getMap(); // 关闭地图文字标注 - aMap.showMapText(false); + mAMap.showMapText(false); + // 设置导航地图模式,aMap是地图控制器对象。 + mAMap.setMapType(AMap.MAP_TYPE_NIGHT); + // 关闭显示实时路况图层,aMap是地图控制器对象。 + mAMap.setTrafficEnabled(false); + + mAMapNavi = AMapNavi.getInstance(getContext()); + mAMapNavi.setIsUseExtraGPSData(false); + + new Thread(() -> { + try { + Thread.sleep(1000L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + mAMap.setCustomMapStyle( + new CustomMapStyleOptions() + .setEnable(true) + .setStyleData(MapAssetStyleUtils.getAssetsStyle(getContext())) + .setStyleExtraData(MapAssetStyleUtils.getAssetsExtraStyle(getContext())) + ); + + //设置希望展示的地图缩放级别 + CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel); + mAMap.moveCamera(cameraUpdate); + }).start(); + // 设置地图的样式 - UiSettings uiSettings = aMap.getUiSettings(); + UiSettings uiSettings = mAMap.getUiSettings(); uiSettings.setZoomControlsEnabled(false);// 地图缩放级别的交换按钮 uiSettings.setAllGesturesEnabled(false);// 所有手势 uiSettings.setMyLocationButtonEnabled(false); // 显示默认的定位按钮 @@ -137,95 +192,9 @@ public class SmallMapDirectionView extends RelativeLayout { // 2D模式 options.setTilt(0); // 黑夜模式 - //options.setNaviNight(true); - // 自定义地图样式 - options.setCustomMapStylePath(styleFilePath); + options.setNaviNight(true); mAMapNaviView.setViewOptions(options); } - - //设置希望展示的地图缩放级别 - CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel); - aMap.moveCamera(cameraUpdate); - - try { - // 判断是否有样式文件存在 - FileUtils.copy( - context.getAssets().open("small_map_style.data"), - styleFilePath, - new FileUtils.FileCopyListener() { - - @Override - public void onStart() { - Log.w("FileCopyListener", "onStart="); - - } - - @Override - public void onFail(Exception e) { - Log.w("FileCopyListener", "onFail="); - e.printStackTrace(); - } - - @Override - public void onProcess(int process) { - Log.w("FileCopyListener", "onProcess=" + process); - - } - - @Override - public void onFinish(String toPath) { - Log.w("FileCopyListener", "onFinish toPath=" + toPath); - - // 高德地图有bug,所以需要多次调用设置皮肤才能成功 - if (options != null) { - options.setCustomMapStylePath(styleFilePath); - mAMapNaviView.setViewOptions(options); - } - - //设置希望展示的地图缩放级别 - CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel); - aMap.moveCamera(cameraUpdate); - } - } - ); - } catch (IOException e) { - e.printStackTrace(); - } - - new Thread(new Runnable() { - @Override - public void run() { - try { - Thread.sleep(1000L); - } catch (InterruptedException e) { - e.printStackTrace(); - } - // 高德地图有bug,所以需要多次调用设置皮肤才能成功 - if (options != null) { - options.setCustomMapStylePath(styleFilePath); - mAMapNaviView.setViewOptions(options); - } - - //设置希望展示的地图缩放级别 - CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel); - aMap.moveCamera(cameraUpdate); - } - }).start(); - - - setOnClickListener(view -> { - if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_LENOVO) { - MogoApisHandler.getInstance().getApis() - .getMapServiceApi() - .getMapUIController() - .changeMapMode( - MogoApisHandler.getInstance() - .getApis() - .getAdasControllerApi() - .getCurrentSkinMode() - ); - } - }); } @@ -233,4 +202,17 @@ public class SmallMapDirectionView extends RelativeLayout { public boolean onInterceptTouchEvent(MotionEvent ev) { return true; } + + @Override + public void onCarLocationChanged2(Location latLng) { + Logger.d(MODULE_NAME, "onCarLocationChanged2 latLng:" + latLng); + if (mAMapNavi != null) { + mAMapNavi.setExtraGPSData(2, latLng); + } + } + + @Override + public void onCarLocationChanged(MogoLatLng latLng) { + Logger.d(MODULE_NAME, "onCarLocationChanged latLng:" + latLng); + } } diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmpServiceManager.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmpServiceManager.java new file mode 100644 index 0000000000..75e01881ca --- /dev/null +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmpServiceManager.java @@ -0,0 +1,45 @@ +package com.mogo.module.small.map; + +import android.content.Context; + +import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.service.IMogoServiceApis; +import com.mogo.service.MogoServicePaths; +import com.mogo.service.module.IMogoRegisterCenter; + +/** + * author : donghongyu + * e-mail : 1358506549@qq.com + * date : 2020-01-2114:01 + * desc : V2X 服务 + * version: 1.0 + */ +public class SmpServiceManager { + private static final String TAG = "V2XServiceManager"; + private static boolean isInit; + private static Context mContext; + private static IMogoServiceApis mMogoServiceApis; + private static IMogoRegisterCenter mMogoRegisterCenter; + + private SmpServiceManager() { + + } + + public static void init(final Context context) { + if (!isInit) { + isInit = true; + mContext = context; + mMogoServiceApis = (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context); + mMogoRegisterCenter = mMogoServiceApis.getRegisterCenterApi(); + } + } + + public static Context getContext() { + return mContext; + } + + public static IMogoRegisterCenter getMogoRegisterCenter() { + return mMogoRegisterCenter; + } + +}