From 99b1d8bff21ca45dcf75993d8575ae3dc3ab069e Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Thu, 8 Apr 2021 16:09:23 +0800 Subject: [PATCH 01/14] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=AE=9E=E9=99=85?= =?UTF-8?q?=E5=AE=9A=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/och/bus/presenter/OchBusPresenter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/OchBusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/OchBusPresenter.java index 215ada4cc2..f7033b08b7 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/OchBusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/OchBusPresenter.java @@ -104,8 +104,8 @@ public class OchBusPresenter extends Presenter< OchBusFragment > implements IMog double lat = 40.1974932972; double lon = 116.7354579447; -// lat = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat(); -// lon = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon(); + lat = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat(); + lon = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon(); OchBusRoutesRequest request = new OchBusRoutesRequest( Utils.getSn(), lat, lon ); RequestBody requestBody = RequestBody.create( MediaType.get( "application/json;charset=UTF-8" ), GsonUtil.jsonFromObject( request ) ); From 86fcf57fde40256601034dba5123f19109522a16 Mon Sep 17 00:00:00 2001 From: wujifei Date: Thu, 8 Apr 2021 16:54:53 +0800 Subject: [PATCH 02/14] =?UTF-8?q?new#=E4=BC=98=E5=8C=96Vr=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E4=B8=8B=E6=95=85=E9=9A=9C=E6=B1=82=E5=8A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../strategy/CarIconDisplayStrategy.java | 2 +- .../scene/help/V2XCarForHelpScenario.java | 34 +++--- .../scene/help/V2XCarForHelpWindow.java | 114 ------------------ .../scene/help/V2XSeekHelpButton.java | 32 ++++- .../res/layout/item_v2x_event_detail_vr.xml | 7 +- 6 files changed, 51 insertions(+), 140 deletions(-) delete mode 100644 modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpWindow.java diff --git a/gradle.properties b/gradle.properties index 3d9c247180..3275b61624 100644 --- a/gradle.properties +++ b/gradle.properties @@ -145,7 +145,7 @@ MOGO_OCH_TAXI_VERSION=1.0.0 ######## 外部依赖引用 # 车聊聊 -CARCHATTING_VERSION=2.2.311 +CARCHATTING_VERSION=2.2.318 # 车聊聊接口 CARCHATTINGPROVIDER_VERSION=1.1.11 # websocket diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java index 8513281d10..3c9ba2bab3 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java @@ -198,7 +198,7 @@ public class CarIconDisplayStrategy { new MogoMarkerOptions() .icons(mBitmapFrames) .period(1) - .zIndex(1000) + .zIndex(0) .autoManager(false) .anchor(0.5f, 0.5f) .position(MarkerServiceHandler.getMapService().getNavi(AbsMogoApplication.getApp()).getCarLocation2())); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpScenario.java index 09fa98f8ee..52a0802733 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpScenario.java @@ -47,10 +47,10 @@ public class V2XCarForHelpScenario extends AbsV2XScenario implements IM private V2XSeekHelpButton mV2XSeekHelpButton; public V2XCarForHelpScenario() { - setV2XWindow(new V2XCarForHelpWindow(V2XServiceManager.getContext())); mV2XSeekHelpButton = new V2XSeekHelpButton(); setV2XButton(mV2XSeekHelpButton); V2XServiceManager.getMoGoStatusManager().registerStatusChangedListener(TAG, StatusDescriptor.SEEK_HELPING, this); + V2XServiceManager.getMoGoStatusManager().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, this); } @Override @@ -61,14 +61,6 @@ public class V2XCarForHelpScenario extends AbsV2XScenario implements IM } setV2XMessageEntity(v2XMessageEntity); Boolean isShow = getV2XMessageEntity().getContent(); - if (V2XServiceManager.getMoGoStatusManager().isVrMode()) { - if (isShow) { - showWindow(); - } else { - closeWindow(); - } - return; - } if (isShow) { showButton(); mySeekHelpCountDownTimerCancel(); @@ -96,20 +88,10 @@ public class V2XCarForHelpScenario extends AbsV2XScenario implements IM @Override public void showWindow() { - if (getV2XWindow() != null) { - ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - (int) V2XUtils.getApp().getResources().getDimension(R.dimen.dp_140)); - V2XServiceManager.getMogoTopViewManager().addView(getV2XWindow().getView(), layoutParams); - getV2XWindow().show(getV2XMessageEntity().getContent()); - } } @Override public void closeWindow() { -// if (getV2XWindow() != null) { -// getV2XWindow().close(); -// } } private V2XVoiceCallbackListener cancelCb = null; @@ -122,7 +104,7 @@ public class V2XCarForHelpScenario extends AbsV2XScenario implements IM if (getV2XButton() != null) { getV2XButton().setOnActionListener(this::showDialog); getV2XButton().show(); - V2XServiceManager.getMogoEntranceButtonController().showLeftNoticeByType(IMogoEntranceButtonController.NOTICE_TYPE_SEEK_HELP, R.drawable.module_v2x_left_notice_seek_help, "正在发起求助..."); + // V2XServiceManager.getMogoEntranceButtonController().showLeftNoticeByType(IMogoEntranceButtonController.NOTICE_TYPE_SEEK_HELP, R.drawable.module_v2x_left_notice_seek_help, "正在发起求助..."); } }); } @@ -241,6 +223,18 @@ public class V2XCarForHelpScenario extends AbsV2XScenario implements IM entity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_CAR_FOR_HELP); entity.setContent(isTrue); init(entity); + } else if (descriptor == StatusDescriptor.VR_MODE) { + if (V2XServiceManager.getMoGoStatusManager().isSeekHelping()) { + if (isTrue) { + ((V2XSeekHelpButton) getV2XButton()).showTopView(); + V2XServiceManager.getMogoEntranceButtonController() + .getButton(ButtonIndex.BUTTON2).setVisibility(View.GONE); + } else { + ((V2XSeekHelpButton) getV2XButton()).closeTopView(); + V2XServiceManager.getMogoEntranceButtonController() + .getButton(ButtonIndex.BUTTON2).setVisibility(View.VISIBLE); + } + } } } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpWindow.java deleted file mode 100644 index 00ecfd0077..0000000000 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpWindow.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.mogo.module.v2x.scenario.scene.help; - -import android.content.Context; -import android.content.Intent; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.TextView; -import android.widget.Toast; - -import com.mogo.commons.data.BaseData; -import com.mogo.commons.voice.AIAssist; -import com.mogo.module.common.entity.V2XPushMessageEntity; -import com.mogo.module.v2x.R; -import com.mogo.module.v2x.V2XConst; -import com.mogo.module.v2x.V2XServiceManager; -import com.mogo.module.v2x.listener.V2XWindowStatusListener; -import com.mogo.module.v2x.network.V2XRefreshCallback; -import com.mogo.module.v2x.scenario.scene.V2XBasWindow; -import com.mogo.module.v2x.scenario.view.IV2XWindow; -import com.mogo.module.v2x.utils.V2XUtils; -import com.mogo.module.v2x.voice.V2XVoiceCallbackListener; -import com.mogo.module.v2x.voice.V2XVoiceConstants; -import com.mogo.module.v2x.voice.V2XVoiceManager; -import com.mogo.utils.storage.SharedPrefsMgr; - -import static com.mogo.module.v2x.V2XConst.MODULE_NAME; - -/** - * created by wujifei on 2021/4/1 16:04 - * describe: - */ -public class V2XCarForHelpWindow extends V2XBasWindow implements IV2XWindow { - private static final String TAG = MODULE_NAME + "_" + V2XCarForHelpScenario.class.getSimpleName(); - private TextView tvCancel; - private V2XVoiceCallbackListener cancelCb = (String command, Intent intent) -> { - close(); - }; - - - public V2XCarForHelpWindow(Context context) { - this(context, null); - } - - public V2XCarForHelpWindow(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public V2XCarForHelpWindow(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initView(context); - } - - private void initView(Context context) { - LayoutInflater.from(context).inflate(R.layout.window_carforhelp_detail, this); - tvCancel = (TextView) findViewById(R.id.tv_cancel); - tvCancel.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - close(); - } - }); - } - - @Override - public void show(Boolean entity) { - V2XVoiceManager.INSTANCE.registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CANCEL_HELP, cancelCb); - } - - @Override - public void close() { - if (V2XServiceManager.getMoGoStatusManager().isSeekHelping()) { - V2XServiceManager.getMoGoStatusManager().setSeekHelping(TAG, false); - SharedPrefsMgr.getInstance(V2XUtils.getApp()).putLong(V2XConst.SEEK_HELP_TIME, 0); - V2XServiceManager.getV2XRefreshModel().cancelHelpSignal(new V2XRefreshCallback() { - @Override - public void onSuccess(BaseData result) { - //移除窗体 - V2XServiceManager.getMogoTopViewManager().removeView(V2XCarForHelpWindow.this); - } - - @Override - public void onFail(String msg) { - Toast.makeText(V2XServiceManager.getContext(), msg, Toast.LENGTH_SHORT).show(); - } - }); - - } - AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("已取消", null); - //移除窗体 - V2XServiceManager.getMogoTopViewManager().removeView(V2XCarForHelpWindow.this); - V2XVoiceManager.INSTANCE.unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CANCEL_HELP); - - if (V2XServiceManager.getMoGoV2XStatusManager().isOtherSeekHelpPOIShow()) { - // 移除线 - V2XServiceManager.getMoGoV2XPolylineManager().clearLine(); - // 移除事件POI - V2XServiceManager.getMoGoV2XMarkerManager().clearSpecialCarPOI(); - // 绘制上次的数据 - V2XServiceManager.getMoGoV2XMarkerManager().drawableLastAllPOI(); - } - - } - - @Override - public View getView() { - return this; - } - - @Override - public void setWindowStatusListener(V2XWindowStatusListener listener) { - - } -} diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XSeekHelpButton.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XSeekHelpButton.java index 7f8854db08..ac18174fed 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XSeekHelpButton.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XSeekHelpButton.java @@ -1,7 +1,9 @@ package com.mogo.module.v2x.scenario.scene.help; import android.content.Intent; +import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.widget.TextView; import com.mogo.commons.data.BaseData; @@ -35,6 +37,8 @@ public class V2XSeekHelpButton implements IV2XButton { private V2XVoiceCallbackListener cancelCb = (String command, Intent intent) -> { doAction(); }; + private View topView; + private void doAction() { if (mListener != null) { @@ -53,31 +57,57 @@ public class V2XSeekHelpButton implements IV2XButton { try { tv = V2XServiceManager.getMogoEntranceButtonController().getButton(ButtonIndex.BUTTON2); tv.setText("取消\n求助"); - tv.setVisibility(View.VISIBLE); tv.setOnClickListener(v -> { //调用取消求助接口 // TODO: 2020/5/18 回调,显示对话框 doAction(); }); + + if (V2XServiceManager.getMoGoStatusManager().isVrMode()) { + showTopView(); + tv.setVisibility(View.GONE); + } else { + closeTopView(); + tv.setVisibility(View.VISIBLE); + } + } catch (Exception e) { e.printStackTrace(); } } + public void showTopView() { + topView = View.inflate(V2XServiceManager.getContext(), R.layout.window_carforhelp_detail, null); + TextView tvCancel = topView.findViewById(R.id.tv_cancel); + tvCancel.setOnClickListener(v -> { + doAction(); + }); + ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, + (int) V2XUtils.getApp().getResources().getDimension(R.dimen.dp_140)); + V2XServiceManager.getMogoTopViewManager().addView(topView, layoutParams); + } + + public void closeTopView() { + V2XServiceManager.getMogoTopViewManager().removeView(topView); + } + @Override public void close() { if (tv != null) { AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("已取消", null); tv.setVisibility(View.GONE); + closeTopView(); V2XServiceManager.getV2XRefreshModel().cancelHelpSignal(new V2XRefreshCallback() { @Override public void onSuccess(BaseData result) { tv.setVisibility(View.GONE); + closeTopView(); } @Override public void onFail(String msg) { tv.setVisibility(View.VISIBLE); + showTopView(); } }); mListener = null; diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml index ae2ab6d8bb..2d0db2ebb2 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml @@ -262,9 +262,10 @@ android:id="@+id/iv_play" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingLeft="@dimen/dp_40" - android:visibility="gone" - android:src="@drawable/icon_play" /> + android:layout_marginTop="@dimen/dp_6" + android:paddingLeft="@dimen/dp_42" + android:src="@drawable/icon_play" + android:visibility="gone" /> From d0379ca831f0d14ebf3d873530801a8fa5c17a5a Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Thu, 8 Apr 2021 17:25:42 +0800 Subject: [PATCH 03/14] opt draw --- .../com/mogo/module/common/constants/DataTypes.java | 7 ++++++- .../mogo/module/common/drawer/V2XWarnDataDrawer.java | 10 +++++----- .../java/com/mogo/module/v2x/V2XWaringManager.java | 1 + .../v2x/manager/impl/MoGoV2XCloundDataManager.java | 10 ++++++++-- .../src/main/res/raw/scenario_warning_event_data.json | 2 +- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/constants/DataTypes.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/constants/DataTypes.java index 07dfb1fbb2..85c7794f0e 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/constants/DataTypes.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/constants/DataTypes.java @@ -19,10 +19,15 @@ class DataTypes { public static final String TYPE_MARKER_CLOUD_DATA = "TYPE_MARKER_CLOUD_DATA"; /** - * 云端下发数据 + * 云端下发警告数据 */ public static final String TYPE_MARKER_CLOUD_WARN_DATA = "TYPE_MARKER_CLOUD_WARN_DATA"; + /** + * 云端下发停止线数据 + */ + public static final String TYPE_MARKER_CLOUD_STOP_LINE_DATA = "TYPE_MARKER_CLOUD_STOP_LINE_DATA"; + /** * Push 事件场景 VR */ diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java index d86d0213d8..0eba5d780f 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java @@ -14,9 +14,9 @@ import com.mogo.module.common.entity.V2XWarningEntity; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.UiThreadHandler; -import com.mogo.utils.WorkThreadHandler; import com.mogo.utils.logger.Logger; +import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_CLOUD_STOP_LINE_DATA; import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_CLOUD_WARN_DATA; @@ -65,7 +65,7 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL /** - * 绘制行人和二轮车 + * 绘制行人和二轮车,前方和左右 * * @param data */ @@ -79,7 +79,7 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL markerShowEntity.setMarkerType(TYPE_MARKER_CLOUD_WARN_DATA); IMogoMarker marker = drawMarker(markerShowEntity); - Log.d("liyz", "renderWarnData marker != null "); + Log.d("liyz", "renderWarnData marker != null direction = " + data.getDirection()); marker.addDynamicAnchorPosition(new MogoLatLng( data.getDirection() == 1 ? data.getStopLines().get(1).lat : data.getCollisionLat(), data.getDirection() == 1 ? data.getStopLines().get(1).lon : data.getCollisionLon()), (float) data.getHeading(), 5000); @@ -109,7 +109,7 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL } /** - * 绘制停止线 + * 绘制停止线 marker * * @param data */ @@ -120,7 +120,7 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL MarkerShowEntity markerShowEntity = new MarkerShowEntity(); markerShowEntity.setMarkerLocation(location); - markerShowEntity.setMarkerType(TYPE_MARKER_CLOUD_WARN_DATA); + markerShowEntity.setMarkerType(TYPE_MARKER_CLOUD_STOP_LINE_DATA); IMogoMarker marker = drawStopLineMarker(markerShowEntity); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java index 66bc31e67d..1f736ccfcd 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java @@ -166,6 +166,7 @@ public class V2XWaringManager { // } ); // //adas自车定位 +// MogoApisHandler.getInstance().getApis().getMapServiceApi().getSingletonLocationClient().getLastKnowLocation() // double lon = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon(); // double lat = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat(); } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java index d3499534cb..47d87c5107 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java @@ -108,8 +108,9 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog for (int i = 0; i < fillPoints.size(); i++) { V2XWarningEntity entity = new V2XWarningEntity(); MogoLatLng latLng = (MogoLatLng) fillPoints.get(i); + Log.d("liyz", "handleStopLine lat = " + latLng.lat + "--lon =" + latLng.lon); entity.setLat(latLng.lat); - entity.setLat(latLng.lon); + entity.setLon(latLng.lon); entity.setCollisionLat(mCloundWarningInfo.getCollisionLat()); entity.setCollisionLon(mCloundWarningInfo.getCollisionLon()); entity.heading = mCloundWarningInfo.heading; @@ -194,7 +195,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog public void onCarLocationChanged2(Location latLng) { // Log.d(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude() + "---isSelfLineClear = " + isSelfLineClear); //当行人经纬度交点 经纬度不为空,开始画线,否则清理 - //自车只需要关注移动 if (!isSelfLineClear) { IMogoPolyline mogoPolyline = V2XServiceManager.getMoGoWarnPolylineManager().getMogoWarnPolyline(); if (mCloundWarningInfo != null) { @@ -258,4 +258,10 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog } + private MogoLatLng getMogoLat(MogoLatLng latlng) { + MogoLatLng newLocation = LocationUtils.getNewLocation(latlng, mCloundWarningInfo.getDistance(), mCloundWarningInfo.getDirection()); + + return newLocation; + } + } diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json index a01111e3c1..e6197fd863 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json @@ -20,7 +20,7 @@ "direction": 1, "speed": 11.108121, "targetColor": "#FF4040", - "stopLineDistance": 30, + "stopLineDistance": 15, "warningContent": "小心行人", "heading": 0, "showTime": 3000, From acf8f81d6c1bcd5b499c8655556f95f63dfe3423 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Thu, 8 Apr 2021 17:52:33 +0800 Subject: [PATCH 04/14] =?UTF-8?q?adas=E8=AF=86=E5=88=AB=E6=A8=A1=E6=8B=9F?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=BD=BF=E7=94=A8adas=E9=80=9A=E9=81=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/intent/MockIntentHandler.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java index ce3af58d54..c2c3812f6b 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java @@ -841,23 +841,25 @@ public class MockIntentHandler implements IntentHandler { } } -// List< ADASRecognizedResult > allList = new ArrayList<>(); - JSONArray jsonArray = new JSONArray( ); + List< ADASRecognizedResult > allList = new ArrayList<>(); for ( BufferedReader reader : readers ) { String line = reader.readLine(); -// ADASRecognizedResult adasRecognizedResult = GsonUtil.objectFromJson( line, ADASRecognizedResult.class ); - jsonArray.put( line ); -// if ( adasRecognizedResult != null ) { -// allList.add( adasRecognizedResult ); -// } + ADASRecognizedResult adasRecognizedResult = GsonUtil.objectFromJson( line, ADASRecognizedResult.class ); + if ( adasRecognizedResult != null ) { + allList.add( adasRecognizedResult ); + } } - JSONObject object = new JSONObject(); - object.put( "action", "view" ); - object.put( "models", jsonArray ); + AdasRec adasRec = new AdasRec(); + adasRec.models = allList; - MogoApisHandler.getInstance().getApis().getAdasControllerApi().mockAdasRecognized( object.toString() ); + MogoApisHandler.getInstance().getApis().getAdasControllerApi().mockAdasRecognized( GsonUtil.jsonFromObject( adasRec ) ); Log.i( "mock-timer-adas", "cost " + ( System.currentTimeMillis() - start ) + "ms" ); return true; } + + public static class AdasRec{ + public String action = "view"; + public List models; + } } From 961f95ea3c56a0bf89fd3285bf5a830a6fdbd3d4 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Thu, 8 Apr 2021 18:40:29 +0800 Subject: [PATCH 05/14] opt --- .../mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java | 2 +- .../src/main/res/raw/scenario_warning_event_data.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java index 47d87c5107..b8e60f4e8a 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java @@ -59,7 +59,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog pointsBetween(); //发送预警提示 - MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(cloundWarningInfo.getDirection(), MogoReceiver.ACTION_V2X_FRONT_WARNING); + MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(cloundWarningInfo.getType(), MogoReceiver.ACTION_V2X_FRONT_WARNING); isSelfLineClear = false; diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json index e6197fd863..5963e668f3 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json @@ -1,5 +1,5 @@ { - "type": 2, + "type": 10013, "lat": 39.977148, "lon": 116.417478, "distance": 2, From 9510705a3dfbada448423b41f967c229bf2494e7 Mon Sep 17 00:00:00 2001 From: wujifei Date: Fri, 9 Apr 2021 11:28:08 +0800 Subject: [PATCH 06/14] =?UTF-8?q?new#=E9=99=90=E9=80=9F=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=86=99=E6=AD=BB60km/h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/module/extensions/entrance/EntranceFragment.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 f46369a4d9..4f3fa1fb7b 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 @@ -1332,9 +1332,9 @@ public class EntranceFragment extends MvpFragment 40 ? "#DB3137" : "#3E77F6")); + mouduleArc.setArcColor(Color.parseColor(speed > 60 ? "#DB3137" : "#3E77F6")); mouduleArc.setValues(speed); - flSpeed.setBackgroundResource(speed > 40 ? R.drawable.yi_biao_pan_bg_speeding : R.drawable.yi_biao_pan_bg_nor); + flSpeed.setBackgroundResource(speed > 60 ? R.drawable.yi_biao_pan_bg_speeding : R.drawable.yi_biao_pan_bg_nor); } @Override From bbcd8bd7ddedc8e3b05b3aed490529e750041a49 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Fri, 9 Apr 2021 11:49:47 +0800 Subject: [PATCH 07/14] fix ui bug --- gradle.properties | 16 +-- libraries/map-custom/build.gradle | 2 +- .../utils/TopViewNoLinkageAnimHelper.java | 26 ++-- .../src/main/res/values/dimens.xml | 2 +- .../scene/livecar/V2XPushLiveCarScenario.java | 20 ++-- .../scene/livecar/V2XPushLiveCarWindow.java | 17 ++- .../scene/livecar/V2XVoiceCallLiveBiz.java | 11 +- .../livecar/V2XVoiceCallLiveCarWindow.java | 19 ++- .../livecar/V2XVoiceCallLiveScenario.java | 25 ++-- .../module/v2x/view/CarZegoLiveVideoView.java | 5 +- .../v2x/view/V2XCrossRoadVideoView.java | 5 +- .../module/v2x/view/V2XLiveGSYVideoView.java | 113 +++++++++--------- .../main/res/layout/item_v2x_live_video.xml | 2 +- .../res/layout/item_v2x_live_video_vr.xml | 2 +- .../res/layout/item_v2x_push_live_video.xml | 6 +- .../layout/item_v2x_push_live_video_vr.xml | 23 ++++ .../item_v2x_see_frontcar_live_video.xml | 10 +- .../item_v2x_see_frontcar_live_video_vr.xml | 51 ++++++++ .../view_video_layout_see_crossroad.xml | 6 +- .../res/layout/view_video_layout_see_live.xml | 3 +- .../res/layout/window_see_carlive_video.xml | 1 + .../layout/window_see_carlive_video_vr.xml | 15 +++ .../src/main/res/values-xhdpi/dimens.xml | 4 +- .../src/main/res/values/strings.xml | 1 + 24 files changed, 225 insertions(+), 160 deletions(-) create mode 100644 modules/mogo-module-v2x/src/main/res/layout/item_v2x_push_live_video_vr.xml create mode 100644 modules/mogo-module-v2x/src/main/res/layout/item_v2x_see_frontcar_live_video_vr.xml create mode 100644 modules/mogo-module-v2x/src/main/res/layout/window_see_carlive_video_vr.xml diff --git a/gradle.properties b/gradle.properties index 3d9c247180..9a6fe8a201 100644 --- a/gradle.properties +++ b/gradle.properties @@ -155,21 +155,21 @@ LOGLIB_VERSION = 1.0.4 ######## MogoAiCloudSDK Version # 网络请求 -MOGO_NETWORK_VERSION=1.0.63 +MOGO_NETWORK_VERSION=1.0.66 # 鉴权 -MOGO_PASSPORT_VERSION=1.0.63 +MOGO_PASSPORT_VERSION=1.0.66 # 常链接 -MOGO_SOCKET_VERSION=1.0.63 +MOGO_SOCKET_VERSION=1.0.66 # 数据采集 -MOGO_REALTIME_VERSION=1.0.63 +MOGO_REALTIME_VERSION=1.0.66 # 探路,道路事件发布,获取 -MOGO_TANLU_VERSION=1.0.63 +MOGO_TANLU_VERSION=1.0.66 # 直播推流 -MOGO_LIVE_VERSION=1.0.63 +MOGO_LIVE_VERSION=1.0.66 # 直播拉流 -MOGO_TRAFFICLIVE_VERSION=1.0.63 +MOGO_TRAFFICLIVE_VERSION=1.0.66 -######## Foundation MogoAiCloud Moduletruetr +######## Foundation MogoAiCloud Module # mogoAiCloud apk services MOGO_AICLOUD_SERVICES_APK_VERSION=1.0.0-SNAPSHOT # mogoAiCloud sdk services diff --git a/libraries/map-custom/build.gradle b/libraries/map-custom/build.gradle index 2ac43dc030..9f081298c9 100644 --- a/libraries/map-custom/build.gradle +++ b/libraries/map-custom/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation project(':foudations:mogo-commons') } - implementation 'com.zhidaoauto.machine:map:1.0.0-vr-8.5.2' + implementation 'com.zhidaoauto.machine:map:1.0.0-vr-8.5.4' // implementation 'com.zhidaoauto.machine:map:1.0.0-vr-test-3.4' } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewNoLinkageAnimHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewNoLinkageAnimHelper.java index d9b55cfd0a..50974b952c 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewNoLinkageAnimHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewNoLinkageAnimHelper.java @@ -1,14 +1,11 @@ package com.mogo.module.extensions.utils; import android.animation.Animator; -import android.os.Handler; -import android.transition.Transition; import android.util.ArrayMap; import android.view.View; import android.view.ViewGroup.LayoutParams; import androidx.constraintlayout.widget.ConstraintLayout; -import androidx.constraintlayout.widget.ConstraintSet; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.module.common.MogoApisHandler; @@ -36,15 +33,18 @@ public class TopViewNoLinkageAnimHelper { private ConstraintLayout topMotionLayout; private TopView topContainerNoLinkage; - private float topHeight = 0f; + private volatile boolean isTopViewOut = true; + private final List viewCaches = new ArrayList<>(); + private final Map statusListenerMap = new ArrayMap<>(); - private Handler handler = new Handler(); + private View currentAnimatingView = null; + + private IMogoMapUIController mogoMapUIController; + private volatile static TopViewNoLinkageAnimHelper instance = null; private TopViewNoLinkageAnimHelper() { } - private volatile static TopViewNoLinkageAnimHelper instance = null; - public static TopViewNoLinkageAnimHelper getInstance() { if (instance == null) { synchronized (TopViewNoLinkageAnimHelper.class) { @@ -56,8 +56,6 @@ public class TopViewNoLinkageAnimHelper { return instance; } - private IMogoMapUIController mogoMapUIController; - public void setIMogoMapUIController(IMogoMapUIController mogoMapUIController) { this.mogoMapUIController = mogoMapUIController; } @@ -73,12 +71,6 @@ public class TopViewNoLinkageAnimHelper { topContainerNoLinkage.setSlideListener(this::startLatestTopOutAnim); } - private volatile boolean isTopViewOut = true; - private List viewCaches = new ArrayList<>(); - private Map statusListenerMap = new ArrayMap<>(); - - private View currentAnimatingView = null; - public void startTopInAnim(View view, LayoutParams params, IMogoTopViewStatusListener statusListener) { @@ -258,12 +250,12 @@ public class TopViewNoLinkageAnimHelper { topContainerNoLinkage = null; } - public void enterVrMode(){ + public void enterVrMode() { removeAllView(); topContainerNoLinkage.getLayoutParams().width = (int) getDimen(R.dimen.module_ext_top_view_no_link_width_in_vr_mode); } - public void exitVrMode(){ + public void exitVrMode() { removeAllView(); topContainerNoLinkage.getLayoutParams().width = LayoutParams.MATCH_PARENT; } diff --git a/modules/mogo-module-extensions/src/main/res/values/dimens.xml b/modules/mogo-module-extensions/src/main/res/values/dimens.xml index 9cc9dc544b..d430472dff 100644 --- a/modules/mogo-module-extensions/src/main/res/values/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values/dimens.xml @@ -89,7 +89,7 @@ 1058px 822px - 615px + 583px 544px 117px 80px diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarScenario.java index 812f088cdd..2753c14411 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarScenario.java @@ -20,7 +20,7 @@ import com.mogo.utils.TipToast; * author : donghongyu * e-mail : 1358506549@qq.com * date : 2020/5/15 5:37 PM - * desc : TODO 演示使用的推送单车机直播场景 + * desc : TODO 推送直播场景 非演示 * version: 1.0 */ public class V2XPushLiveCarScenario extends AbsV2XScenario implements IMogoTopViewStatusListener { @@ -44,11 +44,9 @@ public class V2XPushLiveCarScenario extends AbsV2XScenario show(); } else { TipToast.shortTip("附近没有可直播车机"); - //Logger.e(V2XConst.MODULE_NAME, "直播地址为null"); } } else { setV2XMessageEntity(v2XMessageEntity); - //Logger.w(V2XConst.MODULE_NAME, "要处理的场景已经存在,丢弃这次初始化"); } } @@ -65,9 +63,15 @@ public class V2XPushLiveCarScenario extends AbsV2XScenario int height = (int) V2XUtils.getApp().getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ? R.dimen.module_v2x_event_see_live_window_height_vr : R.dimen.module_v2x_event_see_live_window_height); ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(width, height); - V2XServiceManager - .getMogoTopViewManager() - .addViewNoLinkage(getV2XWindow().getView(), layoutParams, this); + if (V2XServiceManager.getMoGoStatusManager().isVrMode()) { + V2XServiceManager + .getMogoTopViewManager() + .addViewNoLinkage(getV2XWindow().getView(), layoutParams, this); + } else { + V2XServiceManager + .getMogoTopViewManager() + .addView(getV2XWindow().getView(), layoutParams, this); + } getV2XWindow().show(getV2XMessageEntity().getContent()); V2XServiceManager.getMoGoV2XStatusManager().setLiveCarWindowShow(TAG, true); } @@ -111,23 +115,19 @@ public class V2XPushLiveCarScenario extends AbsV2XScenario @Override public void onViewAdded(View view) { - //Logger.d(MODULE_NAME, "展示 Window 动画结束"); ADASUtils.broadcastToADAS(V2XServiceManager.getContext(), getV2XMessageEntity().getContent()); } @Override public void onViewRemoved(View view) { - //Logger.d(MODULE_NAME, "关闭 Window 动画结束"); } @Override public void beforeViewAddAnim(View view) { - //Logger.d(MODULE_NAME, "展示 Window 开始"); } @Override public void beforeViewRemoveAnim(View view) { - //Logger.d(MODULE_NAME, "关闭 Window 开始"); // 重置场景提示的消息 setV2XMessageEntity(null); V2XServiceManager.getMoGoV2XStatusManager().setLiveCarWindowShow(TAG, false); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarWindow.java index 5c1675c924..2b07ee047e 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarWindow.java @@ -6,6 +6,7 @@ import android.text.TextUtils; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.widget.ImageView; import android.widget.RelativeLayout; @@ -19,7 +20,6 @@ import com.mogo.module.v2x.scenario.view.IV2XWindow; import com.mogo.module.v2x.utils.MarkerUtils; import com.mogo.module.v2x.view.V2XLiveGSYVideoView; import com.mogo.service.imageloader.MogoImageView; -import com.mogo.utils.logger.Logger; import static com.mogo.module.v2x.V2XConst.MODULE_NAME; @@ -27,20 +27,18 @@ import static com.mogo.module.v2x.V2XConst.MODULE_NAME; * author : donghongyu * e-mail : 1358506549@qq.com * date : 2020/4/24 11:34 AM - * desc : TODO 演示使用的推送单车机直播场景 * version: 1.0 */ public class V2XPushLiveCarWindow extends V2XBasWindow implements IV2XWindow { - private Context mContext; private V2XLiveGSYVideoView mV2XLiveGSYVideoView; private MogoImageView mIvReportHead; - private ImageView pushVideoClose; + // 弹窗状态监听 private V2XWindowStatusListener mV2XWindowStatusListener; // 直播30秒自动关闭 - private static Handler handlerV2XEvent = new Handler(); + private static final Handler handlerV2XEvent = new Handler(); private static Runnable runnableV2XEvent; public V2XPushLiveCarWindow() { @@ -57,17 +55,18 @@ public class V2XPushLiveCarWindow extends V2XBasWindow implements IV2XWindow { //移除窗体 V2XServiceManager @@ -114,7 +113,7 @@ public class V2XPushLiveCarWindow extends V2XBasWindow implements IV2XWindow { @@ -106,8 +106,7 @@ public class V2XVoiceCallLiveBiz { LiveStreamManagerImpl.getInstance(AbsMogoApplication.getApp(), MoGoAiCloudClientConfig.getInstance().getThirdPartyDeviceId()); V2XMessageEntity v2XMessageEntity = buildCallLiveParams(null, null); - mV2XVoiceCallLiveScenario = new V2XVoiceCallLiveScenario(); - mV2XVoiceCallLiveScenario.setV2XWindow(new V2XVoiceCallLiveCarWindow()); + V2XVoiceCallLiveScenario mV2XVoiceCallLiveScenario = new V2XVoiceCallLiveScenario(); mV2XVoiceCallLiveScenario.init(v2XMessageEntity); } @@ -121,11 +120,11 @@ public class V2XVoiceCallLiveBiz { public void liveUrlResult(String liveUrl) { if (!TextUtils.isEmpty(liveUrl)) { V2XMessageEntity v2XMessageEntity = buildCallLiveParams(null, liveUrl); - mV2XVoiceCallLiveScenario = new V2XVoiceCallLiveScenario(); - mV2XVoiceCallLiveScenario.setV2XWindow(new V2XVoiceCrossRoadLiveWindow()); - mV2XVoiceCallLiveScenario.init(v2XMessageEntity); + V2XPushLiveCarScenario pushLiveCarScenario = new V2XPushLiveCarScenario(); + pushLiveCarScenario.init(v2XMessageEntity); } else { Logger.d(MODULE_NAME, "getOpenRoadCameraLive 路口实况直播地址为空"); + ToastUtils.showShort(R.string.v2x_front_live_url_null); } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveCarWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveCarWindow.java index c836ca0c47..0b06069949 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveCarWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveCarWindow.java @@ -4,7 +4,6 @@ import android.content.Context; import android.os.Handler; import android.util.AttributeSet; import android.view.LayoutInflater; -import android.view.SurfaceView; import android.view.View; import android.widget.ImageView; import android.widget.TextView; @@ -24,7 +23,10 @@ import static com.mogo.module.v2x.V2XConst.MODULE_NAME; public class V2XVoiceCallLiveCarWindow extends V2XBasWindow implements IV2XWindow { - private CarZegoLiveVideoView mV2XCarLiveVideoView; + private static final int COUNT_DOWN_TIMER = 1_000; + private static final int ALL_EXPIRE_TIMER = 1_000 * 30; + private static int EXPIRE_TIMER = ALL_EXPIRE_TIMER; + private TextView tvCountDown; private ImageView ivVideoPlayingSign; private boolean isVideoPlay = false; @@ -32,13 +34,9 @@ public class V2XVoiceCallLiveCarWindow extends V2XBasWindow // 处理道路事件,30秒倒计时 private final Handler handlerV2XEvent = new Handler(); private Runnable runnableV2XEvent; - private static final int COUNT_DOWN_TIMER = 1_000; - private static final int ALL_EXPIRE_TIMER = 1_000 * 30; - private static int EXPIRE_TIMER = ALL_EXPIRE_TIMER; public V2XVoiceCallLiveCarWindow() { this(V2XServiceManager.getContext(), null); - Logger.d(MODULE_NAME, "V2XVoiceCallLiveCarWindow INIT"); } public V2XVoiceCallLiveCarWindow(Context context, AttributeSet attrs) { @@ -52,8 +50,10 @@ public class V2XVoiceCallLiveCarWindow extends V2XBasWindow private void initView(Context context) { Logger.w(MODULE_NAME, "V2X===初始化语音呼叫直播视图"); - LayoutInflater.from(context).inflate(R.layout.window_see_carlive_video, this); - mV2XCarLiveVideoView = findViewById(R.id.videoPlayer); + LayoutInflater.from(context).inflate(V2XServiceManager.getMoGoStatusManager().isVrMode() + ? R.layout.window_see_carlive_video_vr + : R.layout.window_see_carlive_video, this); + CarZegoLiveVideoView mV2XCarLiveVideoView = findViewById(R.id.videoPlayer); tvCountDown = findViewById(R.id.tvCountDown); ivVideoPlayingSign = findViewById(R.id.ivVideoPlayingSign); mV2XCarLiveVideoView.addOnVideoStatusChangeListener(videoPlaying -> { @@ -113,7 +113,6 @@ public class V2XVoiceCallLiveCarWindow extends V2XBasWindow if (runnableV2XEvent == null) { runnableV2XEvent = () -> { EXPIRE_TIMER = EXPIRE_TIMER - COUNT_DOWN_TIMER; - Logger.d(MODULE_NAME, "V2X=== Window 30秒倒计时开始,当前 :" + EXPIRE_TIMER / COUNT_DOWN_TIMER + " 秒"); tvCountDown.setVisibility(View.VISIBLE); ivVideoPlayingSign.setVisibility(View.VISIBLE); tvCountDown.setText(String.valueOf(EXPIRE_TIMER / COUNT_DOWN_TIMER)); @@ -126,12 +125,10 @@ public class V2XVoiceCallLiveCarWindow extends V2XBasWindow } else { handlerV2XEvent.removeCallbacks(runnableV2XEvent); } - Logger.d(MODULE_NAME, "V2X=== Window 展示开始倒计时"); handlerV2XEvent.postDelayed(runnableV2XEvent, COUNT_DOWN_TIMER); } private void stopCountDown() { - Logger.d(MODULE_NAME, "V2X=== Window 倒计时停止。。。"); if (handlerV2XEvent != null && runnableV2XEvent != null) { handlerV2XEvent.removeCallbacks(runnableV2XEvent); runnableV2XEvent = null; diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveScenario.java index a802d93962..1b7c047ccd 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveScenario.java @@ -1,7 +1,7 @@ package com.mogo.module.v2x.scenario.scene.livecar; import android.view.View; -import android.widget.RelativeLayout; +import android.view.ViewGroup; import androidx.annotation.Nullable; @@ -20,27 +20,26 @@ import static com.mogo.module.v2x.V2XConst.MODULE_NAME; /** * author : unknown - * desc : 语音呼叫查看直播场景,包括车辆直播 或者 路口实况 window,区分不同页面window逻辑实现 + * desc : 语音呼叫查看直播场景,包括车辆直播 或者 路口实况 window,区分不同页面window逻辑实现,前方直播车辆由AICloudSdk中实现,上层仅传入SurfaceView和经纬度 */ public class V2XVoiceCallLiveScenario extends AbsV2XScenario implements IMogoTopViewStatusListener { + public V2XVoiceCallLiveScenario() { + setV2XWindow(new V2XVoiceCallLiveCarWindow()); + } + @Override public void init(@Nullable V2XMessageEntity v2XMessageEntity) { if (v2XMessageEntity == null) { TipToast.shortTip("附近没有可直播车机"); + return; } if (v2XMessageEntity.isShowState()) { if (!isSameScenario(v2XMessageEntity) && V2XServiceManager.getMoGoStatusManager().isMainPageLaunched()) { setV2XMessageEntity(v2XMessageEntity); - Logger.d(V2XConst.MODULE_NAME, "v2XMessageEntity : " + v2XMessageEntity + " getVideoSn : " + v2XMessageEntity.getContent().getVideoSn()); - if (v2XMessageEntity != null) { - Logger.d(V2XConst.MODULE_NAME, "准备展示直播窗口"); - show(); - } else { - TipToast.shortTip("附近没有可直播车机"); - Logger.e(V2XConst.MODULE_NAME, "直播地址为null"); - } + Logger.d(V2XConst.MODULE_NAME, "v2XMessageEntity : " + v2XMessageEntity); + show(); } else { setV2XMessageEntity(v2XMessageEntity); Logger.w(V2XConst.MODULE_NAME, "要处理的场景已经存在,丢弃这次初始化"); @@ -64,11 +63,7 @@ public class V2XVoiceCallLiveScenario extends AbsV2XScenario { mLoading.setVisibility(VISIBLE); mClLoadError.setVisibility(GONE); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XCrossRoadVideoView.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XCrossRoadVideoView.java index ecd7605263..0a6fef8f20 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XCrossRoadVideoView.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XCrossRoadVideoView.java @@ -57,7 +57,6 @@ public class V2XCrossRoadVideoView extends RoundLayout { private final GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder(); private ProgressBar mLoading; private ConstraintLayout mClLoadError; - private TextView mTvRefreshButton; private boolean init = false; private MarkerCarInfo.CarLiveInfo mCarLiveInfo; @@ -83,6 +82,7 @@ public class V2XCrossRoadVideoView extends RoundLayout { public V2XCrossRoadVideoView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); + Logger.d(TAG, "constructor invoke initView"); initView(context); } @@ -101,7 +101,7 @@ public class V2XCrossRoadVideoView extends RoundLayout { mLoading.getIndeterminateDrawable().setColorFilter(ContextCompat.getColor(context, R.color.live_video_progress_bar_loading_color), PorterDuff.Mode.MULTIPLY); mClLoadError = findViewById(R.id.clLoadError); - mTvRefreshButton = findViewById(R.id.tvRefreshButton); + TextView mTvRefreshButton = findViewById(R.id.tvRefreshButton); mTvRefreshButton.setOnClickListener(v -> { mLoading.setVisibility(VISIBLE); mClLoadError.setVisibility(GONE); @@ -152,7 +152,6 @@ public class V2XCrossRoadVideoView extends RoundLayout { * @param carLiveInfo 要直播的设备信息,如果没有直播的地址需要重新获取最新的直播地址 */ public void startLive(MarkerCarInfo.CarLiveInfo carLiveInfo) { - initView(this.getContext()); // 进行直播播放 if (mTxcVideoView != null && carLiveInfo != null) { diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java index 205b9d43d5..10d9618c44 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java @@ -7,7 +7,6 @@ import android.os.Bundle; import android.text.TextUtils; import android.util.AttributeSet; import android.view.LayoutInflater; -import android.view.View; import android.widget.ProgressBar; import android.widget.TextView; @@ -18,8 +17,6 @@ import com.mogo.commons.voice.AIAssist; import com.mogo.module.common.entity.MarkerCarInfo; import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XServiceManager; -import com.mogo.module.v2x.entity.net.V2XLivePushVoRes; -import com.mogo.module.v2x.network.V2XRefreshCallback; import com.mogo.module.v2x.utils.V2XUtils; import com.mogo.module.v2x.voice.V2XVoiceCallbackListener; import com.mogo.module.v2x.voice.V2XVoiceConstants; @@ -50,16 +47,14 @@ public class V2XLiveGSYVideoView extends RoundLayout implements IMogoSkinCompatS private ProgressBar mLoading; private TXLivePlayer mLivePlayer; private ConstraintLayout mClLoadError; - private TextView mTvRefreshButton; - private MogoSkinCompatBackgroundHelperDelegate mBackgroundTintHelper; + private final MogoSkinCompatBackgroundHelperDelegate mBackgroundTintHelper; private MarkerCarInfo.CarLiveInfo mCarLiveInfo; // 重新刷新直播流 - private V2XVoiceCallbackListener v2XVoiceCallbackRefreshListener = new V2XVoiceCallbackListener() { + private final V2XVoiceCallbackListener v2XVoiceCallbackRefreshListener = new V2XVoiceCallbackListener() { @Override public void onCallback(String command, Intent intent) { - //startHeartLive(mCarLiveInfo); mLoading.setVisibility(VISIBLE); mClLoadError.setVisibility(GONE); if (mCarLiveInfo != null) { @@ -87,7 +82,7 @@ public class V2XLiveGSYVideoView extends RoundLayout implements IMogoSkinCompatS private void initView(Context context) { LayoutInflater.from(context) .inflate(R.layout.view_video_layout_normal, this); - //mPlayerView 即 step1 中添加的界面 view + //mPlayerView 即 step1 中添加的界面 view mTxcVideoView = findViewById(R.id.txcVideoView); //创建 player 对象 mLivePlayer = new TXLivePlayer(context); @@ -106,15 +101,12 @@ public class V2XLiveGSYVideoView extends RoundLayout implements IMogoSkinCompatS mLoading.getIndeterminateDrawable().setColorFilter(ContextCompat.getColor(context, R.color.live_video_progress_bar_loading_color), PorterDuff.Mode.MULTIPLY); mClLoadError = findViewById(R.id.clLoadError); - mTvRefreshButton = findViewById(R.id.tvRefreshButton); - mTvRefreshButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - mLoading.setVisibility(VISIBLE); - mClLoadError.setVisibility(GONE); - if (mCarLiveInfo != null) { - startLive(mCarLiveInfo); - } + TextView mTvRefreshButton = findViewById(R.id.tvRefreshButton); + mTvRefreshButton.setOnClickListener(v -> { + mLoading.setVisibility(VISIBLE); + mClLoadError.setVisibility(GONE); + if (mCarLiveInfo != null) { + startLive(mCarLiveInfo); } }); } @@ -141,33 +133,33 @@ public class V2XLiveGSYVideoView extends RoundLayout implements IMogoSkinCompatS } // 根据SN重新获取直播流地址 else { - V2XServiceManager - .getV2XRefreshModel() - .livePush(new V2XRefreshCallback() { - @Override - public void onSuccess(V2XLivePushVoRes result) { - Logger.e(MODULE_NAME, "从服务端获取最新直播信息:" + GsonUtil.jsonFromObject(result)); - mClLoadError.setVisibility(GONE); - mClLoadError.setVisibility(GONE); - try { - MarkerCarInfo.CarLiveInfo carRealLiveInfo = new MarkerCarInfo.CarLiveInfo(); - carRealLiveInfo.setVideoUrl(result.getResult().getPlayUrl().getRtmp()); - carRealLiveInfo.setVideoSn(carLiveInfo.getVideoSn()); - carRealLiveInfo.setVideoChannel(result.getResult().getVideoChannel()); - setCarLiveInfo(carLiveInfo); - playLiveVideo(carRealLiveInfo); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Override - public void onFail(String msg) { - Logger.e(MODULE_NAME, "播放器:" + msg); - mLoading.setVisibility(GONE); - mClLoadError.setVisibility(VISIBLE); - } - }, carLiveInfo.getVideoSn(), 0); +// V2XServiceManager +// .getV2XRefreshModel() +// .livePush(new V2XRefreshCallback() { +// @Override +// public void onSuccess(V2XLivePushVoRes result) { +// Logger.e(MODULE_NAME, "从服务端获取最新直播信息:" + GsonUtil.jsonFromObject(result)); +// mClLoadError.setVisibility(GONE); +// mClLoadError.setVisibility(GONE); +// try { +// MarkerCarInfo.CarLiveInfo carRealLiveInfo = new MarkerCarInfo.CarLiveInfo(); +// carRealLiveInfo.setVideoUrl(result.getResult().getPlayUrl().getRtmp()); +// carRealLiveInfo.setVideoSn(carLiveInfo.getVideoSn()); +// carRealLiveInfo.setVideoChannel(result.getResult().getVideoChannel()); +// setCarLiveInfo(carLiveInfo); +// playLiveVideo(carRealLiveInfo); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @Override +// public void onFail(String msg) { +// Logger.e(MODULE_NAME, "播放器:" + msg); +// mLoading.setVisibility(GONE); +// mClLoadError.setVisibility(VISIBLE); +// } +// }, carLiveInfo.getVideoSn(), 0); } } } @@ -223,7 +215,7 @@ public class V2XLiveGSYVideoView extends RoundLayout implements IMogoSkinCompatS /** * 刷新直播心跳 * - * @param carLiveInfo + * @param carLiveInfo 直播info */ private void startHeartLive(MarkerCarInfo.CarLiveInfo carLiveInfo) { try { @@ -248,20 +240,25 @@ public class V2XLiveGSYVideoView extends RoundLayout implements IMogoSkinCompatS // true 代表清除最后一帧画面 mLivePlayer.stopPlay(true); mTxcVideoView.onDestroy(); - // 停止推流 - V2XServiceManager - .getV2XRefreshModel() - .livePush(new V2XRefreshCallback() { - @Override - public void onSuccess(V2XLivePushVoRes result) { - Logger.d(MODULE_NAME, "播放器:" + result); - } - @Override - public void onFail(String msg) { - Logger.e(MODULE_NAME, "播放器:" + msg); - } - }, carLiveInfo.getVideoSn(), 1); +// if (carLiveInfo.getVideoUrl() != null) { +// return; +// } + + // 停止推流 +// V2XServiceManager +// .getV2XRefreshModel() +// .livePush(new V2XRefreshCallback() { +// @Override +// public void onSuccess(V2XLivePushVoRes result) { +// Logger.d(MODULE_NAME, "播放器:" + result); +// } +// +// @Override +// public void onFail(String msg) { +// Logger.e(MODULE_NAME, "播放器:" + msg); +// } +// }, carLiveInfo.getVideoSn(), 1); } catch (Exception e) { e.printStackTrace(); } diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_live_video.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_live_video.xml index e170be569a..64f8db6ea4 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_live_video.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_live_video.xml @@ -10,7 +10,7 @@ \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_push_live_video_vr.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_push_live_video_vr.xml new file mode 100644 index 0000000000..b02a2d05fc --- /dev/null +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_push_live_video_vr.xml @@ -0,0 +1,23 @@ + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_see_frontcar_live_video.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_see_frontcar_live_video.xml index 5296ed1c01..09a73bd6ff 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_see_frontcar_live_video.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_see_frontcar_live_video.xml @@ -1,13 +1,11 @@ + app:roundLayoutRadius="@dimen/dp_30"> + + + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_crossroad.xml b/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_crossroad.xml index 9a5eda56df..73a2019ecc 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_crossroad.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_crossroad.xml @@ -1,5 +1,5 @@ - - - + diff --git a/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_live.xml b/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_live.xml index e25f343eb8..bd902cb049 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_live.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_live.xml @@ -4,8 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:id="@+id/rlRoadEventList" android:layout_width="match_parent" - android:layout_height="@dimen/v2x_video_window_height_content" - android:layout_margin="@dimen/dp_15"> + android:layout_height="match_parent"> + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml index 807411620e..fad6a35bf5 100644 --- a/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml @@ -2,10 +2,12 @@ 800px + 615px 32px 32px 1060px 583px + 366px 160px 0px 32px @@ -14,7 +16,7 @@ 410px 670px - 366px + 526px 147px 60px 40px diff --git a/modules/mogo-module-v2x/src/main/res/values/strings.xml b/modules/mogo-module-v2x/src/main/res/values/strings.xml index 386b36333a..f2c31b1fe4 100644 --- a/modules/mogo-module-v2x/src/main/res/values/strings.xml +++ b/modules/mogo-module-v2x/src/main/res/values/strings.xml @@ -16,5 +16,6 @@ 停车场推荐 线路推荐 26px + 前方路口暂无直播 From 8b657c2bc74111df5b9d9c162a92f06e51e9f66d Mon Sep 17 00:00:00 2001 From: zhongchao Date: Fri, 9 Apr 2021 14:09:53 +0800 Subject: [PATCH 08/14] fix UI bug --- .../src/main/res/layout/item_v2x_push_live_video.xml | 1 - modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_push_live_video.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_push_live_video.xml index 9731e698f7..e1766f2434 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_push_live_video.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_push_live_video.xml @@ -3,7 +3,6 @@ android:id="@+id/rlRoadEventDetail" android:layout_width="match_parent" android:layout_height="@dimen/module_v2x_event_see_live_window_height" - android:layout_marginTop="@dimen/dp_8" android:clipToPadding="false"> 830px - 664px + 662px 674px 150px 46px From b6603b7b5b3bb03731b844479e92ac205ad0487c Mon Sep 17 00:00:00 2001 From: zhongchao Date: Fri, 9 Apr 2021 16:02:36 +0800 Subject: [PATCH 09/14] fix bug of SP and frontLive time --- .../com/mogo/launcher/MogoApplication.java | 168 +++++++++--------- .../com/mogo/commons/AbsMogoApplication.java | 2 +- .../java/com/mogo/commons/device/Devices.java | 2 +- .../com/mogo/commons/storage/SpStorage.java | 4 +- .../main/java/com/mogo/utils/TipToast.java | 4 +- .../apps/view/OnAiAssistClickListener.java | 2 +- .../scene/livecar/V2XVoiceCallLiveBiz.java | 1 + 7 files changed, 92 insertions(+), 91 deletions(-) diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 19b8567590..d748a8a008 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -27,13 +27,10 @@ import com.mogo.module.main.service.MogoMainService; import com.mogo.module.push.base.PushUIConstants; import com.mogo.module.service.ServiceConst; import com.mogo.module.share.constant.ShareConstants; -import com.mogo.realtime.api.MoGoAiCloudRealTime; -import com.mogo.service.map.IMogoSmallMapProvider; import com.mogo.module.v2x.V2XConst; import com.mogo.module.v2x.utils.ObuConfig; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; -import com.mogo.service.passport.IMogoTicketCallback; import com.mogo.test.crashreport.ITestCrashReportProvider; import com.mogo.utils.ProcessUtils; import com.mogo.utils.UiThreadHandler; @@ -59,100 +56,103 @@ public class MogoApplication extends AbsMogoApplication { public void onCreate() { initDebugConfig(); super.onCreate(); - if ( !shouldInit() ) { + if (!shouldInit()) { return; } // Crash 日志收集 final long start = System.currentTimeMillis(); - CrashSystem crashSystem = CrashSystem.getInstance( this ); + CrashSystem crashSystem = CrashSystem.getInstance(this); crashSystem.init(); //设置debug模式,日志不上传 - crashSystem.setDebug( BuildConfig.DEBUG ); - Logger.init( BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF ); + crashSystem.setDebug(BuildConfig.DEBUG); + Logger.init(BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF); - if( DebugConfig.isNeedLoadGuideModule() ){ - MogoModulePaths.addModule( new MogoModule( MogoModulePaths.PATH_GUIDE, MogoModulePaths.PATH_GUIDE ) ); + if (DebugConfig.isNeedLoadGuideModule()) { + MogoModulePaths.addModule(new MogoModule(MogoModulePaths.PATH_GUIDE, MogoModulePaths.PATH_GUIDE)); } - MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_AGREEMENT, AuthorizeConstant.PATH_AGREEMENT_MODULE_NAME ) ); + MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_AGREEMENT, AuthorizeConstant.PATH_AGREEMENT_MODULE_NAME)); - if ( DebugConfig.isLauncher() ) { - MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_BACK, MogoServicePaths.PATH_BACK ) ); - MogoModulePaths.addModule( new MogoModule( MogoModulePaths.PATH_MEDIA, MogoModulePaths.PATH_MEDIA ) ); + if (DebugConfig.isLauncher()) { + MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_BACK, MogoServicePaths.PATH_BACK)); + MogoModulePaths.addModule(new MogoModule(MogoModulePaths.PATH_MEDIA, MogoModulePaths.PATH_MEDIA)); } - MogoModulePaths.addModule( new MogoModule( ServiceConst.PATH_TTS_CONFIG, ServiceConst.PATH_TTS_CONFIG ) ); + MogoModulePaths.addModule(new MogoModule(ServiceConst.PATH_TTS_CONFIG, ServiceConst.PATH_TTS_CONFIG)); - MogoModulePaths.addBaseModule( new MogoModule( MogoServicePaths.PATH_WIDGETS, MogoServicePaths.PATH_WIDGETS ) ); - if ( DebugConfig.isMapBased() ) { - MogoModulePaths.addModule( new MogoModule( CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME ) ); + MogoModulePaths.addBaseModule(new MogoModule(MogoServicePaths.PATH_WIDGETS, MogoServicePaths.PATH_WIDGETS)); + if (DebugConfig.isMapBased()) { + MogoModulePaths.addModule(new MogoModule(CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME)); } - MogoModulePaths.addBaseModule( new MogoModule( ShareConstants.TAG, ShareConstants.MODEL_NAME ) ); - MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_TANLU_API, "TanluApi" ) ); - MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_SHARE, "ShareControl" ) ); - MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_TRAFFIC_UPLOAD, "TrafficUpload" ) ); + MogoModulePaths.addBaseModule(new MogoModule(ShareConstants.TAG, ShareConstants.MODEL_NAME)); + MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_TANLU_API, "TanluApi")); + MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_SHARE, "ShareControl")); + MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_TRAFFIC_UPLOAD, "TrafficUpload")); - MogoModulePaths.addModule( new MogoModule( LeftPanelConst.PATH_NAME, LeftPanelConst.MODULE_NAME ) ); + MogoModulePaths.addModule(new MogoModule(LeftPanelConst.PATH_NAME, LeftPanelConst.MODULE_NAME)); - MogoModulePaths.addBaseModule( new MogoModule( ServiceConst.PATH_REFRESH_STRATEGY, ServiceConst.PATH_REFRESH_STRATEGY ) ); - MogoModulePaths.addBaseModule( new MogoModule( V2XConst.PATH_V2X_UI, V2XConst.MODULE_NAME ) ); - MogoModulePaths.addBaseModule( new MogoModule( MogoServicePaths.PATH_STRATEGY_SHARE, "StrategyShare" ) ); - MogoModulePaths.addBaseModule( new MogoModule( MogoServicePaths.PATH_GAODE_AIMLESS_SHARE, "GaoDeAimlessShare" ) ); - MogoModulePaths.addBaseModule( new MogoModule( MogoServicePaths.PATH_MOGO_MONITOR, "MogoMonitor" ) ); - MogoModulePaths.addModule( new MogoModule( PushUIConstants.PATH, PushUIConstants.NAME ) ); + MogoModulePaths.addBaseModule(new MogoModule(ServiceConst.PATH_REFRESH_STRATEGY, ServiceConst.PATH_REFRESH_STRATEGY)); + MogoModulePaths.addBaseModule(new MogoModule(V2XConst.PATH_V2X_UI, V2XConst.MODULE_NAME)); + MogoModulePaths.addBaseModule(new MogoModule(MogoServicePaths.PATH_STRATEGY_SHARE, "StrategyShare")); + MogoModulePaths.addBaseModule(new MogoModule(MogoServicePaths.PATH_GAODE_AIMLESS_SHARE, "GaoDeAimlessShare")); + MogoModulePaths.addBaseModule(new MogoModule(MogoServicePaths.PATH_MOGO_MONITOR, "MogoMonitor")); + MogoModulePaths.addModule(new MogoModule(PushUIConstants.PATH, PushUIConstants.NAME)); // 碰撞报警模块 - MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_CRASH_WARNING, "CrashWarning" ) ); + MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_CRASH_WARNING, "CrashWarning")); // MogoModulePaths.addModule( new MogoModule( IMogoMachineVisionProvider.path, "IMogoMachineVisionProvider" ) ); // 小地图模块 - MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_SMALL_MAP, "IMogoSmallMapProvider" ) ); + MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_SMALL_MAP, "IMogoSmallMapProvider")); //前方碰撞预警 - MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_V2X_FRONT_CRASH_WARNING, "IV2XManagerProvider" ) ); + MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_V2X_FRONT_CRASH_WARNING, "IV2XManagerProvider")); - MogoModulePaths.addBaseModule( new MogoModule( MogoServicePaths.PATH_GLOBAL_UNWAKE, "GlobalUnwake" ) ); + MogoModulePaths.addBaseModule(new MogoModule(MogoServicePaths.PATH_GLOBAL_UNWAKE, "GlobalUnwake")); - if ( !DebugConfig.isLauncher() ) { - PersistentManager.getInstance().initManager( this ); - Intent intent = new Intent( this, MogoMainService.class ); - startService( intent ); + if (!DebugConfig.isLauncher()) { + PersistentManager.getInstance().initManager(this); + Intent intent = new Intent(this, MogoMainService.class); + startService(intent); } - LeakCanary.install( this ); + LeakCanary.install(this); // debug 下初始化 bugly 上报 - if ( DebugConfig.isDebug() ) { - ARouter.getInstance().navigation( ITestCrashReportProvider.class ); + if (DebugConfig.isDebug()) { + ARouter.getInstance().navigation(ITestCrashReportProvider.class); } - Log.i( "timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" ); + Log.i("timer", "cost " + (System.currentTimeMillis() - start) + "ms"); } @Override protected boolean shouldInit() { - Logger.w( TAG, "evaluate shouldInit() with: %s", ProcessUtils.getProcessName( Process.myPid() ) ); - return ProcessUtils.isMainProcess( this ); + Logger.w(TAG, "evaluate shouldInit() with: %s", ProcessUtils.getProcessName(Process.myPid())); + return ProcessUtils.isMainProcess(this); } + /** + * BuildConfig中渠道配置赋值 + */ private void initDebugConfig() { - DebugConfig.setNetMode( BuildConfig.NET_ENV ); - DebugConfig.setDebug( BuildConfig.DEBUG ); - DebugConfig.setLaunchLocationService( BuildConfig.LAUNCH_LOCATION_SERVICE ); - DebugConfig.setUseCustomNavi( BuildConfig.USE_CUSTOM_NAVI ); - DebugConfig.setLauncher( BuildConfig.IS_LAUNCHER ); - DebugConfig.setActiveAIAssistFlag( BuildConfig.AI_ASSIST_ACTIVE_STAUTS ); - DebugConfig.setUseMockObuData( false ); + DebugConfig.setNetMode(BuildConfig.NET_ENV); + DebugConfig.setDebug(BuildConfig.DEBUG); + DebugConfig.setLaunchLocationService(BuildConfig.LAUNCH_LOCATION_SERVICE); + DebugConfig.setUseCustomNavi(BuildConfig.USE_CUSTOM_NAVI); + DebugConfig.setLauncher(BuildConfig.IS_LAUNCHER); + DebugConfig.setActiveAIAssistFlag(BuildConfig.AI_ASSIST_ACTIVE_STAUTS); + DebugConfig.setUseMockObuData(false); ObuConfig.useObuLocation = false; - DebugConfig.setCarMachineType( BuildConfig.CAR_MACHINE_TYPE ); - DebugConfig.setProductFlavor( BuildConfig.FLAVOR_product ); - DebugConfig.setSocketAppId( BuildConfig.SOCKET_APP_ID ); - DebugConfig.setRoadEventAnimated( BuildConfig.ROAD_EVENT_ANIMATED ); - DebugConfig.setSkinSupported( BuildConfig.IS_SKIN_SUPPORTED ); - DebugConfig.setSupportedSearchDestinationOnlineCarList( BuildConfig.IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST ); - DebugConfig.setScheduleCalculateNotHomeCompanyDistanceForPush( BuildConfig.IS_SUPPORT_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH ); - DebugConfig.setSupportLauncherCardRefreshStrategy( BuildConfig.IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY ); - DebugConfig.setMapBased( BuildConfig.IS_MAP_BASED ); - DebugConfig.setNeedLoadGuideModule( BuildConfig.IS_NEED_LOAD_GUIDE_MODULE ); - DebugConfig.setNeedHideAdasWhenShare( BuildConfig.IS_NEED_HIDE_ADAS_WHEN_SHARE ); - DebugConfig.setNeedUploadCoordinatesInTime( BuildConfig.IS_NEED_UPLOAD_COORDINATES_IN_TIME ); - DebugConfig.setUseAdasRtkLocationInfo( BuildConfig.IS_USE_ADAS_RTK_LOCATION_INFO ); + DebugConfig.setCarMachineType(BuildConfig.CAR_MACHINE_TYPE); + DebugConfig.setProductFlavor(BuildConfig.FLAVOR_product); + DebugConfig.setSocketAppId(BuildConfig.SOCKET_APP_ID); + DebugConfig.setRoadEventAnimated(BuildConfig.ROAD_EVENT_ANIMATED); + DebugConfig.setSkinSupported(BuildConfig.IS_SKIN_SUPPORTED); + DebugConfig.setSupportedSearchDestinationOnlineCarList(BuildConfig.IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST); + DebugConfig.setScheduleCalculateNotHomeCompanyDistanceForPush(BuildConfig.IS_SUPPORT_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH); + DebugConfig.setSupportLauncherCardRefreshStrategy(BuildConfig.IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY); + DebugConfig.setMapBased(BuildConfig.IS_MAP_BASED); + DebugConfig.setNeedLoadGuideModule(BuildConfig.IS_NEED_LOAD_GUIDE_MODULE); + DebugConfig.setNeedHideAdasWhenShare(BuildConfig.IS_NEED_HIDE_ADAS_WHEN_SHARE); + DebugConfig.setNeedUploadCoordinatesInTime(BuildConfig.IS_NEED_UPLOAD_COORDINATES_IN_TIME); + DebugConfig.setUseAdasRtkLocationInfo(BuildConfig.IS_USE_ADAS_RTK_LOCATION_INFO); DebugConfig.setObuType(SharedPrefsMgr.getInstance(this).getInt("OBU_TYPE", DebugConfig.OBU_TYPE_CIDI)); } @@ -165,7 +165,7 @@ public class MogoApplication extends AbsMogoApplication { protected void init() { super.init(); final IMogoServiceApis apis = MogoApisHandler.getInstance().getApis(); - prepareBaseService( apis, 0L ); + prepareBaseService(apis, 0L); } @Override @@ -173,7 +173,7 @@ public class MogoApplication extends AbsMogoApplication { MogoLocation location = MogoApisHandler.getInstance().getApis().getMapServiceApi().getSingletonLocationClient(this).getLastKnowLocation(); if (location == null) { return null; - }else { + } else { return new HttpSimpleLocation(location.getCityCode(), location.getLatitude(), location.getLongitude()); } } @@ -181,26 +181,26 @@ public class MogoApplication extends AbsMogoApplication { /** * 基础服务:passport、location、socket */ - private void prepareBaseService( IMogoServiceApis apis, long delay ) { + private void prepareBaseService(IMogoServiceApis apis, long delay) { - UiThreadHandler.postDelayed( () -> { + UiThreadHandler.postDelayed(() -> { // 第三方平台的sn是服务端生成的,所以必须在返回后才能开启 - if ( TextUtils.isEmpty( Utils.getSn() ) ) { - preparePassportEnvironment( apis, () -> { - prepareSocketAndLocationServices( apis ); - } ); + if (TextUtils.isEmpty(Utils.getSn())) { + preparePassportEnvironment(apis, () -> { + prepareSocketAndLocationServices(apis); + }); } else { - preparePassportEnvironment( apis, null ); - prepareSocketAndLocationServices( apis ); + preparePassportEnvironment(apis, null); + prepareSocketAndLocationServices(apis); } - }, delay ); + }, delay); } - private void preparePassportEnvironment( IMogoServiceApis apis, Runnable after ) { + private void preparePassportEnvironment(IMogoServiceApis apis, Runnable after) { // 配置云服务API MoGoAiCloudClientConfig clientConfig = MoGoAiCloudClientConfig.getInstance(); // 设置网络环境:HTTP_DNS_ENV_QA、HTTP_DNS_ENV_RELEASE、HTTP_DNS_ENV_DEV - switch ( DebugConfig.getNetMode() ) { + switch (DebugConfig.getNetMode()) { case DebugConfig.NET_MODE_DEV: clientConfig.setNetMode(MogoHttpDnsConfig.HTTP_DNS_ENV_DEV); break; @@ -256,19 +256,19 @@ public class MogoApplication extends AbsMogoApplication { MoGoAiCloudClient.getInstance().init(this, clientConfig); } - private void prepareSocketAndLocationServices( IMogoServiceApis apis ) { - apis.getSocketManagerApi( getApplicationContext() ).init( getApplicationContext(), DebugConfig.getSocketAppId() ); - if ( DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE ) { + private void prepareSocketAndLocationServices(IMogoServiceApis apis) { + apis.getSocketManagerApi(getApplicationContext()).init(getApplicationContext(), DebugConfig.getSocketAppId()); + if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) { apis.getLocationInfoApi().start(); - apis.getMapServiceApi().getSingletonLocationClient( getApplicationContext() ).addLocationListener( location -> { - apis.getLocationInfoApi().provideLocation( location ); - } ); + apis.getMapServiceApi().getSingletonLocationClient(getApplicationContext()).addLocationListener(location -> { + apis.getLocationInfoApi().provideLocation(location); + }); } } @Override - protected void attachBaseContext( Context base ) { - super.attachBaseContext( base ); - BoostMultiDex.install( base ); + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + BoostMultiDex.install(base); } } diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java index 4037c1772e..0681470777 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java @@ -131,7 +131,7 @@ public abstract class AbsMogoApplication extends Application { /** * 忽略 https 验证 * - * @return + * @return {@link SSLContext} * @throws Exception */ private static SSLContext getSslContext() throws Exception { diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/device/Devices.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/device/Devices.java index 56eaa84ac1..18852f7872 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/device/Devices.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/device/Devices.java @@ -11,7 +11,7 @@ import com.mogo.utils.ThreadPoolService; import com.mogo.utils.logger.Logger; public -/** +/* * @author congtaowang * @since 2020/6/8 * diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/storage/SpStorage.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/storage/SpStorage.java index 6971ebd8d4..45b06e8fdb 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/storage/SpStorage.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/storage/SpStorage.java @@ -12,11 +12,11 @@ import com.mogo.utils.storage.SharedPrefsMgr; public class SpStorage { public static String getTicket() { - return SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).getString( "ticket" ); + return SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).getString( "token" ); } public static void setTicket( String ticket ) { - SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).putString( "ticket", ticket ); + SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).putString( "token", ticket ); } public static String getNavigationTarget(){ diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java index 446762315f..13d023ea09 100644 --- a/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java @@ -1,6 +1,6 @@ package com.mogo.utils; -/** +/* * 2016/1/1 by congtaowang * * @Version 1.0 @@ -28,7 +28,7 @@ public final class TipToast { private static final String TAG = "TipToast"; private static Toast sToast = null; - private static final Object sSyncObject = new Object(); + private static final byte[] sSyncObject = new byte[0]; private static Handler sHandler = null; private static Context sContext; private static ToastViewGenerator sGenerator; diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/view/OnAiAssistClickListener.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/view/OnAiAssistClickListener.java index 5fc98232c2..6325dd9535 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/view/OnAiAssistClickListener.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/view/OnAiAssistClickListener.java @@ -12,7 +12,7 @@ public * @author congtaowang * @since 2020/6/9 * - * 如果已经激活设备,则按照正常流程打开语音,否则需要连续点击5下才能打开 + * 如果已经激活设备,则按照正常流程打开语音,否则需要连续点击5下小智才能激活语音功能 */ class OnAiAssistClickListener implements View.OnClickListener { diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveBiz.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveBiz.java index ccc051dd3d..316af7ce31 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveBiz.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveBiz.java @@ -147,6 +147,7 @@ public class V2XVoiceCallLiveBiz { v2XPushMessageEntity.setVideoSn(sn); v2XPushMessageEntity.setVideoUrl(liveUrl); v2XPushMessageEntity.setShowWindow(true); + v2XPushMessageEntity.setExpireTime(1000 * 30); V2XMessageEntity v2XMessageEntity = new V2XMessageEntity<>(); v2XMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_VOICE_CALL_FOR_LIVECAR_SHOW); v2XMessageEntity.setContent(v2XPushMessageEntity); From 51444d05ed2f16752a49fe3242677f5287d21ad5 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Fri, 9 Apr 2021 16:20:24 +0800 Subject: [PATCH 10/14] fix bug --- .../scene/livecar/V2XVoiceCallLiveCarWindow.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveCarWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveCarWindow.java index 0b06069949..ec954655bd 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveCarWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveCarWindow.java @@ -86,13 +86,10 @@ public class V2XVoiceCallLiveCarWindow extends V2XBasWindow public void close() { // 停止倒计时 stopCountDown(); - if (V2XServiceManager - .getMogoTopViewManager().isViewAdded(this)) { - //移除窗体 - V2XServiceManager - .getMogoTopViewManager() - .removeView(this); - } + //移除窗体 + V2XServiceManager + .getMogoTopViewManager() + .removeView(this); } @Override From b897e3f5b36c4dff7d8c07ba45869c6a55a5c110 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Fri, 9 Apr 2021 17:04:27 +0800 Subject: [PATCH 11/14] opt --- libraries/map-custom/build.gradle | 2 +- .../impl/MoGoV2XCloundDataManager.java | 31 ++++++++++--------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/libraries/map-custom/build.gradle b/libraries/map-custom/build.gradle index 9f081298c9..fa9c7cf8f4 100644 --- a/libraries/map-custom/build.gradle +++ b/libraries/map-custom/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation project(':foudations:mogo-commons') } - implementation 'com.zhidaoauto.machine:map:1.0.0-vr-8.5.4' + implementation 'com.zhidaoauto.machine:map:1.0.0-vr-8.5.5' // implementation 'com.zhidaoauto.machine:map:1.0.0-vr-test-3.4' } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java index b8e60f4e8a..fa03c9630f 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java @@ -1,12 +1,9 @@ package com.mogo.module.v2x.manager.impl; import android.content.Context; -import android.content.Intent; import android.location.Location; import android.util.Log; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; - import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.cloud.commons.utils.CoordinateUtils; import com.mogo.map.MogoLatLng; @@ -14,7 +11,6 @@ import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.map.overlay.IMogoPolyline; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.drawer.V2XWarnDataDrawer; -import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.common.entity.V2XWarningEntity; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.receiver.MogoReceiver; @@ -27,7 +23,6 @@ import com.mogo.module.v2x.utils.LocationUtils; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.WorkThreadHandler; - import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -74,7 +69,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog drawStopLine(cloundWarningInfo, newLocation); //添加停止线marker handleStopLine(); - }, 0); + }, 200); UiThreadHandler.postDelayed(() -> { V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); @@ -90,7 +85,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog drawOtherObjectLine(cloundWarningInfo); //二轮车和行人的渲染和移动 V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo); - }, 0); + }, 200); //延迟3秒清理线 UiThreadHandler.postDelayed(() -> { @@ -193,8 +188,20 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog */ @Override public void onCarLocationChanged2(Location latLng) { -// Log.d(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude() + "---isSelfLineClear = " + isSelfLineClear); - //当行人经纬度交点 经纬度不为空,开始画线,否则清理 + Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude() + "---isSelfLineClear = " + isSelfLineClear); + //当行人经纬度交点 开始画线,否则清理 + drawSlefCarLine(latLng); + } + + @Override + public void onCarLocationChanged(MogoLatLng latLng) { + + } + + /** + * 绘制自车连线 + */ + private void drawSlefCarLine (Location latLng) { if (!isSelfLineClear) { IMogoPolyline mogoPolyline = V2XServiceManager.getMoGoWarnPolylineManager().getMogoWarnPolyline(); if (mCloundWarningInfo != null) { @@ -223,12 +230,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog } } - @Override - public void onCarLocationChanged(MogoLatLng latLng) { - - } - - /** * 补点后的停止线经纬度合集 */ From e9b2c600f9436d217eeb341ce05a96e9782941c5 Mon Sep 17 00:00:00 2001 From: liujing Date: Fri, 9 Apr 2021 17:10:27 +0800 Subject: [PATCH 12/14] =?UTF-8?q?[add]=20=E5=81=9C=E6=AD=A2=E7=BA=BF?= =?UTF-8?q?=E9=80=9A=E8=BF=872D=E8=B5=84=E6=BA=90=E7=BB=98=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v2x/marker/V2XFrontTargetMarkerView.java | 44 ++++++ .../scene/test/V2XTestConsoleWindow.java | 13 ++ .../scene/warning/V2XWarningMarker.java | 126 ++++-------------- .../main/res/drawable-xhdpi/v2x_stop_line.png | Bin 0 -> 1307 bytes .../v2x_warning_marker_target.png | Bin 0 -> 8929 bytes .../res/layout/v2x_front_target_info_view.xml | 20 +++ .../main/res/layout/window_test_console.xml | 13 ++ 7 files changed, 114 insertions(+), 102 deletions(-) create mode 100644 modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XFrontTargetMarkerView.java create mode 100644 modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_stop_line.png create mode 100644 modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_warning_marker_target.png create mode 100644 modules/mogo-module-v2x/src/main/res/layout/v2x_front_target_info_view.xml diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XFrontTargetMarkerView.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XFrontTargetMarkerView.java new file mode 100644 index 0000000000..89cb6b1283 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XFrontTargetMarkerView.java @@ -0,0 +1,44 @@ +package com.mogo.module.v2x.marker; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.widget.ImageView; + +import androidx.annotation.Nullable; + +import com.mogo.module.common.drawer.marker.MapMarkerBaseView; +import com.mogo.module.common.entity.MarkerShowEntity; +import com.mogo.module.v2x.R; + +/** + * @author liujing + * @description 前方预警目标物2D资源实现,目前只有停止线,可以按需添加其他类型 + * @since: 2021/4/9 + */ +public class V2XFrontTargetMarkerView extends MapMarkerBaseView { + private String TAG = "V2XFrontTargetMarkerView"; + + + public V2XFrontTargetMarkerView(Context context) { + super(context); + } + + public V2XFrontTargetMarkerView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public V2XFrontTargetMarkerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + protected void initView(Context context) { + LayoutInflater.from( context ).inflate(R.layout.v2x_front_target_info_view, this ); + } + + @Override + public void updateView(MarkerShowEntity markerShowEntity) { + + } +} diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java index be6b1185a1..83710ede41 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java @@ -53,6 +53,7 @@ public class V2XTestConsoleWindow extends ConstraintLayout { private Button mBtnTriggerRoadEvent; private Button mBtnClearRoadEvent; private Button mBtnTriggerPushEvent; + private Button mBtnTriggerWarningEvent; private Button mBtnTriggerPushLiveCarEvent; private Button mBtnTriggerAnimationEvent; private Button mBtnbtnFrontCarLiveEvent; @@ -67,6 +68,7 @@ public class V2XTestConsoleWindow extends ConstraintLayout { private ToggleButton nBtnTriggerVR; private Button mBtnAdasDataWarn; + private Button btnTriggerRearVIPCarTip, btnTriggerVehicleBrakes, btnTriggerRearDangerousVehicles, @@ -114,6 +116,7 @@ public class V2XTestConsoleWindow extends ConstraintLayout { flTestPanelShunYi = findViewById(R.id.flTestPanelShunYi); flTestPanelVR = findViewById(R.id.flTestPanelVR); mBtnTriggerOpen = findViewById(R.id.btnTriggerOpen); + mBtnTriggerWarningEvent = findViewById(R.id.btnTriggerWarningEvent); mBtnClearRoadEvent = findViewById(R.id.btnClearRoadEvent); mBtnTriggerRoadEvent = findViewById(R.id.btnTriggerRoadEvent); mBtnTriggerPushEvent = findViewById(R.id.btnTriggerPushEvent); @@ -220,6 +223,16 @@ public class V2XTestConsoleWindow extends ConstraintLayout { }); + //车路云—场景预警-V1.0 碰撞预警 + mBtnTriggerWarningEvent.setOnClickListener(v -> { + V2XMessageEntity v2XMessageEntity = + TestOnLineCarUtils.getV2XScenarioPushFrontWarningEventData(); + + Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION); + intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity); + LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent); + }); + mBtnTriggerPushEvent.setOnClickListener(v -> { V2XMessageEntity v2XMessageEntity = TestOnLineCarUtils.getV2XScenarioPushEventData(); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java index d7566943a1..770099118b 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java @@ -8,21 +8,31 @@ import com.mogo.map.MogoLatLng; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.common.drawer.MarkerDrawer; +import com.mogo.module.common.drawer.marker.EmptyMarkerView; import com.mogo.module.common.drawer.marker.IMarkerView; import com.mogo.module.common.drawer.marker.MapMarkerAdapter; +import com.mogo.module.common.drawer.marker.SimpleWindow3DAdapter; import com.mogo.module.common.entity.MarkerLocation; import com.mogo.module.common.entity.MarkerShowEntity; import com.mogo.module.common.entity.V2XWarningEntity; +import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XConst; import com.mogo.module.v2x.V2XServiceManager; import com.mogo.module.v2x.entity.model.DrawLineInfo; +import com.mogo.module.v2x.marker.OptimalSpeedMarkerView; +import com.mogo.module.v2x.marker.V2XFrontTargetMarkerView; import com.mogo.module.v2x.scenario.view.IV2XMarker; import com.mogo.module.v2x.utils.LocationUtils; +import com.mogo.utils.ViewUtils; import com.mogo.utils.WorkThreadHandler; import java.util.ArrayList; import java.util.List; +import static com.mogo.module.v2x.V2XConst.V2X_FRONT_WARNING_MARKER; +import static com.mogo.module.v2x.V2XConst.V2X_OPTIMAL_SPEED_MARKER; + /** * @author liujing * @description 前方预警marker打点 绘制安全线和预警线 @@ -33,7 +43,7 @@ public class V2XWarningMarker implements IV2XMarker { private V2XWarningEntity mMarkerEntity; private MarkerShowEntity markerShowEntity = new MarkerShowEntity(); private Context mContext = V2XServiceManager.getContext(); - private List fillPoints = new ArrayList();//停止线经纬度合集 + private IMogoMarker optimalMarker = null; @Override public void drawPOI(Object entity) { @@ -45,16 +55,20 @@ public class V2XWarningMarker implements IV2XMarker { markerShowEntity.setMarkerLocation(location); + MogoMarkerOptions optionsRipple = new MogoMarkerOptions() + .latitude(mMarkerEntity.getLat()) + .longitude(mMarkerEntity.getLon()) + .anchor(0.5f, 0.5f) + .zIndex(MarkerDrawer.MARKER_Z_INDEX_HIGH); + if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { - pointsBetween(); - //绘制停止线 -// drawStopLines(fillPoints); - drawSafeLine(); - WorkThreadHandler.getInstance().postDelayed(() -> { - V2XServiceManager.getMarkerManager().removeMarkers(V2XConst.V2X_FRONT_STOP_LINE); - V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); - }, 6_000); } + optionsRipple + .icon(ViewUtils.fromView(new EmptyMarkerView(V2XServiceManager.getContext()))); +// optionsRipple.icon3DRes(com.mogo.module.common.R.raw.people); + optimalMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_FRONT_WARNING_MARKER, optionsRipple); + optimalMarker.setInfoWindowAdapter(new SimpleWindow3DAdapter(new V2XFrontTargetMarkerView(V2XServiceManager.getContext()))); + optimalMarker.showInfoWindow(); } catch (Exception e) { @@ -62,61 +76,6 @@ public class V2XWarningMarker implements IV2XMarker { } - //绘制安全距离 - private void drawSafeLine() { - clearPOI(); - WorkThreadHandler.getInstance().postDelayed(() -> { - //自车位置 - MogoLatLng car = V2XServiceManager.getNavi().getCarLocation(); - if (car != null) { - //根据到停止线的距离和方向角获取经纬度 - MogoLatLng - stopLineLo = LocationUtils.getNewLocation(car, mMarkerEntity.getStopLineDistance(), mMarkerEntity.getAngle()); -// if (mMarkerEntity.getCollisionLat() > 0 && mMarkerEntity.getCollisionLon() > 0) { -// drawLine(car, stopLineLo); -// } - } else { - Log.d(TAG, "自车位置没有拿到"); - } - }, 0); - } - - //补点后的停止线经纬度合集 - public void pointsBetween() { - try { - fillPoints.clear(); - List stopLines = mMarkerEntity.getStopLines(); - if (stopLines.size() > 1) { - MogoLatLng x = mMarkerEntity.getStopLines().get(0); - MogoLatLng y = mMarkerEntity.getStopLines().get(1); - //两点间的距离 - float distance = CoordinateUtils.calculateLineDistance(x.lon, x.lat, y.lon, y.lat); - float average = distance / 3; - //两点间的角度 - double angle = LocationUtils.getAngle(x.lon, x.lat, y.lon, y.lat); - //根据距离和角度获取下个点的经纬度 - fillPoints.add(x); - for (int i = 1; i < 3; i++) { - MogoLatLng newLocation = LocationUtils.getNewLocation(x, average * i, angle); - fillPoints.add(newLocation); - } - fillPoints.add(y); - } - } catch (Exception e) { - e.printStackTrace(); - } - - } - - //绘制停止线-通过打点的方式实现 - private void drawStopLines(List points) { - clearPOI(); - V2XServiceManager.getMarkerManager().removeMarkers(V2XConst.V2X_FRONT_STOP_LINE); - for (int i = 0; i < points.size(); i++) { - MogoLatLng latLng = (MogoLatLng) points.get(i); - drawMarkerWithLocation(latLng, V2XConst.V2X_FRONT_STOP_LINE); - } - } private void drawMarkerWithLocation(MogoLatLng latLng, String tag) { MogoMarkerOptions options = new MogoMarkerOptions() @@ -132,47 +91,10 @@ public class V2XWarningMarker implements IV2XMarker { marker.setToTop(); } - //绘制并返回marker - public IMogoMarker drawMarkerAndReturn(MarkerShowEntity markerShowEntity) { - MogoMarkerOptions options = new MogoMarkerOptions() - .object(markerShowEntity) - .latitude(markerShowEntity.getMarkerLocation().getLat()) - .longitude(markerShowEntity.getMarkerLocation().getLon()); - IMarkerView iMarkerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, options); - options.icon3DRes(com.mogo.module.service.R.raw.people); - options.anchorColor("#FF4040"); - IMogoMarker marker = V2XServiceManager.getMarkerManager().addMarker(V2XConst.V2X_FRONT_WARNING_MARKER, options); - iMarkerView.setMarker(marker); - marker.setToTop(); - return marker; - } - - //绘制线 - public void drawLine(MogoLatLng s, MogoLatLng e) { - DrawLineInfo drawLineInfo = new DrawLineInfo(); - drawLineInfo.setStartLocation(s); - drawLineInfo.setEndLocation(e); - drawLineInfo.setWidth(60); - V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(mContext, drawLineInfo); - } - - //平移 - public void smooth(IMogoMarker marker) { - List latLngs = new ArrayList<>(); - MogoLatLng sLocation = new MogoLatLng(mMarkerEntity.getLat(), mMarkerEntity.getLon()); - MogoLatLng endLocation = new MogoLatLng(mMarkerEntity.getCollisionLat(), mMarkerEntity.getCollisionLon()); - latLngs.add(sLocation); - latLngs.add(endLocation); - marker.startSmoothInMs(latLngs, 3000); - - WorkThreadHandler.getInstance().postDelayed(() -> { - clearLine(); - }, 3_000); - } @Override public void clearPOI() { - V2XServiceManager.getMarkerManager().removeMarkers(V2XConst.V2X_FRONT_WARNING_MARKER); + V2XServiceManager.getMarkerManager().removeMarkers(V2X_FRONT_WARNING_MARKER); } public void clearLine() { diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_stop_line.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_stop_line.png new file mode 100644 index 0000000000000000000000000000000000000000..2bda783ed5cabd5fe656f0b6a71d8309ca46ef20 GIT binary patch literal 1307 zcmV+$1?2jPP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91W1s^71ONa40RR918~^|S0LF_61ONa8g-Jv~RA>e5Sl?@0MHHU7dv`a< z?%j=X1Byg!8ZG#`n=Lh#E&Yd%7?svX9%$zeL1hv}q^lSB8 zu7K}B8|*P}P_MT_Z4i(`Tuh}>AIR(1n@p%zszPC?R;zubgg76L zNjWv@x{JMby?tFcjB6sEm7bhj7E)dV2`q4}Uca%P%|6ehIwkZN?+C=Tv=F~{+C1r7 z7Y^f_h-b-5ms)AZc~eUH1&Ao6@}5!)tNDD6i9wQ$<`_hHOUYUZ| z6%06EpPoJz1i`no_!;yqDdz*FX7Ejcs92Wuj_DcC=5*o;WEA&41B!;jr)f7_ToF*v_qX zyF|xSxGQi>fd_U8^cZJedy%?u*hdrax`Kg3NBQFWFkc{nTh@Ci*L@ul2_1Tj!;VSr zM(V<0-%P;^&my|W*|oK`PgM|n^e=%wgl(T0EtSd}giz}G{$=XF038MB^HehV30)9< zw%JbV!eKv5!;|XVxma~+X^zU)H$Z|Cb7$juOgkjJYmhN6eQ(JD z?i#vq*jE$rEDFTLMj-GU;y8uP0s)fH)A%vkP8UPc6u_zwFY*FxC3WGj560r@dQj7a z!vQf3k4_{Znu){@Tu+g~h~JVjOm`$2`pEv8|*o9QMIPJWCut>{+&54@vm`*u5)P4ykN5%A`6a^cbhA zY7F{t-t26v)8>iax^UP51Mwb}wo1unE;sQ|sc~=#gz#FK%;IxbudXw-H*j z;jo|k9dFCZiAnq~^{hbO&d{};b>Z+bnt<1}Gmz*;n$4HPe1QZWkKdtJ+n*qj(4ogT z?3mO5rR_7jC~bA%a1eCydRllAH|qNA>{Q_U4t|R2 zi9QxLdx;G%eM(JHnKcsH(q+*p7JnV&uAvKOV_`J$dYX8aC>Em}2&!H0JEu6w-aj^_$)ACe Rz=r?;002ovPDHLkV1k-CWs(2@ literal 0 HcmV?d00001 diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_warning_marker_target.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_warning_marker_target.png new file mode 100644 index 0000000000000000000000000000000000000000..be6da047d09af9da4cb879e906d19c2522116d1d GIT binary patch literal 8929 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 literal 0 HcmV?d00001 diff --git a/modules/mogo-module-v2x/src/main/res/layout/v2x_front_target_info_view.xml b/modules/mogo-module-v2x/src/main/res/layout/v2x_front_target_info_view.xml new file mode 100644 index 0000000000..bfae7c37fb --- /dev/null +++ b/modules/mogo-module-v2x/src/main/res/layout/v2x_front_target_info_view.xml @@ -0,0 +1,20 @@ + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml b/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml index 7c1583a11d..5c509e9eeb 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml @@ -237,6 +237,19 @@ android:textColor="#FFFFFF" android:textSize="@dimen/dp_22" android:textStyle="bold" /> +