diff --git a/gradle.properties b/gradle.properties index a35cfd5aac..ca0834f574 100644 --- a/gradle.properties +++ b/gradle.properties @@ -54,7 +54,7 @@ MOGO_MODULE_GUIDE_VERSION=1.0.3.12 ## 工程外部模块 # 探路 -MOGO_MODULE_TANLU_VERSION=1.0.5.5 +MOGO_MODULE_TANLU_VERSION=1.0.5.6 # 车聊聊 CARCHATTING_VERSION=1.0.3.2-SNAPSHOT # 车聊聊接口 diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 14a0349ac8..4775c9bdf5 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -24,6 +24,7 @@ import com.mogo.map.location.IMogoLocationListener; import com.mogo.map.location.MogoLocation; import com.mogo.map.model.MogoPoi; import com.mogo.map.navi.IMogoAimlessModeListener; +import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.map.navi.IMogoNavi; import com.mogo.map.navi.IMogoNaviListener; import com.mogo.map.navi.MogoCongestionInfo; @@ -86,7 +87,8 @@ public class MogoServices implements IMogoMapListener, IMogoIntentListener, IMogoAimlessModeListener, IMogoVoiceCmdCallBack, - FragmentStackTransactionListener { + FragmentStackTransactionListener, + IMogoCarLocationChangedListener2 { private boolean mInternalUnWakeupRegisterStatus = false; @@ -298,6 +300,7 @@ public class MogoServices implements IMogoMapListener, mRegisterCenter.registerMogoNaviListener( ServiceConst.TYPE, this ); mRegisterCenter.registerMogoMapListener( ServiceConst.TYPE, this ); mRegisterCenter.registerMogoAimlessModeListener( ServiceConst.TYPE, this ); + mRegisterCenter.registerCarLocationChangedListener( ServiceConst.TYPE, this ); mActionManager = MarkerServiceHandler.getActionManager(); @@ -572,6 +575,10 @@ public class MogoServices implements IMogoMapListener, @Override public void onLocationChanged( MogoLocation location ) { + } + + @Override + public void onCarLocationChanged2( Location latLng ) { if ( mStatusManager.isADASShow() ) { return; } @@ -580,12 +587,12 @@ public class MogoServices implements IMogoMapListener, return; } - if ( location == null ) { + if ( latLng == null ) { return; } // 自动刷新触发 - final MogoLatLng point = new MogoLatLng( location.getLatitude(), location.getLongitude() ); + final MogoLatLng point = new MogoLatLng( latLng.getLatitude(), latLng.getLongitude() ); if ( mLastAutoRefreshLocation == null ) { mLastAutoRefreshLocation = point; mLoopRequest = true; @@ -603,6 +610,11 @@ public class MogoServices implements IMogoMapListener, } } + @Override + public void onCarLocationChanged( MogoLatLng latLng ) { + + } + /** * 刷新数据 */ 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 85bc01bd0b..dc0c207d65 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 @@ -811,6 +811,10 @@ public class MapMarkerManager implements IMogoMarkerClickListener, }); } + public void syncLocation(double lon, double lat){ + mCarLatLng = new MogoLatLng( lat, lon ); + } + public void getOnlineCarData(MogoLatLng latlng) { mCarLatLng = latlng; getOnlineCarList(); 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 dcba9a1ec9..31768b6763 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 @@ -8,6 +8,8 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.commons.network.SubscribeImpl; import com.mogo.map.marker.IMogoInfoWindowAdapter; import com.mogo.map.marker.IMogoMarker; import com.mogo.module.common.entity.MarkerLocation; @@ -16,15 +18,25 @@ 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.module.service.network.RefreshApiService; +import com.mogo.module.service.network.RefreshModel; +import com.mogo.module.service.network.bean.DemoUserInfoEntity; +import com.mogo.service.MogoServicePaths; import com.mogo.service.imageloader.MogoImageView; +import com.mogo.service.network.IMogoNetwork; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.WindowUtils; import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.RequestOptions; import com.zhidao.carchattingprovider.CallChattingProviderConstant; import java.util.HashMap; +import java.util.List; import java.util.Map; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; + /** * @author congtaowang * @since 2020-04-27 @@ -37,6 +49,7 @@ public class UserDataMarkerInfoWindowAdapter implements IMogoInfoWindowAdapter { private static volatile UserDataMarkerInfoWindowAdapter sInstance; private final Context mContext; + private static RefreshApiService sRefreshApiService; private View mInfoWindowView = null; @@ -47,6 +60,8 @@ public class UserDataMarkerInfoWindowAdapter implements IMogoInfoWindowAdapter { private UserDataMarkerInfoWindowAdapter( Context context ) { this.mContext = context; + IMogoNetwork network = MarkerServiceHandler.getApis().getNetworkApi(); + sRefreshApiService = network.create( RefreshApiService.class, RefreshModel.getNetHost() ); } public static UserDataMarkerInfoWindowAdapter getInstance( Context context ) { @@ -95,23 +110,21 @@ public class UserDataMarkerInfoWindowAdapter implements IMogoInfoWindowAdapter { } 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 ); + sRefreshApiService.getMockUsers().subscribeOn( Schedulers.io() ) + .observeOn( AndroidSchedulers.mainThread() ) + .subscribe( new SubscribeImpl< DemoUserInfoEntity >( RequestOptions.create( mContext ) ) { + @Override + public void onSuccess( DemoUserInfoEntity o ) { + super.onSuccess( o ); + callToDemoUser( markerShowEntity, o ); + } + + @Override + public void onError( String message, int code ) { + super.onError( message, code ); + callToFactUser( markerShowEntity ); + } + } ); } } ); } catch ( Exception e ) { @@ -121,6 +134,58 @@ public class UserDataMarkerInfoWindowAdapter implements IMogoInfoWindowAdapter { return mInfoWindowView; } + private void callToDemoUser( MarkerShowEntity factUser, DemoUserInfoEntity demoUser ) { + if ( demoUser == null + || demoUser.getResult() == null + || demoUser.getResult().getUserList() == null + || demoUser.getResult().getUserList().isEmpty() ) { + callToFactUser( factUser ); + return; + } + List< DemoUserInfoEntity.ResultBean.UserListBean > users = demoUser.getResult().getUserList(); + for ( DemoUserInfoEntity.ResultBean.UserListBean user : users ) { + if ( user == null ) { + continue; + } + if ( TextUtils.equals( "1", user.getSceneType() ) ) { + try { + ( ( MarkerOnlineCar ) factUser.getBindObj() ).getUserInfo().setSn( user.getUserInfo().getSn() ); + callToFactUser( factUser ); + return; + } catch ( Exception e ) { + } + } + } + callToFactUser( factUser ); + } + + private void callToFactUser( MarkerShowEntity factUser ) { + if ( factUser == null ) { + return; + } + Map< String, String > params = new HashMap<>(); + MarkerUserInfo userInfo = ( ( MarkerOnlineCar ) factUser.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 ) factUser.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 ); + if ( MarkerServiceHandler.getApis().getStatusManagerApi().isADASShow() ) { + MarkerServiceHandler.getCarChatting().callShowWindow( params ); + } else { + MarkerServiceHandler.getCarChatting().call( params ); + } + } + protected void loadImageHeader( final MarkerShowEntity markerShowEntity ) { if ( Looper.myLooper() != Looper.getMainLooper() ) { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java index 722b7cfa29..ab6e8ff02d 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java @@ -2,6 +2,7 @@ package com.mogo.module.service.network; import com.mogo.commons.data.BaseData; import com.mogo.module.common.entity.MarkerResponse; +import com.mogo.module.service.network.bean.DemoUserInfoEntity; import java.util.Map; @@ -29,4 +30,10 @@ public interface RefreshApiService { @POST( "/yycp-launcherSnapshot/user/queryOnLineCarWithRoute" ) Observable queryOnLineCarWithRoute(@FieldMap Map< String, Object > parameters ); + /** + * 查询演示车用户信息 + */ + @GET("/yycp-launcherSnapshot/mock/getMockUserInfos") + Observable< DemoUserInfoEntity > getMockUsers(); + } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java index 676fcb1bcb..2800efd440 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java @@ -44,7 +44,7 @@ public class RefreshModel { this.mRefreshApiService = network.create(RefreshApiService.class, getNetHost()); } - private String getNetHost() { + public static String getNetHost() { switch (DebugConfig.getNetMode()) { case DebugConfig.NET_MODE_DEV: return HOST_DEV;