From 6cce553987c862e01d14d5e8e1d66527cce62132 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Fri, 19 Mar 2021 10:22:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=98=BE=E7=A4=BA=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/marker/MapMarkerManager.java | 455 +++++++++--------- .../com/mogo/service/impl/adas/LogWriter.java | 3 + .../service/impl/adas/MogoADASController.java | 2 + 3 files changed, 244 insertions(+), 216 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index 871b969c1a..f32f13714d 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -2,6 +2,8 @@ package com.mogo.module.service.marker; import android.content.Context; import android.graphics.Rect; +import android.os.Handler; +import android.os.Message; import android.text.TextUtils; import android.util.Log; @@ -44,6 +46,7 @@ import com.mogo.utils.ResourcesHelper; import com.mogo.utils.ThreadPoolService; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.ViewUtils; +import com.mogo.utils.WorkThreadHandler; import com.mogo.utils.logger.Logger; import com.zhidao.carchattingprovider.ICallChatResponse; @@ -64,7 +67,7 @@ import java.util.Map; * version: 1.0 */ public class MapMarkerManager implements IMogoMarkerClickListener, - IMogoOnMessageListener, + IMogoOnMessageListener< MarkerResponse >, IMogoBizActionDoneListener, IMogoADASControlStatusChangedListener { private static final String TAG = "MapMarkerManager"; @@ -88,8 +91,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } public static synchronized MapMarkerManager getInstance() { - synchronized (MapMarkerManager.class) { - if (mMarkerManager == null) { + synchronized ( MapMarkerManager.class ) { + if ( mMarkerManager == null ) { mMarkerManager = new MapMarkerManager(); } } @@ -102,88 +105,102 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param context 上下文对象 */ - public void init(Context context) { + public void init( Context context ) { - if (mContext != null) { + if ( mContext != null ) { return; } mContext = context.getApplicationContext(); - mRefreshModel = new RefreshModel(mContext); - CloudPoiManager.getInstance().updateFromConfig(context); - MarkerServiceHandler.getActionManager().registerBizActionDoneListener(this); - MarkerServiceHandler.getApis().getRegisterCenterApi().registerADASControlStatusChangedListener(TAG, this); + mRefreshModel = new RefreshModel( mContext ); + CloudPoiManager.getInstance().updateFromConfig( context ); + MarkerServiceHandler.getActionManager().registerBizActionDoneListener( this ); + MarkerServiceHandler.getApis().getRegisterCenterApi().registerADASControlStatusChangedListener( TAG, this ); - if (CallChatApi.getInstance().getApiProvider() != null) { - CallChatApi.getInstance().getApiProvider().registerUserWindowStatusListener(TAG, mContext, new ICallChatResponse() { + if ( CallChatApi.getInstance().getApiProvider() != null ) { + CallChatApi.getInstance().getApiProvider().registerUserWindowStatusListener( TAG, mContext, new ICallChatResponse() { @Override - public void userWindowStatus(boolean show) { + public void userWindowStatus( boolean show ) { try { - if (mLastCheckMarker == null) { + if ( mLastCheckMarker == null ) { return; } - if (TextUtils.equals(mLastCheckMarker.getOwner(), ModuleNames.CARD_TYPE_USER_DATA) - && !show) { - closeMarker(mLastCheckMarker); + if ( TextUtils.equals( mLastCheckMarker.getOwner(), ModuleNames.CARD_TYPE_USER_DATA ) + && !show ) { + closeMarker( mLastCheckMarker ); } - } catch (Exception e) { + } catch ( Exception e ) { e.printStackTrace(); } } - }); + } ); } // 下发的数据 - MoGoAiCloudRealTime.registerOnMsgListener(new IMogoCloudOnMsgListener() { + MoGoAiCloudRealTime.registerOnMsgListener( new IMogoCloudOnMsgListener() { @Override - public void onMsgSend(long id) { + public void onMsgSend( long id ) { DebugConfig.setStatus( DebugConfig.sDownloadLink, true ); } @Override - public void onMsgReceived(MogoSnapshotSetData mogoSnapshotSetData) { + public void onMsgReceived( MogoSnapshotSetData mogoSnapshotSetData ) { DebugConfig.setStatus( DebugConfig.sDownloadSnapshot, true ); - SnapshotSetDataDrawer.getInstance().renderSnapshotData(mogoSnapshotSetData); + Message msg = mSnapshotHandler.obtainMessage(); + msg.obj = mogoSnapshotSetData; + msg.sendToTarget(); } - }); + } ); // adas 每隔一秒传递的数据 - MarkerServiceHandler.getApis().getAdasControllerApi().addAdasRecognizedDataCallback(resultList -> { + MarkerServiceHandler.getApis().getAdasControllerApi().addAdasRecognizedDataCallback( resultList -> { // 绘制近景识别到的车辆 - AdasRecognizedResultDrawer.getInstance().renderAdasRecognizedResult(resultList); - }); + AdasRecognizedResultDrawer.getInstance().renderAdasRecognizedResult( resultList ); + } ); } + private Handler mSnapshotHandler = new Handler( WorkThreadHandler.newInstance( "snapshot-thread" ).getLooper() ) { + @Override + public void handleMessage( Message msg ) { + super.handleMessage( msg ); + if ( msg.obj instanceof MogoSnapshotSetData ) { + SnapshotSetDataDrawer.getInstance().renderSnapshotData( ( ( MogoSnapshotSetData ) msg.obj ) ); + } else if ( msg.obj == null ) { + SnapshotSetDataDrawer.getInstance().renderSnapshotData( null ); + } + } + }; + /** * 地图上的Marker点击回调 */ @Override - public boolean onMarkerClicked(IMogoMarker marker) { + public boolean onMarkerClicked( IMogoMarker marker ) { try { - boolean result = switchMarkerOpenStatus(marker); - if (!result) { - updateCarUserInfoWindow(marker); + boolean result = switchMarkerOpenStatus( marker ); + if ( !result ) { + updateCarUserInfoWindow( marker ); return false; } - Map properties = new HashMap<>(); + Map< String, Object > properties = new HashMap<>(); - if (marker.getObject() instanceof MarkerShowEntity) { - final String sn = MarkerDrawer.getInstance().getCarSnFromMarker(marker); - if (TextUtils.isEmpty(sn)) { + if ( marker.getObject() instanceof MarkerShowEntity ) { + final String sn = MarkerDrawer.getInstance().getCarSnFromMarker( marker ); + if ( TextUtils.isEmpty( sn ) ) { return false; } - properties.put("sn", sn); - if (((MarkerShowEntity) marker.getObject()).getBindObj() instanceof MarkerExploreWay) { - MarkerExploreWay exploreWay = (MarkerExploreWay) ((MarkerShowEntity) marker.getObject()).getBindObj(); - properties.put("dbid", exploreWay.getInfoId()); - properties.put("type", exploreWay.getPoiType()); - } else if (((MarkerShowEntity) marker.getObject()).getBindObj() instanceof MarkerOnlineCar) { - properties.put("type", "10000"); + properties.put( "sn", sn ); + if ( ( ( MarkerShowEntity ) marker.getObject() ).getBindObj() instanceof MarkerExploreWay ) { + MarkerExploreWay exploreWay = ( MarkerExploreWay ) ( ( MarkerShowEntity ) marker.getObject() ).getBindObj(); + properties.put( "dbid", exploreWay.getInfoId() ); + properties.put( "type", exploreWay.getPoiType() ); + } else if ( ( ( MarkerShowEntity ) marker.getObject() ).getBindObj() instanceof MarkerOnlineCar ) { + properties.put( "type", "10000" ); } } - MarkerServiceHandler.getMogoAnalytics().track("v2x_road_click", properties); - } catch (Exception e) { + MarkerServiceHandler.getMogoAnalytics().track( "v2x_road_click", properties ); + } catch ( Exception e ) { e.printStackTrace(); } return false; @@ -195,105 +212,106 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param marker 地图marker抽象对象 * @return markerOpenStatus */ - private boolean switchMarkerOpenStatus(IMogoMarker marker) { - if (mLastCheckMarker != null) { + private boolean switchMarkerOpenStatus( IMogoMarker marker ) { + if ( mLastCheckMarker != null ) { // 判断点击的是否是同一个 - if (marker.equals(mLastCheckMarker)) { + if ( marker.equals( mLastCheckMarker ) ) { return false; } // 将上次选中 Marker 设置为未选中状态 - closeMarker(mLastCheckMarker); + closeMarker( mLastCheckMarker ); } // 将当前的Marker设置为选中 - openMarker(marker); + openMarker( marker ); return true; } // 展开气泡 - private void openMarker(IMogoMarker mogoMarker) { - if (mogoMarker == null) { + private void openMarker( IMogoMarker mogoMarker ) { + if ( mogoMarker == null ) { return; } mLastCheckMarker = mogoMarker; // 在线车辆点击使用infoWindow - if (TextUtils.equals(mogoMarker.getOwner(), ModuleNames.CARD_TYPE_USER_DATA)) { - updateCarUserInfoWindow(mogoMarker); + if ( TextUtils.equals( mogoMarker.getOwner(), ModuleNames.CARD_TYPE_USER_DATA ) ) { + updateCarUserInfoWindow( mogoMarker ); } else { Object object = mogoMarker.getObject(); - if (object instanceof MarkerShowEntity) { - MarkerShowEntity markerShowEntity = (MarkerShowEntity) object; - markerShowEntity.setChecked(true); - IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions()); - markerView.setMarker(mogoMarker); - if (markerView instanceof OnlineCarMarkerView) { + if ( object instanceof MarkerShowEntity ) { + MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object; + markerShowEntity.setChecked( true ); + IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() ); + markerView.setMarker( mogoMarker ); + if ( markerView instanceof OnlineCarMarkerView ) { try { - mogoMarker.setIcon(markerView.getBitmap(((MarkerOnlineCar) markerShowEntity.getBindObj()).getCarInfo().getVehicleType())); - } catch (Exception e) { - mogoMarker.setIcon(markerView.getBitmap(0)); + mogoMarker.setIcon( markerView.getBitmap( ( ( MarkerOnlineCar ) markerShowEntity.getBindObj() ).getCarInfo().getVehicleType() ) ); + } catch ( Exception e ) { + mogoMarker.setIcon( markerView.getBitmap( 0 ) ); } } else { - if (MarkerServiceHandler.getApis().getStatusManagerApi().isVrMode()) { + if ( MarkerServiceHandler.getApis().getStatusManagerApi().isVrMode() ) { mogoMarker.hideInfoWindow(); mogoMarker.showInfoWindow(); } else { - mogoMarker.setIcon(ViewUtils.fromView(markerView.getView())); + mogoMarker.setIcon( ViewUtils.fromView( markerView.getView() ) ); } } mogoMarker.setToTop(); } } - if (!MarkerServiceHandler.getApis().getStatusManagerApi().isVrMode()) { - MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus(TAG, true, false); - MarkerServiceHandler.getMapUIController().moveToCenter(mogoMarker.getPosition(), DebugConfig.isRoadEventAnimated()); + if ( !MarkerServiceHandler.getApis().getStatusManagerApi().isVrMode() ) { + MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus( TAG, true, false ); + MarkerServiceHandler.getMapUIController().moveToCenter( mogoMarker.getPosition(), DebugConfig.isRoadEventAnimated() ); } } /** * 根据点击 marker 更新用户信息面板内容 + * * @param marker */ - private void updateCarUserInfoWindow(IMogoMarker marker) { - if (marker != null && !marker.isDestroyed()) { + private void updateCarUserInfoWindow( IMogoMarker marker ) { + if ( marker != null && !marker.isDestroyed() ) { try { - if (!TextUtils.equals(marker.getOwner(), ModuleNames.CARD_TYPE_USER_DATA)) { + if ( !TextUtils.equals( marker.getOwner(), ModuleNames.CARD_TYPE_USER_DATA ) ) { return; } - marker.setIcon(OnlineCarMarkerView.getInstance().getSelectedBitmap(getCarVehicleType(marker))); - MarkerOnlineCar onlineCar = (MarkerOnlineCar) ((MarkerShowEntity) marker.getObject()).getBindObj(); - CallChatApi.getInstance().showUserWindow(mContext, onlineCar); - } catch (Exception e) { + marker.setIcon( OnlineCarMarkerView.getInstance().getSelectedBitmap( getCarVehicleType( marker ) ) ); + MarkerOnlineCar onlineCar = ( MarkerOnlineCar ) ( ( MarkerShowEntity ) marker.getObject() ).getBindObj(); + CallChatApi.getInstance().showUserWindow( mContext, onlineCar ); + } catch ( Exception e ) { } } } // 折叠气泡 - private void closeMarker(IMogoMarker mogoMarker) { - if (mogoMarker == null) { + private void closeMarker( IMogoMarker mogoMarker ) { + if ( mogoMarker == null ) { return; } // 在线车辆点击使用infoWindow - if (TextUtils.equals(mogoMarker.getOwner(), ModuleNames.CARD_TYPE_USER_DATA)) { - mogoMarker.setIcon(OnlineCarMarkerView.getInstance().getBitmap(getCarVehicleType(mogoMarker))); + if ( TextUtils.equals( mogoMarker.getOwner(), ModuleNames.CARD_TYPE_USER_DATA ) ) { + mogoMarker.setIcon( OnlineCarMarkerView.getInstance().getBitmap( getCarVehicleType( mogoMarker ) ) ); } else { Object object = mogoMarker.getObject(); - if (object != null) { - MarkerShowEntity markerShowEntity = (MarkerShowEntity) object; - markerShowEntity.setChecked(false); - IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions()); - markerView.setMarker(mogoMarker); - if (markerView instanceof OnlineCarMarkerView) { + if ( object != null ) { + MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object; + markerShowEntity.setChecked( false ); + IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() ); + markerView.setMarker( mogoMarker ); + if ( markerView instanceof OnlineCarMarkerView ) { try { - mogoMarker.setIcon(markerView.getBitmap(((MarkerOnlineCar) markerShowEntity.getBindObj()).getCarInfo().getVehicleType())); - } catch (Exception e) { - mogoMarker.setIcon(markerView.getBitmap(0)); + mogoMarker.setIcon( markerView.getBitmap( ( ( MarkerOnlineCar ) markerShowEntity.getBindObj() ).getCarInfo().getVehicleType() ) ); + } catch ( Exception e ) { + mogoMarker.setIcon( markerView.getBitmap( 0 ) ); } } else { - if (MarkerServiceHandler.getApis().getStatusManagerApi().isVrMode()) { + if ( MarkerServiceHandler.getApis().getStatusManagerApi().isVrMode() ) { mogoMarker.hideInfoWindow(); mogoMarker.showInfoWindow(); } else { - mogoMarker.setIcon(ViewUtils.fromView(markerView.getView())); + mogoMarker.setIcon( ViewUtils.fromView( markerView.getView() ) ); } } } @@ -302,41 +320,42 @@ public class MapMarkerManager implements IMogoMarkerClickListener, /** * 获取特殊车辆类型 + * * @param marker * @return */ - private int getCarVehicleType(IMogoMarker marker) { + private int getCarVehicleType( IMogoMarker marker ) { try { - return ((MarkerOnlineCar) - ((MarkerShowEntity) marker.getObject()).getBindObj()) + return ( ( MarkerOnlineCar ) + ( ( MarkerShowEntity ) marker.getObject() ).getBindObj() ) .getCarInfo() .getVehicleType(); - } catch (Exception e) { + } catch ( Exception e ) { return 0; } } // 绘制Marker - public synchronized void drawMapMarker(MarkerResponse response) { + public synchronized void drawMapMarker( MarkerResponse response ) { - if (response == null || response.getResult() == null) { + if ( response == null || response.getResult() == null ) { return; } - if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()) { + if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) { return; } // 解析不同的Marker类型,然后对应的进行绘制 mLastDataResult = response.getResult(); - UiThreadHandler.post(this::dispatchDataToBiz); + UiThreadHandler.post( this::dispatchDataToBiz ); - drawMarkerByCurrentType(mLastDataResult); + drawMarkerByCurrentType( mLastDataResult ); // 在首页时才埋点 - if (MarkerServiceHandler.getMogoStatusManager().isMainPageOnResume()) { - trackData(mLastDataResult); + if ( MarkerServiceHandler.getMogoStatusManager().isMainPageOnResume() ) { + trackData( mLastDataResult ); } } @@ -345,17 +364,17 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param markerCardResult */ - private synchronized void drawMarkerByCurrentType(MarkerCardResult markerCardResult) { + private synchronized void drawMarkerByCurrentType( MarkerCardResult markerCardResult ) { - if (markerCardResult == null) { + if ( markerCardResult == null ) { return; } - if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()) { + if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) { return; } - drawAllMarker(markerCardResult); + drawAllMarker( markerCardResult ); } /** @@ -363,9 +382,9 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param markerCardResult */ - private void drawAllMarker(MarkerCardResult markerCardResult) { - List exploreWayList = markerCardResult.getExploreWay(); - RoadConditionDrawer.getInstance().drawRoadConditionMarker(exploreWayList, ServiceConst.MAX_AMOUNT_ALL, this); + private void drawAllMarker( MarkerCardResult markerCardResult ) { + List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay(); + RoadConditionDrawer.getInstance().drawRoadConditionMarker( exploreWayList, ServiceConst.MAX_AMOUNT_ALL, this ); } /** @@ -373,51 +392,51 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param markerCardResult */ - private void trackData(MarkerCardResult markerCardResult) { - if (markerCardResult == null) { + private void trackData( MarkerCardResult markerCardResult ) { + if ( markerCardResult == null ) { return; } - List exploreWayList = markerCardResult.getExploreWay(); + List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay(); JSONArray array = new JSONArray(); int size = 0; size = exploreWayList == null ? 0 : exploreWayList.size(); - final Map typeCounterMap = new HashMap<>(); - for (int i = 0; i < size; i++) { - MarkerExploreWay exploreWay = exploreWayList.get(i); + final Map< String, Integer > typeCounterMap = new HashMap<>(); + for ( int i = 0; i < size; i++ ) { + MarkerExploreWay exploreWay = exploreWayList.get( i ); String poiType = exploreWay.getPoiType(); int counter = 0; - if (!typeCounterMap.containsKey(poiType)) { + if ( !typeCounterMap.containsKey( poiType ) ) { counter = 0; } else { - counter = typeCounterMap.get(poiType); + counter = typeCounterMap.get( poiType ); } - typeCounterMap.put(poiType, counter + 1); + typeCounterMap.put( poiType, counter + 1 ); } - if (!typeCounterMap.isEmpty()) { - for (Map.Entry entry : typeCounterMap.entrySet()) { - if (entry == null || entry.getKey() == null) { + if ( !typeCounterMap.isEmpty() ) { + for ( Map.Entry< String, Integer > entry : typeCounterMap.entrySet() ) { + if ( entry == null || entry.getKey() == null ) { continue; } JSONObject object = new JSONObject(); try { - object.put("type", entry.getKey()); - object.put("num", entry.getValue()); - array.put(object); - } catch (JSONException e) { + object.put( "type", entry.getKey() ); + object.put( "num", entry.getValue() ); + array.put( object ); + } catch ( JSONException e ) { e.printStackTrace(); } } } try { - if (array.length() == 0) { + if ( array.length() == 0 ) { return; } - final Map properties = new HashMap<>(); - properties.put("data", array.toString()); - MarkerServiceHandler.getMogoAnalytics().track("v2x_data_get", properties); - } catch (Exception e) { + final Map< String, Object > properties = new HashMap<>(); + properties.put( "data", array.toString() ); + MarkerServiceHandler.getMogoAnalytics().track( "v2x_data_get", properties ); + } catch ( Exception e ) { e.printStackTrace(); } } @@ -428,11 +447,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * 仅在数据刷新的时候分发 */ private void dispatchDataToBiz() { - if (mLastDataResult == null) { + if ( mLastDataResult == null ) { return; } - List exploreWayList = mLastDataResult.getExploreWay(); - dispatchDataToBis(ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList == null ? new ArrayList<>() : exploreWayList); + List< MarkerExploreWay > exploreWayList = mLastDataResult.getExploreWay(); + dispatchDataToBis( ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList == null ? new ArrayList<>() : exploreWayList ); } /** @@ -441,13 +460,13 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param biz * @param object */ - private void dispatchDataToBis(String biz, Object object) { - if (TextUtils.isEmpty(biz)) { + private void dispatchDataToBis( String biz, Object object ) { + if ( TextUtils.isEmpty( biz ) ) { return; } try { - MarkerServiceHandler.getDataManager().syncData(biz, object); - } catch (Exception e) { + MarkerServiceHandler.getDataManager().syncData( biz, object ); + } catch ( Exception e ) { e.printStackTrace(); } } @@ -458,58 +477,61 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param markerShowEntity marker 绘制数据实体 * @return 绘制的Marker */ - public synchronized IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity, int zIndex) { + public synchronized IMogoMarker drawMapMarker( MarkerShowEntity markerShowEntity, int zIndex ) { try { - return MarkerDrawer.getInstance().drawMapMarkerImpl(markerShowEntity, zIndex, this); - } catch (Exception e) { + return MarkerDrawer.getInstance().drawMapMarkerImpl( markerShowEntity, zIndex, this ); + } catch ( Exception e ) { return null; } } @Override - public Class target() { + public Class< MarkerResponse > target() { return MarkerResponse.class; } @Override - public void onMsgReceived(final MarkerResponse response) { - if (ignoreDrawRequest()) { + public void onMsgReceived( final MarkerResponse response ) { + if ( ignoreDrawRequest() ) { return; } - runOnTargetThread(() -> { - drawMapMarker(response); - }); + runOnTargetThread( () -> { + drawMapMarker( response ); + } ); } /** * 同步绘制大而全的数据 marker + * * @param response */ - public void onSyncMarkerResponse(MarkerResponse response) { - if (ignoreDrawRequest()) { + public void onSyncMarkerResponse( MarkerResponse response ) { + if ( ignoreDrawRequest() ) { return; } - runOnTargetThread(() -> { - drawMapMarker(response); - }); + runOnTargetThread( () -> { + drawMapMarker( response ); + } ); } /** * 当前地图中心点坐标 + * * @param lon * @param lat */ - public void syncLocation(double lon, double lat) { - mCarLatLng = new MogoLatLng(lat, lon); + public void syncLocation( double lon, double lat ) { + mCarLatLng = new MogoLatLng( lat, lon ); } /** * 根据经纬度请求数据 + * * @param latlng */ - public void getOnlineCarDataByAutoRefreshStrategy(MogoLatLng latlng) { - UiThreadHandler.removeCallbacks(runnable); - getOnlineCarDataImpl(latlng, false, false, ServiceConst.ONLINE_SEARCH_LIMIT, ServiceConst.ONLINE_SEARCH_RADIUS, false); + public void getOnlineCarDataByAutoRefreshStrategy( MogoLatLng latlng ) { + UiThreadHandler.removeCallbacks( runnable ); + getOnlineCarDataImpl( latlng, false, false, ServiceConst.ONLINE_SEARCH_LIMIT, ServiceConst.ONLINE_SEARCH_RADIUS, false ); } /** @@ -519,19 +541,19 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param limit * @param radius */ - public void getOnlineCarDataByVoiceControl(MogoLatLng latLng, - boolean onlyFocus, - boolean onlySameCity, - int limit, - int radius) { - UiThreadHandler.removeCallbacks(runnable); - getOnlineCarDataImpl(latLng, onlyFocus, onlySameCity, limit, radius, true); + public void getOnlineCarDataByVoiceControl( MogoLatLng latLng, + boolean onlyFocus, + boolean onlySameCity, + int limit, + int radius ) { + UiThreadHandler.removeCallbacks( runnable ); + getOnlineCarDataImpl( latLng, onlyFocus, onlySameCity, limit, radius, true ); } private Runnable runnable = new Runnable() { @Override public void run() { - getOnlineCarDataImpl(mCarLatLng, false, false, ServiceConst.ONLINE_SEARCH_LIMIT, ServiceConst.ONLINE_SEARCH_RADIUS, false); + getOnlineCarDataImpl( mCarLatLng, false, false, ServiceConst.ONLINE_SEARCH_LIMIT, ServiceConst.ONLINE_SEARCH_RADIUS, false ); } }; @@ -539,7 +561,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * 移除绘制 */ public void stopAutoRefresh() { - UiThreadHandler.removeCallbacks(runnable); + UiThreadHandler.removeCallbacks( runnable ); } /** @@ -558,81 +580,81 @@ public class MapMarkerManager implements IMogoMarkerClickListener, boolean onlySameCity, int limit, int radius, - boolean fitBounds) { + boolean fitBounds ) { - if (DebugConfig.isNeedUploadCoordinatesDurationInTime()) { + if ( DebugConfig.isNeedUploadCoordinatesDurationInTime() ) { return; } - if (DebugConfig.isDebug()) { - if (!DebugConfig.isRequestOnlineCarData()) { + if ( DebugConfig.isDebug() ) { + if ( !DebugConfig.isRequestOnlineCarData() ) { return; } } - if (mCarLatLng == null) { + if ( mCarLatLng == null ) { mCarLatLng = latLng; } - if (latLng == null) { + if ( latLng == null ) { return; } - if (ignoreOnlineCarRequest()) { + if ( ignoreOnlineCarRequest() ) { removeCarMarkers(); return; } - mRefreshModel.queryOnLineCarWithRoute(latLng, onlyFocus, onlySameCity, radius, limit, false, new RefreshCallback() { + mRefreshModel.queryOnLineCarWithRoute( latLng, onlyFocus, onlySameCity, radius, limit, false, new RefreshCallback() { @Override - public void onSuccess(Object o) { - MarkerResponse data = (MarkerResponse) o; + public void onSuccess( Object o ) { + MarkerResponse data = ( MarkerResponse ) o; MarkerCardResult result = data.getResult(); - if (result == null) { + if ( result == null ) { return; } - List onlineCarList = result.getOnlineCar(); - if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()) { + List< MarkerOnlineCar > onlineCarList = result.getOnlineCar(); + if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) { return; } final int size = onlineCarList == null ? 0 : onlineCarList.size(); - if (mMarkerDisplayBounds == null) { + if ( mMarkerDisplayBounds == null ) { mMarkerDisplayBounds = new Rect( - ResourcesHelper.getDimensionPixelSize(AbsMogoApplication.getApp(), R.dimen.module_service_marker_bounds_leftMargin), - ResourcesHelper.getDimensionPixelSize(AbsMogoApplication.getApp(), R.dimen.module_service_marker_bounds_topMargin), - ResourcesHelper.getDimensionPixelSize(AbsMogoApplication.getApp(), R.dimen.module_service_marker_bounds_rightMargin), - ResourcesHelper.getDimensionPixelSize(AbsMogoApplication.getApp(), R.dimen.module_service_marker_bounds_bottomMargin) + ResourcesHelper.getDimensionPixelSize( AbsMogoApplication.getApp(), R.dimen.module_service_marker_bounds_leftMargin ), + ResourcesHelper.getDimensionPixelSize( AbsMogoApplication.getApp(), R.dimen.module_service_marker_bounds_topMargin ), + ResourcesHelper.getDimensionPixelSize( AbsMogoApplication.getApp(), R.dimen.module_service_marker_bounds_rightMargin ), + ResourcesHelper.getDimensionPixelSize( AbsMogoApplication.getApp(), R.dimen.module_service_marker_bounds_bottomMargin ) ); } - runOnTargetThread(() -> { - trackData(size); - OnlineCarDrawer.getInstance().drawOnlineCarMarkers(onlineCarList, Integer.MAX_VALUE, fitBounds, fitBounds, mMarkerDisplayBounds, latLng, MapMarkerManager.this); - UiThreadHandler.postDelayed(runnable, SMOOTH_DURATION * 1000); - }); + runOnTargetThread( () -> { + trackData( size ); + OnlineCarDrawer.getInstance().drawOnlineCarMarkers( onlineCarList, Integer.MAX_VALUE, fitBounds, fitBounds, mMarkerDisplayBounds, latLng, MapMarkerManager.this ); + UiThreadHandler.postDelayed( runnable, SMOOTH_DURATION * 1000 ); + } ); } - private void trackData(int size) { + private void trackData( int size ) { JSONArray array = new JSONArray(); JSONObject object = new JSONObject(); try { - object.put("type", "10000"); - object.put("num", size); - array.put(object); - } catch (JSONException e) { + object.put( "type", "10000" ); + object.put( "num", size ); + array.put( object ); + } catch ( JSONException e ) { e.printStackTrace(); } - if (array.length() == 0) { + if ( array.length() == 0 ) { return; } - final Map properties = new HashMap<>(); - properties.put("data", array.toString()); - MarkerServiceHandler.getMogoAnalytics().track("v2x_data_get", properties); + final Map< String, Object > properties = new HashMap<>(); + properties.put( "data", array.toString() ); + MarkerServiceHandler.getMogoAnalytics().track( "v2x_data_get", properties ); } - }); + } ); } /** @@ -648,11 +670,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * 移除在线车辆 marker */ private void removeCarMarkers() { - MarkerServiceHandler.getMarkerManager().removeMarkers(ModuleNames.CARD_TYPE_USER_DATA); + MarkerServiceHandler.getMarkerManager().removeMarkers( ModuleNames.CARD_TYPE_USER_DATA ); } /** * 以下条件,不绘制 marker + * * @return */ private boolean ignoreDrawRequest() { @@ -663,11 +686,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener, || MarkerServiceHandler.getApis().getStatusManagerApi().isVrMode(); } - private void runOnTargetThread(Runnable runnable) { - if (runnable == null) { + private void runOnTargetThread( Runnable runnable ) { + if ( runnable == null ) { return; } - ThreadPoolService.execute(runnable); + ThreadPoolService.execute( runnable ); } public String getCurrentModuleName() { @@ -675,25 +698,25 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } @Override - public void onBizActionDone(String biz, int position, Object data) { - if (data instanceof MarkerShowEntity && ((MarkerShowEntity) data).getMarker() != null) { - switchMarkerOpenStatus(((MarkerShowEntity) data).getMarker()); + public void onBizActionDone( String biz, int position, Object data ) { + if ( data instanceof MarkerShowEntity && ( ( MarkerShowEntity ) data ).getMarker() != null ) { + switchMarkerOpenStatus( ( ( MarkerShowEntity ) data ).getMarker() ); } else { IMogoMarkerManager markerManager = MarkerServiceHandler.getMarkerManager(); - List markers = markerManager.getMarkers(biz); - if (markers != null) { + List< IMogoMarker > markers = markerManager.getMarkers( biz ); + if ( markers != null ) { try { - IMogoMarker marker = markers.get(position); - switchMarkerOpenStatus(marker); - } catch (Exception e) { + IMogoMarker marker = markers.get( position ); + switchMarkerOpenStatus( marker ); + } catch ( Exception e ) { } } } } @Override - public void onMapUiModeChanged(EnumMapUI mapUI) { - switch (mapUI) { + public void onMapUiModeChanged( EnumMapUI mapUI ) { + switch ( mapUI ) { case Type_Light: case Type_Night: redrawMarkerByStyleChanged(); @@ -705,12 +728,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * 重绘内容 */ public void redrawMarkerByStyleChanged() { - if (mLastDataResult != null) { - runOnTargetThread(() -> { - MarkerServiceHandler.getMarkerManager().removeMarkers(ModuleNames.CARD_TYPE_ROAD_CONDITION); - drawMarkerByCurrentType(mLastDataResult); + if ( mLastDataResult != null ) { + runOnTargetThread( () -> { + MarkerServiceHandler.getMarkerManager().removeMarkers( ModuleNames.CARD_TYPE_ROAD_CONDITION ); + drawMarkerByCurrentType( mLastDataResult ); mLastCheckMarker = null; - }); + } ); } } @@ -718,8 +741,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * 关闭当前点击过的 marker */ public void onCloseCurrentSelectedMarker() { - if (mLastCheckMarker != null && !mLastCheckMarker.isDestroyed()) { - closeMarker(mLastCheckMarker); + if ( mLastCheckMarker != null && !mLastCheckMarker.isDestroyed() ) { + closeMarker( mLastCheckMarker ); mLastCheckMarker = null; } } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/LogWriter.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/LogWriter.java index 32a95a38dd..9336509b84 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/LogWriter.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/LogWriter.java @@ -86,6 +86,9 @@ class LogWriter { } public void write( Object log ) { + if ( log == null ) { + return; + } Message msg = Message.obtain(); msg.obj = log; msg.what = 100; diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java index ef6628c75d..796e1d8887 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java @@ -123,6 +123,8 @@ public class MogoADASController implements IMogoADASController { super.handleMessage( msg ); if ( msg.obj instanceof List ) { mAutopolitDataCallBack.notifyOwnerCarRect( ( List< AdasAIDLOwnerCarRectModel > ) msg.obj ); + } else if(msg.obj == null ){ + mAutopolitDataCallBack.notifyOwnerCarRect( null ); } } };