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 11e59c1985..0d04aa102c 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.png b/libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location2.png.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.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 b8f10be14d..7cf2ea5d32 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,6 +504,7 @@ 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; } 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; + /** * 卡片 车聊聊 */