diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java
index 381aa2c9b2..58c4a17564 100644
--- a/app/src/main/java/com/mogo/launcher/MogoApplication.java
+++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java
@@ -1,6 +1,5 @@
package com.mogo.launcher;
-import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
@@ -9,7 +8,6 @@ import android.util.Log;
import com.alibaba.android.arouter.launcher.ARouter;
import com.auto.zhidao.logsdk.CrashSystem;
import com.bytedance.boost_multidex.BoostMultiDex;
-import com.elegant.utils.WindowUtil;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.network.Utils;
@@ -18,7 +16,6 @@ import com.mogo.module.back.BackToLauncherConst;
import com.mogo.module.carchatting.card.CallChatConstant;
import com.mogo.module.common.MogoModule;
import com.mogo.module.common.MogoModulePaths;
-import com.mogo.module.guide.GuideConstant;
import com.mogo.module.main.service.MogoMainService;
import com.mogo.module.media.MediaConstants;
import com.mogo.module.push.base.PushUIConstants;
@@ -67,7 +64,7 @@ public class MogoApplication extends AbsMogoApplication {
Logger.init( BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF );
if ( DebugConfig.isLoadGuideModule() ) {
- MogoModulePaths.addModule(new MogoModule(PATH_GUIDE_FRAGMENT, PATH_GUIDE_MODULE_NAME));
+ MogoModulePaths.addModule( new MogoModule( PATH_GUIDE_FRAGMENT, PATH_GUIDE_MODULE_NAME ) );
}
MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_AGREEMENT, AuthorizeConstant.PATH_AGREEMENT_MODULE_NAME ) );
@@ -140,14 +137,16 @@ public class MogoApplication extends AbsMogoApplication {
@Override
protected void init() {
super.init();
- prepareBaseService( 2_000L );
+ final IMogoServiceApis apis = ARouter.getInstance().navigation( IMogoServiceApis.class );
+ prepareBaseService( apis, 2_000L );
+// installSkinManager( this, apis );
}
/**
* 基础服务:passport、location、socket
*/
- private void prepareBaseService( long delay ) {
- final IMogoServiceApis apis = ARouter.getInstance().navigation( IMogoServiceApis.class );
+ private void prepareBaseService( IMogoServiceApis apis, long delay ) {
+
UiThreadHandler.postDelayed( () -> {
// 第三方平台的sn是服务端生成的,所以必须在返回后才能开启
if ( TextUtils.isEmpty( Utils.getSn() ) ) {
@@ -159,7 +158,6 @@ public class MogoApplication extends AbsMogoApplication {
prepareSocketAndLocationServices( apis );
}
}, delay );
- installSkinManager( this, apis );
}
private void preparePassportEnvironment( IMogoServiceApis apis, Runnable after ) {
@@ -191,10 +189,6 @@ public class MogoApplication extends AbsMogoApplication {
} );
}
- private void installSkinManager( Application application, IMogoServiceApis apis ) {
- apis.getSkinSupportInstallerApi().install( application );
- }
-
@Override
protected void attachBaseContext( Context base ) {
super.attachBaseContext( base );
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java
index 27f41aef51..8f165549a0 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java
@@ -29,6 +29,7 @@ public abstract class MvpActivity< V extends IView, P extends Presenter< V > >
@Override
protected void onCreate( @Nullable Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
+ beforeSetContentView(savedInstanceState);
if ( DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_BYD ) {
requestWindowFeature( Window.FEATURE_NO_TITLE );
getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN );
@@ -39,6 +40,10 @@ public abstract class MvpActivity< V extends IView, P extends Presenter< V > >
getLifecycle().addObserver( mPresenter );
}
+ protected void beforeSetContentView(Bundle savedInstanceState){
+
+ }
+
/**
* 布局资源
*
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapBaseMapView.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapBaseMapView.java
index b8055d9cc9..1ae99ff4d1 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapBaseMapView.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapBaseMapView.java
@@ -2,12 +2,10 @@ package com.mogo.map.impl.amap;
import android.content.Context;
import android.util.AttributeSet;
+import android.view.ViewGroup;
import androidx.annotation.Nullable;
-import com.amap.api.maps.MapView;
-import com.amap.api.navi.AMapNaviView;
-import com.mogo.commons.debug.DebugConfig;
import com.mogo.map.IMogoMapView;
import com.mogo.map.MogoBaseMapView;
@@ -19,6 +17,8 @@ import com.mogo.map.MogoBaseMapView;
*/
public class AMapBaseMapView extends MogoBaseMapView {
+ private static final String TAG = "AMapBaseMapView";
+
public AMapBaseMapView( Context context ) {
super( context );
}
@@ -33,9 +33,11 @@ public class AMapBaseMapView extends MogoBaseMapView {
@Override
protected IMogoMapView createMapView( Context context ) {
- if ( DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_BYD ) {
- return new AMapViewWrapper( new MapView( context ) );
+ IMogoMapView mapView = AMapViewHandler.getMapView();
+ if ( mapView.getMapView().getParent() != null ) {
+ ViewGroup group = ( ViewGroup ) mapView.getMapView().getParent();
+ group.removeView( mapView.getMapView() );
}
- return new AMapNaviViewWrapper( new AMapNaviView( context ) );
+ return AMapViewHandler.getMapView();
}
}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewHandler.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewHandler.java
new file mode 100644
index 0000000000..1eaa3557a3
--- /dev/null
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewHandler.java
@@ -0,0 +1,36 @@
+package com.mogo.map.impl.amap;
+
+import android.content.Context;
+
+import com.amap.api.maps.MapView;
+import com.amap.api.navi.AMapNaviView;
+import com.mogo.commons.debug.DebugConfig;
+import com.mogo.map.IMogoMapView;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/9/10
+ *
+ * 描述
+ */
+class AMapViewHandler {
+
+ private static IMogoMapView sMapView;
+
+ public static void createMapView( Context context ) {
+ if ( DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE ) {
+ sMapView = new AMapViewWrapper( new MapView( context ) );
+ } else {
+ sMapView = new AMapNaviViewWrapper( new AMapNaviView( context ) );
+ }
+ }
+
+ public static IMogoMapView getMapView() {
+ return sMapView;
+ }
+
+ public static void destroy() {
+ sMapView = null;
+ }
+}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java
index 7b33644b91..7b6e72ea7a 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java
@@ -17,8 +17,10 @@ import com.amap.api.maps.AMap;
import com.amap.api.maps.AMapUtils;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.MapView;
+import com.amap.api.maps.TextureMapView;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.CameraPosition;
+import com.amap.api.maps.model.CameraPositionCreator;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.LatLngBounds;
import com.amap.api.maps.model.Marker;
@@ -477,16 +479,41 @@ public class AMapViewWrapper implements IMogoMapView,
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
Logger.d( TAG, "锁车" );
- MyLocationStyle style = getMyLocationStyle();
- if ( style == null ) {
- style = new MyLocationStyle();
+ Location target = NaviClient.getInstance( getContext() ).getCarLocation2();
+ if ( target != null ) {
+ mMapView.getMap().animateCamera( CameraUpdateFactory.newCameraPosition(
+ new CameraPosition( new LatLng( target.getLatitude(), target.getLongitude() ),
+ mDefaultZoomLevel,
+ 0,
+ 0
+ )
+ ), new AMap.CancelableCallback() {
+ @Override
+ public void onFinish() {
+ changeMyLocationStyle();
+ }
+
+ @Override
+ public void onCancel() {
+ changeMyLocationStyle();
+ }
+ } );
+ } else {
+ changeMyLocationStyle();
}
- style.myLocationType( MyLocationStyle.LOCATION_TYPE_FOLLOW );
- mMapView.getMap().setMyLocationStyle( style );
mIsCarLocked = true;
}
}
+ private void changeMyLocationStyle() {
+ MyLocationStyle style = getMyLocationStyle();
+ if ( style == null ) {
+ style = new MyLocationStyle();
+ }
+ style.myLocationType( MyLocationStyle.LOCATION_TYPE_FOLLOW );
+ mMapView.getMap().setMyLocationStyle( style );
+ }
+
@Override
public void loseLockMode() {
if ( DebugConfig.isDebug() ) {
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMapViewInstanceHandler.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMapViewInstanceHandler.java
new file mode 100644
index 0000000000..55d5b23a2f
--- /dev/null
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMapViewInstanceHandler.java
@@ -0,0 +1,15 @@
+package com.mogo.map;
+
+import android.content.Context;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/9/10
+ *
+ * 描述
+ */
+interface IMogoMapViewInstanceHandler extends IDestroyable {
+
+ void createMapViewInstance( Context context );
+}
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapViewInstanceHandler.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapViewInstanceHandler.java
new file mode 100644
index 0000000000..b3e6bf7a2b
--- /dev/null
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapViewInstanceHandler.java
@@ -0,0 +1,49 @@
+package com.mogo.map;
+
+import android.content.Context;
+
+import com.mogo.map.impl.amap.AMapViewHandler;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/9/10
+ *
+ * 描述
+ */
+class MogoMapViewInstanceHandler implements IMogoMapViewInstanceHandler {
+
+ private static volatile MogoMapViewInstanceHandler sInstance;
+
+ private MogoMapViewInstanceHandler(){}
+
+ public static MogoMapViewInstanceHandler getInstance(){
+ if( sInstance == null ){
+ synchronized( MogoMapViewInstanceHandler.class ) {
+ if( sInstance == null ){
+ sInstance = new MogoMapViewInstanceHandler();
+ }
+ }
+ }
+ return sInstance;
+ }
+
+ public synchronized void release(){
+ sInstance = null;
+ }
+
+ private Object readResolve() {
+ // 阻止反序列化,必须实现 Serializable 接口
+ return sInstance;
+ }
+
+ @Override
+ public void createMapViewInstance( Context context ) {
+ AMapViewHandler.createMapView( context );
+ }
+
+ @Override
+ public void destroy() {
+ AMapViewHandler.destroy();
+ }
+}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
index 3aff44bc6e..d1f640ec5a 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
@@ -198,13 +198,6 @@ public class EntranceFragment extends MvpFragment {
- if (!mStatusManager.isV2XShow()) {
- mStatusManager.setUserInteractionStatus(TAG, true, false);
- mMApUIController.setLockZoom(16);
- mMApUIController.changeZoom(16.0f);
- }
- }, 1_000L);
}
});
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFiveFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFiveFragment.kt
index 2598e06f6c..814a846509 100644
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFiveFragment.kt
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFiveFragment.kt
@@ -32,7 +32,10 @@ class GuideStageFiveFragment : MvpFragment> {
super.onResume()
containerFragment?.invisibleRight()
speak(context!!, context!!.resources.getString(R.string.module_guide_voice_page_five), object : IMogoVoiceCmdCallBack {
- override fun onTTSEnd(ttsId: String?, tts: String?) {
+ override fun onSpeakEnd(speakText: String?) {
+ if(!isVisible){
+ return
+ }
containerFragment?.closeGuideFragment()
}
})
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFourFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFourFragment.kt
index fe9a84a81d..5770e9a986 100644
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFourFragment.kt
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFourFragment.kt
@@ -30,9 +30,13 @@ class GuideStageFourFragment : MvpFragment> {
override fun onResume() {
super.onResume()
+ containerFragment?.visibleLeft()
containerFragment?.visibleRight()
speak(context!!, context!!.resources.getString(R.string.module_guide_voice_page_four), object : IMogoVoiceCmdCallBack {
- override fun onTTSEnd(ttsId: String?, tts: String?) {
+ override fun onSpeakEnd(speakText: String?) {
+ if(!isVisible){
+ return
+ }
containerFragment?.moveToNext()
}
})
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageOneFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageOneFragment.kt
index a4c572b32a..1b2aaccc94 100644
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageOneFragment.kt
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageOneFragment.kt
@@ -36,7 +36,10 @@ class GuideStageOneFragment : MvpFragment> {
super.onResume()
containerFragment?.invisibleLeft()
speak(context!!, context!!.resources.getString(R.string.module_guide_voice_page_one), object : IMogoVoiceCmdCallBack {
- override fun onTTSEnd(ttsId: String?, tts: String?) {
+ override fun onSpeakEnd(speakText: String?) {
+ if(!isVisible){
+ return
+ }
containerFragment?.moveToNext()
}
})
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageThreeFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageThreeFragment.kt
index 853c04a47c..f8cb5fdcc3 100644
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageThreeFragment.kt
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageThreeFragment.kt
@@ -30,8 +30,13 @@ class GuideStageThreeFragment : MvpFragment> {
override fun onResume() {
super.onResume()
+ containerFragment?.visibleLeft()
+ containerFragment?.visibleRight()
speak(context!!, context!!.resources.getString(R.string.module_guide_voice_page_three), object : IMogoVoiceCmdCallBack {
- override fun onTTSEnd(ttsId: String?, tts: String?) {
+ override fun onSpeakEnd(speakText: String?) {
+ if(!isVisible){
+ return
+ }
containerFragment?.moveToNext()
}
})
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageTwoFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageTwoFragment.kt
index 10700d5969..862148061c 100644
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageTwoFragment.kt
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageTwoFragment.kt
@@ -31,8 +31,12 @@ class GuideStageTwoFragment : MvpFragment> {
override fun onResume() {
super.onResume()
containerFragment?.visibleLeft()
+ containerFragment?.visibleRight()
speak(context!!, context!!.resources.getString(R.string.module_guide_voice_page_two), object : IMogoVoiceCmdCallBack {
- override fun onTTSEnd(ttsId: String?, tts: String?) {
+ override fun onSpeakEnd(speakText: String?) {
+ if(!isVisible){
+ return
+ }
containerFragment?.moveToNext()
}
})
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_include.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_include.xml
index 3db0f73706..c46d99fe5c 100644
--- a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_include.xml
+++ b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_include.xml
@@ -6,8 +6,8 @@
impleme
return R.layout.module_main_activity_main;
}
+ @Override
+ protected void beforeSetContentView( Bundle savedInstanceState ) {
+ init();
+ installSkinManager( savedInstanceState );
+ }
+
+ /**
+ * 安装皮肤支持
+ *
+ * @param savedInstanceState
+ */
+ private void installSkinManager( Bundle savedInstanceState ) {
+ mServiceApis.getMapServiceApi().getMapViewInstanceHandler().createMapViewInstance( this );
+ mServiceApis.getSkinSupportInstallerApi().install( getApplication() );
+ mServiceApis.getSkinSupportInstallerApi().onCompensateActivityCreated( this, savedInstanceState );
+ }
+
@Override
protected void initViews() {
@@ -113,7 +130,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
@Override
protected void onCreate( @Nullable Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
- init();
mPresenter.postLoadModuleMsg();
}
@@ -326,6 +342,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mMogoMapService = null;
mMogoMapUIController = null;
mMogoFragmentManager = null;
+ mServiceApis.getMapServiceApi().getMapViewInstanceHandler().destroy();
AdasConfigApiController.getInstance().release();
mServiceApis.getAdasControllerApi().release();
Logger.d( TAG, "destroy." );
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 4738bc2a10..37d8c41c8d 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
@@ -272,7 +272,7 @@ public class MogoServices implements IMogoMapListener,
/**
* 当前限速
*/
- private int mCurrentLimit = 0;
+ private int mCurrentLimit = -1;
private boolean mIsMainPageFirstResume = true;
@@ -821,7 +821,6 @@ public class MogoServices implements IMogoMapListener,
return;
}
-
if ( mCurrentLimit == traffic.getSpeedLimit() ) {
return;
}
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
index 9e6a666721..7f0c7b741d 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
@@ -27,6 +27,7 @@ import com.mogo.module.share.bean.StepAfterAuth;
import com.mogo.module.share.constant.HttpConstant;
import com.mogo.module.share.constant.ShareConstants;
import com.mogo.module.share.dialog.GridFixableShareDialog;
+import com.mogo.module.share.dialog.LaucherShareDialog;
import com.mogo.module.share.manager.ServiceApisManager;
import com.mogo.module.share.manager.UploadHelper;
import com.mogo.module.share.net.ShareApiService;
@@ -93,7 +94,8 @@ import static com.mogo.service.tanlu.IMogoTanluProvider.TYPE_TRAFFIC_CHECK;
* @since 2020-01-10
*/
@Route(path = MogoServicePaths.PATH_SHARE)
-public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMogoVoiceCmdCallBack, Handler.Callback {
+public class ShareControl implements IMogoShareManager, IMogoIntentListener,
+ IMogoVoiceCmdCallBack, Handler.Callback {
private static final String TAG = "ShareControl";
private Context mContext;
@@ -116,7 +118,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
@Override
public void dismissShareDialog() {
if (mShareDialog != null) {
- Logger.d(TAG,"dismissShareDialog");
+ Logger.d(TAG, "dismissShareDialog");
mShareDialog.dismiss();
}
}
@@ -128,8 +130,12 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
private void realShowDialog() {
if (mShareDialog == null) {
- Logger.d(TAG,"realShowDialog context : " + mContext);
- mShareDialog = new GridFixableShareDialog(mContext);
+ Logger.d(TAG, "realShowDialog context : " + mContext);
+ if(DebugConfig.isLauncher()){
+ mShareDialog = new LaucherShareDialog(mContext);
+ }else {
+ mShareDialog = new GridFixableShareDialog(mContext);
+ }
mShareDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
@@ -140,11 +146,11 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
mShareDialog.show();
}
- private StepAfterAuth stepAfterAuth = new StepAfterAuth(-1, "",false);
+ private StepAfterAuth stepAfterAuth = new StepAfterAuth(-1, "", false);
@Override
public void init(Context context) {
- Logger.d(TAG,"start init====");
+ Logger.d(TAG, "start init====");
mContext = context;
ServiceApisManager.INSTANCE.init(context);
authorizeModuleManager =
@@ -158,8 +164,10 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case STEP_AFTER_AUTH_TYPE_UPLOAD:
TanluUploadParams params =
- new TanluUploadParams(stepAfterAuth.getUploadType(), IMogoTanluProvider.UPLOAD_FROM_VOICE);
- UploadHelper.INSTANCE.upload(mContext, params,stepAfterAuth.getForcePlayVoice());
+ new TanluUploadParams(stepAfterAuth.getUploadType(),
+ IMogoTanluProvider.UPLOAD_FROM_VOICE);
+ UploadHelper.INSTANCE.upload(mContext, params,
+ stepAfterAuth.getForcePlayVoice());
dismissShareDialog();
break;
case STEP_AFTER_AUTH_TYPE_SEEK_HELP:
@@ -193,7 +201,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
AIAssist.getInstance(mContext).registerUnWakeupCommand(UNWAKE_UPLOAD_REAL_TIME_TRAFFIC,
UPLOAD_REAL_TIME_TRAFFIC, ShareControl.this);
- if(!DebugConfig.isLauncher()) {
+ if (!DebugConfig.isLauncher()) {
ServiceApisManager.serviceApis.getStatusManagerApi().registerStatusChangedListener(TAG, StatusDescriptor.MAIN_PAGE_RESUME, new IMogoStatusChangedListener() {
@Override
public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
@@ -204,7 +212,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
});
}
- if(!DebugConfig.isLauncher()) {
+ if (!DebugConfig.isLauncher()) {
ServiceApisManager.serviceApis.getStatusManagerApi().registerStatusChangedListener(TAG, StatusDescriptor.ACC_STATUS, new IMogoStatusChangedListener() {
@Override
public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
@@ -219,7 +227,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
queryShareConfigRetryTime = 0;
queryShareButtonConfig();
}
- Logger.d(TAG,"init over====");
+ Logger.d(TAG, "init over====");
}
@Override
@@ -231,42 +239,42 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case UNWAKE_UPLOAD_ROAD_BLOCK:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_BLOCK,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_BLOCK, false);
} else {
uploadFromVoice(TYPE_BLOCK);
}
break;
case UNWAKE_UPLOAD_TRAFFIC_CHECK:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_TRAFFIC_CHECK,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_TRAFFIC_CHECK, false);
} else {
uploadFromVoice(TYPE_TRAFFIC_CHECK);
}
break;
case UNWAKE_UPLOAD_ROAD_CLOSURE:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_CLOSURE,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_CLOSURE, false);
} else {
uploadFromVoice(TYPE_CLOSURE);
}
break;
case UNWAKE_UPLOAD_ACCIDENT:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ACCIDENT,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ACCIDENT, false);
} else {
uploadFromVoice(TYPE_ACCIDENT);
}
break;
case UNWAKE_UPLOAD_REAL_TIME_TRAFFIC:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_REAL_TIME_TRAFFIC,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_REAL_TIME_TRAFFIC, false);
} else {
uploadFromVoice(TYPE_REAL_TIME_TRAFFIC);
}
break;
case UNWAKE_UPLOAD_SEEK_HELP:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_SEEK_HELP, TYPE_BLOCK,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_SEEK_HELP, TYPE_BLOCK, false);
} else {
seekHelp();
}
@@ -274,28 +282,28 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case UNWAKE_UPLOAD_STAGNANT_WATER:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_STAGNANT_WATER,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_STAGNANT_WATER, false);
} else {
uploadFromVoice(TYPE_STAGNANT_WATER);
}
break;
case UNWAKE_UPLOAD_ROAD_ICY:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_ICY,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_ICY, false);
} else {
uploadFromVoice(TYPE_ROAD_ICY);
}
break;
case UNWAKE_UPLOAD_DENSE_FOG:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_DENSE_FOG,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_DENSE_FOG, false);
} else {
uploadFromVoice(TYPE_DENSE_FOG);
}
break;
case UNWAKE_UPLOAD_ROAD_CONSTRUCTION:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_CONSTRUCTION,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_CONSTRUCTION, false);
} else {
uploadFromVoice(TYPE_ROAD_CONSTRUCTION);
}
@@ -304,6 +312,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
}
}
+
@Override
public void onIntentReceived(String intentStr, Intent intent) {
// 此处只接受处理语音相关广播
@@ -312,7 +321,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
switch (intentStr) {
case VOICE_CMD_PUB_TROUBLE_HELP:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_SEEK_HELP, TYPE_DENSE_FOG,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_SEEK_HELP, TYPE_DENSE_FOG, false);
} else {
// 开启服务,准备上报求助
seekHelp();
@@ -326,7 +335,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
switch (ob) {
case "积水":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_STAGNANT_WATER,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_STAGNANT_WATER, false);
} else {
uploadFromVoice(TYPE_STAGNANT_WATER);
dismissShareDialog();
@@ -334,7 +343,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case "积冰":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_ICY,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_ICY, false);
} else {
uploadFromVoice(TYPE_ROAD_ICY);
dismissShareDialog();
@@ -342,7 +351,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case "雾":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_DENSE_FOG,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_DENSE_FOG, false);
} else {
uploadFromVoice(TYPE_DENSE_FOG);
dismissShareDialog();
@@ -350,7 +359,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case "交通事故":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ACCIDENT,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ACCIDENT, false);
} else {
uploadFromVoice(TYPE_ACCIDENT);
dismissShareDialog();
@@ -358,7 +367,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case "施工":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_CONSTRUCTION,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_CONSTRUCTION, false);
} else {
uploadFromVoice(TYPE_ROAD_CONSTRUCTION);
dismissShareDialog();
@@ -366,7 +375,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case "封路":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_CLOSURE,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_CLOSURE, false);
} else {
uploadFromVoice(TYPE_CLOSURE);
dismissShareDialog();
@@ -374,7 +383,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case "交通检查":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_TRAFFIC_CHECK,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_TRAFFIC_CHECK, false);
} else {
uploadFromVoice(TYPE_TRAFFIC_CHECK);
dismissShareDialog();
@@ -391,7 +400,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
switch (obCondition) {
case "路况":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_REAL_TIME_TRAFFIC,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_REAL_TIME_TRAFFIC, false);
} else {
Logger.d(TAG, "分享框准备触发上报实时路况");
uploadFromVoice(TYPE_REAL_TIME_TRAFFIC);
@@ -400,7 +409,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case "拥堵":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_BLOCK,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_BLOCK, false);
} else {
Logger.d(TAG, "分享框准备触发上报拥堵");
uploadFromVoice(TYPE_BLOCK);
@@ -432,7 +441,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
private void uploadFromVoice(String eventType) {
TanluUploadParams params = new TanluUploadParams(eventType,
IMogoTanluProvider.UPLOAD_FROM_VOICE);
- UploadHelper.INSTANCE.upload(mContext, params,false);
+ UploadHelper.INSTANCE.upload(mContext, params, false);
}
private void seekHelp() {
@@ -446,19 +455,21 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
return authorizeModuleManager.needAuthorize(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE);
}
- private void goAuth(int type, String uploadType,boolean forcePlayVoice) {
+ private void goAuth(int type, String uploadType, boolean forcePlayVoice) {
stepAfterAuth.setType(type);
stepAfterAuth.setUploadType(uploadType);
stepAfterAuth.setForcePlayVoice(forcePlayVoice);
authorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE);
}
- private void queryShareButtonConfig(){
+ private void queryShareButtonConfig() {
if (NetworkUtils.isConnected(mContext)) {
// 有网,直接请求
- MogoLocation location = ServiceApisManager.serviceApis.getMapServiceApi().getSingletonLocationClient(mContext).getLastKnowLocation();
+ MogoLocation location =
+ ServiceApisManager.serviceApis.getMapServiceApi().getSingletonLocationClient(mContext).getLastKnowLocation();
Map params = new ArrayMap<>();
- ShareConfigRequest request = new ShareConfigRequest(Utils.getSn(), location.getAdCode());
+ ShareConfigRequest request = new ShareConfigRequest(Utils.getSn(),
+ location.getAdCode());
params.put("data", request.toJson());
ServiceApisManager.serviceApis.getNetworkApi().create(ShareApiService.class,
HttpConstant.Companion.getNetHost()).queryShareButtonConfig(params).subscribeOn(Schedulers.io()).observeOn(Schedulers.io()).subscribe(new SubscribeImpl(RequestOptions.create(mContext)) {
@@ -466,16 +477,16 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
public void onSuccess(ShareButtonConfigResponse o) {
super.onSuccess(o);
String config = "";
- if (o.getDetailMsg() != null) {
- List btnList = o.getDetailMsg().getData();
- if(btnList != null&&!btnList.isEmpty()) {
- config = GsonUtil.jsonFromObject(o.getDetailMsg().getData());
+ if (o.getResult() != null) {
+ List btnList = o.getResult().getData();
+ if (btnList != null && !btnList.isEmpty()) {
+ config = GsonUtil.jsonFromObject(btnList);
Logger.d(TAG, "获取分享框成功:" + config);
- }else {
+ } else {
Logger.d(TAG, "获取分享框成功,但是data没有内容");
}
- }else{
- Logger.d(TAG,"获取分享框成功,但是detailMsg没有内容");
+ } else {
+ Logger.d(TAG, "获取分享框成功,但是detailMsg没有内容");
}
Logger.d(TAG, "获取分享框配置成功: " + config);
SharedPrefsMgr.getInstance(mContext).putString(KEY_SHARE_CONFIG, config);
@@ -495,7 +506,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
retryQueryShareConfig();
}
});
- }else{
+ } else {
// 重试
retryQueryShareConfig();
}
@@ -505,13 +516,15 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
private static final int MSG_QUERY_SHARE_CONFIG_RETRY = 1001;
private int queryShareConfigRetryTime = 0;
private static final int QUERY_SHARE_CONFIG_RETRY_TIME_THRESHOLD = 10;
- private void retryQueryShareConfig(){
- if(queryShareConfigRetryTime > QUERY_SHARE_CONFIG_RETRY_TIME_THRESHOLD){
+
+ private void retryQueryShareConfig() {
+ if (queryShareConfigRetryTime > QUERY_SHARE_CONFIG_RETRY_TIME_THRESHOLD) {
// 重试次数超过QUERY_SHARE_CONFIG_RETRY_TIME_THRESHOLD,不再重试
return;
}
handler.sendEmptyMessageDelayed(MSG_QUERY_SHARE_CONFIG_RETRY, 3000);
}
+
private Handler handler = new Handler(this);
@Override
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/FixableButton.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/FixableButton.kt
index 1b6a2dac93..27a3faa812 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/FixableButton.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/FixableButton.kt
@@ -2,15 +2,32 @@ package com.mogo.module.share.bean
import com.mogo.commons.data.BaseData
import com.mogo.module.share.R
+import com.mogo.service.tanlu.IMogoTanluProvider
+import com.mogo.service.tanlu.IMogoTanluProvider.*
/**
* 可配置按钮封装
* @author tongchenfei
*/
-data class FixableButton(val id:Int = 0,val poiType:String = "10007",val iconUrl:String = "", val iconRes:Int = R.drawable.share_block_up, val title:String="拥堵")
-
-class ShareButtonConfigResponse:BaseData(){
- var detailMsg: ShareButtonConfigDetailMsg? = null
+class FixableButton(val id: Int = 0, val poiType: String = "10007", val iconUrl: String = "", val title: String = "拥堵") {
+ val iconRes: Int
+ get() = when (poiType) {
+ TYPE_SEEK_HELP -> R.drawable.share_seek_help
+ TYPE_DENSE_FOG -> R.drawable.share_dense_fog
+ TYPE_ROAD_ICY -> R.drawable.share_road_icy
+ TYPE_STAGNANT_WATER -> R.drawable.share_stagnant_water
+ TYPE_REAL_TIME_TRAFFIC -> R.drawable.share_real_time_traffic
+ TYPE_ROAD_CONSTRUCTION -> R.drawable.share_road_construction
+ TYPE_ACCIDENT -> R.drawable.share_accident
+ TYPE_CLOSURE -> R.drawable.share_road_closure
+ TYPE_TRAFFIC_CHECK -> R.drawable.share_traffic_check
+ TYPE_BLOCK -> R.drawable.share_block_up
+ else -> R.drawable.share_block_up
+ }
}
-data class ShareButtonConfigDetailMsg(var data:List)
\ No newline at end of file
+class ShareButtonConfigResponse : BaseData() {
+ var result: ShareButtonConfigDetailMsg? = null
+}
+
+data class ShareButtonConfigDetailMsg(var data: List)
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt
index 59f98f4559..8b8eaa14ee 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt
@@ -35,14 +35,6 @@ class GridFixableShareDialog(context: Context) : BaseFloatDialog(context) {
private fun setWrapContent() {
val window = window
-// if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_BYD) {
-// if (window != null) {
-// val lp = window.attributes
-// lp.width = 1024
-// lp.height = 600
-// window.attributes = lp
-// }
-// } else
if (CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X) {
if (window != null) {
val lp = window.attributes
@@ -65,7 +57,7 @@ class GridFixableShareDialog(context: Context) : BaseFloatDialog(context) {
Logger.d(TAG, "test-------3")
setContentView(R.layout.dialog_share_with_gridlayout)
setWrapContent()
- gridBtnManager = GridBtnManager(context, findViewById(R.id.moduleShareBtnGridLayout))
+ gridBtnManager = GridBtnManager(context, findViewById(R.id.moduleShareBtnGridLayout),findViewById(R.id.ivTmpShow))
gridBtnManager.setShareClickListener {
Logger.d(TAG, "share btn click: $it")
if (it.poiType == IMogoTanluProvider.TYPE_SEEK_HELP) {
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/GridBtnManager.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/GridBtnManager.kt
index f3c21f45b0..0ff0380ca3 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/GridBtnManager.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/GridBtnManager.kt
@@ -18,10 +18,11 @@ import com.mogo.utils.storage.SharedPrefsMgr
/**
* 用来管理生成对应的分享按钮
*/
-class GridBtnManager(val context: Context,private val container: GridLayout) {
- companion object{
+class GridBtnManager(val context: Context, private val container: GridLayout, private val tmpImg: ImageView) {
+ companion object {
const val TAG = "GridBtnManager"
}
+
private val inflater = LayoutInflater.from(context)
fun resetContainer() {
@@ -34,9 +35,9 @@ class GridBtnManager(val context: Context,private val container: GridLayout) {
val content = view.findViewById(R.id.tvShareContent)
// 优先加载url图片,然后加载资源图片
if (button.iconUrl.isNotEmpty()) {
- GlideApp.with(context).load(button.iconUrl).centerInside().into(img)
+ GlideApp.with(context).load(button.iconUrl).placeholder(button.iconRes).error(button.iconRes).into(img)
} else {
- GlideApp.with(context).load(button.iconRes).centerInside().into(img)
+ GlideApp.with(context).load(button.iconRes).placeholder(button.iconRes).error(button.iconRes).into(img)
}
content.text = button.title
view.setOnClickListener {
@@ -50,21 +51,21 @@ class GridBtnManager(val context: Context,private val container: GridLayout) {
resetContainer()
val config = SharedPrefsMgr.getInstance(context).getString(ShareConstants.KEY_SHARE_CONFIG)
Logger.d(TAG, "showDefaultBtns: $config")
- if(config.isEmpty()) {
+ if (config.isEmpty()) {
// 默认的全部十个按钮
- generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_BLOCK, iconRes = R.drawable.share_block_up, title = "拥堵"))
- generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_TRAFFIC_CHECK, iconRes = R.drawable.share_traffic_check, title = "交通检查"))
- generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_CLOSURE, iconRes = R.drawable.share_road_closure, title = "封路"))
- generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ACCIDENT, iconRes = R.drawable.share_accident, title = "事故"))
- generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ROAD_CONSTRUCTION, iconRes = R.drawable.share_road_construction, title = "道路施工"))
- generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_REAL_TIME_TRAFFIC, iconRes = R.drawable.share_real_time_traffic, title = "实时路况"))
- generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_SEEK_HELP, iconRes = R.drawable.share_seek_help, title = "故障求助"))
- generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_STAGNANT_WATER, iconRes = R.drawable.share_stagnant_water, title = "道路积水"))
- generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ROAD_ICY, iconRes = R.drawable.share_road_icy, title = "道路结冰"))
- generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_DENSE_FOG, iconRes = R.drawable.share_dense_fog, title = "浓雾"))
- }else{
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_BLOCK, title = "拥堵"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_TRAFFIC_CHECK, title = "交通检查"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_CLOSURE, title = "封路"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ACCIDENT, title = "事故"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ROAD_CONSTRUCTION, title = "道路施工"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_REAL_TIME_TRAFFIC, title = "实时路况"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_SEEK_HELP, title = "故障求助"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_STAGNANT_WATER, title = "道路积水"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ROAD_ICY, title = "道路结冰"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_DENSE_FOG, title = "浓雾"))
+ } else {
val btnList = GsonUtil.arrayFromJson(config, FixableButton::class.java)
- btnList.forEach {btn->
+ btnList.forEach { btn ->
generateShareButton(btn)
}
}
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt
index 0919a94738..fb427784f0 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt
@@ -30,6 +30,6 @@ interface ShareApiService {
* 获取分享框服务端配置
*/
@FormUrlEncoded
- @POST("/yycp-geoIndex-preSearch-service/car/search/no/searchNearbyInformation/v1")
+ @POST("/deva/car/poiType/no/poiTypeList")
fun queryShareButtonConfig(@FieldMap param: Map):Observable
}
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/res/layout/dialog_share_with_gridlayout.xml b/modules/mogo-module-share/src/main/res/layout/dialog_share_with_gridlayout.xml
index b428cc73eb..8ca5255de6 100644
--- a/modules/mogo-module-share/src/main/res/layout/dialog_share_with_gridlayout.xml
+++ b/modules/mogo-module-share/src/main/res/layout/dialog_share_with_gridlayout.xml
@@ -39,4 +39,9 @@
+
+
\ No newline at end of file
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoMapService.java b/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoMapService.java
index 0d47238536..fc0f61d014 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoMapService.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoMapService.java
@@ -3,6 +3,7 @@ package com.mogo.service.map;
import android.content.Context;
import com.alibaba.android.arouter.facade.template.IProvider;
+import com.mogo.map.IMogoMapViewInstanceHandler;
import com.mogo.map.listener.IMogoHosListenerRegister;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.marker.IMogoMarkerManager;
@@ -111,4 +112,11 @@ public interface IMogoMapService extends IProvider {
* @return
*/
IMogoRoadSearch getRoadSearchApi();
+
+ /**
+ * 地图实例
+ *
+ * @return
+ */
+ IMogoMapViewInstanceHandler getMapViewInstanceHandler();
}
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/map/MogoMapService.java b/services/mogo-service/src/main/java/com/mogo/service/impl/map/MogoMapService.java
index ac8d5c81fb..4038c5533d 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/map/MogoMapService.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/map/MogoMapService.java
@@ -3,15 +3,17 @@ package com.mogo.service.impl.map;
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
-import com.mogo.map.MogoRoadSearch;
+import com.mogo.map.IMogoMapViewInstanceHandler;
import com.mogo.map.MogoGeoSearch;
import com.mogo.map.MogoInputtipsSearch;
import com.mogo.map.MogoLocationClient;
import com.mogo.map.MogoMapUIController;
+import com.mogo.map.MogoMapViewInstanceHandler;
import com.mogo.map.MogoMarkerManager;
import com.mogo.map.MogoNavi;
import com.mogo.map.MogoOverlayManager;
import com.mogo.map.MogoPoiSearch;
+import com.mogo.map.MogoRoadSearch;
import com.mogo.map.listener.IMogoHosListenerRegister;
import com.mogo.map.listener.MogoHosListenerRegister;
import com.mogo.map.location.IMogoLocationClient;
@@ -92,7 +94,13 @@ public class MogoMapService implements IMogoMapService {
return new MogoRoadSearch();
}
+ @Override
+ public IMogoMapViewInstanceHandler getMapViewInstanceHandler() {
+ return MogoMapViewInstanceHandler.getInstance();
+ }
+
@Override
public void init( Context context ) {
}
+
}
diff --git a/skin/mogo-skin-support-impl/src/main/java/com/mogo/skin/support/impl/SkinSupportInstaller.java b/skin/mogo-skin-support-impl/src/main/java/com/mogo/skin/support/impl/SkinSupportInstaller.java
index ab4ffcb3f2..a9b4e2a514 100644
--- a/skin/mogo-skin-support-impl/src/main/java/com/mogo/skin/support/impl/SkinSupportInstaller.java
+++ b/skin/mogo-skin-support-impl/src/main/java/com/mogo/skin/support/impl/SkinSupportInstaller.java
@@ -3,6 +3,7 @@ package com.mogo.skin.support.impl;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
+import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatCallback;
@@ -15,6 +16,7 @@ import com.mogo.skin.support.SkinMode;
import com.mogo.skin.support.SkinSupportInstallerConstants;
import skin.support.SkinCompatManager;
+import skin.support.app.SkinActivityLifecycle;
import skin.support.app.SkinAppCompatViewInflater;
import skin.support.app.SkinCardViewInflater;
import skin.support.constraint.app.SkinConstraintViewInflater;
@@ -60,10 +62,15 @@ class SkinSupportInstaller implements IMogoSkinSupportInstaller {
}
@Override
- public AppCompatDelegate getSkinAppCompatDelegate( AppCompatActivity activity,AppCompatDelegate superDelegate, AppCompatCallback callback ) {
+ public AppCompatDelegate getSkinAppCompatDelegate( AppCompatActivity activity, AppCompatDelegate superDelegate, AppCompatCallback callback ) {
return SkinAppCompatDelegateImpl.get( activity, callback );
}
+ @Override
+ public void onCompensateActivityCreated( Activity activity, Bundle savedInstanceState ) {
+ SkinActivityLifecycle.init( activity.getApplication() ).onCompensateActivityCreated( activity, savedInstanceState );
+ }
+
@Override
public void init( Context context ) {
diff --git a/skin/mogo-skin-support-noop/src/main/java/com/mogo/skin/support/noop/SkinSupportInstaller.java b/skin/mogo-skin-support-noop/src/main/java/com/mogo/skin/support/noop/SkinSupportInstaller.java
index f7d09f1e96..94ab26fbcf 100644
--- a/skin/mogo-skin-support-noop/src/main/java/com/mogo/skin/support/noop/SkinSupportInstaller.java
+++ b/skin/mogo-skin-support-noop/src/main/java/com/mogo/skin/support/noop/SkinSupportInstaller.java
@@ -1,7 +1,9 @@
package com.mogo.skin.support.noop;
+import android.app.Activity;
import android.app.Application;
import android.content.Context;
+import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatCallback;
@@ -40,6 +42,11 @@ class SkinSupportInstaller implements IMogoSkinSupportInstaller {
return superDelegate;
}
+ @Override
+ public void onCompensateActivityCreated( Activity activity, Bundle savedInstanceState ) {
+ Logger.d( TAG, "noop - onCompensateActivityCreated" );
+ }
+
@Override
public void init( Context context ) {
diff --git a/skin/mogo-skin-support/src/main/java/com/mogo/skin/support/IMogoSkinSupportInstaller.java b/skin/mogo-skin-support/src/main/java/com/mogo/skin/support/IMogoSkinSupportInstaller.java
index a6dce85629..0cb5fd30a4 100644
--- a/skin/mogo-skin-support/src/main/java/com/mogo/skin/support/IMogoSkinSupportInstaller.java
+++ b/skin/mogo-skin-support/src/main/java/com/mogo/skin/support/IMogoSkinSupportInstaller.java
@@ -1,6 +1,8 @@
package com.mogo.skin.support;
+import android.app.Activity;
import android.app.Application;
+import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatCallback;
@@ -21,5 +23,7 @@ interface IMogoSkinSupportInstaller extends IProvider {
void loadSkin( SkinMode skinMode );
- AppCompatDelegate getSkinAppCompatDelegate( AppCompatActivity activity,AppCompatDelegate superDelegate, AppCompatCallback callback );
+ AppCompatDelegate getSkinAppCompatDelegate( AppCompatActivity activity, AppCompatDelegate superDelegate, AppCompatCallback callback );
+
+ void onCompensateActivityCreated( Activity activity, Bundle savedInstanceState );
}
diff --git a/skin/skin-support/src/main/java/skin/support/app/SkinActivityLifecycle.java b/skin/skin-support/src/main/java/skin/support/app/SkinActivityLifecycle.java
index 779a87faea..1eb25ffa39 100755
--- a/skin/skin-support/src/main/java/skin/support/app/SkinActivityLifecycle.java
+++ b/skin/skin-support/src/main/java/skin/support/app/SkinActivityLifecycle.java
@@ -26,128 +26,135 @@ import static skin.support.widget.SkinCompatHelper.checkResourceId;
public class SkinActivityLifecycle implements Application.ActivityLifecycleCallbacks {
private static final String TAG = "SkinActivityLifecycle";
private static volatile SkinActivityLifecycle sInstance = null;
- private WeakHashMap mSkinDelegateMap;
- private WeakHashMap mSkinObserverMap;
+ private WeakHashMap< Context, SkinCompatDelegate > mSkinDelegateMap;
+ private WeakHashMap< Context, LazySkinObserver > mSkinObserverMap;
/**
* 用于记录当前Activity,在换肤后,立即刷新当前Activity以及非Activity创建的View。
*/
- private WeakReference mCurActivityRef;
+ private WeakReference< Activity > mCurActivityRef;
- public static SkinActivityLifecycle init(Application application) {
- if (sInstance == null) {
- synchronized (SkinActivityLifecycle.class) {
- if (sInstance == null) {
- sInstance = new SkinActivityLifecycle(application);
+ public static SkinActivityLifecycle init( Application application ) {
+ if ( sInstance == null ) {
+ synchronized ( SkinActivityLifecycle.class ) {
+ if ( sInstance == null ) {
+ sInstance = new SkinActivityLifecycle( application );
}
}
}
return sInstance;
}
- private SkinActivityLifecycle(Application application) {
- application.registerActivityLifecycleCallbacks(this);
- installLayoutFactory(application);
- SkinCompatManager.getInstance().addObserver(getObserver(application));
+ private SkinActivityLifecycle( Application application ) {
+ application.registerActivityLifecycleCallbacks( this );
+ installLayoutFactory( application );
+ SkinCompatManager.getInstance().addObserver( getObserver( application ) );
}
@Override
- public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
- if (isContextSkinEnable(activity)) {
- installLayoutFactory(activity);
- updateWindowBackground(activity);
- if (activity instanceof SkinCompatSupportable) {
- ((SkinCompatSupportable) activity).applySkin();
+ public void onActivityCreated( Activity activity, Bundle savedInstanceState ) {
+ onCompensateActivityCreated( activity, savedInstanceState );
+ }
+
+ /**
+ * 补偿启动页的 create 回调
+ */
+ public void onCompensateActivityCreated( Activity activity, Bundle savedInstanceState ) {
+ if ( isContextSkinEnable( activity ) ) {
+ installLayoutFactory( activity );
+ updateWindowBackground( activity );
+ if ( activity instanceof SkinCompatSupportable ) {
+ ( ( SkinCompatSupportable ) activity ).applySkin();
}
}
}
@Override
- public void onActivityStarted(Activity activity) {
+ public void onActivityStarted( Activity activity ) {
}
@Override
- public void onActivityResumed(Activity activity) {
- mCurActivityRef = new WeakReference<>(activity);
- if (isContextSkinEnable(activity)) {
- LazySkinObserver observer = getObserver(activity);
- SkinCompatManager.getInstance().addObserver(observer);
+ public void onActivityResumed( Activity activity ) {
+ mCurActivityRef = new WeakReference<>( activity );
+ if ( isContextSkinEnable( activity ) ) {
+ LazySkinObserver observer = getObserver( activity );
+ SkinCompatManager.getInstance().addObserver( observer );
observer.updateSkinIfNeeded();
}
}
@Override
- public void onActivityPaused(Activity activity) {
+ public void onActivityPaused( Activity activity ) {
}
@Override
- public void onActivityStopped(Activity activity) {
+ public void onActivityStopped( Activity activity ) {
}
@Override
- public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
+ public void onActivitySaveInstanceState( Activity activity, Bundle outState ) {
}
@Override
- public void onActivityDestroyed(Activity activity) {
- if (isContextSkinEnable(activity)) {
- SkinCompatManager.getInstance().deleteObserver(getObserver(activity));
- mSkinObserverMap.remove(activity);
- mSkinDelegateMap.remove(activity);
+ public void onActivityDestroyed( Activity activity ) {
+ if ( isContextSkinEnable( activity ) ) {
+ SkinCompatManager.getInstance().deleteObserver( getObserver( activity ) );
+ mSkinObserverMap.remove( activity );
+ mSkinDelegateMap.remove( activity );
}
}
- private void installLayoutFactory(Context context) {
+ private void installLayoutFactory( Context context ) {
try {
- LayoutInflater layoutInflater = LayoutInflater.from(context);
- LayoutInflaterCompat.setFactory2(layoutInflater, getSkinDelegate(context));
- } catch (Throwable e) {
- Slog.i("SkinActivity", "A factory has already been set on this LayoutInflater");
+ LayoutInflater layoutInflater = LayoutInflater.from( context );
+ LayoutInflaterCompat.setFactory2( layoutInflater, getSkinDelegate( context ) );
+ } catch ( Throwable e ) {
+ Slog.i( "SkinActivity", "A factory has already been set on this LayoutInflater" );
}
}
- private SkinCompatDelegate getSkinDelegate(Context context) {
- if (mSkinDelegateMap == null) {
+ private SkinCompatDelegate getSkinDelegate( Context context ) {
+ if ( mSkinDelegateMap == null ) {
mSkinDelegateMap = new WeakHashMap<>();
}
- SkinCompatDelegate mSkinDelegate = mSkinDelegateMap.get(context);
- if (mSkinDelegate == null) {
- mSkinDelegate = SkinCompatDelegate.create(context);
- mSkinDelegateMap.put(context, mSkinDelegate);
+ SkinCompatDelegate mSkinDelegate = mSkinDelegateMap.get( context );
+ if ( mSkinDelegate == null ) {
+ mSkinDelegate = SkinCompatDelegate.create( context );
+ mSkinDelegateMap.put( context, mSkinDelegate );
}
return mSkinDelegate;
}
- private LazySkinObserver getObserver(final Context context) {
- if (mSkinObserverMap == null) {
+ private LazySkinObserver getObserver( final Context context ) {
+ if ( mSkinObserverMap == null ) {
mSkinObserverMap = new WeakHashMap<>();
}
- LazySkinObserver observer = mSkinObserverMap.get(context);
- if (observer == null) {
- observer = new LazySkinObserver(context);
- mSkinObserverMap.put(context, observer);
+ LazySkinObserver observer = mSkinObserverMap.get( context );
+ if ( observer == null ) {
+ observer = new LazySkinObserver( context );
+ mSkinObserverMap.put( context, observer );
}
return observer;
}
- private void updateWindowBackground(Activity activity) {
- if (SkinCompatManager.getInstance().isSkinWindowBackgroundEnable()) {
- int windowBackgroundResId = SkinCompatThemeUtils.getWindowBackgroundResId(activity);
- if (checkResourceId(windowBackgroundResId) != INVALID_ID) {
- Drawable drawable = SkinCompatResources.getDrawable(activity, windowBackgroundResId);
- if (drawable != null) {
- activity.getWindow().setBackgroundDrawable(drawable);
+ private void updateWindowBackground( Activity activity ) {
+ if ( SkinCompatManager.getInstance().isSkinWindowBackgroundEnable() ) {
+ int windowBackgroundResId = SkinCompatThemeUtils.getWindowBackgroundResId( activity );
+ if ( checkResourceId( windowBackgroundResId ) != INVALID_ID ) {
+ Drawable drawable = SkinCompatResources.getDrawable( activity, windowBackgroundResId );
+ if ( drawable != null ) {
+ activity.getWindow().setBackgroundDrawable( drawable );
}
}
}
}
- private boolean isContextSkinEnable(Context context) {
+ private boolean isContextSkinEnable( Context context ) {
return SkinCompatManager.getInstance().isSkinAllActivityEnable()
- || context.getClass().getAnnotation(Skinable.class) != null
+ || context.getClass().getAnnotation( Skinable.class ) != null
|| context instanceof SkinCompatSupportable;
}
@@ -155,16 +162,16 @@ public class SkinActivityLifecycle implements Application.ActivityLifecycleCallb
private final Context mContext;
private boolean mMarkNeedUpdate = false;
- LazySkinObserver(Context context) {
+ LazySkinObserver( Context context ) {
mContext = context;
}
@Override
- public void updateSkin(SkinObservable observable, Object o) {
+ public void updateSkin( SkinObservable observable, Object o ) {
// 当前Activity,或者非Activity,立即刷新,否则延迟到下次onResume方法中刷新。
- if (mCurActivityRef == null
+ if ( mCurActivityRef == null
|| mContext == mCurActivityRef.get()
- || !(mContext instanceof Activity)) {
+ || !( mContext instanceof Activity ) ) {
updateSkinForce();
} else {
mMarkNeedUpdate = true;
@@ -172,24 +179,24 @@ public class SkinActivityLifecycle implements Application.ActivityLifecycleCallb
}
void updateSkinIfNeeded() {
- if (mMarkNeedUpdate) {
+ if ( mMarkNeedUpdate ) {
updateSkinForce();
}
}
void updateSkinForce() {
- if (Slog.DEBUG) {
- Slog.i(TAG, "Context: " + mContext + " updateSkinForce");
+ if ( Slog.DEBUG ) {
+ Slog.i( TAG, "Context: " + mContext + " updateSkinForce" );
}
- if (mContext == null) {
+ if ( mContext == null ) {
return;
}
- if (mContext instanceof Activity && isContextSkinEnable(mContext)) {
- updateWindowBackground((Activity) mContext);
+ if ( mContext instanceof Activity && isContextSkinEnable( mContext ) ) {
+ updateWindowBackground( ( Activity ) mContext );
}
- getSkinDelegate(mContext).applySkin();
- if (mContext instanceof SkinCompatSupportable) {
- ((SkinCompatSupportable) mContext).applySkin();
+ getSkinDelegate( mContext ).applySkin();
+ if ( mContext instanceof SkinCompatSupportable ) {
+ ( ( SkinCompatSupportable ) mContext ).applySkin();
}
mMarkNeedUpdate = false;
}