This commit is contained in:
wangcongtao
2020-04-27 15:25:31 +08:00
parent 46bd81e329
commit fbbcbb0299
6 changed files with 149 additions and 75 deletions

2
.idea/misc.xml generated
View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
</project> </project>

View File

@@ -45,6 +45,7 @@ dependencies {
annotationProcessor rootProject.ext.dependencies.aroutercompiler annotationProcessor rootProject.ext.dependencies.aroutercompiler
implementation rootProject.ext.dependencies.rxjava implementation rootProject.ext.dependencies.rxjava
implementation rootProject.ext.dependencies.rxandroid implementation rootProject.ext.dependencies.rxandroid
implementation rootProject.ext.dependencies.carcallprovider
if (Boolean.valueOf(RELEASE)) { if (Boolean.valueOf(RELEASE)) {
api rootProject.ext.dependencies.mogomap api rootProject.ext.dependencies.mogomap

View File

@@ -7,6 +7,7 @@ import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.marker.IMogoMarkerManager; import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.navi.IMogoNavi; import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.uicontroller.IMogoMapUIController; 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.MarkerResponse;
import com.mogo.module.common.entity.MarkerShowEntity; import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.marker.MapMarkerManager; 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.IMogoActionManager;
import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.statusmanager.IMogoStatusManager;
import com.zhidao.carchattingprovider.CallChattingProviderConstant;
/** /**
* author : donghongyu * author : donghongyu
@@ -36,128 +38,136 @@ import com.mogo.service.statusmanager.IMogoStatusManager;
public class MarkerServiceHandler { public class MarkerServiceHandler {
private static final String TAG = "MarkerServiceHandler"; private static final String TAG = "MarkerServiceHandler";
private static IMogoServiceApis mApis; private static IMogoServiceApis sApis;
private static IMogoMapService mMapService; private static IMogoMapService sMapService;
private static IMogoMarkerManager mMarkerManager; private static IMogoMarkerManager sMarkerManager;
private static IMogoNavi mNavi; private static IMogoNavi sNavi;
private static IMogoMapUIController mMapUIController; private static IMogoMapUIController sMapUIController;
private static IMogoLocationClient mLocationClient; private static IMogoLocationClient sLocationClient;
private static IMogoStatusManager mMogoStatusManager; private static IMogoStatusManager sMogoStatusManager;
private static IMogoImageloader mImageloader; private static IMogoImageloader sImageloader;
private static IMogoSocketManager mMogoSocketManager; private static IMogoSocketManager sMogoSocketManager;
private static IMogoCardManager mMogoCardManager; private static IMogoCardManager sMogoCardManager;
private static IMogoAnalytics mMogoAnalytics; private static IMogoAnalytics sMogoAnalytics;
private static IMogoRegisterCenter mRegisterCenter; private static IMogoRegisterCenter sRegisterCenter;
private static IMogoActionManager mActionManager; private static IMogoActionManager sActionManager;
private static IMogoDataManager mDataManager; private static IMogoDataManager sDataManager;
private static IMogoIntentManager mIntentManager; private static IMogoIntentManager sIntentManager;
private static IMogoADASController mADASController; private static IMogoADASController sADASController;
private static IMogoLauncher mLauncher; private static IMogoLauncher sLauncher;
private static IMogoFragmentManager mFragmentManager; private static IMogoFragmentManager sFragmentManager;
private static ICarsChattingProvider sCarChatting;
private static MapMarkerManager mMapMarkerManager; private static MapMarkerManager sMapMarkerManager;
public static void init( final Context context ) { public static void init( final Context context ) {
mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( context ); sApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( context );
mMapService = mApis.getMapServiceApi(); sMapService = sApis.getMapServiceApi();
mImageloader = mApis.getImageLoaderApi(); sImageloader = sApis.getImageLoaderApi();
mMogoStatusManager = mApis.getStatusManagerApi(); sMogoStatusManager = sApis.getStatusManagerApi();
mMogoSocketManager = mApis.getSocketManagerApi( context ); sMogoSocketManager = sApis.getSocketManagerApi( context );
mMogoCardManager = mApis.getCardManagerApi(); sMogoCardManager = sApis.getCardManagerApi();
mMogoAnalytics = mApis.getAnalyticsApi(); sMogoAnalytics = sApis.getAnalyticsApi();
mMarkerManager = mMapService.getMarkerManager( context ); sMarkerManager = sMapService.getMarkerManager( context );
mNavi = mMapService.getNavi( context ); sNavi = sMapService.getNavi( context );
mMapUIController = mMapService.getMapUIController(); sMapUIController = sMapService.getMapUIController();
mLocationClient = mMapService.getSingletonLocationClient( context ); sLocationClient = sMapService.getSingletonLocationClient( context );
mRegisterCenter = mApis.getRegisterCenterApi(); sRegisterCenter = sApis.getRegisterCenterApi();
mActionManager = mApis.getActionManagerApi(); sActionManager = sApis.getActionManagerApi();
mDataManager = mApis.getDataManagerApi(); sDataManager = sApis.getDataManagerApi();
mIntentManager = mApis.getIntentManagerApi(); sIntentManager = sApis.getIntentManagerApi();
mADASController = mApis.getAdasControllerApi(); sADASController = sApis.getAdasControllerApi();
mLauncher = mApis.getLauncherApi(); sLauncher = sApis.getLauncherApi();
mFragmentManager = mApis.getFragmentManagerApi(); sFragmentManager = sApis.getFragmentManagerApi();
mMapMarkerManager = MapMarkerManager.getInstance(); sCarChatting = (ICarsChattingProvider)ARouter.getInstance().build( CallChattingProviderConstant.CAR_CALL_PROVIDER ).navigation( context );
mMapMarkerManager.init( context );
sMapMarkerManager = MapMarkerManager.getInstance();
sMapMarkerManager.init( context );
} }
public static IMogoServiceApis getApis(){ public static IMogoServiceApis getApis(){
return mApis; return sApis;
} }
public static IMogoMapService getMapService() { public static IMogoMapService getMapService() {
return mMapService; return sMapService;
} }
public static IMogoMarkerManager getMarkerManager() { public static IMogoMarkerManager getMarkerManager() {
return mMarkerManager; return sMarkerManager;
} }
public static IMogoNavi getNavi() { public static IMogoNavi getNavi() {
return mNavi; return sNavi;
} }
public static IMogoMapUIController getMapUIController() { public static IMogoMapUIController getMapUIController() {
return mMapUIController; return sMapUIController;
} }
public static IMogoImageloader getImageloader() { public static IMogoImageloader getImageloader() {
return mImageloader; return sImageloader;
} }
public static IMogoSocketManager getMogoSocketManager() { public static IMogoSocketManager getMogoSocketManager() {
return mMogoSocketManager; return sMogoSocketManager;
} }
public static IMogoStatusManager getMogoStatusManager() { public static IMogoStatusManager getMogoStatusManager() {
return mMogoStatusManager; return sMogoStatusManager;
} }
public static IMogoCardManager getMogoCardManager() { public static IMogoCardManager getMogoCardManager() {
return mMogoCardManager; return sMogoCardManager;
} }
public static IMogoAnalytics getMogoAnalytics() { public static IMogoAnalytics getMogoAnalytics() {
return mMogoAnalytics; return sMogoAnalytics;
} }
public static IMogoLocationClient getMogoLocationClient() { public static IMogoLocationClient getMogoLocationClient() {
return mLocationClient; return sLocationClient;
} }
public static MapMarkerManager getMapMarkerManager() { public static MapMarkerManager getMapMarkerManager() {
return mMapMarkerManager; return sMapMarkerManager;
} }
public static IMogoRegisterCenter getRegisterCenter() { public static IMogoRegisterCenter getRegisterCenter() {
return mRegisterCenter; return sRegisterCenter;
} }
public static IMogoActionManager getActionManager() { public static IMogoActionManager getActionManager() {
return mActionManager; return sActionManager;
} }
public static IMogoIntentManager getIntentManager() { public static IMogoIntentManager getIntentManager() {
return mIntentManager; return sIntentManager;
} }
public static IMogoADASController getADASController() { public static IMogoADASController getADASController() {
return mADASController; return sADASController;
} }
public static IMogoLauncher getLauncher() { public static IMogoLauncher getLauncher() {
return mLauncher; return sLauncher;
} }
public static IMogoFragmentManager getFragmentManager() { public static IMogoFragmentManager getFragmentManager() {
return mFragmentManager; return sFragmentManager;
} }
public static IMogoDataManager getDataManager() { public static IMogoDataManager getDataManager() {
return mDataManager; return sDataManager;
} }
public static ICarsChattingProvider getCarChatting() {
return sCarChatting;
}
//TODO -------------以下方法是临时过度使用的后面统一使用getMapMarkerManager进行调用 //TODO -------------以下方法是临时过度使用的后面统一使用getMapMarkerManager进行调用
/** /**

View File

@@ -827,12 +827,14 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
}; };
private void getOnlineCarList() { 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()){ if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() || MarkerServiceHandler.getMogoStatusManager().isADASShow()){
return; 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() { mRefreshModel.queryOnLineCarWithRoute(mCarLatLng, false, false, new RefreshCallback() {
@Override @Override
@@ -845,7 +847,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
removeCarMarkers(); removeCarMarkers();
List<MarkerOnlineCar> onlineCarList = result.getOnlineCar(); List<MarkerOnlineCar> onlineCarList = result.getOnlineCar();
dispatchDataToBis(ServiceConst.CARD_TYPE_USER_DATA, onlineCarList == null ? new ArrayList<>() : onlineCarList); 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 @Override

View File

@@ -1,23 +1,29 @@
package com.mogo.module.service.marker; package com.mogo.module.service.marker;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap;
import android.os.Looper; import android.os.Looper;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import com.mogo.map.marker.IMogoInfoWindowAdapter; import com.mogo.map.marker.IMogoInfoWindowAdapter;
import com.mogo.map.marker.IMogoMarker; 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.MarkerShowEntity;
import com.mogo.module.common.entity.MarkerUserInfo;
import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.R; import com.mogo.module.service.R;
import com.mogo.service.imageloader.IMogoImageLoaderListener;
import com.mogo.service.imageloader.MogoImageView; import com.mogo.service.imageloader.MogoImageView;
import com.mogo.utils.UiThreadHandler; import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.WindowUtils; import com.mogo.utils.WindowUtils;
import com.mogo.utils.logger.Logger; import com.mogo.utils.logger.Logger;
import com.zhidao.carchattingprovider.CallChattingProviderConstant;
import java.util.HashMap;
import java.util.Map;
/** /**
* @author congtaowang * @author congtaowang
@@ -36,6 +42,8 @@ public class UserDataMarkerInfoWindowAdapter implements IMogoInfoWindowAdapter {
private MogoImageView mUserHeader; private MogoImageView mUserHeader;
private TextView mContent; private TextView mContent;
private TextView mTag;
private ImageView mCall;
private UserDataMarkerInfoWindowAdapter( Context context ) { private UserDataMarkerInfoWindowAdapter( Context context ) {
this.mContext = 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 ); mInfoWindowView = LayoutInflater.from( mContext ).inflate( R.layout.view_map_data_user_info_window, null );
mUserHeader = mInfoWindowView.findViewById( R.id.module_service_id_user_header ); mUserHeader = mInfoWindowView.findViewById( R.id.module_service_id_user_header );
mContent = mInfoWindowView.findViewById( R.id.module_service_id_content ); 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 { try {
MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) marker.getObject(); MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) marker.getObject();
mContent.setText( markerShowEntity.getTextContent() ); 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 ) { } catch ( Exception e ) {
Logger.e( TAG, e, "error." ); Logger.e( TAG, e, "error." );
} }
@@ -83,7 +121,7 @@ public class UserDataMarkerInfoWindowAdapter implements IMogoInfoWindowAdapter {
return mInfoWindowView; return mInfoWindowView;
} }
protected void loadImageWithMarker( final MarkerShowEntity markerShowEntity ) { protected void loadImageHeader( final MarkerShowEntity markerShowEntity ) {
if ( Looper.myLooper() != Looper.getMainLooper() ) { if ( Looper.myLooper() != Looper.getMainLooper() ) {
UiThreadHandler.post( () -> { UiThreadHandler.post( () -> {

View File

@@ -15,7 +15,7 @@
android:id="@+id/module_service_id_marker_content" android:id="@+id/module_service_id_marker_content"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="@dimen/dp_90" 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_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
@@ -38,15 +38,38 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10" android:layout_marginLeft="@dimen/dp_10"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center"
android:singleLine="true" android:singleLine="true"
android:minWidth="@dimen/dp_100"
android:textColor="#ffffff" android:textColor="#ffffff"
android:textSize="@dimen/sp_32" 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_constraintStart_toEndOf="@+id/module_service_id_user_header"
app:layout_constraintTop_toTopOf="@+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="诗" />
<TextView
android:id="@+id/module_service_id_tag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/module_services_driver_type_blue_info"
android:textColor="#ffffff"
android:textSize="@dimen/sp_20"
app:layout_constraintStart_toStartOf="@+id/module_service_id_content"
app:layout_constraintTop_toBottomOf="@+id/module_service_id_content"
tools:text="老司机" />
<ImageView
android:id="@+id/module_service_id_call"
android:layout_width="@dimen/dp_85"
android:layout_height="@dimen/dp_85"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/dp_10"
android:scaleType="fitXY"
android:src="@drawable/module_service_ic_call"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/module_service_id_content"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout <LinearLayout
@@ -62,7 +85,7 @@
<ImageView <ImageView
android:layout_width="20dp" android:layout_width="20dp"
android:layout_height="20dp" android:layout_height="20dp"
android:src="@drawable/bg_shape_reverse_triangle_blue" /> android:src="@drawable/bg_shape_reverse_triangle_grey" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>