diff --git a/config.gradle b/config.gradle index cf46b9673d..576e8d43c0 100644 --- a/config.gradle +++ b/config.gradle @@ -112,7 +112,7 @@ ext { //统一返回键 mogomoduleback : "com.mogo.module:module-back:${MOGO_MODULE_BACK_VERSION}", // 长链 - socketsdk : 'com.zhidao.socketsdk:socketsdk:2.1.0', + socketsdk : 'com.zhidao.socketsdk:socketsdk:2.1.1', socketsdkconnsvrprotoco : 'com.zhidao.ptech:connsvr-protoco:0.1.23', socketsdkprotobufjava : 'com.google.protobuf:protobuf-java:3.5.1', diff --git a/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/IMessageResponse.java b/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/IMessageResponse.java new file mode 100644 index 0000000000..58dad71fea --- /dev/null +++ b/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/IMessageResponse.java @@ -0,0 +1,17 @@ +package com.mogo.connection.socket; + +/** + * @author congtaowang + * @since 2020-02-20 + *

+ * 长链接口数据接口 + */ +public interface IMessageResponse { + + /** + * 设置消息id + * + * @param msgId + */ + void setMsgId( long msgId ); +} diff --git a/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java b/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java index 6aad984e2c..dc9cda6d68 100644 --- a/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java +++ b/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java @@ -82,7 +82,7 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac } @Override - public void onMessageReceived( byte[] content ) { + public void onMessageReceived( byte[] content, long msgId ) { try { MogoConnsvr.Payload payload = MogoConnsvr.Payload.parseFrom( content ); int msgType = payload.getMsgType(); @@ -93,8 +93,12 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac while ( iterator.hasNext() ) { IMogoOnMessageListener listener = iterator.next(); if ( listener != null ) { - Logger.d(TAG, "received msg ==" + payload.getPayload().toStringUtf8()); - listener.onMsgReceived( GsonUtil.objectFromJson( payload.getPayload().toStringUtf8(), listener.target() ) ); + Object obj = GsonUtil.objectFromJson( payload.getPayload().toStringUtf8(), listener.target() ); + if ( obj instanceof IMessageResponse ) { + ( ( IMessageResponse ) obj ).setMsgId( msgId ); + } + Logger.d(TAG, "received msg == %s, msgId = %s", payload.getPayload().toStringUtf8(), msgId); + listener.onMsgReceived( obj ); } } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java index 993fd3418d..555be3ac0f 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java @@ -431,7 +431,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, style.strokeWidth(0); style.radiusFillColor( Color.TRANSPARENT ); style.myLocationIcon( - BitmapDescriptorFactory.fromResource(R.drawable.map_api_ic_current_location)); + BitmapDescriptorFactory.fromResource(R.drawable.map_api_ic_current_location2)); mMapView.getMap().setMyLocationStyle(style); } } diff --git a/libraries/mogo-map-api/src/main/res/drawable-ldpi/map_api_ic_current_location2.png b/libraries/mogo-map-api/src/main/res/drawable-ldpi/map_api_ic_current_location2.png new file mode 100644 index 0000000000..d60bb48336 Binary files /dev/null and b/libraries/mogo-map-api/src/main/res/drawable-ldpi/map_api_ic_current_location2.png differ diff --git a/libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location2.png b/libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location2.png new file mode 100644 index 0000000000..8696d07e68 Binary files /dev/null and b/libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location2.png differ diff --git a/modules/mogo-module-main/src/main/res/drawable/module_main_card_cover_up_bottom.png b/modules/mogo-module-main/src/main/res/drawable/module_main_card_cover_up_bottom.png index e90b7ffae8..09b0022e6d 100644 Binary files a/modules/mogo-module-main/src/main/res/drawable/module_main_card_cover_up_bottom.png and b/modules/mogo-module-main/src/main/res/drawable/module_main_card_cover_up_bottom.png differ diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java index 2ebb157857..23466988e7 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java @@ -113,6 +113,18 @@ public class MogoServiceProvider implements IMogoModuleProvider, */ private boolean mIsCameraInited = true; + /** + * 是否针对第一次请求失败的情况(开机请求、地库长时间没网络) + *

+ * 说明:第一次地位成功,因为网络问题,导致请求失败,则在其他策略请求之前,尝试10s请求一次。 + */ + private boolean mLoopRequest = false; + + /** + * 刷新补偿间隔 + */ + private long mLoopInterval = 10_000L; + private Handler mHandler = new Handler( Looper.getMainLooper() ) { @Override public void handleMessage( @NonNull Message msg ) { @@ -127,7 +139,7 @@ public class MogoServiceProvider implements IMogoModuleProvider, if ( mRefreshRemainingTime == 0 ) { Logger.d( TAG, "move to center and refresh data." ); mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, false ); - mUiController.moveToCenter( mLastAutoRefreshLocation ); + mUiController.recoverLockMode(); mStatusManager.setUserInteractionStatus( TAG, true, false ); mUiController.changeZoom( 16.0f ); notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback ); @@ -135,6 +147,12 @@ public class MogoServiceProvider implements IMogoModuleProvider, mHandler.sendEmptyMessageDelayed( msg.what, ServiceConst.DECREASE_INTERVAL ); } break; + case ServiceConst.MSG_LOOP_REQUEST: + if ( mLoopRequest ) { + Logger.d( TAG, "补偿刷新触发" ); + notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback ); + } + break; } } }; @@ -156,6 +174,7 @@ public class MogoServiceProvider implements IMogoModuleProvider, private RefreshCallback mCustomRefreshCallback = new RefreshCallback() { @Override public void onSuccess() { + mLoopRequest = false; mRefreshRemainingTimeStatus = false; // 用户手动操作地图刷新成功后,设置状态为 true,引发延时策略 mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, true ); @@ -173,12 +192,17 @@ public class MogoServiceProvider implements IMogoModuleProvider, private RefreshCallback mAutoRefreshCallback = new RefreshCallback() { @Override public void onSuccess() { + mLoopRequest = false; invokeAutoRefreshStrategy(); } @Override public void onFail() { - invokeAutoRefreshStrategy(); + if ( mLoopRequest ) { + mHandler.sendEmptyMessageDelayed( ServiceConst.MSG_LOOP_REQUEST, ServiceConst.LOOP_INTERVAL ); + } else { + invokeAutoRefreshStrategy(); + } } private void invokeAutoRefreshStrategy() { @@ -480,14 +504,17 @@ public class MogoServiceProvider implements IMogoModuleProvider, final MogoLatLng point = new MogoLatLng( location.getLatitude(), location.getLongitude() ); if ( mLastAutoRefreshLocation == null ) { mLastAutoRefreshLocation = point; + mLoopRequest = true; notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback ); return; } - mLastAutoRefreshLocation = point; - float distance = Utils.calculateLineDistance( mLastAutoRefreshLocation, new MogoLatLng( location.getLatitude(), location.getLongitude() ) ); + float distance = Utils.calculateLineDistance( mLastAutoRefreshLocation, point ); if ( distance > mAutoRefreshStrategy.getDistance() ) { - mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, true ); - mUiController.moveToCenter( mLastAutoRefreshLocation ); + mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, false ); + mUiController.recoverLockMode(); + mStatusManager.setUserInteractionStatus( TAG, true, false ); + mUiController.changeZoom( 16.0f ); + mLastAutoRefreshLocation = point; notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback ); } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java index 596b6507b5..c0533b0b1b 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java @@ -27,6 +27,16 @@ public class ServiceConst { */ public static final int DECREASE_INTERVAL = 1_000; + /** + * 刷新失败补偿消息 + */ + public static final int MSG_LOOP_REQUEST = 10_000; + + /** + * 刷新失败补偿时间间隔 + */ + public static final int LOOP_INTERVAL = 10_000; + /** * 卡片 车聊聊 */