diff --git a/.idea/misc.xml b/.idea/misc.xml index 707ee6e613..2dc54c489f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/config.gradle b/config.gradle index e1158d2fd3..1b33af44ee 100644 --- a/config.gradle +++ b/config.gradle @@ -143,5 +143,7 @@ ext { gpssimulator : "com.mogo.module:module-gps-simulator:${MOGO_MODULE_GPS_SIMULATOR_VERSION}", gpssimulatordebug : "com.mogo.module:module-gps-simulator-debug:${MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION}", gpssimulatornoop : "com.mogo.module:module-gps-simulator-noop:${MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION}", + + adasapi : "com.zhidao.autopilot.support:adas:1.0.0-SNAPSHOT", ] } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index b6a4fe9fdd..7e35f360fc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -56,9 +56,9 @@ MOGO_MODULE_GUIDE_VERSION=1.0.3.12 # 探路 MOGO_MODULE_TANLU_VERSION=1.0.5.6 # 车聊聊 -CARCHATTING_VERSION=1.0.3.2-SNAPSHOT +CARCHATTING_VERSION=1.0.4-SNAPSHOT # 车聊聊接口 -CARCHATTINGPROVIDER_VERSION=1.0.3.2-SNAPSHOT +CARCHATTINGPROVIDER_VERSION=1.0.4-SNAPSHOT # 视频引导 MOGO_MODULE_GUIDESHOW_VERSION=1.0.2-SNAPSHOT # 视频引导接口 diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/IMogoMapListener.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/IMogoMapListener.java index 13f5e3ac4a..f5667e96c2 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/IMogoMapListener.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/IMogoMapListener.java @@ -18,42 +18,42 @@ public interface IMogoMapListener { /** * 地图加载完毕 */ - void onMapLoaded(); + default void onMapLoaded(){}; /** * 地图点击 * * @param motionEvent */ - void onTouch( MotionEvent motionEvent ); + default void onTouch( MotionEvent motionEvent ){}; /** * 地图上的任意poi点击 * * @param poi */ - void onPOIClick( MogoPoi poi ); + default void onPOIClick( MogoPoi poi ){}; /** * 地图点击 * * @param latLng */ - void onMapClick( MogoLatLng latLng ); + default void onMapClick( MogoLatLng latLng ){} /** * 地图锁定 * * @param isLock */ - void onLockMap( boolean isLock ); + default void onLockMap( boolean isLock ){} /** * 地图白天黑夜、导航视角切换 * * @param ui */ - void onMapModeChanged( EnumMapUI ui ); + default void onMapModeChanged( EnumMapUI ui ){} /** * @param latLng 中点的经纬度 @@ -61,5 +61,5 @@ public interface IMogoMapListener { * @param tilt 倾斜度 * @param bearing 旋转角度 */ - void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ); + default void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ){} } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoAimlessModeListener.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoAimlessModeListener.java index 5138ad5729..4d36b30fb0 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoAimlessModeListener.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoAimlessModeListener.java @@ -11,12 +11,12 @@ public interface IMogoAimlessModeListener { /** * 巡航信息发生改变 */ - void onUpdateTraffic2( MogoTraffic traffic ); + default void onUpdateTraffic2( MogoTraffic traffic ){} /** * 拥堵信息 * * @param info */ - void onUpdateCongestion( MogoCongestionInfo info ); + default void onUpdateCongestion( MogoCongestionInfo info ){} } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoInitor.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoInitor.java deleted file mode 100644 index 76d61012a6..0000000000 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoInitor.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.mogo.map; - -import android.content.Context; - - -/** - * @author congtaowang - * @since 2019-12-26 - *

- * 描述 - */ -public class MogoInitor { - - public static void init( Context context ) { - } -} diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java index d5b4006ee4..a1c65890ef 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java @@ -1,37 +1,20 @@ package com.mogo.module.apps; import android.os.Bundle; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.alibaba.android.arouter.launcher.ARouter; + import com.mogo.commons.mvp.MvpFragment; import com.mogo.module.apps.adapter.AppIndicatorAdapter; -import com.mogo.module.apps.adapter.base.RecycleViewHolder; -import com.mogo.module.apps.model.NavigatorApp; +import com.mogo.module.apps.applaunch.AppLauncher; +import com.mogo.module.apps.applaunch.BaseAppLauncher; +import com.mogo.module.apps.applaunch.InternalFunctionLauncher; import com.mogo.module.apps.model.NavigatorApps; -import com.mogo.module.apps.utils.CardScaleTransformer; -import com.mogo.module.common.MogoModulePaths; -import com.mogo.service.MogoServicePaths; -import com.mogo.service.analytics.IMogoAnalytics; -import com.mogo.service.cardmanager.IMogoCardChangedListener; -import com.mogo.service.fragmentmanager.FragmentDescriptor; -import com.mogo.service.fragmentmanager.IMogoFragmentManager; -import com.mogo.service.module.IMogoModuleProvider; -import com.mogo.utils.logger.Logger; -import com.yarolegovich.discretescrollview.DiscreteScrollLayoutManager; -import com.yarolegovich.discretescrollview.DiscreteScrollView; -import java.util.ArrayList; + import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -40,27 +23,14 @@ import java.util.Map; *

