From fbbcbb0299660a85d431fdcd66f6bbc5fee583df Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 27 Apr 2020 15:25:31 +0800 Subject: [PATCH] opt --- .idea/misc.xml | 2 +- modules/mogo-module-service/build.gradle | 1 + .../module/service/MarkerServiceHandler.java | 126 ++++++++++-------- .../service/marker/MapMarkerManager.java | 14 +- .../UserDataMarkerInfoWindowAdapter.java | 46 ++++++- .../layout/view_map_data_user_info_window.xml | 35 ++++- 6 files changed, 149 insertions(+), 75 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 707ee6e613..2dc54c489f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/modules/mogo-module-service/build.gradle b/modules/mogo-module-service/build.gradle index 57f5a280c7..6c15a6d379 100644 --- a/modules/mogo-module-service/build.gradle +++ b/modules/mogo-module-service/build.gradle @@ -45,6 +45,7 @@ dependencies { annotationProcessor rootProject.ext.dependencies.aroutercompiler implementation rootProject.ext.dependencies.rxjava implementation rootProject.ext.dependencies.rxandroid + implementation rootProject.ext.dependencies.carcallprovider if (Boolean.valueOf(RELEASE)) { api rootProject.ext.dependencies.mogomap diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java index 089851d54e..a1774a2d4a 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java @@ -7,6 +7,7 @@ import com.mogo.map.location.IMogoLocationClient; import com.mogo.map.marker.IMogoMarkerManager; import com.mogo.map.navi.IMogoNavi; import com.mogo.map.uicontroller.IMogoMapUIController; +import com.mogo.module.carchattingprovider.ICarsChattingProvider; import com.mogo.module.common.entity.MarkerResponse; import com.mogo.module.common.entity.MarkerShowEntity; import com.mogo.module.service.marker.MapMarkerManager; @@ -25,6 +26,7 @@ import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoActionManager; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.statusmanager.IMogoStatusManager; +import com.zhidao.carchattingprovider.CallChattingProviderConstant; /** * author : donghongyu @@ -36,128 +38,136 @@ import com.mogo.service.statusmanager.IMogoStatusManager; public class MarkerServiceHandler { private static final String TAG = "MarkerServiceHandler"; - private static IMogoServiceApis mApis; + private static IMogoServiceApis sApis; - private static IMogoMapService mMapService; - private static IMogoMarkerManager mMarkerManager; - private static IMogoNavi mNavi; - private static IMogoMapUIController mMapUIController; - private static IMogoLocationClient mLocationClient; - private static IMogoStatusManager mMogoStatusManager; - private static IMogoImageloader mImageloader; - private static IMogoSocketManager mMogoSocketManager; - private static IMogoCardManager mMogoCardManager; - private static IMogoAnalytics mMogoAnalytics; - private static IMogoRegisterCenter mRegisterCenter; - private static IMogoActionManager mActionManager; - private static IMogoDataManager mDataManager; - private static IMogoIntentManager mIntentManager; - private static IMogoADASController mADASController; - private static IMogoLauncher mLauncher; - private static IMogoFragmentManager mFragmentManager; + private static IMogoMapService sMapService; + private static IMogoMarkerManager sMarkerManager; + private static IMogoNavi sNavi; + private static IMogoMapUIController sMapUIController; + private static IMogoLocationClient sLocationClient; + private static IMogoStatusManager sMogoStatusManager; + private static IMogoImageloader sImageloader; + private static IMogoSocketManager sMogoSocketManager; + private static IMogoCardManager sMogoCardManager; + private static IMogoAnalytics sMogoAnalytics; + private static IMogoRegisterCenter sRegisterCenter; + private static IMogoActionManager sActionManager; + private static IMogoDataManager sDataManager; + private static IMogoIntentManager sIntentManager; + private static IMogoADASController sADASController; + private static IMogoLauncher sLauncher; + private static IMogoFragmentManager sFragmentManager; + private static ICarsChattingProvider sCarChatting; - private static MapMarkerManager mMapMarkerManager; + private static MapMarkerManager sMapMarkerManager; public static void init( final Context context ) { - mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( context ); - mMapService = mApis.getMapServiceApi(); - mImageloader = mApis.getImageLoaderApi(); - mMogoStatusManager = mApis.getStatusManagerApi(); - mMogoSocketManager = mApis.getSocketManagerApi( context ); - mMogoCardManager = mApis.getCardManagerApi(); - mMogoAnalytics = mApis.getAnalyticsApi(); - mMarkerManager = mMapService.getMarkerManager( context ); - mNavi = mMapService.getNavi( context ); - mMapUIController = mMapService.getMapUIController(); - mLocationClient = mMapService.getSingletonLocationClient( context ); - mRegisterCenter = mApis.getRegisterCenterApi(); - mActionManager = mApis.getActionManagerApi(); - mDataManager = mApis.getDataManagerApi(); - mIntentManager = mApis.getIntentManagerApi(); - mADASController = mApis.getAdasControllerApi(); - mLauncher = mApis.getLauncherApi(); - mFragmentManager = mApis.getFragmentManagerApi(); + sApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( context ); + sMapService = sApis.getMapServiceApi(); + sImageloader = sApis.getImageLoaderApi(); + sMogoStatusManager = sApis.getStatusManagerApi(); + sMogoSocketManager = sApis.getSocketManagerApi( context ); + sMogoCardManager = sApis.getCardManagerApi(); + sMogoAnalytics = sApis.getAnalyticsApi(); + sMarkerManager = sMapService.getMarkerManager( context ); + sNavi = sMapService.getNavi( context ); + sMapUIController = sMapService.getMapUIController(); + sLocationClient = sMapService.getSingletonLocationClient( context ); + sRegisterCenter = sApis.getRegisterCenterApi(); + sActionManager = sApis.getActionManagerApi(); + sDataManager = sApis.getDataManagerApi(); + sIntentManager = sApis.getIntentManagerApi(); + sADASController = sApis.getAdasControllerApi(); + sLauncher = sApis.getLauncherApi(); + sFragmentManager = sApis.getFragmentManagerApi(); - mMapMarkerManager = MapMarkerManager.getInstance(); - mMapMarkerManager.init( context ); + sCarChatting = (ICarsChattingProvider)ARouter.getInstance().build( CallChattingProviderConstant.CAR_CALL_PROVIDER ).navigation( context ); + + sMapMarkerManager = MapMarkerManager.getInstance(); + sMapMarkerManager.init( context ); } public static IMogoServiceApis getApis(){ - return mApis; + return sApis; } public static IMogoMapService getMapService() { - return mMapService; + return sMapService; } public static IMogoMarkerManager getMarkerManager() { - return mMarkerManager; + return sMarkerManager; } public static IMogoNavi getNavi() { - return mNavi; + return sNavi; } public static IMogoMapUIController getMapUIController() { - return mMapUIController; + return sMapUIController; } public static IMogoImageloader getImageloader() { - return mImageloader; + return sImageloader; } public static IMogoSocketManager getMogoSocketManager() { - return mMogoSocketManager; + return sMogoSocketManager; } public static IMogoStatusManager getMogoStatusManager() { - return mMogoStatusManager; + return sMogoStatusManager; } public static IMogoCardManager getMogoCardManager() { - return mMogoCardManager; + return sMogoCardManager; } public static IMogoAnalytics getMogoAnalytics() { - return mMogoAnalytics; + return sMogoAnalytics; } public static IMogoLocationClient getMogoLocationClient() { - return mLocationClient; + return sLocationClient; } public static MapMarkerManager getMapMarkerManager() { - return mMapMarkerManager; + return sMapMarkerManager; } public static IMogoRegisterCenter getRegisterCenter() { - return mRegisterCenter; + return sRegisterCenter; } public static IMogoActionManager getActionManager() { - return mActionManager; + return sActionManager; } public static IMogoIntentManager getIntentManager() { - return mIntentManager; + return sIntentManager; } public static IMogoADASController getADASController() { - return mADASController; + return sADASController; } public static IMogoLauncher getLauncher() { - return mLauncher; + return sLauncher; } public static IMogoFragmentManager getFragmentManager() { - return mFragmentManager; + return sFragmentManager; } public static IMogoDataManager getDataManager() { - return mDataManager; + return sDataManager; } + public static ICarsChattingProvider getCarChatting() { + return sCarChatting; + } + + //TODO -------------以下方法是临时过度使用的,后面统一使用,getMapMarkerManager进行调用 /** 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 99d613fcd5..1e187ebe6b 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 @@ -827,12 +827,14 @@ public class MapMarkerManager implements IMogoMarkerClickListener, }; private void getOnlineCarList() { - if (mCurrentModuleName.equals(ServiceConst.CARD_TYPE_BUSINESS_OPERATION ) - || mCurrentModuleName.equals(ServiceConst.CARD_TYPE_USER_DATA) ) { - if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() || MarkerServiceHandler.getMogoStatusManager().isADASShow()){ - return; - } + if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() || MarkerServiceHandler.getMogoStatusManager().isADASShow()){ + return; + } + + if ( TextUtils.equals( ServiceConst.CARD_TYPE_USER_DATA, mCurrentModuleName ) + || TextUtils.equals( ServiceConst.CARD_TYPE_BUSINESS_OPERATION, mCurrentModuleName ) + || TextUtils.equals( ServiceConst.CARD_TYPE_CARS_CHATTING, mCurrentModuleName )) { mRefreshModel.queryOnLineCarWithRoute(mCarLatLng, false, false, new RefreshCallback() { @Override @@ -845,7 +847,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, removeCarMarkers(); List onlineCarList = result.getOnlineCar(); dispatchDataToBis(ServiceConst.CARD_TYPE_USER_DATA, onlineCarList == null ? new ArrayList<>() : onlineCarList); - drawOnlineCarMarkers(onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); + drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); } @Override diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java index 47ebe41223..f41664ab8c 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java @@ -1,23 +1,29 @@ package com.mogo.module.service.marker; import android.content.Context; -import android.graphics.Bitmap; import android.os.Looper; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; +import android.widget.ImageView; import android.widget.TextView; import com.mogo.map.marker.IMogoInfoWindowAdapter; import com.mogo.map.marker.IMogoMarker; +import com.mogo.module.common.entity.MarkerLocation; +import com.mogo.module.common.entity.MarkerOnlineCar; import com.mogo.module.common.entity.MarkerShowEntity; +import com.mogo.module.common.entity.MarkerUserInfo; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.R; -import com.mogo.service.imageloader.IMogoImageLoaderListener; import com.mogo.service.imageloader.MogoImageView; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.WindowUtils; import com.mogo.utils.logger.Logger; +import com.zhidao.carchattingprovider.CallChattingProviderConstant; + +import java.util.HashMap; +import java.util.Map; /** * @author congtaowang @@ -36,6 +42,8 @@ public class UserDataMarkerInfoWindowAdapter implements IMogoInfoWindowAdapter { private MogoImageView mUserHeader; private TextView mContent; + private TextView mTag; + private ImageView mCall; private UserDataMarkerInfoWindowAdapter( Context context ) { this.mContext = context; @@ -70,12 +78,42 @@ public class UserDataMarkerInfoWindowAdapter implements IMogoInfoWindowAdapter { mInfoWindowView = LayoutInflater.from( mContext ).inflate( R.layout.view_map_data_user_info_window, null ); mUserHeader = mInfoWindowView.findViewById( R.id.module_service_id_user_header ); mContent = mInfoWindowView.findViewById( R.id.module_service_id_content ); + mTag = mInfoWindowView.findViewById( R.id.module_service_id_tag ); + mCall = mInfoWindowView.findViewById( R.id.module_service_id_call ); } try { MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) marker.getObject(); mContent.setText( markerShowEntity.getTextContent() ); - loadImageWithMarker( markerShowEntity ); + loadImageHeader( markerShowEntity ); + if ( markerShowEntity.getBindObj() instanceof MarkerOnlineCar ) { + try { + mTag.setText( ( ( MarkerOnlineCar ) markerShowEntity.getBindObj() ).getUserInfo().getSafeLabel() ); + } catch ( Exception e ) { + e.printStackTrace(); + } + } + mCall.setOnClickListener( view -> { + if ( markerShowEntity.getBindObj() instanceof MarkerOnlineCar ) { + Map< String, String > params = new HashMap<>(); + MarkerUserInfo userInfo = ( ( MarkerOnlineCar ) markerShowEntity.getBindObj() ).getUserInfo(); + if ( userInfo != null ) { + params.put( CallChattingProviderConstant.CCPROVIDER_SN, userInfo.getSn() ); + params.put( CallChattingProviderConstant.CCPROVIDER_USER_IMG, userInfo.getUserHead() ); + params.put( CallChattingProviderConstant.CCPROVIDER_USER_AGE, userInfo.getAgeNumber() + "" ); + params.put( CallChattingProviderConstant.CCPROVIDER_NICK_NAME, userInfo.getUserName() ); + params.put( CallChattingProviderConstant.CCPROVIDER_USER_SEX, userInfo.getGender() + "" ); + } + MarkerLocation location = ( ( MarkerOnlineCar ) markerShowEntity.getBindObj() ).getLocation(); + if ( location != null ) { + params.put( CallChattingProviderConstant.CCPROVIDER_ADDRESS, location.getAddress() ); + params.put( CallChattingProviderConstant.CCPROVIDER_LAT, location.getLat() + "" ); + params.put( CallChattingProviderConstant.CCPROVIDER_LON, location.getLon() + "" ); + } + Logger.d( TAG, "call parameters: %s", params ); + MarkerServiceHandler.getCarChatting().call( params ); + } + } ); } catch ( Exception e ) { Logger.e( TAG, e, "error." ); } @@ -83,7 +121,7 @@ public class UserDataMarkerInfoWindowAdapter implements IMogoInfoWindowAdapter { return mInfoWindowView; } - protected void loadImageWithMarker( final MarkerShowEntity markerShowEntity ) { + protected void loadImageHeader( final MarkerShowEntity markerShowEntity ) { if ( Looper.myLooper() != Looper.getMainLooper() ) { UiThreadHandler.post( () -> { diff --git a/modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml b/modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml index 85dc31340e..5028bcbe89 100644 --- a/modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml +++ b/modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml @@ -15,7 +15,7 @@ android:id="@+id/module_service_id_marker_content" android:layout_width="wrap_content" android:layout_height="@dimen/dp_90" - android:background="@drawable/bg_map_marker_blue_info" + android:background="@drawable/module_services_driver_blue_info" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> @@ -38,15 +38,38 @@ android:layout_height="wrap_content" android:layout_marginLeft="@dimen/dp_10" android:ellipsize="end" - android:gravity="center" android:singleLine="true" + android:minWidth="@dimen/dp_100" android:textColor="#ffffff" android:textSize="@dimen/sp_32" - app:layout_constraintBottom_toBottomOf="@+id/module_service_id_user_header" - app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/module_service_id_user_header" app:layout_constraintTop_toTopOf="@+id/module_service_id_user_header" - tools:text="诗一样的女子" /> + app:layout_goneMarginRight="@dimen/dp_30" + tools:text="诗" /> + + + + + android:src="@drawable/bg_shape_reverse_triangle_grey" /> \ No newline at end of file