* 描述 */ -public class AppNavigatorFragment extends MvpFragment - implements AppNavigatorView, DiscreteScrollView.OnItemChangedListener, - DiscreteScrollView.ScrollStateChangeListener, - IMogoCardChangedListener { +public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavigatorPresenter > implements AppNavigatorView { private static final String TAG = "AppNavigatorFragment"; - private View mApps; - private IMogoFragmentManager mMogoFragmentManager; - List apps; + private RecyclerView mNavigatorAppsList; + private AppIndicatorAdapter mAppIndicatorAdapter; - /** - * 搜索莫模块 - */ - private IMogoModuleProvider mSearchProvider; - - private IMogoAnalytics mMogoAnalytics; -// private DiscreteScrollView scroller; - - private static int CARD_SIZE = 6; - private AppIndicatorAdapter appIndicatorAdapter; + private BaseAppLauncher mLauncher; @Override protected int getLayoutId() { @@ -69,228 +39,49 @@ public class AppNavigatorFragment extends MvpFragment { +// openAppsPanel(); +// trackNavigatorClickEvent( 4 ); +// } ); + mLauncher = new InternalFunctionLauncher( getActivity() ); + mLauncher.setNext( new AppLauncher() ); - mMogoFragmentManager = (IMogoFragmentManager) ARouter.getInstance() - .build(MogoServicePaths.PATH_FRAGMENT_MANAGER) - .navigation(); - - mApps = findViewById(R.id.module_apps_id_apps); - -// scroller = findViewById(R.id.module_apps_id_scroller); -// -// scroller.setRatio(330 / 523F); -// //scroller.setRatio(176/279F); -// scroller.setSlideOnFling(true); -// scroller.addOnItemChangedListener(this); -// scroller.addScrollStateChangeListener(this); -// //scroller.setItemTransitionTimeMillis(DiscreteScrollViewOptions.getTransitionTime()); -// apps = NavigatorApps.getApps(); -// CARD_SIZE = apps.size(); -// scroller.setItemTransformer(new CardScaleTransformer.Builder() -// .setMinScale(0.84f) -// .build()); - - appIndicatorAdapter = new AppIndicatorAdapter(getContext(), apps); - - appIndicatorAdapter.setOnClickListener(new View.OnClickListener() { - @Override public void onClick(View v) { - NavigatorApp item = (NavigatorApp) v.getTag(); - AppServiceHandler.getMogoCardManager().switch2(item.mModuleType); - } - }); - -// scroller.setAdapter(appIndicatorAdapter); -// scroller.scrollToPosition(Integer.MAX_VALUE / 2 - 1); - //mNavigation.setOnClickListener( view -> { - // openSearchPanel(); - // trackNavigatorClickEvent( 1 ); - //} ); - //mMediaCenter.setOnClickListener( view -> { - // try { - // LaunchUtils.launchByPkg( getContext(), AppsConst.APP_PKG_MUSIC ); - // trackNavigatorClickEvent( 2 ); - // } catch ( Exception e ) { - // TipToast.shortTip( R.string.module_apps_str_no_app ); - // } - //} ); - //mCarSettings.setOnClickListener( view -> { - // try { - // LaunchUtils.launchByPkg( getContext(), AppsConst.APP_PKG_CAR_SETTINGS ); - // trackNavigatorClickEvent( 3 ); - // } catch ( Exception e ) { - // TipToast.shortTip( R.string.module_apps_str_no_app ); - // } - //} ); - mApps.setOnClickListener(view -> { - openAppsPanel(); - - //AppServiceHandler.getMogoCardManager() - // .switch2(apps.get((int) (Math.random() * 6)).mModuleType); - - trackNavigatorClickEvent(4); - }); - AppServiceHandler.init(getContext()); - - AppServiceHandler.getMogoCardManager().registerCardChangedListener(TAG, this); - } - - private void scrollToCenter(int index) { - + mNavigatorAppsList = findViewById( R.id.module_apps_id_apps_list ); + mNavigatorAppsList.setLayoutManager( new LinearLayoutManager( getActivity(), RecyclerView.VERTICAL, false ) ); + mAppIndicatorAdapter = new AppIndicatorAdapter( getContext(), NavigatorApps.getApps() ); + mAppIndicatorAdapter.setOnItemClickedListener( ( data, position ) -> { + mLauncher.launch( getContext(), data ); + } ); + mNavigatorAppsList.setAdapter( mAppIndicatorAdapter ); } @NonNull @Override protected AppNavigatorPresenter createPresenter() { - return new AppNavigatorPresenter(this); + return new AppNavigatorPresenter( this ); } @Override - public void onActivityCreated(@Nullable Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - mMogoFragmentManager = (IMogoFragmentManager) ARouter.getInstance() - .build(MogoServicePaths.PATH_FRAGMENT_MANAGER) - .navigation(getContext()); - mMogoAnalytics = (IMogoAnalytics) ARouter.getInstance() - .build(MogoServicePaths.PATH_UTILS_ANALYTICS) - .navigation(getContext()); + public void onActivityCreated( @Nullable Bundle savedInstanceState ) { + super.onActivityCreated( savedInstanceState ); } @Override public void openAppsPanel() { - AppsListActivity.start(getActivity()); + AppsListActivity.start( getActivity() ); } - private void trackNavigatorClickEvent(int type) { - final Map properties = new HashMap<>(); - properties.put("type", type); - mMogoAnalytics.track("Launcher_APP_Icon", properties); + private void trackNavigatorClickEvent( int type ) { + final Map< String, Object > properties = new HashMap<>(); + properties.put( "type", type ); + AppServiceHandler.getMogoAnalytics().track( "Launcher_APP_Icon", properties ); } @Override public void onDestroyView() { super.onDestroyView(); - if (mPresenter != null) { - mPresenter.onDestroy(getViewLifecycleOwner()); + if ( mPresenter != null ) { + mPresenter.onDestroy( getViewLifecycleOwner() ); } } - - @Override - public void onCurrentItemChanged(@Nullable RecycleViewHolder viewHolder, int i) { - Logger.d(TAG, "onCurrentItemChanged--position--" + i % CARD_SIZE); - int currentPosition = (i - 2) % CARD_SIZE; - - //if (!scroller.isComputingLayout()) { - // appIndicatorAdapter.setCurrentPos(i); - //} - //this.currentPosition=currentPosition; - AppServiceHandler.getMogoCardManager().switch2(apps.get(i % CARD_SIZE).mModuleType, true); - - //holder.showText(); - - //ImageView view = viewHolder.getView(R.id.module_apps_id_app_icon); - //view.setImageResource(apps.get(currentPosition).getmIconId()); - // - //TextView tvTitle = viewHolder.getView(R.id.module_apps_id_app_name); - //tvTitle.setTextColor(getResources().getColor(R.color.white)); - - } - - @Override public void onScrollStart(@NonNull RecycleViewHolder viewHolder, int i) { - int currentPosition = i % CARD_SIZE - 2; - // - //ImageView view = viewHolder.getView(R.id.module_apps_id_app_icon); - // - // - //view.setImageResource(apps.get(currentPosition).mUncheckedIconId); - //TextView tvTitle = viewHolder.getView(R.id.module_apps_id_app_name); - //tvTitle.setTextColor(getResources().getColor(R.color.white_80)); - - } - - @Override public void onScrollEnd(@NonNull RecycleViewHolder viewHolder, int i) { - - } - - @Override - public void onScroll(float v, int i, int i1, @Nullable RecycleViewHolder viewHolder, - @Nullable RecycleViewHolder t1) { - - } - - //private int currentPosition = 0; - - @Override public void onSwitched(int position, String moduleName) { - //int index = (position - scroller.getCurrentItem() % CARD_SIZE + 2) % CARD_SIZE; - //int i = scroller.getCurrentItem() + index; -// DiscreteScrollLayoutManager layoutManager = -// (DiscreteScrollLayoutManager) scroller.getLayoutManager(); -// -// int currentPosition = (scroller.getCurrentItem() - 2) % CARD_SIZE; -// -// int index = position - currentPosition; -// -// if (index == 0) { -// return; -// } -// if (index <= -3) { -// index += CARD_SIZE; -// } else if (index >= 3) { -// index = index - CARD_SIZE; -// } -// //RecyclerView 的特性,如果是否在屏幕内 -// //if (index < 0) { -// // index -= 2; -// //} -// -// Logger.d(TAG, "position--" -// + position -// + "index--" -// + index -// + "scroll-->" -// + scroller.getCurrentItem() -// + index); -// -// //scroller.setPendingScroll(getResources().getDimensionPixelSize(R.dimen.dp_137)*index); -// //layoutManager.scrollToPositionWithOffset(scroller.getCurrentItem() + index,0); -// //scroller.smoothScrollBy(getResources().getDimensionPixelSize(R.dimen.dp_137)*index,0); -// -// if (Math.abs(index) == 1) { -// scroller.smoothScrollBy(getResources().getDimensionPixelSize(R.dimen.dp_137) * index, -// 0, null, 10); -// } else { -// layoutManager.startSmoothPendingScroll(layoutManager.getCurrentPosition() + index); -// } - //layoutManager.smoothScrollToPosition(scroller.getCurrentItem() + index); - //currentPosition = position; - } - - private void printIds(View view) { - System.out.println(view.getId()); - if (view instanceof ViewGroup) { - int childCount = ((ViewGroup) view).getChildCount(); - for (int i = 0; i < childCount; i++) { - printIds(((ViewGroup) view).getChildAt(i)); - } - } - } - - private void print(View view) { - - ArrayList views = new ArrayList<>(); - views.add(view); - - while (views.size() > 0) { - System.out.println(view.getId()); - View remove = views.remove(0); - - if (remove instanceof ViewGroup) { - - int childCount = ((ViewGroup) view).getChildCount(); - for (int i = 0; i < childCount; i++) { - views.add(((ViewGroup) view).getChildAt(i)); - } - } - } - - } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java index 378522b10b..6dbdc52ac9 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java @@ -40,8 +40,8 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme @Override public void onCreate( @NonNull LifecycleOwner owner ) { super.onCreate( owner ); - mIntentManager = ( IMogoIntentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_INTENT_MANAGER ).navigation( getContext() ); - mMogoStatusManager = ( IMogoStatusManager ) ARouter.getInstance().build( MogoServicePaths.PATH_STATUS_MANAGER ).navigation( getContext() ); + mIntentManager = AppServiceHandler.getApis().getIntentManagerApi(); + mMogoStatusManager = AppServiceHandler.getApis().getStatusManagerApi(); // 预加载应用列表,空间换时间 AppsModel.getInstance( getContext() ).load( null ); } @@ -68,6 +68,7 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme return; } try { + AppServiceHandler.getApis().getAdasControllerApi().closeADAS(); JSONObject object = new JSONObject( intent.getStringExtra( "data" ) ); String app = object.optString( "object" ); String operation = object.optString( "operation" ); diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppServiceHandler.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppServiceHandler.java index 7dc4ce40d3..9bf52fd3b0 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppServiceHandler.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppServiceHandler.java @@ -1,7 +1,9 @@ package com.mogo.module.apps; import android.content.Context; + import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.commons.AbsMogoApplication; import com.mogo.map.location.IMogoLocationClient; import com.mogo.map.marker.IMogoMarkerManager; import com.mogo.map.navi.IMogoNavi; @@ -27,6 +29,7 @@ import com.mogo.service.statusmanager.IMogoStatusManager; * version: 1.0 */ public class AppServiceHandler { + private static final String TAG = "AppServiceHandler"; private static IMogoServiceApis mApis; @@ -34,17 +37,18 @@ public class AppServiceHandler { private static IMogoAnalytics mMogoAnalytics; private static IGuideShowProvider mMogoGuideShow; - public static void init( final Context context ) { mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( context ); mMogoCardManager = mApis.getCardManagerApi(); mMogoAnalytics = mApis.getAnalyticsApi(); - mMogoGuideShow = (IGuideShowProvider) ARouter.getInstance().build(GuideShowProviderConstant.GUIDE_SHOW_PROVIDER).navigation(context); + mMogoGuideShow = ( IGuideShowProvider ) ARouter.getInstance().build( GuideShowProviderConstant.GUIDE_SHOW_PROVIDER ).navigation( context ); } + public static IMogoCardManager getMogoCardManager() { return mMogoCardManager; } + public static IMogoAnalytics getMogoAnalytics() { return mMogoAnalytics; } @@ -52,4 +56,11 @@ public class AppServiceHandler { public static IGuideShowProvider getMogoGuideShow() { return mMogoGuideShow; } + + public static IMogoServiceApis getApis() { + if ( mApis == null ) { + mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( AbsMogoApplication.getApp() ); + } + return mApis; + } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragmentProvider.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragmentProvider.java index 054707c758..1f0dc91f16 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragmentProvider.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragmentProvider.java @@ -74,7 +74,7 @@ public class AppsFragmentProvider implements IMogoModuleProvider { @Override public void init( Context context ) { - + AppServiceHandler.init( context ); } @Override diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java index 54f42368d3..306c626b83 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java @@ -6,6 +6,7 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LifecycleOwner; import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.mvp.Presenter; import com.mogo.module.apps.applaunch.AppLaunchFilter; import com.mogo.module.apps.applaunch.AppLauncher; @@ -36,7 +37,7 @@ import java.util.Set; *

* 描述 */ -public class AppsPresenter extends Presenter { +public class AppsPresenter extends Presenter< AppsView > { private static final String TAG = "AppsPresenter"; @@ -48,61 +49,62 @@ public class AppsPresenter extends Presenter { private IMogoCardManager mCardManager; private IMogoStatusManager mMogoStatusManager; - public AppsPresenter(AppsView view) { - super(view); - mApis = (IMogoServiceApis)ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation(getContext()); + public AppsPresenter( AppsView view ) { + super( view ); + mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( getContext() ); mCardManager = mApis.getCardManagerApi(); - CardAppLauncher cardAppLauncher = new CardAppLauncher(this, mCardManager); - GuideShowLauncher guideShowLauncher = new GuideShowLauncher(mApis.getMapServiceApi().getNavi( getContext() )); - cardAppLauncher.setNext(guideShowLauncher); - guideShowLauncher.setNext(new AppLauncher()); + CardAppLauncher cardAppLauncher = new CardAppLauncher( this, mCardManager ); + GuideShowLauncher guideShowLauncher = new GuideShowLauncher( mApis.getMapServiceApi().getNavi( getContext() ) ); + cardAppLauncher.setNext( guideShowLauncher ); + guideShowLauncher.setNext( new AppLauncher() ); mLauncher = cardAppLauncher; } @Override - public void onCreate(@NonNull LifecycleOwner owner) { - super.onCreate(owner); + public void onCreate( @NonNull LifecycleOwner owner ) { + super.onCreate( owner ); renderAppsList(); - AppsListChangedLiveData.getInstance().observeForever(bool -> { - if (mView != null) { + AppsListChangedLiveData.getInstance().observeForever( bool -> { + if ( mView != null ) { renderAppsList(); } - }); + } ); mAnalytics = mApis.getAnalyticsApi(); mMogoStatusManager = mApis.getStatusManagerApi(); - mMogoStatusManager.setAppListUIShow(TAG, true); + mMogoStatusManager.setAppListUIShow( TAG, true ); } private void renderAppsList() { - ThreadPoolService.execute(() -> { - AppsModel.getInstance(getContext()).load(appInfoList -> { + ThreadPoolService.execute( () -> { + AppsModel.getInstance( getContext() ).load( appInfoList -> { - Logger.d(TAG, "apps: %s", appInfoList); - final Map> result = addOthersEntrances( appInfoList ); - UiThreadHandler.post(() -> { - if (mView != null) { + Logger.d( TAG, "apps: %s", appInfoList ); + final Map< Integer, List< AppInfo > > result = addOthersEntrances( appInfoList ); + UiThreadHandler.post( () -> { + if ( mView != null ) { mView.renderApps( result ); } - }); - }); + } ); + } ); - }); + } ); } /** * 新增入口 + * * @param appInfoMap * @return */ - private Map> addOthersEntrances( Map> appInfoMap) { - Map> result = new HashMap<>(); + private Map< Integer, List< AppInfo > > addOthersEntrances( Map< Integer, List< AppInfo > > appInfoMap ) { + Map< Integer, List< AppInfo > > result = new HashMap<>(); if ( appInfoMap != null && !appInfoMap.isEmpty() ) { // val deep copy - Set keys = appInfoMap.keySet(); + Set< Integer > keys = appInfoMap.keySet(); for ( Integer key : keys ) { - List val = appInfoMap.get( key ); + List< AppInfo > val = appInfoMap.get( key ); try { result.put( key, new ArrayList<>( val ) ); } catch ( Exception e ) { @@ -112,16 +114,16 @@ public class AppsPresenter extends Presenter { } // 手动添加无法识别到的app - List apps = UnScannedApps.getUnScannedApps(); + List< AppInfo > apps = UnScannedApps.getUnScannedApps(); if ( apps != null && !apps.isEmpty() ) { for ( AppInfo app : apps ) { if ( app == null ) { continue; } - Set keys = result.keySet(); + Set< Integer > keys = result.keySet(); boolean addFlag = true; for ( Integer key : keys ) { - List val = result.get( key ); + List< AppInfo > val = result.get( key ); // 无法扫描到蓝牙电话app,这里手动添加 for ( AppInfo appInfo : val ) { if ( appInfo == null ) { @@ -137,71 +139,77 @@ public class AppsPresenter extends Presenter { } } if ( addFlag ) { - growthCapacity(result); - result.get(result.size() - 1).add(app); + growthCapacity( result ); + result.get( result.size() - 1 ).add( app ); } } } - growthCapacity(result); + growthCapacity( result ); // 添加介绍入口 - result.get(result.size() - 1).add(new AppInfo(GuideShowLauncher.APP_INFO_NAME_GUIDE_SHOW, getContext().getPackageName(), null, 0, null, R.drawable.module_apps_ic_guide_show)); + result.get( result.size() - 1 ).add( new AppInfo( GuideShowLauncher.APP_INFO_NAME_GUIDE_SHOW, getContext().getPackageName(), null, 0, null, R.drawable.module_apps_ic_guide_show ) ); + if ( DebugConfig.isDebug() ) { + // 添加测试入口 + growthCapacity( result ); + result.get( result.size() - 1 ).add( new AppInfo( "包管理程序", "com.mogo.packages.manager", null, 0, null, -1 ) ); + } return result; } /** * 扩容 + * * @param target */ - private void growthCapacity( Map> target ){ + private void growthCapacity( Map< Integer, List< AppInfo > > target ) { if ( target == null ) { return; } - if (target.isEmpty()) { - target.put(0, new ArrayList<>()); - } else if (target.get(target.size() - 1) == null) { - target.put(target.size() - 1, new ArrayList<>()); - } else if (target.get(target.size() - 1).size() == AppsConst.TOTAL_SIZE_EACH_PAGE) { - target.put(target.size(), new ArrayList<>()); + if ( target.isEmpty() ) { + target.put( 0, new ArrayList<>() ); + } else if ( target.get( target.size() - 1 ) == null ) { + target.put( target.size() - 1, new ArrayList<>() ); + } else if ( target.get( target.size() - 1 ).size() == AppsConst.TOTAL_SIZE_EACH_PAGE ) { + target.put( target.size(), new ArrayList<>() ); } } - public void launch(AppInfo appInfo) { - if (appInfo == null) { + public void launch( AppInfo appInfo ) { + if ( appInfo == null ) { return; } - trackAppClicked(appInfo); + trackAppClicked( appInfo ); try { - mLauncher.launch(getContext(), appInfo); - } catch (Exception e) { + mLauncher.launch( getContext(), appInfo ); + } catch ( Exception e ) { } } - private void trackAppClicked(AppInfo appInfo) { - if (appInfo == null) { + private void trackAppClicked( AppInfo appInfo ) { + if ( appInfo == null ) { return; } - Map properties = new HashMap<>(); - properties.put("appname", appInfo.getName()); - properties.put("packagename", appInfo.getPackageName()); - properties.put("appversion", appInfo.getVersionName()); - properties.put("from", 1); - mAnalytics.track("appenterfront", properties); + Map< String, Object > properties = new HashMap<>(); + properties.put( "appname", appInfo.getName() ); + properties.put( "packagename", appInfo.getPackageName() ); + properties.put( "appversion", appInfo.getVersionName() ); + properties.put( "from", 1 ); + mAnalytics.track( "appenterfront", properties ); } @Override - public void onDestroy(@NonNull LifecycleOwner owner) { - super.onDestroy(owner); - mMogoStatusManager.setAppListUIShow(TAG, false); + public void onDestroy( @NonNull LifecycleOwner owner ) { + super.onDestroy( owner ); + mMogoStatusManager.setAppListUIShow( TAG, false ); AppsListChangedLiveData.getInstance().release(); mView = null; mLauncher.destroy(); } public void exit() { - if (mView != null) { + if ( mView != null ) { mView.exit(); } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/AppIndicatorAdapter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/AppIndicatorAdapter.java index 9b78d95c2e..dfd77cce0c 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/AppIndicatorAdapter.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/AppIndicatorAdapter.java @@ -1,62 +1,34 @@ package com.mogo.module.apps.adapter; import android.content.Context; -import android.view.View; import android.widget.ImageView; -import android.widget.TextView; -import androidx.core.content.ContextCompat; + import com.mogo.module.apps.R; import com.mogo.module.apps.adapter.base.RecycleBaseAdapter; import com.mogo.module.apps.adapter.base.RecycleViewHolder; +import com.mogo.module.apps.model.AppInfo; import com.mogo.module.apps.model.NavigatorApp; + import java.util.List; /** * @author zyz * 2020-03-09. */ -public class AppIndicatorAdapter extends RecycleBaseAdapter { +public class AppIndicatorAdapter extends RecycleBaseAdapter< AppInfo > { - - private int currentPos; - - private View.OnClickListener onClickListener; - /** - * - */ - public AppIndicatorAdapter(Context context, List list - ) { - super(context, list, R.layout.module_apps_item_app_indicator); + public AppIndicatorAdapter( Context context, List< AppInfo > list ) { + super( context, list, R.layout.module_apps_item_app_indicator ); } - @Override public int getItemCount() { - return Integer.MAX_VALUE; - } - - @Override public void onBindViewHolder(RecycleViewHolder holder, NavigatorApp integer) { - ImageView ivIndicator = holder.getView(R.id.module_apps_id_app_icon); - ivIndicator.setImageResource(integer.getmIconId()); - holder.setText(R.id.module_apps_id_app_name,integer.getmName() ); - - TextView tvTitle = holder.getView(R.id.module_apps_id_app_name); - if (currentPos==holder.getLayoutPosition()) { - ivIndicator.setImageResource(integer.getmIconId()); - tvTitle.setTextColor(ContextCompat.getColor(context,R.color.white)); - }else { - tvTitle.setTextColor(ContextCompat.getColor(context,R.color.white_80)); - ivIndicator.setImageResource(integer.getmUncheckedIconId()); - } - holder.itemView.setTag(integer); - holder.itemView.setOnClickListener(onClickListener); - - } - - public void setOnClickListener(View.OnClickListener onClickListener) { - this.onClickListener = onClickListener; - } - - public void setCurrentPos(int currentPos){ - this.currentPos=currentPos; - notifyDataSetChanged(); + @Override + public void onBindViewHolder( RecycleViewHolder holder, AppInfo app, int position ) { + ImageView ivIndicator = holder.getView( R.id.module_apps_id_app_icon ); + ivIndicator.setImageResource( app.getIconResId() ); + holder.itemView.setOnClickListener( view -> { + if ( getOnItemClickedListener() != null ) { + getOnItemClickedListener().onItemClicked( app, position ); + } + } ); } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/base/RecycleBaseAdapter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/base/RecycleBaseAdapter.java index 2a8cc64079..d39ca569b9 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/base/RecycleBaseAdapter.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/base/RecycleBaseAdapter.java @@ -5,7 +5,9 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; + import androidx.recyclerview.widget.RecyclerView; + import java.util.List; /** @@ -21,20 +23,19 @@ import java.util.List; *

*

*/ -public abstract class RecycleBaseAdapter extends - RecyclerView.Adapter -{ +public abstract class RecycleBaseAdapter< T > extends + RecyclerView.Adapter< RecycleViewHolder > { protected Context context; - protected List list; + protected List< T > list; private int resourceID; - private Toast toast; + + protected OnItemClickListener mOnItemClickedListener; /** * @param context */ - public RecycleBaseAdapter(Context context, List list, int resourceID) - { + public RecycleBaseAdapter( Context context, List< T > list, int resourceID ) { super(); this.context = context; this.list = list; @@ -42,81 +43,75 @@ public abstract class RecycleBaseAdapter extends } @Override - public RecycleViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) - { - View v = LayoutInflater.from(context).inflate(resourceID, viewGroup, - false); + public RecycleViewHolder onCreateViewHolder( ViewGroup viewGroup, int viewType ) { + View v = LayoutInflater.from( context ).inflate( resourceID, viewGroup, + false ); RecycleViewHolder holder = RecycleViewHolder - .get(v); + .get( v ); - initHolder(holder); + initHolder( holder ); return holder; } @Override - public void onBindViewHolder( - RecycleViewHolder viewHolder, int position) - { - onBindViewHolder(viewHolder, list.get(position % list.size())); + public void onBindViewHolder( RecycleViewHolder viewHolder, int position ) { + onBindViewHolder( viewHolder, list.get( position % list.size()), position ); } @Override - public int getItemCount() - { + public int getItemCount() { return list == null ? 0 : list.size(); } - public abstract void onBindViewHolder( - RecycleViewHolder holder, T t); + public abstract void onBindViewHolder( RecycleViewHolder holder, T t, int position ); - public void initHolder(RecycleViewHolder holder) - { + public void initHolder( RecycleViewHolder holder ) { } - public void setDatas(List list) - { - setDatas(list, false); + + public void setDatas( List< T > list ) { + setDatas( list, false ); } - public void setDatas(List list, boolean add) - { - if (add) - { - this.list.addAll(list); - } - else - { + public void setDatas( List< T > list, boolean add ) { + if ( add ) { + this.list.addAll( list ); + } else { this.list = list; } notifyDataSetChanged(); } - public void clear(){ - if (list != null) { + + public void clear() { + if ( list != null ) { list.clear(); notifyDataSetChanged(); } } - public void messageShow(String mes) - { - if (toast==null){ - toast= Toast.makeText(context,mes, Toast.LENGTH_LONG); - } - else{ - toast.setText(mes); - } - toast.show(); - } - public T getItem(int position){ - if (list==null||list.size()==0){ + public T getItem( int position ) { + if ( list == null || list.size() == 0 ) { return null; } - return list.get(position); + return list.get( position ); } - public List getList() { + public List< T > getList() { return list; } + + public interface OnItemClickListener< T > { + void onItemClicked( T data, int position ); + } + + public RecycleBaseAdapter< T > setOnItemClickedListener( OnItemClickListener< T > onItemClickedListener ) { + this.mOnItemClickedListener = onItemClickedListener; + return this; + } + + public OnItemClickListener< T > getOnItemClickedListener() { + return mOnItemClickedListener; + } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java index 0ce9ae3b23..fe9e34b244 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java @@ -2,6 +2,7 @@ package com.mogo.module.apps.applaunch; import android.content.Context; +import com.mogo.module.apps.AppServiceHandler; import com.mogo.module.apps.R; import com.mogo.module.apps.model.AppInfo; import com.mogo.module.apps.utils.LaunchUtils; @@ -21,6 +22,7 @@ public class AppLauncher extends BaseAppLauncher { @Override public void launch( Context context, AppInfo appInfo ) { try { + AppServiceHandler.getApis().getAdasControllerApi().closeADAS(); LaunchUtils.launchByPkg( context, appInfo.getPackageName() ); } catch ( Exception e ) { Logger.e( TAG, e, "error." ); diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java new file mode 100644 index 0000000000..5db46d1315 --- /dev/null +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java @@ -0,0 +1,47 @@ +package com.mogo.module.apps.applaunch; + +import android.app.Activity; +import android.content.Context; + +import com.mogo.module.apps.AppServiceHandler; +import com.mogo.module.apps.AppsListActivity; +import com.mogo.module.apps.model.AppInfo; + +/** + * @author congtaowang + * @since 2020-05-14 + *

+ * 描述 + */ +public class InternalFunctionLauncher extends BaseAppLauncher { + + private Activity mActivity; + + public InternalFunctionLauncher( Activity activity ) { + this.mActivity = activity; + } + + @Override + public void launch( Context context, AppInfo appInfo ) { + switch ( appInfo.getPackageName() ) { + case "com.mogo.launcher.navi.search": + AppServiceHandler.getApis().getSearchManagerApi().showSearch(); + break; + case "com.mogo.launcher.applist": + AppServiceHandler.getApis().getAdasControllerApi().closeADAS(); + AppsListActivity.start( mActivity ); + break; + default: + if ( getNext() != null ) { + getNext().launch( context, appInfo ); + } + } + } + + @Override + public void destroy() { + if ( getNext() != null ) { + getNext().destroy(); + } + } +} diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApp.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApp.java index d5f7df5b9b..9681af74b6 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApp.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApp.java @@ -15,44 +15,18 @@ public class NavigatorApp { @DrawableRes public int mUncheckedIconId; public String mName; - public String mModuleType; - public NavigatorApp( int mIconId,int mUncheckedIconId, String mName, String mModuleType ) { + public NavigatorApp( int mIconId, int mUncheckedIconId, String mName ) { this.mIconId = mIconId; this.mUncheckedIconId = mUncheckedIconId; this.mName = mName; - this.mModuleType = mModuleType; } - public int getmIconId() { + public int getIconId() { return mIconId; } - public void setmIconId(int mIconId) { - this.mIconId = mIconId; - } - - public int getmUncheckedIconId() { - return mUncheckedIconId; - } - - public void setmUncheckedIconId(int mUncheckedIconId) { - this.mUncheckedIconId = mUncheckedIconId; - } - - public String getmName() { + public String getName() { return mName; } - - public void setmName(String mName) { - this.mName = mName; - } - - public String getmModuleType() { - return mModuleType; - } - - public void setmModuleType(String mModuleType) { - this.mModuleType = mModuleType; - } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java index 3ff8bc8b09..9e5a98be45 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java @@ -1,9 +1,6 @@ package com.mogo.module.apps.model; import com.mogo.module.apps.R; -import com.mogo.module.common.ModuleNames; -import com.mogo.module.common.MogoModule; -import com.mogo.module.common.MogoModulePaths; import java.util.ArrayList; import java.util.List; @@ -16,48 +13,15 @@ import java.util.List; */ public class NavigatorApps { - public static List< NavigatorApp > getApps() { - List< NavigatorApp > apps = new ArrayList<>(); - apps.add( new NavigatorApp( R.drawable.module_apps_ic_online_car,R.drawable.module_apps_ic_online_car_unchecked, "在线车辆", ModuleNames.CARD_TYPE_USER_DATA ) ); - apps.add( new NavigatorApp( R.drawable.module_apps_ic_interest, R.drawable.module_apps_ic_interest_unchecked,"新鲜事", ModuleNames.CARD_TYPE_NOVELTY ) ); - apps.add( new NavigatorApp( R.drawable.module_apps_ic_news,R.drawable.module_apps_ic_news_unchecked, "首页", ModuleNames.CARD_TYPE_BUSINESS_OPERATION ) ); - apps.add( new NavigatorApp( R.drawable.module_apps_ic_media_center, R.drawable.module_apps_ic_media_center_checked, "媒体中心", ModuleNames.CARD_TYPE_SHARE_MUSIC ) ); - apps.add( new NavigatorApp( R.drawable.module_apps_ic_chat_icon, R.drawable.module_apps_ic_chat_unchecked,"车聊聊", ModuleNames.CARD_TYPE_CARS_CHATTING ) ); - apps.add( new NavigatorApp( R.drawable.module_apps_ic_tanlu, R.drawable.module_apps_ic_tanlu_unchecked,"探路", ModuleNames.CARD_TYPE_ROAD_CONDITION ) ); - return apps; - } + private static List< AppInfo > sApps = new ArrayList<>(); -// public static List< NavigatorApp > getApps() { -// List< NavigatorApp > apps = new ArrayList<>(); -// List< MogoModule > modules = MogoModulePaths.getModules(); -// for ( MogoModule module : modules ) { -// NavigatorApp app = getApp( module ); -// if ( app == null ) { -// continue; -// } -// apps.add( app ); -// } -// return apps; -// } -// -// private static NavigatorApp getApp( MogoModule module ) { -// if ( module == null ) { -// return null; -// } -// switch ( module.getName() ) { -// case ModuleNames.CARD_TYPE_USER_DATA: -// return new NavigatorApp( R.drawable.module_apps_ic_online_car, R.drawable.module_apps_ic_online_car_unchecked, "在线车辆", ModuleNames.CARD_TYPE_USER_DATA ); -// case ModuleNames.CARD_TYPE_NOVELTY: -// return new NavigatorApp( R.drawable.module_apps_ic_interest, R.drawable.module_apps_ic_interest_unchecked, "新鲜事", ModuleNames.CARD_TYPE_NOVELTY ); -// case ModuleNames.CARD_TYPE_BUSINESS_OPERATION: -// return new NavigatorApp( R.drawable.module_apps_ic_news, R.drawable.module_apps_ic_news_unchecked, "首页", ModuleNames.CARD_TYPE_BUSINESS_OPERATION ); -// case ModuleNames.CARD_TYPE_SHARE_MUSIC: -// return new NavigatorApp( R.drawable.module_apps_ic_media_center, R.drawable.module_apps_ic_media_center_checked, "媒体中心", ModuleNames.CARD_TYPE_SHARE_MUSIC ); -// case ModuleNames.CARD_TYPE_CARS_CHATTING: -// return new NavigatorApp( R.drawable.module_apps_ic_chat_icon, R.drawable.module_apps_ic_chat_unchecked, "车聊聊", ModuleNames.CARD_TYPE_CARS_CHATTING ); -// case ModuleNames.CARD_TYPE_ROAD_CONDITION: -// return new NavigatorApp( R.drawable.module_apps_ic_tanlu, R.drawable.module_apps_ic_tanlu_unchecked, "探路", ModuleNames.CARD_TYPE_ROAD_CONDITION ); -// } -// return null; -// } + public static List< AppInfo > getApps() { + if ( sApps.isEmpty() ) { + sApps.add( new AppInfo( "导航", "com.mogo.launcher.navi.search", "", 0, null, R.drawable.module_apps_ic_apps ) ); + sApps.add( new AppInfo( "音乐", "com.pvetec.musics", "", 0, null, R.drawable.module_apps_ic_apps ) ); + sApps.add( new AppInfo( "个人中心", "com.zhidao.auto.personal", "", 0, null, R.drawable.module_apps_ic_apps ) ); + sApps.add( new AppInfo( "全部应用", "com.mogo.launcher.applist", "", 0, null, R.drawable.module_apps_ic_apps ) ); + } + return sApps; + } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/utils/CardScaleTransformer.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/utils/CardScaleTransformer.java deleted file mode 100644 index 771fc71f2d..0000000000 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/utils/CardScaleTransformer.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.mogo.module.apps.utils; - -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; -import androidx.annotation.FloatRange; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.RecyclerView; -import com.mogo.module.apps.R; -import com.mogo.module.apps.model.NavigatorApp; -import com.yarolegovich.discretescrollview.transform.DiscreteScrollItemTransformer; -import com.yarolegovich.discretescrollview.transform.Pivot; -import com.yarolegovich.discretescrollview.transform.ScaleTransformer; -import java.util.List; - -/** - * @author zyz - * 2020-03-11. - */ -public class CardScaleTransformer implements DiscreteScrollItemTransformer { - - private Pivot pivotX; - private Pivot pivotY; - private float minScale; - private float maxMinDiff; - private static final int CARD_SIZE = 6; - - List apps; - - public CardScaleTransformer() { - pivotX = Pivot.X.CENTER.create(); - pivotY = Pivot.Y.BOTTOM.create(); - minScale = 0.8f; - maxMinDiff = 0.2f; - } - - public void setApps(List apps) { - this.apps = apps; - } - - @Override - public void transformItem(View item, RecyclerView.ViewHolder childViewHolder, float position) { - - ImageView ivItem = item.findViewById(R.id.module_apps_id_app_icon); - - TextView tvTitle = item.findViewById(R.id.module_apps_id_app_name); - NavigatorApp tag = (NavigatorApp) item.getTag(); - - pivotX.setOn(ivItem); - pivotY.setOn(ivItem); - float closenessToCenter = 1f - Math.abs(position); - float scale = minScale + maxMinDiff * closenessToCenter; - ivItem.setScaleX(scale); - ivItem.setScaleY(scale); - - if (tag != null) { - if (scale == 1) { - ivItem.setImageResource(tag.getmIconId()); - tvTitle.setTextColor(ContextCompat.getColor(item.getContext(),R.color.white)); - } else { - ivItem.setImageResource(tag.getmUncheckedIconId()); - tvTitle.setTextColor(ContextCompat.getColor(item.getContext(),R.color.white_80)); - } - - } - - //int currentPosition = (position - 2) % CARD_SIZE; - - } - - public static class Builder { - - private CardScaleTransformer transformer; - private float maxScale; - - public Builder() { - transformer = new CardScaleTransformer(); - maxScale = 1f; - } - - public Builder setMinScale(@FloatRange(from = 0.01) float scale) { - transformer.minScale = scale; - return this; - } - - public Builder setMaxScale(@FloatRange(from = 0.01) float scale) { - maxScale = scale; - return this; - } - - public Builder setPivotX(Pivot.X pivotX) { - return setPivotX(pivotX.create()); - } - - public Builder setPivotX(Pivot pivot) { - assertAxis(pivot, Pivot.AXIS_X); - transformer.pivotX = pivot; - return this; - } - - public Builder setPivotY(Pivot.Y pivotY) { - return setPivotY(pivotY.create()); - } - - public Builder setPivotY(Pivot pivot) { - assertAxis(pivot, Pivot.AXIS_Y); - transformer.pivotY = pivot; - return this; - } - - public CardScaleTransformer build() { - transformer.maxMinDiff = maxScale - transformer.minScale; - return transformer; - } - - private void assertAxis(Pivot pivot, @Pivot.Axis int axis) { - if (pivot.getAxis() != axis) { - throw new IllegalArgumentException("You passed a Pivot for wrong axis."); - } - } - } -} diff --git a/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml b/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml index 1a0b739e7f..2ea21751a8 100644 --- a/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml +++ b/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml @@ -1,47 +1,16 @@ + android:paddingBottom="@dimen/module_apps_navigation_icon_paddingBottom"> - - - - - - - + \ No newline at end of file diff --git a/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app_indicator.xml b/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app_indicator.xml index 8e02e01c0e..3e37557a76 100644 --- a/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app_indicator.xml +++ b/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app_indicator.xml @@ -2,23 +2,13 @@ - - + android:layout_width="@dimen/module_apps_all_icon_width" + android:layout_height="@dimen/module_apps_all_icon_height" + android:scaleType="fitXY" /> \ No newline at end of file diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java index c7fc69be71..74c6826eed 100644 --- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java +++ b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java @@ -10,15 +10,12 @@ import androidx.fragment.app.Fragment; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; -import com.alibaba.idst.nls.internal.utils.L; -import com.mogo.commons.AbsMogoApplication; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.location.IMogoLocationListener; import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.navi.IMogoNaviListener; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; -import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.intent.IMogoIntentManager; import com.mogo.service.module.IMogoModuleLifecycle; @@ -104,7 +101,7 @@ public class BackToLauncherModuleProvider implements IMogoModuleProvider, IMogoI mServiceApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation(); mIntentManager = mServiceApis.getIntentManagerApi(); mIntentManager.registerIntentListener( COMMAND_BACK, this ); - BackToMainHomeManager.init( mServiceApis.getFragmentManagerApi(), mServiceApis.getStatusManagerApi() ); + BackToMainHomeManager.init( mServiceApis ); } @Override diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java index 64fb84055d..93a1eec5d3 100644 --- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java +++ b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java @@ -11,6 +11,7 @@ import android.view.WindowManager; import com.mogo.commons.AbsMogoApplication; import com.mogo.module.back.utils.WindowManagerViewHelper; +import com.mogo.service.IMogoServiceApis; import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.utils.AppUtils; @@ -24,10 +25,12 @@ public class BackToMainHomeManager { private static IMogoFragmentManager mFragmentManager; private static IMogoStatusManager mStatusManager; + private static IMogoServiceApis mApis; - public static void init( IMogoFragmentManager manager, IMogoStatusManager statusManager ) { - mFragmentManager = manager; - mStatusManager = statusManager; + public static void init( IMogoServiceApis apis ) { + mApis = apis; + mFragmentManager = apis.getFragmentManagerApi(); + mStatusManager = apis.getStatusManagerApi(); } public static void backToLauncher() { diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java index 3581fa2353..6621be43bd 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java @@ -202,7 +202,7 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements switch ( descriptor ) { case APP_LIST_UI: case SEARCH_UI: - changeAutoSwitchVoiceTipsWordsStatus( !isTrue ); +// changeAutoSwitchVoiceTipsWordsStatus( !isTrue ); break; } } @@ -210,13 +210,13 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements @Override public void onResume( @NonNull LifecycleOwner owner ) { super.onResume( owner ); - changeAutoSwitchVoiceTipsWordsStatus( true ); +// changeAutoSwitchVoiceTipsWordsStatus( true ); } @Override public void onPause( @NonNull LifecycleOwner owner ) { super.onPause( owner ); - changeAutoSwitchVoiceTipsWordsStatus( true ); +// changeAutoSwitchVoiceTipsWordsStatus( true ); } private void changeAutoSwitchVoiceTipsWordsStatus( boolean autoChange ) { 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 e5aeabede9..7d95097c3e 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 @@ -77,12 +77,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent private static final String TAG = "EntranceFragment"; - private View mSearch; - - private View mCommonAddress; - private View mHome; - private View mCompany; - private View mUploadRoadCondition; private TextView mUpload; private ImageView mUploading; @@ -188,29 +182,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mStatusManager = mApis.getStatusManagerApi(); - mCommonAddress = findViewById( R.id.module_entrance_id_common_address ); - - mSearch = findViewById( R.id.module_entrance_id_search ); - - mSearch.setOnClickListener( view -> { - mApis.getAddressManagerApi().goSearch(); - mApis.getAdasControllerApi().closeADAS(); - } ); - - mHome = findViewById( R.id.module_entrance_id_home ); - mHome.setOnClickListener( view -> { - mMogoAddressManager.goHome(); - mApis.getAdasControllerApi().closeADAS(); - - } ); - - mCompany = findViewById( R.id.module_entrance_id_company ); - mCompany.setOnClickListener( view -> { - mMogoAddressManager.goCompany(); - mApis.getAdasControllerApi().closeADAS(); - - } ); - mUploadRoadCondition = findViewById( R.id.module_entrance_id_upload_road_condition ); mUpload = findViewById( R.id.module_entrance_id_upload ); mUploading = findViewById( R.id.module_entrance_id_uploading ); @@ -354,14 +325,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent } - @Override - public void onInitNaviFailure() { - } - - @Override - public void onInitNaviSuccess() { - } - @Override public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) { if ( naviinfo == null ) { @@ -372,8 +335,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent @Override public void onStartNavi() { - mSearch.setVisibility( View.GONE ); - mCommonAddress.setVisibility( View.GONE ); mNaviInfo.setVisibility( View.VISIBLE ); mCameraMode.setVisibility( View.VISIBLE ); mExitNavi.setVisibility( View.VISIBLE ); @@ -386,8 +347,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent @Override public void onStopNavi() { - mSearch.setVisibility( View.VISIBLE ); - mCommonAddress.setVisibility( View.VISIBLE ); mNaviInfo.setVisibility( View.GONE ); mCameraMode.setVisibility( View.GONE ); mExitNavi.setVisibility( View.GONE ); @@ -396,18 +355,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent MapCenterPointStrategy.setMapCenterPointByScene( mMApUIController, Scene.AIMLESS ); } - @Override - public void onCalculateSuccess() { - } - - @Override - public void onoCalculateFailed() { - } - - @Override - public void onUpdateTraffic( MogoTraffic traffic ) { - } - @Override public void onUpdateTraffic2( MogoTraffic traffic ) { if ( traffic == null ) { @@ -423,31 +370,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent } } - @Override - public void onUpdateCongestion( MogoCongestionInfo info ) { - - } - - @Override - public void onMapLoaded() { - - } - - @Override - public void onTouch( MotionEvent motionEvent ) { - - } - - @Override - public void onPOIClick( MogoPoi poi ) { - - } - - @Override - public void onMapClick( MogoLatLng latLng ) { - - } - @Override public void onLockMap( boolean isLock ) { mIsLock = isLock; @@ -461,16 +383,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent } } - @Override - public void onMapModeChanged( EnumMapUI ui ) { - - } - - @Override - public void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ) { - - } - private void traceData( String from ) { Map< String, Object > properties = new HashMap<>(); properties.put( "from", from ); diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml index 42400dbae6..6e91ac92d1 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml @@ -5,73 +5,6 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - - - - - - - - - - - - - - - - - - + app:layout_goneMarginRight="@dimen/module_ext_operation_panel_share_goneMarginRight"> + + + android:textSize="@dimen/module_ext_operation_panel_share_textSize" + android:visibility="gone" /> diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index d6dd637cc9..debafa9007 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -24,17 +24,12 @@ import com.mogo.module.common.MogoModulePaths; import com.mogo.module.common.map.MapCenterPointStrategy; import com.mogo.module.common.map.Scene; import com.mogo.module.main.cards.CardIntroduceConfigs; -import com.mogo.module.main.cards.CardModulesAdapter; -import com.mogo.module.main.cards.HorizentalStackTransformer; import com.mogo.module.main.cards.MogoModulesHandler; import com.mogo.module.main.cards.MogoModulesManager; -import com.mogo.module.main.cards.OnPageChangeListenerAdapter; -import com.mogo.module.main.cards.OrientedViewPager; import com.mogo.module.main.windowview.FloatingViewHandler; import com.mogo.module.service.ServiceConst; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; -import com.mogo.service.cardmanager.IMogoCardManager; import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoModuleProvider; @@ -59,16 +54,10 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme private IMogoMapService mMogoMapService; private IMogoMapUIController mMogoMapUIController; private MogoModulesHandler mMogoModuleHandler; - private IMogoCardManager mMogoCardManager; private IMogoFragmentManager mMogoFragmentManager; private IMogoStatusManager mMogoStatusManager; - private OrientedViewPager mCardsContainer; - private HorizentalStackTransformer mTransformer; - private CardModulesAdapter mCardModulesAdapter; - private View mHeader; - private View mCards; private View mApps; private View mEntrance; private FrameLayout mFloatingLayout; @@ -102,82 +91,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme getWindow().setBackgroundDrawable( null ); - mCardsContainer = findViewById( R.id.module_main_id_cards_container ); - mCardsContainer.setOrientation( OrientedViewPager.Orientation.HORIZONTAL ); - mTransformer = new HorizentalStackTransformer( this ); - mCardsContainer.setOnPageChangeListener( mOnPageChangeListener = new OnPageChangeListenerAdapter() { - private boolean mIsLast = true; - private boolean mCardFlipStatus = false; - - @Override - public void onPageSelected( int position ) { - final long start = System.currentTimeMillis(); - try { - IMogoModuleProvider provider = mCardModulesAdapter.getProvider( mCurrentPosition ); - if ( mCurrentPosition != position ) { - mPresenter.postTrackLastCardShowEvent( provider ); - } - mCurrentPosition = position; - provider = mCardModulesAdapter.getProvider( mCurrentPosition ); - mMogoModuleHandler.setModuleEnable( provider.getModuleName() ); - mMogoCardManager.invoke( position, mMogoModuleHandler.getCurrentModuleName() ); - - if ( mLockCarStatus ) { - mMogoStatusManager.setUserInteractionStatus( TAG, true, false ); - mMogoMapUIController.setLockZoom( 16 ); - mMogoMapUIController.recoverLockMode(); - } - mLockCarStatus = true; - - } catch ( Exception e ) { - e.printStackTrace(); - } - Logger.i( TAG, "onPageSelected cost " + ( System.currentTimeMillis() - start ) + "ms" ); - } - - @Override - public void onPageScrollStateChanged( int state ) { - final long start = System.currentTimeMillis(); - super.onPageScrollStateChanged( state ); - if ( state == ViewPager.SCROLL_STATE_DRAGGING ) { - if ( !mCardFlipStatus ) { - mCardFlipStatus = true; - final IMogoModuleProvider provider = mCardModulesAdapter.getProvider( mCurrentPosition ); - mPresenter.postTrackCardFlipEvent( provider ); - } - } else if ( state == ViewPager.SCROLL_STATE_IDLE ) { - mCardFlipStatus = false; - mTransformer.resetOffsetScroll(); - } - - int cardSize = mCardModulesAdapter.getCount(); - - if ( state == ViewPager.SCROLL_STATE_SETTLING ) { - mIsLast = false; - } else if ( state == ViewPager.SCROLL_STATE_IDLE && mIsLast ) { - //此处为你需要的情况,再加入当前页码判断可知道是第一页还是最后一页 - if ( cardSize != 1 && mCurrentPosition == ( cardSize - 1 ) ) { - mCardsContainer.setCurrentItem( 0, false ); - } else if ( cardSize != 1 && mCurrentPosition == 0 ) { - mCardsContainer.setCurrentItem( cardSize - 1, false ); - } - } else { - mIsLast = true; - } - Logger.i( TAG, "onPageScrollStateChanged cost " + ( System.currentTimeMillis() - start ) + "ms" ); - } - - @Override - public void onPageScrolled( int position, float positionOffset, - int positionOffsetPixels ) { - super.onPageScrolled( position, positionOffset, positionOffsetPixels ); - Logger.d( TAG, "pageScrolled : offset --- " + positionOffset ); - mTransformer.offsetScrollChanged( positionOffset ); - } - } ); - mHeader = findViewById( R.id.module_main_id_header_fragment_container ); - mCards = findViewById( R.id.module_main_id_cards_container ); mApps = findViewById( R.id.module_main_id_apps_fragment_container ); mEntrance = findViewById( R.id.module_main_id_entrance_fragment_container ); mFloatingLayout = findViewById( R.id.module_main_id_floating_view ); @@ -194,7 +108,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme // 隐藏布局 private void hideLayout() { mHeader.setVisibility( View.GONE ); - mCards.setVisibility( View.GONE ); mApps.setVisibility( View.GONE ); mEntrance.setVisibility( View.GONE ); mFloatingLayout.setVisibility( View.GONE ); @@ -205,7 +118,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme // 显示布局 private void showLayout() { mHeader.setVisibility( View.VISIBLE ); - mCards.setVisibility( View.VISIBLE ); mApps.setVisibility( View.VISIBLE ); mEntrance.setVisibility( View.VISIBLE ); mFloatingLayout.setVisibility( View.VISIBLE ); @@ -249,6 +161,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme loadContainerModules(); mMogoModuleHandler.loadModules(); mPresenter.delayOperations(); + mPresenter.initADAS(); hideCoverUpLayout(); // 显示左边遮罩 @@ -264,8 +177,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme } ); mMogoModuleHandler.loadMapModule( R.id.module_main_id_map_fragment_container ); - mMogoCardManager = mServiceApis.getCardManagerApi(); - mMogoFragmentManager = mServiceApis.getFragmentManagerApi(); mMogoFragmentManager.init( this, R.id.module_main_id_search_fragment ); mMogoFragmentManager.registerMainFragmentStackTransactionListener( ( size ) -> { @@ -291,17 +202,10 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme mMogoModuleHandler.loadEntrancesModule( R.id.module_main_id_entrance_fragment_container ); } - @Override - public void postPickFirstCardEvent() { - if ( mOnPageChangeListener != null ) { - // 默认触发第一个卡片 - mOnPageChangeListener.onPageSelected( 0 ); - } - } - @Override public void hideCoverUpLayout() { mCoverUpLayout.setVisibility( View.GONE ); + mServiceApis.getAdasControllerApi().showADAS(); } @Override @@ -336,23 +240,15 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme @Override public void switch2Card( String cardType, boolean lockCar ) { - if ( mCardModulesAdapter == null ) { - return; - } - mLockCarStatus = lockCar; - int position = mCardModulesAdapter.getProviderPosition( cardType ); - if ( position != -1 ) { - int lastFactPosition = mCardModulesAdapter.getFactPosition( mCurrentPosition ); - mCardsContainer.setCurrentItem( mCurrentPosition + position - lastFactPosition, Math.abs( lastFactPosition - position ) == 1 ); - } else { - Logger.e( TAG, "Can't find type of %s's position", cardType ); - } } @Override protected void onResume() { super.onResume(); mMogoStatusManager.setMainPageResumeStatus( TAG, true ); + if ( mCoverUpLayout.getVisibility() == View.VISIBLE ) { + mServiceApis.getAdasControllerApi().showADAS(); + } } @Override @@ -360,6 +256,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme super.onPause(); mMogoStatusManager.setMainPageResumeStatus( TAG, false ); CardIntroduceConfigs.flush( getApplicationContext() ); + mServiceApis.getAdasControllerApi().closeADAS(); } @Override @@ -400,7 +297,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme mMogoModuleHandler = null; mMogoMapService = null; mMogoMapUIController = null; - mMogoCardManager = null; mMogoFragmentManager = null; AIAssist.getInstance( this ).release(); } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java index 9b002249ca..9d15afb925 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java @@ -1,7 +1,6 @@ package com.mogo.module.main; import android.content.Intent; -import android.net.Uri; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -12,7 +11,6 @@ import androidx.lifecycle.LifecycleOwner; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.Presenter; -import com.mogo.map.navi.IMogoNavi; import com.mogo.module.main.constants.MainConstants; import com.mogo.module.main.livedata.CardSwitchLiveData; import com.mogo.service.MogoServicePaths; @@ -33,8 +31,6 @@ public class MainPresenter extends Presenter< MainView > { // 埋点接口 private IMogoAnalytics mAnalytics; - private long mCardStartShowTime = 0; - private Handler mMsgHandler = new Handler( Looper.getMainLooper() ) { @Override public void handleMessage( Message msg ) { @@ -42,16 +38,6 @@ public class MainPresenter extends Presenter< MainView > { switch ( msg.what ) { case MainConstants.MSG_LOAD_CARD_MODULES: mView.loadCardModules(); - mMsgHandler.sendEmptyMessageDelayed( MainConstants.MSG_LOAD_INVOKE_FIRST_CARD_PERFORM_EVENT, 1_000L ); - break; - case MainConstants.MSG_LOAD_INVOKE_FIRST_CARD_PERFORM_EVENT: - mView.postPickFirstCardEvent(); - break; - case MainConstants.MSG_TRACK_LAST_CARD_DISPLAY_EVENT: - trackLastCardShowEvent( ( IMogoModuleProvider ) msg.obj ); - break; - case MainConstants.MSG_TRACK_CARD_FLIP_EVENT: - trackCardFlipEvent( ( IMogoModuleProvider ) msg.obj ); break; case MainConstants.MSG_HIDE_MAP_COVER_FRAME: mView.hideCoverUpLayout(); @@ -65,7 +51,6 @@ public class MainPresenter extends Presenter< MainView > { public MainPresenter( MainView view ) { super( view ); - mCardStartShowTime = System.currentTimeMillis(); SchemeIntent.getInstance().init( getContext(), mView.getApis() ); } @@ -81,38 +66,6 @@ public class MainPresenter extends Presenter< MainView > { mAnalytics = ( IMogoAnalytics ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_ANALYTICS ).navigation( getContext() ); } - /** - * 卡片展示时长埋点 - * - * @param provider - */ - public void trackLastCardShowEvent( IMogoModuleProvider provider ) { - if ( provider == null ) { - return; - } - Map< String, Object > properties = new HashMap<>(); - properties.put( "appname", provider.getAppName() ); - properties.put( "packagename", provider.getAppPackage() ); - properties.put( "activeTime", System.currentTimeMillis() - mCardStartShowTime ); - properties.put( "type", provider.getModuleName() ); - mAnalytics.track( "Launcher_Card_Show", properties ); - mCardStartShowTime = System.currentTimeMillis(); - } - - /** - * 卡片滑动埋点,WTF - */ - public void trackCardFlipEvent( IMogoModuleProvider provider ) { - if ( provider == null ) { - return; - } - Map< String, Object > properties = new HashMap<>(); - properties.put( "appname", provider.getAppName() ); - properties.put( "packagename", provider.getAppPackage() ); - properties.put( "type", provider.getModuleName() ); - mAnalytics.track( "Launcher_Card_Slide", properties ); - } - /** * 延时操作 */ @@ -121,20 +74,6 @@ public class MainPresenter extends Presenter< MainView > { mMsgHandler.sendEmptyMessageDelayed( MainConstants.MSG_HIDE_MAP_COVER_FRAME, 150L ); } - public void postTrackLastCardShowEvent( IMogoModuleProvider provider ) { - Message msg = Message.obtain(); - msg.what = MainConstants.MSG_TRACK_LAST_CARD_DISPLAY_EVENT; - msg.obj = provider; - mMsgHandler.sendMessage( msg ); - } - - public void postTrackCardFlipEvent( IMogoModuleProvider provider ) { - Message msg = Message.obtain(); - msg.what = MainConstants.MSG_TRACK_CARD_FLIP_EVENT; - msg.obj = provider; - mMsgHandler.sendMessage( msg ); - } - public void postLoadModuleMsg() { Message msg = Message.obtain(); msg.what = MainConstants.MSG_LOAD_MODULES; @@ -144,4 +83,8 @@ public class MainPresenter extends Presenter< MainView > { public void handleSchemeIntent( Intent intent ) { SchemeIntent.getInstance().handle( intent ); } + + public void initADAS(){ + + } } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java index 8ab476a7c4..ec93570a23 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java @@ -23,11 +23,6 @@ public interface MainView extends IView { */ void loadCardModules(); - /** - * 触发第一张卡片选中 - */ - void postPickFirstCardEvent(); - /** * 隐藏背景 */ diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java index b42e719706..ed57a10838 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java @@ -1,21 +1,9 @@ package com.mogo.module.main.cards; -import com.mogo.map.listener.IMogoMapListener; -import com.mogo.map.location.IMogoLocationClient; -import com.mogo.map.location.IMogoLocationListener; -import com.mogo.map.marker.IMogoMarker; -import com.mogo.map.marker.IMogoMarkerClickListener; -import com.mogo.map.navi.IMogoAimlessModeListener; -import com.mogo.map.navi.IMogoCarLocationChangedListener; -import com.mogo.map.navi.IMogoCarLocationChangedListener2; -import com.mogo.map.navi.IMogoNaviListener; import com.mogo.service.module.IMogoModuleProvider; -import java.util.Collection; import java.util.List; -import javax.security.auth.callback.Callback; - /** * @author congtaowang * @since 2019-12-24 @@ -64,22 +52,8 @@ public interface MogoModulesHandler { */ void loadEntrancesModule( int containerId ); - /** - * 设置某一个module可用 - * - * @param module - */ - void setModuleEnable( String module ); - /** * 销毁 */ void destroy(); - - /** - * 当前卡片名称 - * - * @return - */ - String getCurrentModuleName(); } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java index be86c4e7ad..bc4f9ae071 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java @@ -1,7 +1,6 @@ package com.mogo.module.main.cards; import android.content.Context; -import android.text.TextUtils; import androidx.fragment.app.Fragment; @@ -11,24 +10,13 @@ import com.mogo.module.common.MogoModulePaths; import com.mogo.module.extensions.ExtensionsModuleConst; import com.mogo.module.main.EventDispatchCenter; import com.mogo.module.main.MainActivity; -import com.mogo.module.main.registercenter.MogoRegisterCenterHandler; import com.mogo.service.IMogoServiceApis; -import com.mogo.service.MogoServicePaths; -import com.mogo.service.intent.IMogoIntentManager; -import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.service.module.IMogoModuleProvider; -import com.mogo.service.module.ModuleType; import com.mogo.utils.ResourcesHelper; import com.mogo.utils.logger.Logger; -import com.mogo.utils.network.utils.GsonUtil; -import com.mogo.utils.storage.SharedPrefsMgr; - -import org.json.JSONArray; -import org.json.JSONException; import java.util.ArrayList; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; @@ -38,7 +26,7 @@ import java.util.Map; *

* 卡片加载 */ -public class MogoModulesManager implements MogoModulesHandler{ +public class MogoModulesManager implements MogoModulesHandler { private static final String TAG = "MogoModulesManager"; @@ -48,17 +36,12 @@ public class MogoModulesManager implements MogoModulesHandler{ // 空间换效率 private Map< String, IMogoModuleProvider > mModuleNameProviders = new HashMap<>(); - private String mEnableModuleName = null; - - public static final String KEY_SORTED_CARD_MODULES = "sortedCards"; - private List< String > mSortedCards = new ArrayList<>(); - - public MogoModulesManager( MainActivity activity , IMogoServiceApis apis) { + public MogoModulesManager( MainActivity activity, IMogoServiceApis apis ) { if ( activity == null ) { throw new NullPointerException( "activity can't be null." ); } this.mActivity = activity; - EventDispatchCenter.getInstance().registerReceiver(apis.getIntentManagerApi()); + EventDispatchCenter.getInstance().registerReceiver( apis.getIntentManagerApi() ); CardIntroduceConfigs.init( getContext(), apis ); } @@ -88,61 +71,13 @@ public class MogoModulesManager implements MogoModulesHandler{ @Override public List< IMogoModuleProvider > loadCardsModule() { - String sortedJson = SharedPrefsMgr.getInstance( getContext() ).getString( KEY_SORTED_CARD_MODULES ); - try { - JSONArray array = new JSONArray( sortedJson ); - mSortedCards = new ArrayList<>( array.length() ); - for ( int i = 0; i < array.length(); i++ ) { - mSortedCards.add( array.getString( i ) ); - } - Logger.d( TAG, "Last cache card: %s", mSortedCards ); - } catch ( JSONException e ) { - e.printStackTrace(); - } - final List< MogoModule > modules = MogoModulePaths.getModules(); final ArrayList< IMogoModuleProvider > providers = new ArrayList<>(); for ( MogoModule module : modules ) { IMogoModuleProvider provider = mModuleProviders.get( module ); - if ( provider.getType() == ModuleType.TYPE_CARD_FRAGMENT ) { - if ( mEnableModuleName == null ) { - mEnableModuleName = provider.getModuleName(); - } - providers.add( provider ); - } + providers.add( provider ); } return providers; -// return sort( providers ); v2.0.2暂不支持变顺序 - } - - private List< IMogoModuleProvider > sort( List< IMogoModuleProvider > modules ) { - if ( modules == null || modules.size() == 0 ) { - return modules; - } - if ( mSortedCards == null ) { - mSortedCards = new ArrayList<>(); - } - List< IMogoModuleProvider > sortedList = new ArrayList<>( modules.size() ); - - for ( String sortedCard : mSortedCards ) { - for ( IMogoModuleProvider module : modules ) { - if ( TextUtils.equals( module.getModuleName(), sortedCard ) ) { - sortedList.add( module ); - Logger.d( TAG, "%s sorted.", sortedCard ); - break; - } - } - } - for ( IMogoModuleProvider module : modules ) { - if ( !sortedList.contains( module ) ) { - sortedList.add( module ); - } - } - mSortedCards.clear(); - for ( IMogoModuleProvider provider : sortedList ) { - mSortedCards.add( provider.getModuleName() ); - } - return sortedList; } @Override @@ -183,14 +118,12 @@ public class MogoModulesManager implements MogoModulesHandler{ private void addFragment( IMogoModuleProvider provider, int containerId ) { if ( provider == null ) { - Logger.e( TAG, "add fragment fail cause provider == null, container is %s", - ResourcesHelper.getResNameById( getApplicationContext(), containerId ) ); + Logger.e( TAG, "add fragment fail cause provider == null, container is %s", ResourcesHelper.getResNameById( getApplicationContext(), containerId ) ); return; } final Fragment fragment = provider.createFragment( getContext(), null ); if ( fragment == null ) { - Logger.e( TAG, "add fragment fail cause fragment == null, container is %s", - ResourcesHelper.getResNameById( getApplicationContext(), containerId ) ); + Logger.e( TAG, "add fragment fail cause fragment == null, container is %s", ResourcesHelper.getResNameById( getApplicationContext(), containerId ) ); return; } mActivity.getSupportFragmentManager().beginTransaction() @@ -198,52 +131,6 @@ public class MogoModulesManager implements MogoModulesHandler{ .commitAllowingStateLoss(); } - @Override - public void setModuleEnable( String module ) { - final long start1 = System.currentTimeMillis(); - // 仅操作上一个模块和当前模块 - Iterator< IMogoModuleProvider > iterator = mModuleProviders.values().iterator(); - int counter = 0; - - // 上一个卡片设置为 disable - IMogoModuleProvider prev = mModuleNameProviders.get( mEnableModuleName ); - if ( prev != null ) { - final IMogoModuleLifecycle lifecycle = MogoRegisterCenterHandler.getInstance().getLifecycleListener( mEnableModuleName ); - if ( lifecycle != null ) { - try { - final long start = System.currentTimeMillis(); - lifecycle.onDisable(); - Logger.i( TAG, "set %s module disable event cost " + ( System.currentTimeMillis() - start ) + "ms", mEnableModuleName ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - - // 当前卡片设置为 perform - IMogoModuleProvider current = mModuleNameProviders.get( module ); - if ( current != null ) { - final IMogoModuleLifecycle lifecycle = MogoRegisterCenterHandler.getInstance().getLifecycleListener( module ); - if ( lifecycle != null ) { - try { - final long start = System.currentTimeMillis(); - lifecycle.onPerform(); - Logger.i( TAG, "set %s module perform event cost " + ( System.currentTimeMillis() - start ) + "ms", module ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - - mEnableModuleName = module; - mSortedCards.remove( mEnableModuleName ); - mSortedCards.add( 0, mEnableModuleName ); - SharedPrefsMgr.getInstance( getContext() ).putString( KEY_SORTED_CARD_MODULES, GsonUtil.jsonFromObject( mSortedCards ) ); - Logger.i( TAG, "enable & disable card cost " + ( System.currentTimeMillis() - start1 ) + "ms" ); - - CardIntroduceConfigs.broadcastCardIntroduce( mActivity, mEnableModuleName ); - } - @Override public void destroy() { mActivity = null; @@ -251,11 +138,5 @@ public class MogoModulesManager implements MogoModulesHandler{ mModuleProviders.clear(); } mModuleProviders = null; - mEnableModuleName = null; - } - - @Override - public String getCurrentModuleName() { - return mEnableModuleName; } } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/constants/MainConstants.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/constants/MainConstants.java index 5689102e6d..deb859893a 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/constants/MainConstants.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/constants/MainConstants.java @@ -13,21 +13,6 @@ public class MainConstants { */ public static final int MSG_LOAD_CARD_MODULES = 5000; - /** - * 消息:触发第一张卡片的onPerform 时间 - */ - public static final int MSG_LOAD_INVOKE_FIRST_CARD_PERFORM_EVENT = 5001; - - /** - * 消息:卡片展示事件 - */ - public static final int MSG_TRACK_LAST_CARD_DISPLAY_EVENT = 5002; - - /** - * 消息:卡片滑动事件 - */ - public static final int MSG_TRACK_CARD_FLIP_EVENT = 5003; - /** * 消息:隐藏地图遮罩(避免地图加载白屏) */ diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml index 603a0ecaed..9ba1c6ea16 100644 --- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml +++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml @@ -37,19 +37,10 @@ android:layout_marginLeft="@dimen/module_main_card_container_marginLeft" android:layout_marginTop="@dimen/module_main_card_container_marginTop"> - - diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java index 127ad28b9e..a1cec4be2c 100644 --- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java +++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java @@ -20,11 +20,8 @@ import com.mogo.map.navi.IMogoNavi; import com.mogo.map.navi.IMogoNaviListener2; import com.mogo.map.navi.MogoNaviConfig; import com.mogo.map.navi.MogoNaviInfo; -import com.mogo.map.navi.MogoTraffic; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.MapControlResult; -import com.mogo.module.common.map.MapCenterPointStrategy; -import com.mogo.module.common.map.Scene; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.service.intent.IMogoIntentListener; @@ -242,7 +239,7 @@ public class MapPresenter extends Presenter< MapView > implements Logger.d( TAG, "未开始导航." ); return; } - if ( mStatusManager.isADASShow() ) { + if ( mStatusManager.isV2XShow() ) { Logger.d( TAG, "ADAS模式忽略该请求." ); return; } @@ -282,8 +279,8 @@ public class MapPresenter extends Presenter< MapView > implements mMogoMapService.getMapUIController().recoverLockMode();//缩放地图会导致锁车发生改变,这里强制锁车 }, 1_000 ); } else { - // 20s后锁车刷新 - mRefreshStrategyController.restartAutoRefreshAtTime( 20_000 ); + // 30s后锁车刷新 + mRefreshStrategyController.restartAutoRefreshAtTime( 30_000 ); } } @@ -461,46 +458,6 @@ public class MapPresenter extends Presenter< MapView > implements } } - @Override - public void onCmdAction( String speakText ) { - - } - - @Override - public void onCmdCancel( String speakText ) { - - } - - @Override - public void onSpeakEnd( String speakText ) { - - } - - @Override - public void onSpeakSelectTimeOut( String speakText ) { - - } - - @Override - public void onArriveDestination() { - - } - - @Override - public void onEndEmulatorNavi() { - - } - - @Override - public void onInitNaviFailure() { - - } - - @Override - public void onInitNaviSuccess() { - - } - @Override public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) { MapBroadCastHelper.getInstance( getContext() ).notifyXiaozhi( naviinfo ); @@ -515,19 +472,4 @@ public class MapPresenter extends Presenter< MapView > implements public void onStopNavi() { MapBroadCastHelper.getInstance( getContext() ).stopNavi(); } - - @Override - public void onCalculateSuccess() { - - } - - @Override - public void onoCalculateFailed() { - - } - - @Override - public void onUpdateTraffic( MogoTraffic traffic ) { - - } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java index a3a709ce12..375936ee6b 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java @@ -47,6 +47,6 @@ public class AMapConstants { */ public static final String COMMAND_START_NAVI = "com.ileja.navi.route.confirm"; - public static final String COMMAND_CHOOSE_PATH = "com.zhidao.route.plan"; + public static final String COMMAND_CHOOSE_PATH = "com.zhidao.route.choice"; } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchServiceHolder.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchServiceHolder.kt index a74f3e6118..ace72751bb 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchServiceHolder.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchServiceHolder.kt @@ -14,6 +14,7 @@ import com.mogo.module.gps.simulator.GpsSimulatorConstants import com.mogo.module.gps.simulator.IMogoGpsSimulatorManager import com.mogo.module.guideshow.provider.GuideShowProviderConstant import com.mogo.module.guideshow.provider.IGuideShowProvider +import com.mogo.service.IMogoServiceApis import com.mogo.service.MogoServicePaths import com.mogo.service.analytics.IMogoAnalytics import com.mogo.service.fragmentmanager.FragmentDescriptor @@ -42,7 +43,7 @@ object SearchServiceHolder { val mogoLauncher: IMogoLauncher = ARouter.getInstance().build(MogoServicePaths.PATH_LAUNCHER_API).navigation() as IMogoLauncher val gpsSimulator = ARouter.getInstance().build(GpsSimulatorConstants.API_PATH).navigation() as IMogoGpsSimulatorManager val intentManager = ARouter.getInstance().build(MogoServicePaths.PATH_INTENT_MANAGER).navigation() as IMogoIntentManager - + val apis = ARouter.getInstance().navigation(IMogoServiceApis::class.java) var geoSearch: IMogoGeoSearch? = null fun init(context: Context) { this.context = context diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt index 7e57736dad..1817c3163b 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt @@ -122,6 +122,7 @@ object AddressManager { * 回家 */ fun goHome() { + closeADAS() SearchServiceHolder.statusManager.setSearchUIShow(TAG, true) if (homeAddress == null) { choosePoint(DataConstants.TYPE_HOME_ADDRESS) @@ -134,6 +135,7 @@ object AddressManager { * 去公司 */ fun goCompany() { + closeADAS() SearchServiceHolder.statusManager.setSearchUIShow(TAG, true) if (companyAddress == null) { choosePoint( DataConstants.TYPE_COMPANY_ADDRESS) @@ -146,6 +148,7 @@ object AddressManager { * 搜索 */ fun goSearch() { + closeADAS() SearchServiceHolder.statusManager.setSearchUIShow(TAG, true) SearchServiceHolder.fragmentManager.push( FragmentDescriptor.Builder().fragment(SearchFragment()) @@ -160,12 +163,14 @@ object AddressManager { */ fun calculatePath(destination: MogoLatLng?) { destination?.let { + closeADAS() var newInstance = ChoosePathFragment.newInstance(destination) SearchServiceHolder.push(newInstance, AMapConstants.PATH_FRAGMENT_CHOOSE_PATH) } } fun categorySearch(category: String){ + closeADAS() val searchFragment = CategorySearchFragment.newInstance(category) SearchServiceHolder.fragmentManager.push(FragmentDescriptor.Builder().fragment(searchFragment) .tag(AMapConstants.PATH_FRAGMENT_SEARCH_CATEGORY) @@ -174,6 +179,7 @@ object AddressManager { } fun goSettings(){ + closeADAS() val naviSettingFragment = NaviSettingFragment() SearchServiceHolder.fragmentManager.push(FragmentDescriptor.Builder().fragment(naviSettingFragment) .tag(AMapConstants.PATH_FRAGMENT_NAVI_SETTING) @@ -181,4 +187,13 @@ object AddressManager { .build()) } + + private fun closeADAS() { + try { + SearchServiceHolder.apis.adasControllerApi.closeADAS() + } catch (e: Exception) { + e.printStackTrace() + } + + } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoAddressManager.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoAddressManager.java index 6c290d1675..8c2204f9f8 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoAddressManager.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoAddressManager.java @@ -1,6 +1,7 @@ package com.mogo.module.navi.manager; import android.content.Context; + import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.map.MogoLatLng; import com.mogo.module.navi.constants.SearchServiceHolder; @@ -14,11 +15,13 @@ import com.mogo.service.module.IMogoAddressManager; @Route( path = MogoServicePaths.PATH_ADDRESS_MANAGER ) public class MogoAddressManager implements IMogoAddressManager { - @Override public void goHome() { + @Override + public void goHome() { AddressManager.INSTANCE.goHome(); } - @Override public void goCompany() { + @Override + public void goCompany() { AddressManager.INSTANCE.goCompany(); } @@ -42,9 +45,10 @@ public class MogoAddressManager implements IMogoAddressManager { AddressManager.INSTANCE.goSettings(); } - @Override public void init( Context context) { - AddressManager.INSTANCE.init(context); - SearchServiceHolder.INSTANCE.init(context); - SettingManager.INSTANCE.init(context); + @Override + public void init( Context context ) { + AddressManager.INSTANCE.init( context ); + SearchServiceHolder.INSTANCE.init( context ); + SettingManager.INSTANCE.init( context ); } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt index 750335c1be..0abd48fc46 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt @@ -38,8 +38,8 @@ import org.json.JSONObject */ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallBack, IMogoIntentListener { - var mTimeShortestPosition = -1 - var mDistanceShortestPosition = -1 + private var mTimeShortestPosition = -1 + private var mDistanceShortestPosition = -1 override fun onCmdSelected(cmd: String?) { when (cmd) { @@ -270,45 +270,18 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB var dataJsonStr = intent?.getStringExtra("data") ?: "" try { var jsonObj = JSONObject(dataJsonStr) - var routePlan = jsonObj.optString("route_plan", " ") + var routePlan = jsonObj.optString("route_choice", " ") when (routePlan) { - "最快" -> { + "fastest" -> { // 时间最短 selectItem(mTimeShortestPosition) startNavi() } - "不走高速" -> { - // 仅在导航场景下,⽀持第三⽅进⾏路线偏好的重新选择。 - // 避免收费 | 1 - // 多策略算路 | 2 - // 不走高速 | 3 - // 躲避拥堵 | 4 - // 不走高速且避免收费 | 5 - // 不走高速且躲避拥堵 | 6 - // 躲避收费和拥堵 | 7 - // 不走高速躲避收费和拥堵 | 8 - // 高速优先 | 20 - // 躲避拥堵且高速优先 | 24 - var prefer = 3 - val config = MogoNaviConfig().congestion(prefer == 4) - .cost(prefer == 1 || prefer == 7) - .highSpeed(prefer == 20) - .avoidSpeed(prefer == 3) - SearchServiceHolder.getNavi().reCalculateRoute(config) - } - "最近" -> { + "nearest" -> { // 路程最短 selectItem(mDistanceShortestPosition) startNavi() } - "躲避拥堵" -> { - var prefer = 4 - val config = MogoNaviConfig().congestion(prefer == 4) - .cost(prefer == 1 || prefer == 7) - .highSpeed(prefer == 20) - .avoidSpeed(prefer == 3) - SearchServiceHolder.getNavi().reCalculateRoute(config) - } } } catch (e: Exception) { 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 8b72b40756..88f0bf02e7 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 @@ -172,7 +172,7 @@ public class MogoServices implements IMogoMapListener, super.handleMessage( msg ); switch ( msg.what ) { case ServiceConst.MSG_TYPE_REFRESH_DECREASE: - if ( mStatusManager.isSearchUIShow() || mStatusManager.isADASShow() ) { + if ( mStatusManager.isSearchUIShow() || mStatusManager.isV2XShow() ) { stopAutoRefreshStrategy(); return; } @@ -185,7 +185,7 @@ public class MogoServices implements IMogoMapListener, } break; case ServiceConst.MSG_LOOP_REQUEST: - if ( mStatusManager.isSearchUIShow() || mStatusManager.isADASShow() ) { + if ( mStatusManager.isSearchUIShow() || mStatusManager.isV2XShow() ) { return; } if ( mLoopRequest ) { @@ -200,7 +200,7 @@ public class MogoServices implements IMogoMapListener, * 自动刷新:锁车、缩放比例:16、半径 2KM */ private void invokeAutoRefresh() { - if ( mStatusManager.isSearchUIShow() || mStatusManager.isADASShow() ) { + if ( mStatusManager.isSearchUIShow() || mStatusManager.isV2XShow() ) { mStatusManager.setUserInteractionStatus( TAG, true, false ); mUiController.recoverLockMode(); return; @@ -230,7 +230,7 @@ public class MogoServices implements IMogoMapListener, */ private RefreshCallback mCustomRefreshCallback = new RefreshCallback() { @Override - public void onSuccess(Object o) { + public void onSuccess( Object o ) { mLoopRequest = false; // 用户手动操作地图刷新成功后,设置状态为 true,引发延时策略 mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, true ); @@ -248,7 +248,7 @@ public class MogoServices implements IMogoMapListener, */ private RefreshCallback mAutoRefreshCallback = new RefreshCallback() { @Override - public void onSuccess(Object o) { + public void onSuccess( Object o ) { mLoopRequest = false; Logger.d( TAG, "request Success." ); invokeAutoRefreshStrategy(); @@ -348,11 +348,11 @@ public class MogoServices implements IMogoMapListener, if ( msg.obj instanceof RefreshObject ) { RefreshObject ro = ( ( RefreshObject ) msg.obj ); mRefreshModel.refreshData( ro.mLonLat, ro.mRadius, ro.mAmount, ro.mCallback ); - MapMarkerManager.getInstance().getOnlineCarData(ro.mLonLat); + MapMarkerManager.getInstance().getOnlineCarData( ro.mLonLat ); Logger.i( TAG, "刷新半径 = %s, 点 = %s, zoomLevel = %s, amount = %s", ro.mRadius, ro.mLonLat, mLastZoomLevel, ro.mAmount ); } - } else if( msg.what == ServiceConst.MSG_LOCK_CAR ){ + } else if ( msg.what == ServiceConst.MSG_LOCK_CAR ) { if ( mStatusManager.isSearchUIShow() ) { return; } @@ -436,8 +436,7 @@ public class MogoServices implements IMogoMapListener, */ private float getMapCameraFactHeight() { try { - return Utils.calculateLineDistance( mCameraSouthWestPosition, - new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) ); + return Utils.calculateLineDistance( mCameraSouthWestPosition, new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) ); } catch ( Exception e ) { return ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS; } @@ -468,16 +467,6 @@ public class MogoServices implements IMogoMapListener, mHandler.removeMessages( ServiceConst.MSG_TYPE_REFRESH_DECREASE ); } - @Override - public void onPOIClick( MogoPoi poi ) { - - } - - @Override - public void onMapClick( MogoLatLng latLng ) { - - } - @Override public void onLockMap( boolean isLock ) { mThreadHandler.removeMessages( ServiceConst.MSG_LOCK_CAR ); @@ -486,15 +475,10 @@ public class MogoServices implements IMogoMapListener, } } - @Override - public void onMapModeChanged( EnumMapUI ui ) { - - } - @Override public void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ) { - MapMarkerManager.getInstance().syncLocation( latLng.lon, latLng. lat ); + MapMarkerManager.getInstance().syncLocation( latLng.lon, latLng.lat ); if ( mIsCameraInited ) { mLastZoomLevel = zoom; @@ -513,7 +497,7 @@ public class MogoServices implements IMogoMapListener, } // v2x // adas 状态下不做任何操作 - if ( mStatusManager.isADASShow() ) { + if ( mStatusManager.isV2XShow() ) { mLastCustomRefreshCenterLocation = latLng; mLastZoomLevel = zoom; return; @@ -585,7 +569,7 @@ public class MogoServices implements IMogoMapListener, @Override public void onCarLocationChanged2( Location latLng ) { - if ( mStatusManager.isADASShow() ) { + if ( mStatusManager.isV2XShow() ) { return; } @@ -637,28 +621,6 @@ public class MogoServices implements IMogoMapListener, mThreadHandler.sendMessage( msg ); } - @Override - public void onInitNaviFailure() { - - } - - @Override - public void onInitNaviSuccess() { - - } - - @Override - public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) { - } - - @Override - public void onStartNavi() { - } - - @Override - public void onStopNavi() { - } - @Override public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) { //Logger.d( TAG, "状态发生改变---descriptor---" + descriptor + "----isTrue---" + isTrue ); @@ -675,7 +637,7 @@ public class MogoServices implements IMogoMapListener, } else { // 搜索后,打开打点策略 if ( mAutoRefreshCallback != null ) { - mAutoRefreshCallback.onSuccess(null); + mAutoRefreshCallback.onSuccess( null ); } } break; @@ -730,7 +692,7 @@ public class MogoServices implements IMogoMapListener, refreshStrategy(); // ADAS关闭后,打开打点策略 if ( mAutoRefreshCallback != null ) { - mAutoRefreshCallback.onSuccess(null); + mAutoRefreshCallback.onSuccess( null ); } } @@ -756,21 +718,6 @@ public class MogoServices implements IMogoMapListener, notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback ); } - @Override - public void onCalculateSuccess() { - - } - - @Override - public void onoCalculateFailed() { - - } - - @Override - public void onUpdateTraffic( MogoTraffic traffic ) { - - } - @Override public void onUpdateTraffic2( MogoTraffic traffic ) { @@ -816,9 +763,9 @@ public class MogoServices implements IMogoMapListener, mStatusManager.setVoiceUIShow( TAG, true ); } } else if ( ServiceConst.COMMAND_NEXT.equals( command ) ) { - onActionDown( MogoAction.Next ); + onActionDone( MogoAction.Next ); } else if ( ServiceConst.COMMAND_PREVIOUS.equals( command ) ) { - onActionDown( MogoAction.Prev ); + onActionDone( MogoAction.Prev ); } else if ( ServiceConst.COMMAND_SWITCH_CARD.equals( command ) ) { IntentHandlerFactory.getInstance().handle( mContext, command, intent ); } else if ( MogoReceiver.ACTION_ADAS_STATUS.equals( command ) ) { @@ -909,9 +856,9 @@ public class MogoServices implements IMogoMapListener, @Override public void onCmdSelected( String cmd ) { if ( TextUtils.equals( ServiceConst.CMD_UN_WAKE_PREV, cmd ) ) { - onActionDown( MogoAction.Prev ); + onActionDone( MogoAction.Prev ); } else if ( TextUtils.equals( ServiceConst.CMD_UN_WAKE_NEXT, cmd ) ) { - onActionDown( MogoAction.Next ); + onActionDone( MogoAction.Next ); } else if ( TextUtils.equals( ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, cmd ) ) { if ( mStatusManager.isMainPageOnResume() ) { mUiController.recoverLockMode(); @@ -921,11 +868,11 @@ public class MogoServices implements IMogoMapListener, } } - private void onActionDown(MogoAction action){ + private void onActionDone( MogoAction action ) { if ( !mStatusManager.isMainPageOnResume() ) { return; } - if ( mStatusManager.isADASShow() ) { + if ( mStatusManager.isV2XShow() ) { // 分发到V2X mActionManager.invoke( "V2X_UI", action ); } else { @@ -934,26 +881,6 @@ public class MogoServices implements IMogoMapListener, } } - @Override - public void onCmdAction( String speakText ) { - - } - - @Override - public void onCmdCancel( String speakText ) { - - } - - @Override - public void onSpeakEnd( String speakText ) { - - } - - @Override - public void onSpeakSelectTimeOut( String speakText ) { - - } - @Override public void onTransaction( int size ) { if ( size == 0 ) { @@ -968,6 +895,7 @@ public class MogoServices implements IMogoMapListener, MapCenterPointStrategy.setMapCenterPointByScene( mUiController, Scene.AIMLESS ); } mUiController.recoverLockMode(); + mADASController.showADAS(); } else { mUiController.showMyLocation( false ); AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_BACK, ServiceConst.CMD_BACK_WORDS, this ); 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 77024d794b..806a4d37a8 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 @@ -105,8 +105,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, // 长连接 MarkerServiceHandler.getMogoSocketManager().registerOnMessageListener( 401001, this ); - MarkerServiceHandler.getMogoCardManager().registerCardChangedListener( - "LAUNCHER_MARKER_MODULE", this ); + MarkerServiceHandler.getMogoCardManager().registerCardChangedListener( TAG, this ); MarkerServiceHandler.getActionManager().registerBizActionDoneListener( this ); } @@ -269,6 +268,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, if ( !mogoMarker.isDestroyed() ) { mogoMarker.setInfoWindowAdapter( UserDataMarkerInfoWindowAdapter.getInstance( mContext ) ); mogoMarker.showInfoWindow(); + MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus( TAG, true, false ); + MarkerServiceHandler.getMapUIController().moveToCenter( mogoMarker.getPosition() ); Logger.d( TAG, "打开info window" ); } } else { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java index cdb891aed0..ede5636b6e 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java @@ -71,6 +71,7 @@ public class MogoReceiver extends BroadcastReceiver { if (TextUtils.equals(VOICE_ACTION, action)) { String cmd = intent.getStringExtra(PARAM_COMMAND); if (!TextUtils.isEmpty(cmd)) { + Logger.d( TAG, "receive command: %s", cmd ); mMogoIntentManager.invoke(cmd, intent); } } else { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/refresh/AutoRefreshStrategy.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/refresh/AutoRefreshStrategy.java index 47d96799f4..ba15e2424f 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/refresh/AutoRefreshStrategy.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/refresh/AutoRefreshStrategy.java @@ -13,12 +13,12 @@ public class AutoRefreshStrategy { /** * 距离(米) */ - private int distance = 2_000; + private int distance = 1_000; /** * 时间间距(s) */ - private long interval = 3 * ONE_MINUTE; + private long interval = 3 * ONE_MINUTE / 6; /** * 用户打断后的延时(s)【2.0.2后不再延时】 diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java index 5a6f90560d..468c965b26 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java @@ -13,11 +13,22 @@ public interface IMogoADASController extends IProvider { /** * 打开adas */ + @Deprecated void openADAS(); /** - * 关闭adas + * 隐藏adas */ void closeADAS(); + /** + * 显示 + */ + void showADAS(); + + /** + * 关闭 + */ + void killADAS(); + } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java index c5126c1a0a..07930bc5fb 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java @@ -22,16 +22,14 @@ public interface IMogoStatusManager extends IProvider { * * @return */ + @Deprecated boolean isADASShow(); /** * v2x UI 是否在展示 - *

- * Deprecated, use {@link #isADASShow()} instead. * * @return */ - @Deprecated boolean isV2XShow(); /** @@ -119,18 +117,16 @@ public interface IMogoStatusManager extends IProvider { * @param tag 业务类型 * @param show true - 显示 false - 隐藏 */ + @Deprecated void setADASUIShow( String tag, boolean show ); /** * 设置 V2X UI 状态 *

- *

- * Deprecated, use {@link #setADASUIShow} instead. * * @param tag 业务类型 * @param show true - 显示 false - 隐藏 */ - @Deprecated void setV2XUIShow( String tag, boolean show ); /** diff --git a/services/mogo-service/build.gradle b/services/mogo-service/build.gradle index 66f2a244d6..3cd53dffe6 100644 --- a/services/mogo-service/build.gradle +++ b/services/mogo-service/build.gradle @@ -40,6 +40,7 @@ dependencies { implementation rootProject.ext.dependencies.arouter annotationProcessor rootProject.ext.dependencies.aroutercompiler + implementation rootProject.ext.dependencies.adasapi if (Boolean.valueOf(RELEASE)) { api rootProject.ext.dependencies.mogomap implementation rootProject.ext.dependencies.mogomapapi diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java index f2d6092c5e..cadd1e446f 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java @@ -3,6 +3,7 @@ package com.mogo.service.impl.adas; import android.app.Application; import android.content.Context; import android.content.Intent; +import android.os.RemoteException; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.commons.AbsMogoApplication; @@ -13,7 +14,9 @@ import com.mogo.service.impl.MogoServiceApis; import com.mogo.service.impl.singleton.SingletonsHolder; import com.mogo.service.impl.statusmanager.MogoStatusManager; import com.mogo.service.statusmanager.IMogoStatusManager; +import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; +import com.zhidao.autopilot.support.api.AutopilotServiceManage; import org.json.JSONObject; @@ -38,49 +41,71 @@ public class MogoADASController implements IMogoADASController { public static final String VAL_OPEN = "打开"; public static final String VAL_CLOSE = "关闭"; - private MogoStatusManager mStatusManager = SingletonsHolder.get( IMogoStatusManager.class ); + private IMogoStatusManager mStatusManager = SingletonsHolder.get( IMogoStatusManager.class ); @Override public void openADAS() { + showADAS(); + } - if ( mStatusManager.isADASShow() ) { - return; - } - - Logger.d( TAG, "open adas" ); - - Intent intent = new Intent( ACTION ); - intent.putExtra( PARAM_COMMAND, VAL_COMMAND ); - JSONObject object = new JSONObject(); + @Override + public void killADAS() { try { - object.put( PARAM_OBJECT, VAL_OBJECT ); - object.put( PARAM_OPERATION, VAL_OPEN ); - intent.putExtra( PARAM_DATA, object.toString() ); - sendBroadcast( intent ); + AutopilotServiceManage.getInstance().kill(); } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); + } } + @Override + public void showADAS() { + + Logger.d( TAG, "show adas" ); + + UiThreadHandler.postDelayed( () -> { + try { + if ( mStatusManager.isSearchUIShow() ) { + return; + } + if ( !mStatusManager.isMainPageOnResume() ) { + return; + } + AutopilotServiceManage.getInstance().showAdas(); + } catch ( Exception e ) { + Intent intent = new Intent( ACTION ); + intent.putExtra( PARAM_COMMAND, VAL_COMMAND ); + JSONObject object = new JSONObject(); + try { + object.put( PARAM_OBJECT, VAL_OBJECT ); + object.put( PARAM_OPERATION, VAL_OPEN ); + intent.putExtra( PARAM_DATA, object.toString() ); + sendBroadcast( intent ); + } catch ( Exception e1 ) { + Logger.e( TAG, e1, "error." ); + } + } + }, 500 ); + } + @Override public void closeADAS() { - if ( !mStatusManager.isADASShow() ) { - return; - } - Logger.d( TAG, "close adas" ); - Intent intent = new Intent( ACTION ); - intent.putExtra( PARAM_COMMAND, VAL_COMMAND ); - JSONObject object = new JSONObject(); try { - object.put( PARAM_OBJECT, VAL_OBJECT ); - object.put( PARAM_OPERATION, VAL_CLOSE ); - intent.putExtra( PARAM_DATA, object.toString() ); - sendBroadcast( intent ); + AutopilotServiceManage.getInstance().hideAdas(); } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); + Intent intent = new Intent( ACTION ); + intent.putExtra( PARAM_COMMAND, VAL_COMMAND ); + JSONObject object = new JSONObject(); + try { + object.put( PARAM_OBJECT, VAL_OBJECT ); + object.put( PARAM_OPERATION, VAL_CLOSE ); + intent.putExtra( PARAM_DATA, object.toString() ); + sendBroadcast( intent ); + } catch ( Exception e1 ) { + Logger.e( TAG, e1, "error." ); + } } } @@ -95,6 +120,6 @@ public class MogoADASController implements IMogoADASController { @Override public void init( Context context ) { - + AutopilotServiceManage.getInstance().init( context ); } } 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 2f454add44..87a3ae0491 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 @@ -4,7 +4,6 @@ import android.content.Context; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.map.MogoGeoSearch; -import com.mogo.map.MogoInitor; import com.mogo.map.MogoInputtipsSearch; import com.mogo.map.MogoLocationClient; import com.mogo.map.MogoMapUIController; @@ -88,6 +87,5 @@ public class MogoMapService implements IMogoMapService { @Override public void init( Context context ) { - MogoInitor.init( context ); } } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/singleton/SingletonsHolder.java b/services/mogo-service/src/main/java/com/mogo/service/impl/singleton/SingletonsHolder.java index 84f241d427..6f54efc813 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/singleton/SingletonsHolder.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/singleton/SingletonsHolder.java @@ -33,7 +33,7 @@ public class SingletonsHolder { sSingletons.put( IMogoStatusManager.class, new MogoStatusManager() ); } - public static < T > T get( Class clazz ) { + public static < T > T get( Class clazz ) { return ( T ) sSingletons.get( clazz ); }