diff --git a/app/build.gradle b/app/build.gradle index 515a43bb57..220945510b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { defaultConfig { minSdkVersion rootProject.ext.android.minSdkVersion targetSdkVersion rootProject.ext.android.targetSdkVersion - versionCode generateVersionCode() - versionName "${rootProject.ext.android.versionName}.${getMonthAndDay()}" + versionCode rootProject.versionCode as int + versionName rootProject.versionName applicationId rootProject.ext.android.applicationId testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -153,9 +153,6 @@ dependencies { implementation rootProject.ext.dependencies.guideshowprovider implementation rootProject.ext.dependencies.guideshow implementation rootProject.ext.dependencies.modulemedia - implementation rootProject.ext.dependencies.modulefreshnews, { - exclude group: 'com.mogo.module', module: 'module-onlinecar' - } implementation rootProject.ext.dependencies.modulepush, { exclude group: 'com.mogo.module', module: 'module-common' @@ -191,10 +188,25 @@ dependencies { } } +//android.applicationVariants.all { variant -> +// variant.outputs.all { //这里修改apk文件名 +// outputFileName = "Launcher2.0_V${android.defaultConfig.versionName}_${getCurrentDate()}_${variant.name}_${getGitCommit()}.apk" +// println outputFileName +// } +//} + android.applicationVariants.all { variant -> - variant.outputs.all { //这里修改apk文件名 - outputFileName = "Launcher2.0_V${android.defaultConfig.versionName}_${getCurrentDate()}_${variant.name}_${getGitCommit()}.apk" - println outputFileName + def buildTime = new Date().format("yyyyMMdd", TimeZone.getTimeZone("GMT+08:00")) + def flavor = variant.productFlavors.collect { it.name }.join('-') + + variant.outputs.all { output -> + outputFileName = [ + rootProject.applicationName, + "v${variant.versionName}", + buildTime, + flavor.length() > 0 ? "[${flavor}]" : "", + variant.buildType.name + ].findAll { it.length() > 0 }.join('_') << ".apk" } } diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 6ade51c351..b2c9f7f484 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -9,7 +9,6 @@ import com.alibaba.android.arouter.launcher.ARouter; import com.auto.zhidao.logsdk.CrashSystem; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.debug.DebugConfig; -import com.mogo.launcher.news.FreshNewsConstants; import com.mogo.module.adcard.AdCardConstants; import com.mogo.module.back.BackToLauncherConst; import com.mogo.module.carchatting.card.CallChatConstant; @@ -27,8 +26,6 @@ import com.mogo.utils.logger.Logger; import static com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant.PATH_AGREEMENT_FRAGMENT; import static com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant.PATH_AGREEMENT_MODULE_NAME; -import static com.mogo.module.guide.GuideConstant.PATH_GUIDE_FRAGMENT; -import static com.mogo.module.guide.GuideConstant.PATH_GUIDE_MODULE_NAME; /** * @author congtaowang @@ -58,9 +55,8 @@ public class MogoApplication extends AbsMogoApplication { MogoModulePaths.addModule(new MogoModule(AdCardConstants.TAG, AdCardConstants.MODULE_NAME)); MogoModulePaths.addModule(new MogoModule(MediaConstants.TAG, MediaConstants.MODULE_TYPE)); MogoModulePaths.addModule(new MogoModule(CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME)); - MogoModulePaths.addModule(new MogoModule(TanluConstants.TAG, TanluConstants.MODEL_NAME)); +// MogoModulePaths.addModule(new MogoModule(TanluConstants.TAG, TanluConstants.MODEL_NAME)); MogoModulePaths.addModule(new MogoModule(OnLineCarConstants.TAG, OnLineCarConstants.MODULE_NAME)); - MogoModulePaths.addModule(new MogoModule(FreshNewsConstants.TAG, FreshNewsConstants.MODULE_NAME)); MogoModulePaths.addModule(new MogoModule(V2XConst.PATH_V2X_UI, V2XConst.PATH_V2X_UI)); MogoModulePaths.addModule(new MogoModule(PushUIConstants.TAG, PushUIConstants.TAG)); diff --git a/config.gradle b/config.gradle index e1158d2fd3..291ffe3d5b 100644 --- a/config.gradle +++ b/config.gradle @@ -6,14 +6,13 @@ ext { buildToolsVersion : "29.0.2", minSdkVersion : 19, targetSdkVersion : 22, - versionName : "8.0.6", ] dependencies = [ // androidx androidxappcompat : "androidx.appcompat:appcompat:1.0.2", androidxccorektx : "androidx.core:core-ktx:1.2.0", - androidxconstraintlayout : "androidx.constraintlayout:constraintlayout:1.1.3", + androidxconstraintlayout : "androidx.constraintlayout:constraintlayout:2.0.0-alpha5", androidxmultidex : "androidx.multidex:multidex:2.0.1", androidxviewpager2 : "androidx.viewpager2:viewpager2:1.0.0", androidxrecyclerview : "androidx.recyclerview:recyclerview:1.1.0", @@ -109,7 +108,6 @@ ext { modulepush : "com.mogo.module:module-push:${MOGO_MODULE_PUSH_VERSION}", //运营位卡片 moduleadcard : "com.mogo.module:module-adcard:${MOGO_MODULE_AD_CARD_VERSION}", - modulefreshnews : "com.mogo.module:module-freshnews:${MOGO_MODULE_FRESH_NEWS_VERSION}", //统一返回键 mogomoduleback : "com.mogo.module:module-back:${MOGO_MODULE_BACK_VERSION}", mogomoduleauth : "com.mogo.module:module-authorize:${MOGO_MODULE_AUTHORIZE_VERSION}", @@ -143,5 +141,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 7e35f360fc..73a90f4ee9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,37 +24,37 @@ SNAPSHOT_REPOSITORY_URL=http://nexus.zhidaoauto.com/repository/maven-snapshots/ USERNAME=xintai PASSWORD=xintai2018 # 编译模式: false - 依赖本地版本, true - 依赖 maven 版本 -RELEASE=false +RELEASE=true # 模块版本 ## 工程内模块 -MOGO_COMMONS_VERSION=1.0.3.12 -MOGO_UTILS_VERSION=1.0.3.12 -MAP_AMAP_VERSION=1.0.3.12 -MOGO_MAP_VERSION=1.0.3.12 -MOGO_MAP_API_VERSION=1.0.3.12 -MOGO_SERVICE_VERSION=1.0.3.12 -MOGO_SERVICE_API_VERSION=1.0.3.12 -MOGO_CONNECTION_VERSION=1.0.3.12 -MOGO_MODULE_APPS_VERSION=1.0.3.12 -MOGO_MODULE_NAVI_VERSION=1.0.3.12 -MOGO_MODULE_SHARE_VERSION=1.0.3.12 -MOGO_MODULE_COMMON_VERSION=1.0.3.12 -MOGO_MODULE_MAIN_VERSION=1.0.3.12 -MOGO_MODULE_MAP_VERSION=1.0.3.12 -MOGO_MODULE_SERVICE_VERSION=1.0.3.12 -MOGO_MODULE_EXTENSIONS_VERSION=1.0.3.12 -MOGO_MODULE_SEARCH_VERSION=1.0.3.12 -MOGO_MODULE_BACK_VERSION=1.0.3.12 -MOGO_MODULE_GPS_SIMULATOR_VERSION=1.0.3.12 -MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION=1.0.3.12 -MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION=1.0.3.12 -MOGO_MODULE_AUTHORIZE_VERSION=1.0.3.12 -MOGO_MODULE_GUIDE_VERSION=1.0.3.12 +MOGO_COMMONS_VERSION=1.1.0.7 +MOGO_UTILS_VERSION=1.1.0.7 +MAP_AMAP_VERSION=1.1.0.7 +MOGO_MAP_VERSION=1.1.0.7 +MOGO_MAP_API_VERSION=1.1.0.7 +MOGO_SERVICE_VERSION=1.1.0.7 +MOGO_SERVICE_API_VERSION=1.1.0.7 +MOGO_CONNECTION_VERSION=1.1.0.7 +MOGO_MODULE_APPS_VERSION=1.1.0.7 +MOGO_MODULE_NAVI_VERSION=1.1.0.7 +MOGO_MODULE_SHARE_VERSION=1.1.0.7 +MOGO_MODULE_COMMON_VERSION=1.1.0.7 +MOGO_MODULE_MAIN_VERSION=1.1.0.7 +MOGO_MODULE_MAP_VERSION=1.1.0.7 +MOGO_MODULE_SERVICE_VERSION=1.1.0.7 +MOGO_MODULE_EXTENSIONS_VERSION=1.1.0.7 +MOGO_MODULE_SEARCH_VERSION=1.1.0.7 +MOGO_MODULE_BACK_VERSION=1.1.0.7 +MOGO_MODULE_GPS_SIMULATOR_VERSION=1.1.0.7 +MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION=1.1.0.7 +MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION=1.1.0.7 +MOGO_MODULE_AUTHORIZE_VERSION=1.1.0.7 +MOGO_MODULE_GUIDE_VERSION=1.1.0.7 ## 工程外部模块 # 探路 -MOGO_MODULE_TANLU_VERSION=1.0.5.6 +MOGO_MODULE_TANLU_VERSION=1.0.6-SNAPSHOT # 车聊聊 CARCHATTING_VERSION=1.0.4-SNAPSHOT # 车聊聊接口 @@ -66,12 +66,16 @@ MOGO_MODULE_GUIDESHOW_PROVIDER_VERSION=1.0.2-SNAPSHOT # 在线车辆F MOGO_MODULE_ONLINECAR_VERSION=1.0.3.2 # v2x -MOGO_MODULE_V2X_VERSION=1.0.6.28 +MOGO_MODULE_V2X_VERSION=1.0.7 # 媒体卡片 MOGO_MODULE_MEDIA_VERSION=1.0.4.3 # 推送 MOGO_MODULE_PUSH_VERSION=1.0.1 # 广告资源位 MOGO_MODULE_AD_CARD_VERSION=1.0.1 -# 新鲜事 -MOGO_MODULE_FRESH_NEWS_VERSION=1.0.3.4 + +## 产品库必备配置 +applicationId=com.mogo.launcer +applicationName=Launcer2.0 +versionCode=80006 +versionName=8.0.6 \ No newline at end of file diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java index 13f075f63f..341fc8b0c4 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java @@ -17,7 +17,6 @@ import android.view.animation.Interpolator; import com.amap.api.maps.AMap; import com.amap.api.maps.AMapUtils; import com.amap.api.maps.CameraUpdateFactory; -import com.amap.api.maps.LocationSource; import com.amap.api.maps.model.BitmapDescriptorFactory; import com.amap.api.maps.model.CameraPosition; import com.amap.api.maps.model.LatLng; @@ -492,7 +491,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, } @Override - public void moveToCenter( MogoLatLng latLng ) { + public void moveToCenter( MogoLatLng latLng, boolean animate ) { Logger.d( TAG, "move to center %s", latLng ); if ( latLng == null || latLng.lat == 0.0d || latLng.lng == 0.0d ) { Logger.e( TAG, "latlng = null or is illegal" ); @@ -502,7 +501,11 @@ public class AMapNaviViewWrapper implements IMogoMapView, Logger.d( TAG, Log.getStackTraceString( new Throwable() ) ); } loseLockMode(); - mMapView.getMap().moveCamera( CameraUpdateFactory.newLatLng( new LatLng( latLng.lat, latLng.lng ) ) ); + if ( animate ) { + mMapView.getMap().animateCamera( CameraUpdateFactory.newLatLng( new LatLng( latLng.lat, latLng.lng ) ) ); + } else { + mMapView.getMap().moveCamera( CameraUpdateFactory.newLatLng( new LatLng( latLng.lat, latLng.lng ) ) ); + } } @Override diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java index 175a4e2529..2e874886ae 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java @@ -85,9 +85,9 @@ public class AMapUIController implements IMogoMapUIController { } @Override - public void moveToCenter(MogoLatLng latLng) { + public void moveToCenter(MogoLatLng latLng, boolean animate) { if (mClient != null) { - mClient.moveToCenter(latLng); + mClient.moveToCenter(latLng, animate); } } 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-api/src/main/java/com/mogo/map/search/geo/MogoAoiItem.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoAoiItem.java index 957c920f60..98b4c8ef03 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoAoiItem.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoAoiItem.java @@ -96,4 +96,15 @@ public class MogoAoiItem implements Parcelable { return new MogoAoiItem[size]; } }; + + @Override + public String toString() { + return "MogoAoiItem{" + + "aoiId='" + aoiId + '\'' + + ", aoiName='" + aoiName + '\'' + + ", adCode='" + adCode + '\'' + + ", aoiCenterPoint=" + aoiCenterPoint + + ", aoiArea=" + aoiArea + + '}'; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoBusinessArea.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoBusinessArea.java index 5b04b34c93..d8e48978e1 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoBusinessArea.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoBusinessArea.java @@ -63,4 +63,12 @@ public class MogoBusinessArea implements Parcelable { return new MogoBusinessArea[size]; } }; + + @Override + public String toString() { + return "MogoBusinessArea{" + + "centerPoint=" + centerPoint + + ", name='" + name + '\'' + + '}'; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoCrossroad.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoCrossroad.java index b2899e33a4..3dcd6ea798 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoCrossroad.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoCrossroad.java @@ -105,4 +105,16 @@ public class MogoCrossroad implements Parcelable { return new MogoCrossroad[size]; } }; + + @Override + public String toString() { + return "MogoCrossroad{" + + "distance=" + distance + + ", direction='" + direction + '\'' + + ", firstRoadId='" + firstRoadId + '\'' + + ", firstRoadName='" + firstRoadName + '\'' + + ", secondRoadId='" + secondRoadId + '\'' + + ", secondRoadName='" + secondRoadName + '\'' + + '}'; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoGeocodeAddress.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoGeocodeAddress.java index ddeac51edc..f92f294de2 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoGeocodeAddress.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoGeocodeAddress.java @@ -100,4 +100,20 @@ public class MogoGeocodeAddress { public void setLevel( String level ) { this.level = level; } + + @Override + public String toString() { + return "MogoGeocodeAddress{" + + "formatAddress='" + formatAddress + '\'' + + ", province='" + province + '\'' + + ", city='" + city + '\'' + + ", district='" + district + '\'' + + ", township='" + township + '\'' + + ", neighborhood='" + neighborhood + '\'' + + ", building='" + building + '\'' + + ", adcode='" + adcode + '\'' + + ", latlng=" + latlng + + ", level='" + level + '\'' + + '}'; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoGeocodeResult.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoGeocodeResult.java index 5105908e9a..004bdda363 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoGeocodeResult.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoGeocodeResult.java @@ -20,4 +20,11 @@ public class MogoGeocodeResult { public void setAddresses( List< MogoGeocodeAddress > addresses ) { this.addresses = addresses; } + + @Override + public String toString() { + return "MogoGeocodeResult{" + + "addresses=" + addresses + + '}'; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoIndoorData.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoIndoorData.java index 263b5544ab..bae861260a 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoIndoorData.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoIndoorData.java @@ -72,4 +72,13 @@ public class MogoIndoorData implements Parcelable { return new MogoIndoorData[size]; } }; + + @Override + public String toString() { + return "MogoIndoorData{" + + "poiId='" + poiId + '\'' + + ", floor=" + floor + + ", floorName='" + floorName + '\'' + + '}'; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoPhoto.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoPhoto.java index ba393665a1..88f3b38427 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoPhoto.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoPhoto.java @@ -61,4 +61,12 @@ public class MogoPhoto implements Parcelable { return new MogoPhoto[size]; } }; + + @Override + public String toString() { + return "MogoPhoto{" + + "title='" + title + '\'' + + ", url='" + url + '\'' + + '}'; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoPoiItem.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoPoiItem.java index b378a59abc..27ed374472 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoPoiItem.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoPoiItem.java @@ -352,4 +352,38 @@ public class MogoPoiItem implements Parcelable { return new MogoPoiItem[size]; } }; + + @Override + public String toString() { + return "MogoPoiItem{" + + "businessArea='" + businessArea + '\'' + + ", adName='" + adName + '\'' + + ", cityName='" + cityName + '\'' + + ", provinceName='" + provinceName + '\'' + + ", typeDes='" + typeDes + '\'' + + ", tel='" + tel + '\'' + + ", adCode='" + adCode + '\'' + + ", poiId='" + poiId + '\'' + + ", distance=" + distance + + ", title='" + title + '\'' + + ", snippet='" + snippet + '\'' + + ", point=" + point + + ", cityCode='" + cityCode + '\'' + + ", enter=" + enter + + ", exit=" + exit + + ", website='" + website + '\'' + + ", postcode='" + postcode + '\'' + + ", email='" + email + '\'' + + ", direction='" + direction + '\'' + + ", indoorMap=" + indoorMap + + ", provinceCode='" + provinceCode + '\'' + + ", parkingType='" + parkingType + '\'' + + ", subPois=" + subPois + + ", indoorData=" + indoorData + + ", photos=" + photos + + ", poiExtension=" + poiExtension + + ", typeCode='" + typeCode + '\'' + + ", shopID='" + shopID + '\'' + + '}'; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoRegeocodeAddress.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoRegeocodeAddress.java index a15f7eb132..2026ac051a 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoRegeocodeAddress.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoRegeocodeAddress.java @@ -228,4 +228,27 @@ public class MogoRegeocodeAddress implements Parcelable { return new MogoRegeocodeAddress[size]; } }; + + @Override + public String toString() { + return "MogoRegeocodeAddress{" + + "formatAddress='" + formatAddress + '\'' + + ", province='" + province + '\'' + + ", city='" + city + '\'' + + ", cityCode='" + cityCode + '\'' + + ", adCode='" + adCode + '\'' + + ", district='" + district + '\'' + + ", township='" + township + '\'' + + ", neighborhood='" + neighborhood + '\'' + + ", building='" + building + '\'' + + ", streetNumber=" + streetNumber + + ", roads=" + roads + + ", pois=" + pois + + ", crossroads=" + crossroads + + ", businessAreas=" + businessAreas + + ", aois=" + aois + + ", towncode='" + towncode + '\'' + + ", country='" + country + '\'' + + '}'; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoRegeocodeResult.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoRegeocodeResult.java index d5f83828b4..1c2bcca713 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoRegeocodeResult.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoRegeocodeResult.java @@ -50,4 +50,11 @@ public class MogoRegeocodeResult implements Parcelable { return new MogoRegeocodeResult[size]; } }; + + @Override + public String toString() { + return "MogoRegeocodeResult{" + + "regeocodeAddress=" + regeocodeAddress + + '}'; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoRegeocodeRoad.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoRegeocodeRoad.java index 6ec6a29d0b..59b32cbcf2 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoRegeocodeRoad.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoRegeocodeRoad.java @@ -95,4 +95,15 @@ public class MogoRegeocodeRoad implements Parcelable { return new MogoRegeocodeRoad[size]; } }; + + @Override + public String toString() { + return "MogoRegeocodeRoad{" + + "id='" + id + '\'' + + ", name='" + name + '\'' + + ", distance=" + distance + + ", direction='" + direction + '\'' + + ", point=" + point + + '}'; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoStreetNumber.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoStreetNumber.java index 1d3f953c7c..c026129e36 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoStreetNumber.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoStreetNumber.java @@ -95,4 +95,15 @@ public class MogoStreetNumber implements Parcelable { return new MogoStreetNumber[size]; } }; + + @Override + public String toString() { + return "MogoStreetNumber{" + + "street='" + street + '\'' + + ", number='" + number + '\'' + + ", latLonPoint=" + latLonPoint + + ", direction='" + direction + '\'' + + ", distance=" + distance + + '}'; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoSubPoiItem.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoSubPoiItem.java index b3796963d6..b43ff95317 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoSubPoiItem.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/MogoSubPoiItem.java @@ -118,4 +118,17 @@ public class MogoSubPoiItem implements Parcelable { return new MogoSubPoiItem[size]; } }; + + @Override + public String toString() { + return "MogoSubPoiItem{" + + "poiId='" + poiId + '\'' + + ", title='" + title + '\'' + + ", subName='" + subName + '\'' + + ", distance=" + distance + + ", point=" + point + + ", snippet='" + snippet + '\'' + + ", subTypeDes='" + subTypeDes + '\'' + + '}'; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/poisearch/query/MogoPoiSearchQuery.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/poisearch/query/MogoPoiSearchQuery.java index 27076edba2..b3b539fca3 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/poisearch/query/MogoPoiSearchQuery.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/poisearch/query/MogoPoiSearchQuery.java @@ -21,7 +21,7 @@ public class MogoPoiSearchQuery implements Parcelable { private int pageSize; private boolean isCityLimit; private boolean isSubPois; - private boolean isDistanceSort; + private boolean isDistanceSort = true; private MogoLatLng location; /** diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java index 73c3f244b1..419f4cc00a 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java @@ -50,7 +50,14 @@ public interface IMogoMapUIController { /** * 将地图移动至当前位置 */ - void moveToCenter( MogoLatLng latLng ); + default void moveToCenter( MogoLatLng latLng ){ + moveToCenter(latLng, false); + } + + /** + * 将地图移动至当前位置 + */ + void moveToCenter( MogoLatLng latLng, boolean animate ); /** * 显示我的位置 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/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java index 89cdb35eb8..f4642f2440 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java @@ -79,9 +79,9 @@ public class MogoMapUIController implements IMogoMapUIController { @Override - public void moveToCenter(MogoLatLng latLng) { + public void moveToCenter(MogoLatLng latLng, boolean animate) { if (mDelegate != null) { - mDelegate.moveToCenter(latLng); + mDelegate.moveToCenter(latLng, animate); } } 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..f3d240be7b 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 @@ -2,36 +2,23 @@ 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.commons.voice.AIAssist; 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.anim.AnimWrapper; +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 +27,18 @@ 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 ImageView mAIAssist; + private View mAIAssistContainer; + private AnimWrapper mAnim = new AnimWrapper(); - private IMogoAnalytics mMogoAnalytics; -// private DiscreteScrollView scroller; - - private static int CARD_SIZE = 6; - private AppIndicatorAdapter appIndicatorAdapter; + private BaseAppLauncher mLauncher; @Override protected int getLayoutId() { @@ -70,227 +48,87 @@ public class AppNavigatorFragment extends MvpFragment { + mLauncher.launch( getContext(), data ); + } ); + mNavigatorAppsList.setAdapter( mAppIndicatorAdapter ); -// 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()); + mAIAssistContainer = findViewById( R.id.module_apps_id_ai_assist_container ); + mAIAssist = findViewById( R.id.module_apps_id_ai_assist ); + mAnim.initAnim( mAIAssist ); + mAIAssist.setOnClickListener( view -> { + AIAssist.startAssistant( getContext() ); + AppServiceHandler.getApis().getAnalyticsApi().track( "Launcher_xiaozhi_Click", null ); + } ); + mAIAssistContainer.setOnClickListener( view -> { + mAIAssist.performClick(); + } ); - 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); + AppServiceHandler.getApis().getFragmentManagerApi().addMainFragmentStackTransactionListener( size -> { + // 主页 fragment 栈变化的时候,改变动画状态 + if ( size == 0 ) { + mAnim.start(); + } else { + mAnim.stop(); } - }); - -// 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) { + @Override + public void hideNavigationEntrance() { + mAppIndicatorAdapter.setDatas( NavigatorApps.getAppsWithoutNavigation() ); + } + @Override + public void showNavigationEntrance() { + mAppIndicatorAdapter.setDatas( NavigatorApps.getApps() ); + } + + @Override + public void onResume() { + super.onResume(); + mAnim.start(); + } + + @Override + public void onPause() { + super.onPause(); + mAnim.stop(); } @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..24119d559c 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 @@ -9,6 +9,7 @@ import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.Presenter; import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.IMogoVoiceCmdCallBack; +import com.mogo.map.navi.IMogoNaviListener2; import com.mogo.module.apps.model.AppsModel; import com.mogo.module.apps.utils.LaunchUtils; import com.mogo.service.MogoServicePaths; @@ -26,7 +27,9 @@ import org.json.JSONObject; *

* 描述 */ -public class AppNavigatorPresenter extends Presenter< AppNavigatorView > implements IMogoIntentListener, IMogoVoiceCmdCallBack { +public class AppNavigatorPresenter extends Presenter< AppNavigatorView > implements IMogoIntentListener, + IMogoVoiceCmdCallBack, + IMogoNaviListener2 { private static final String TAG = "AppNavigatorPresenter"; @@ -40,8 +43,9 @@ 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(); + AppServiceHandler.getApis().getRegisterCenterApi().registerMogoNaviListener( TAG, this ); // 预加载应用列表,空间换时间 AppsModel.getInstance( getContext() ).load( null ); } @@ -71,6 +75,11 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme JSONObject object = new JSONObject( intent.getStringExtra( "data" ) ); String app = object.optString( "object" ); String operation = object.optString( "operation" ); + + if( !AppsConst.OBJECT_ADAS.equals( app ) ){ + AppServiceHandler.getApis().getAdasControllerApi().closeADAS(); + } + if ( AppsConst.OBJECT_ALL_APPS.equals( app ) ) { if ( AppsConst.OPERATION_OPEN.equals( operation ) ) { mView.openAppsPanel(); @@ -105,26 +114,6 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme } } - @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 onDestroy( @NonNull LifecycleOwner owner ) { if ( mIntentManager != null ) { @@ -132,4 +121,14 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme } super.onDestroy( owner ); } + + @Override + public void onStartNavi() { + mView.hideNavigationEntrance(); + } + + @Override + public void onStopNavi() { + mView.showNavigationEntrance(); + } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorView.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorView.java index 00e75e1009..f67673cb2c 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorView.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorView.java @@ -15,4 +15,8 @@ public interface AppNavigatorView extends IView { * 打开全部应用 */ void openAppsPanel(); + + void hideNavigationEntrance(); + + void showNavigationEntrance(); } 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/AppsConst.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsConst.java index 5809924c22..2c8ca3d7ab 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsConst.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsConst.java @@ -25,6 +25,7 @@ public class AppsConst { public static final String OBJECT_ALL_APPS = "全部应用"; public static final String OBJECT_FAST_SETTINGS = "快捷设置"; + public static final String OBJECT_ADAS = "辅助驾驶"; public static final String OPERATION_OPEN = "打开"; public static final String OPERATION_CLOSE = "关闭"; diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java index 9e7fc0f6ce..ed3de2b4a8 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java @@ -50,7 +50,7 @@ public class AppsFragment extends MvpFragment< AppsView, AppsPresenter > impleme mExit.setOnClickListener( view -> { if ( getActivity() != null ) { getActivity().finish(); - getActivity().overridePendingTransition( R.anim.module_apps_anim_enter, R.anim.module_apps_anim_exit); + getActivity().overridePendingTransition( 0, R.anim.module_apps_anim_exit); } } ); // mAppsList = findViewById( R.id.module_apps_id_apps ); 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/AppsListActivity.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java index 82c116ec6f..d72b53e10a 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java @@ -2,9 +2,11 @@ package com.mogo.module.apps; import android.app.Activity; import android.content.Intent; +import android.os.Bundle; import android.view.View; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.alibaba.android.arouter.launcher.ARouter; import com.google.android.material.bottomsheet.BottomSheetBehavior; @@ -27,7 +29,12 @@ public class AppsListActivity extends MvpActivity< AppsListView, AppsListPresent public static void start( Activity context ) { Intent starter = new Intent( context, AppsListActivity.class ); context.startActivity( starter ); - context.overridePendingTransition( R.anim.module_apps_anim_enter, R.anim.module_apps_anim_exit); + } + + @Override + protected void onCreate( @Nullable Bundle savedInstanceState ) { + overridePendingTransition( R.anim.module_apps_anim_enter, 0); + super.onCreate( savedInstanceState ); } @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..d7705da71e 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); - // 添加介绍入口 - 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)); +// 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 ) ); + 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-extensions/src/main/java/com/mogo/module/extensions/anim/Anim.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/Anim.java similarity index 76% rename from modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/Anim.java rename to modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/Anim.java index 85717028df..e98e07ee8a 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/Anim.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/Anim.java @@ -1,4 +1,4 @@ -package com.mogo.module.extensions.anim; +package com.mogo.module.apps.anim; /** * @author congtaowang diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/AnimRes.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/AnimRes.java similarity index 97% rename from modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/AnimRes.java rename to modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/AnimRes.java index 13628228da..e579d0658a 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/AnimRes.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/AnimRes.java @@ -1,6 +1,7 @@ -package com.mogo.module.extensions.anim; +package com.mogo.module.apps.anim; -import com.mogo.module.extensions.R; + +import com.mogo.module.apps.R; /** * @author congtaowang diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/AnimWrapper.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/AnimWrapper.java similarity index 95% rename from modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/AnimWrapper.java rename to modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/AnimWrapper.java index 3ff87e8e4e..bf38719907 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/AnimWrapper.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/AnimWrapper.java @@ -1,10 +1,10 @@ -package com.mogo.module.extensions.anim; +package com.mogo.module.apps.anim; import android.graphics.drawable.AnimationDrawable; import android.widget.ImageView; +import com.mogo.module.apps.R; import com.mogo.module.common.utils.CarSeries; -import com.mogo.module.extensions.R; import com.mogo.utils.ThreadPoolService; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/JSurfaceView.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/JSurfaceView.java similarity index 98% rename from modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/JSurfaceView.java rename to modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/JSurfaceView.java index 5d89ecdddc..b70218743b 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/JSurfaceView.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/JSurfaceView.java @@ -1,4 +1,4 @@ -package com.mogo.module.extensions.anim; +package com.mogo.module.apps.anim; import android.content.Context; import android.graphics.Bitmap; @@ -13,7 +13,6 @@ import android.util.AttributeSet; import android.view.SurfaceHolder; import android.view.SurfaceView; -import com.mogo.utils.ThreadPoolService; import com.mogo.utils.logger.Logger; import java.lang.ref.WeakReference; diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/KitkatAnim.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/KitkatAnim.java similarity index 83% rename from modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/KitkatAnim.java rename to modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/KitkatAnim.java index 9043265a2f..2f3f864367 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/KitkatAnim.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/KitkatAnim.java @@ -1,4 +1,4 @@ -package com.mogo.module.extensions.anim; +package com.mogo.module.apps.anim; /** * @author congtaowang diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/OthersAnim.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/OthersAnim.java similarity index 93% rename from modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/OthersAnim.java rename to modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/OthersAnim.java index 57adffda3a..13156b1e7c 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/OthersAnim.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/OthersAnim.java @@ -1,4 +1,4 @@ -package com.mogo.module.extensions.anim; +package com.mogo.module.apps.anim; import android.graphics.drawable.AnimationDrawable; 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..83ed40c2d8 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,9 @@ public class AppLauncher extends BaseAppLauncher { @Override public void launch( Context context, AppInfo appInfo ) { try { + if ( LaunchUtils.getLaunchIntentForPackage( context, appInfo.getPackageName() ) != null ) { + 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/CardAppLauncher.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/CardAppLauncher.java index fb0906f4c4..117dd06cb8 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/CardAppLauncher.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/CardAppLauncher.java @@ -35,13 +35,8 @@ public class CardAppLauncher extends BaseAppLauncher { @Override public void launch( Context context, AppInfo appInfo ) { - if ( sCardApps.containsKey( appInfo.getPackageName() ) ) { - mCardManager.switch2( sCardApps.get( appInfo.getPackageName() ) ); - mAppsPresenter.exit(); - } else { - if ( getNext() != null ) { - getNext().launch( context, appInfo ); - } + if ( getNext() != null ) { + getNext().launch( context, appInfo ); } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/GuideShowLauncher.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/GuideShowLauncher.java index 88e5068c61..fea3414ea7 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/GuideShowLauncher.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/GuideShowLauncher.java @@ -1,16 +1,9 @@ package com.mogo.module.apps.applaunch; -import android.app.Activity; import android.content.Context; -import com.mogo.commons.voice.AIAssist; import com.mogo.map.navi.IMogoNavi; -import com.mogo.module.apps.AppServiceHandler; -import com.mogo.module.apps.R; import com.mogo.module.apps.model.AppInfo; -import com.mogo.utils.logger.Logger; - -import kotlin.Unit; public class GuideShowLauncher extends BaseAppLauncher { @@ -25,19 +18,7 @@ public class GuideShowLauncher extends BaseAppLauncher { @Override public void launch(Context context, AppInfo appInfo) { - if (appInfo != null && APP_INFO_NAME_GUIDE_SHOW.equals(appInfo.getName())) { - if ( mNavi != null && !mNavi.isNaviing()) { - AppServiceHandler.getMogoGuideShow().playGuideVideo((Activity) context, (s) -> { - Logger.d(TAG, s); - return Unit.INSTANCE; - }); - } else { - AIAssist.getInstance(context).speakTTSVoice(context.getString(R.string.module_apps_str_guide_warning)); - processChain(context,appInfo); - } - } else { - processChain(context, appInfo); - } + processChain(context, appInfo); } private void processChain(Context context, AppInfo appInfo) { 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/AppEnum.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java index 7837c2cd77..b0ad31e2b6 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java @@ -19,11 +19,11 @@ public enum AppEnum { QQMusic( "QQ音乐", "com.pvetec.musics", R.drawable.module_apps_ic_qq_music ), //"车聊聊", - Im( "车聊聊", "com.zhidao.imdemo", R.drawable.module_apps_ic_im ), +// Im( "车聊聊", "com.zhidao.imdemo", R.drawable.module_apps_ic_im ), //"探路", - RoadCondition( "探路", "com.zhidao.roadcondition", R.drawable.module_apps_ic_road_condition ), - RoadConditionSlit( "探路", "com.zhidao.roadcondition.split", R.drawable.module_apps_ic_road_condition ), +// RoadCondition( "探路", "com.zhidao.roadcondition", R.drawable.module_apps_ic_road_condition ), +// RoadConditionSlit( "探路", "com.zhidao.roadcondition.split", R.drawable.module_apps_ic_road_condition ), //"福利", Welfare( "福利", "com.zhidaohulian.welfare.car", R.drawable.module_apps_ic_welfare ), 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..1b64ff1bb8 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,27 @@ 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 AppInfo app = new AppInfo( "导航", "com.mogo.launcher.navi.search", "", 0, null, R.drawable.module_apps_ic_navigator_navi ); + private static AppInfo app_ = new AppInfo( "导航", "com.mogo.launcher.navi.search", "", 0, null, R.drawable.module_apps_ic_navigator_navi_disable ); + private static AppInfo app2 = new AppInfo( "音乐", "com.pvetec.musics", "", 0, null, R.drawable.module_apps_ic_navigator_media ); + private static AppInfo app3 = new AppInfo( "个人中心", "com.zhidao.auto.personal", "", 0, null, R.drawable.module_apps_ic_navigator_personcenter ); + private static AppInfo app4 = new AppInfo( "全部应用", "com.mogo.launcher.applist", "", 0, null, R.drawable.module_apps_ic_navigator_applist ); + + public static List< AppInfo > getApps() { + List< AppInfo > sApps = new ArrayList<>(); + sApps.add( app ); + sApps.add( app2 ); + sApps.add( app3 ); + sApps.add( app4 ); + return sApps; } -// 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 > getAppsWithoutNavigation() { + List< AppInfo > sApps = new ArrayList<>(); + sApps.add( app_ ); + sApps.add( app2 ); + sApps.add( app3 ); + sApps.add( app4 ); + return sApps; + } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/receiver/AppInstallReceiver.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/receiver/AppInstallReceiver.java index e3e599243f..1ea5fa4216 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/receiver/AppInstallReceiver.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/receiver/AppInstallReceiver.java @@ -4,7 +4,9 @@ package com.mogo.module.apps.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.text.TextUtils; +import com.mogo.module.apps.AppServiceHandler; import com.mogo.module.apps.model.AppsModel; public class AppInstallReceiver extends BroadcastReceiver { @@ -14,6 +16,9 @@ public class AppInstallReceiver extends BroadcastReceiver { if ( intent.getAction().equals( Intent.ACTION_PACKAGE_ADDED ) ) { String packageName = intent.getData().getSchemeSpecificPart(); AppsModel.getInstance( context ).appAdded( packageName ); + if ( TextUtils.equals( packageName, "com.zhidao.autopilot" ) ) { + AppServiceHandler.getApis().getAdasControllerApi().showADAS(); + } } if ( intent.getAction().equals( Intent.ACTION_PACKAGE_REMOVED ) ) { String packageName = intent.getData().getSchemeSpecificPart(); @@ -21,6 +26,9 @@ public class AppInstallReceiver extends BroadcastReceiver { } if ( intent.getAction().equals( Intent.ACTION_PACKAGE_REPLACED ) ) { String packageName = intent.getData().getSchemeSpecificPart(); + if ( TextUtils.equals( packageName, "com.zhidao.autopilot" ) ) { + AppServiceHandler.getApis().getAdasControllerApi().showADAS(); + } } if ( intent.getAction().equals( Intent.ACTION_PACKAGE_CHANGED ) ) { String packageName = intent.getData().getSchemeSpecificPart(); 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/java/com/mogo/module/apps/utils/LaunchUtils.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/utils/LaunchUtils.java index b328070501..1e704842d2 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/utils/LaunchUtils.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/utils/LaunchUtils.java @@ -20,9 +20,13 @@ public class LaunchUtils { * @param context * @param pkg 包名 */ - public static void launchByPkg( Context context, String pkg ) throws Exception{ - Intent intent = context.getPackageManager().getLaunchIntentForPackage( pkg ); + public static void launchByPkg( Context context, String pkg ) throws Exception { + Intent intent = getLaunchIntentForPackage( context, pkg ); intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK ); context.startActivity( intent ); } + + public static Intent getLaunchIntentForPackage( Context context, String pkg ) { + return context.getPackageManager().getLaunchIntentForPackage( pkg ); + } } diff --git a/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_applist.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_applist.png new file mode 100644 index 0000000000..f884758d3d Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_applist.png differ diff --git a/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_media.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_media.png new file mode 100644 index 0000000000..d9f6df313d Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_media.png differ diff --git a/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_navi.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_navi.png new file mode 100644 index 0000000000..2401ce7c2a Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_navi.png differ diff --git a/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_navi_disable.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_navi_disable.png new file mode 100644 index 0000000000..3df9f14026 Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_navi_disable.png differ diff --git a/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_personcenter.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_personcenter.png new file mode 100644 index 0000000000..df3ba081fe Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_navigator_personcenter.png differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00000.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00000.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00000.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00000.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00001.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00001.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00001.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00001.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00002.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00002.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00002.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00002.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00003.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00003.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00003.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00003.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00004.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00004.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00004.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00004.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00005.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00005.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00005.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00005.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00006.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00006.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00006.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00006.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00007.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00007.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00007.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00007.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00008.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00008.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00008.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00008.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00009.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00009.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00009.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00009.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00010.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00010.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00010.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00010.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00011.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00011.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00011.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00011.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00012.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00012.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00012.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00012.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00013.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00013.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00013.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00013.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00014.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00014.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00014.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00014.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00015.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00015.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00015.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00015.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00016.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00016.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00016.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00016.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00017.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00017.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00017.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00017.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00018.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00018.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00018.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00018.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00019.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00019.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00019.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00019.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00020.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00020.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00020.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00020.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00021.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00021.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00021.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00021.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00022.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00022.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00022.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00022.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00023.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00023.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00023.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00023.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00024.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00024.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00024.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00024.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00025.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00025.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00025.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00025.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00026.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00026.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00026.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00026.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00027.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00027.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00027.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00027.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00028.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00028.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00028.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00028.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00029.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00029.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00029.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00029.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00030.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00030.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00030.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00030.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00031.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00031.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00031.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00031.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00032.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00032.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00032.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00032.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00033.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00033.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00033.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00033.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00034.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00034.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00034.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00034.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00035.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00035.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00035.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00035.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00036.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00036.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00036.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00036.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00037.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00037.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00037.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00037.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00038.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00038.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00038.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00038.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00039.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00039.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00039.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00039.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00040.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00040.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00040.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00040.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00041.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00041.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00041.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00041.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00042.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00042.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00042.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00042.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00043.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00043.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00043.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00043.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00044.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00044.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00044.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00044.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00045.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00045.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00045.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00045.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00046.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00046.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00046.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00046.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00047.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00047.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00047.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00047.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00048.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00048.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00048.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00048.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00049.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00049.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00049.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00049.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00050.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00050.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00050.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00050.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00051.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00051.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00051.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00051.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00052.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00052.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00052.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00052.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00053.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00053.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00053.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00053.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00054.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00054.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00054.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00054.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00055.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00055.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00055.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00055.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00056.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00056.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00056.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00056.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00057.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00057.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00057.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00057.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00058.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00058.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00058.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00058.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00059.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00059.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00059.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00059.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00060.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00060.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00060.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00060.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00061.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00061.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00061.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00061.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00062.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00062.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00062.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00062.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00063.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00063.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00063.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00063.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00064.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00064.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00064.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00064.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00065.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00065.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00065.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00065.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00066.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00066.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00066.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00066.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00067.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00067.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-ldpi/mogo_tts_icon_00067.png rename to modules/mogo-module-apps/src/main/res/drawable-ldpi/mogo_tts_icon_00067.png diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist.png new file mode 100755 index 0000000000..45e7c7fc5e Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist.png differ diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist_bkg.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist_bkg.png new file mode 100644 index 0000000000..e86c3454df Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist_bkg.png differ diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_applist.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_applist.png new file mode 100755 index 0000000000..b95bc4576f Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_applist.png differ diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_media.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_media.png new file mode 100755 index 0000000000..bcfdb9cfa9 Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_media.png differ diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_navi.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_navi.png new file mode 100755 index 0000000000..deee86ed15 Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_navi.png differ diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_navi_disable.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_navi_disable.png new file mode 100644 index 0000000000..6a00c94c9d Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_navi_disable.png differ diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_personcenter.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_personcenter.png new file mode 100755 index 0000000000..f6ad6f732a Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_personcenter.png differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00000.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00000.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00000.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00000.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00001.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00001.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00001.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00001.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00002.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00002.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00002.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00002.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00003.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00003.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00003.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00003.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00004.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00004.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00004.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00004.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00005.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00005.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00005.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00005.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00006.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00006.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00006.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00006.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00007.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00007.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00007.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00007.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00008.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00008.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00008.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00008.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00009.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00009.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00009.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00009.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00010.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00010.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00010.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00010.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00011.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00011.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00011.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00011.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00012.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00012.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00012.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00012.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00013.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00013.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00013.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00013.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00014.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00014.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00014.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00014.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00015.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00015.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00015.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00015.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00016.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00016.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00016.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00016.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00017.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00017.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00017.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00017.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00018.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00018.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00018.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00018.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00019.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00019.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00019.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00019.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00020.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00020.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00020.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00020.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00021.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00021.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00021.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00021.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00022.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00022.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00022.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00022.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00023.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00023.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00023.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00023.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00024.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00024.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00024.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00024.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00025.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00025.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00025.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00025.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00026.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00026.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00026.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00026.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00027.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00027.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00027.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00027.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00028.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00028.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00028.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00028.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00029.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00029.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00029.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00029.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00030.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00030.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00030.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00030.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00031.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00031.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00031.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00031.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00032.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00032.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00032.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00032.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00033.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00033.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00033.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00033.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00034.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00034.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00034.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00034.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00035.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00035.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00035.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00035.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00036.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00036.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00036.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00036.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00037.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00037.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00037.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00037.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00038.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00038.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00038.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00038.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00039.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00039.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00039.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00039.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00040.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00040.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00040.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00040.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00041.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00041.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00041.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00041.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00042.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00042.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00042.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00042.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00043.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00043.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00043.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00043.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00044.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00044.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00044.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00044.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00045.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00045.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00045.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00045.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00046.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00046.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00046.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00046.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00047.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00047.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00047.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00047.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00048.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00048.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00048.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00048.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00049.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00049.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00049.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00049.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00050.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00050.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00050.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00050.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00051.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00051.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00051.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00051.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00052.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00052.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00052.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00052.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00053.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00053.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00053.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00053.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00054.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00054.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00054.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00054.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00055.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00055.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00055.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00055.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00056.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00056.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00056.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00056.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00057.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00057.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00057.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00057.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00058.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00058.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00058.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00058.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00059.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00059.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00059.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00059.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00060.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00060.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00060.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00060.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00061.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00061.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00061.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00061.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00062.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00062.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00062.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00062.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00063.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00063.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00063.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00063.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00064.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00064.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00064.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00064.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00065.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00065.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00065.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00065.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00066.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00066.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00066.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00066.png diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00067.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00067.png similarity index 100% rename from modules/mogo-module-extensions/src/main/res/drawable-xhdpi/mogo_tts_icon_00067.png rename to modules/mogo-module-apps/src/main/res/drawable-xhdpi/mogo_tts_icon_00067.png 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..6129c52c1e 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,33 @@ + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="wrap_content" + android:layout_height="match_parent"> - - + + + - - - + \ 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..3e6c2c2668 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 @@ -1,24 +1,17 @@ + + - - + android:layout_width="@dimen/module_apps_navigator_icon_width" + android:layout_height="@dimen/module_apps_navigator_icon_width" + android:scaleType="fitXY" /> \ No newline at end of file diff --git a/modules/mogo-module-apps/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-apps/src/main/res/values-ldpi/dimens.xml index 63bacfaa26..5b12d6e39c 100644 --- a/modules/mogo-module-apps/src/main/res/values-ldpi/dimens.xml +++ b/modules/mogo-module-apps/src/main/res/values-ldpi/dimens.xml @@ -20,4 +20,10 @@ 18px 50px 50px + + 78px + 78px + 17px + 78px + 78px \ No newline at end of file diff --git a/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml index 2d59d27b6e..993c7c44b2 100644 --- a/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml @@ -20,4 +20,10 @@ 35px 94px 94px + + 140px + 140px + 30px + 120px + 120px \ No newline at end of file diff --git a/modules/mogo-module-apps/src/main/res/values/dimens.xml b/modules/mogo-module-apps/src/main/res/values/dimens.xml index c534a52e39..b31ac60e8f 100644 --- a/modules/mogo-module-apps/src/main/res/values/dimens.xml +++ b/modules/mogo-module-apps/src/main/res/values/dimens.xml @@ -20,4 +20,10 @@ 37px 120px 120px + + 140px + 140px + 30px + 120px + 120px \ 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..20818c844d 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,22 +25,21 @@ 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() { - if ( mFragmentManager != null ) { - mFragmentManager.clearAll(); - } - - if ( mStatusManager != null ) { - if ( mStatusManager.isMainPageOnResume() ) { - return; + if ( mStatusManager.isMainPageOnResume() ) { + if ( mStatusManager.isSearchUIShow() ) { + mFragmentManager.clearAll(); } + return; } Logger.d( TAG, "返回桌面" ); @@ -72,7 +72,11 @@ public class BackToMainHomeManager { params.x = AbsMogoApplication.getApp().getResources().getDimensionPixelOffset( R.dimen.module_back_main_home_icon_left ); params.y = AbsMogoApplication.getApp().getResources().getDimensionPixelOffset( R.dimen.module_back_main_home_icon_top ); params.gravity = Gravity.LEFT | Gravity.CENTER; - params.type = getFitWindowParamsType(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + params.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; + } else { + params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; + } params.format = PixelFormat.RGBA_8888; params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; windowManager.addView( mBackView, params ); @@ -83,18 +87,4 @@ public class BackToMainHomeManager { WindowManagerViewHelper.removeView( mBackView ); } - private static int getFitWindowParamsType() { - int type; - if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1 ) { - // Need request permission. - type = WindowManager.LayoutParams.TYPE_PHONE; - } else if ( Build.MODEL.equalsIgnoreCase( "MI 5" ) ) { - // MI 5 phone not display crawler dot in android 7.0 - type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; - } else { - // It's will be dismissed automatically 3s after showing in Android 25. - type = WindowManager.LayoutParams.TYPE_TOAST; - } - return type; - } } diff --git a/modules/mogo-module-common/build.gradle b/modules/mogo-module-common/build.gradle index 6b8c0ae9c3..c3f39b9c50 100644 --- a/modules/mogo-module-common/build.gradle +++ b/modules/mogo-module-common/build.gradle @@ -31,7 +31,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation rootProject.ext.dependencies.androidxappcompat implementation rootProject.ext.dependencies.androidxrecyclerview - + implementation rootProject.ext.dependencies.androidxconstraintlayout if (Boolean.valueOf(RELEASE)) { api rootProject.ext.dependencies.mogomap api rootProject.ext.dependencies.mogomapapi diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/dialog/WMDialog.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/dialog/WMDialog.java new file mode 100644 index 0000000000..9dc367585c --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/dialog/WMDialog.java @@ -0,0 +1,139 @@ +package com.mogo.module.common.dialog; + +import android.content.Context; +import android.content.DialogInterface; +import android.widget.TextView; + +import androidx.annotation.StringRes; + +import com.mogo.module.common.R; +import com.mogo.module.common.wm.WindowManagerView; + +/** + * @author congtaowang + * @since 2020-04-24 + *

+ * 显示在最上层的对话框 + */ +public class WMDialog implements DialogInterface { + + private WMDialogParams mParams; + private WindowManagerView mWindowManagerView; + + private WMDialog( WMDialogParams params ) { + this.mParams = params; + mWindowManagerView = new WindowManagerView.Builder( mParams.mContext ).contentView( R.layout.module_commons_layout_wm_dialog ).build(); + initViews(); + } + + public void show() { + mWindowManagerView.show(); + } + + private void initViews() { + TextView ok = mWindowManagerView.findViewById( R.id.module_commons_wm_dialog_button_ok ); + TextView cancel = mWindowManagerView.findViewById( R.id.module_commons_wm_dialog_button_cancel ); + TextView content = mWindowManagerView.findViewById( R.id.module_commons_wm_dialog_content ); + + ok.setText( mParams.mOkButtonText ); + if ( mParams.mOnOkButtonClickListener != null ) { + ok.setOnClickListener( view -> { + if ( mParams.mOnOkButtonClickListener != null ) { + mParams.mOnOkButtonClickListener.onClick( WMDialog.this, DialogInterface.BUTTON_POSITIVE ); + } + } ); + } + cancel.setText( mParams.mCancelButtonText ); + if ( mParams.mOnCancelButtonClickListener != null ) { + cancel.setOnClickListener( view -> { + if ( mParams.mOnCancelButtonClickListener != null ) { + mParams.mOnCancelButtonClickListener.onClick( WMDialog.this, DialogInterface.BUTTON_NEGATIVE ); + } + } ); + } + + content.setText( mParams.mContent ); + } + + @Override + public void cancel() { + dismiss(); + } + + @Override + public void dismiss() { + mWindowManagerView.dismiss(); + } + + public boolean isShowing() { + return mWindowManagerView.isShowing(); + } + + public static class Builder { + + private Context mContext; + private WMDialogParams mParams; + + public Builder( Context context ) { + this.mContext = context; + mParams = new WMDialogParams(); + mParams.mContext = context; + } + + public Builder setContent( CharSequence content ) { + mParams.mContent = content; + return this; + } + + public Builder setContent( @StringRes int content ) { + mParams.mContent = mContext.getString( content ); + return this; + } + + public Builder setOkButton( CharSequence buttonText, OnClickListener listener ) { + mParams.mOkButtonText = buttonText; + mParams.mOnOkButtonClickListener = listener; + return this; + } + + public Builder setOkButton( @StringRes int buttonText, OnClickListener listener ) { + mParams.mOkButtonText = mContext.getText( buttonText ); + mParams.mOnOkButtonClickListener = listener; + return this; + } + + public Builder setCancelButton( CharSequence buttonText, OnClickListener listener ) { + mParams.mCancelButtonText = buttonText; + mParams.mOnCancelButtonClickListener = listener; + return this; + } + + public Builder setCancelButton( @StringRes int buttonText, OnClickListener listener ) { + mParams.mCancelButtonText = mContext.getText( buttonText ); + mParams.mOnCancelButtonClickListener = listener; + return this; + } + + public Builder setOnDialogDismissListener( OnDismissListener onDialogDismissListener ) { + mParams.mOnDialogDismissListener = onDialogDismissListener; + return this; + } + + public WMDialog build() { + WMDialog dialog = new WMDialog( mParams ); + return dialog; + } + } + + public static class WMDialogParams { + + // public CharSequence mTitle; + public CharSequence mOkButtonText; + public CharSequence mCancelButtonText; + public CharSequence mContent; + public OnClickListener mOnOkButtonClickListener; + public OnClickListener mOnCancelButtonClickListener; + public OnDismissListener mOnDialogDismissListener; + public Context mContext; + } +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCardResult.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCardResult.java index 1a8e044cf8..be7c7bbe23 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCardResult.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCardResult.java @@ -9,11 +9,12 @@ public class MarkerCardResult implements Serializable { private List dataType; // 要查询的类型 private List carChat; - private List exploreWay; - private List onlineCar; private List shareMusic; private List noveltyInfo; + private List onlineCar; + private List exploreWay; + public List getCarChat() { return carChat; } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerExploreWay.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerExploreWay.java index 073c45bee0..d33c09686d 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerExploreWay.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerExploreWay.java @@ -9,7 +9,12 @@ import java.util.List; @SuppressWarnings("unused") public class MarkerExploreWay implements Serializable { + private String infoId; private String type;//卡片类型, + /** + * @see MarkerPoiTypeEnum + */ + private String poiType; private String sn; private MarkerLocation location;//位置信息 private int direction;//方位角度 @@ -21,6 +26,8 @@ public class MarkerExploreWay implements Serializable { private double distance;//距离 private MarkerUserInfo userInfo;//用户信息 private List items;//视频地址和图片地址 + //上报类型:1-用户上报,2-后台上报 3-三方上报 + private String uploadType; public String getAddr() { if (TextUtils.isEmpty(addr)) { @@ -121,21 +128,48 @@ public class MarkerExploreWay implements Serializable { this.userInfo = userInfo; } + public String getInfoId() { + return infoId; + } + + public void setInfoId(String infoId) { + this.infoId = infoId; + } + + public String getPoiType() { + return poiType; + } + + public void setPoiType(String poiType) { + this.poiType = poiType; + } + + public String getUploadType() { + return uploadType; + } + + public void setUploadType(String uploadType) { + this.uploadType = uploadType; + } + @Override public String toString() { return "MarkerExploreWay{" + - "addr='" + addr + '\'' + - ", canLive=" + canLive + - ", cityName='" + cityName + '\'' + - ", direction=" + direction + - ", distance=" + distance + - ", fileType=" + fileType + - ", generateTime=" + generateTime + - ", items=" + items + - ", location=" + location + + "type='" + type + '\'' + + ", infoId='" + infoId + '\'' + + ", poiType='" + poiType + '\'' + ", sn='" + sn + '\'' + - ", type='" + type + '\'' + + ", location=" + location + + ", direction=" + direction + + ", canLive=" + canLive + + ", fileType=" + fileType + + ", addr='" + addr + '\'' + + ", generateTime=" + generateTime + + ", cityName='" + cityName + '\'' + + ", distance=" + distance + ", userInfo=" + userInfo + + ", items=" + items + + ", uploadType='" + uploadType + '\'' + '}'; } } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java index 6060810e56..e57e3270fe 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java @@ -36,4 +36,6 @@ public interface MarkerPoiTypeEnum { public String FOURS_ACCIDENT = "10013"; //身边 public String FOURS_NEALY = "10014"; + //实时路况 + public String FOURS_LIVING = "10015"; } \ No newline at end of file diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java new file mode 100644 index 0000000000..29db8cd8fb --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java @@ -0,0 +1,118 @@ +package com.mogo.module.common.wm; + +import android.content.Context; +import android.graphics.PixelFormat; +import android.os.Build; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.WindowManager; + +import androidx.annotation.IdRes; +import androidx.annotation.LayoutRes; + +import com.mogo.module.common.utils.CarSeries; +import com.mogo.utils.WindowUtils; + +/** + * @author congtaowang + * @since 2020-05-21 + *

+ * 往 window manager 添加view + */ +public class WindowManagerView { + + private WMViewParams mParams; + private boolean mIsShowing; + private WindowManager mWindowManager; + private WindowManager.LayoutParams mLayoutParams; + + private WindowManagerView( WMViewParams params ) { + this.mParams = params; + init(); + } + + private void init() { + mWindowManager = ( WindowManager ) mParams.mContext.getApplicationContext().getSystemService( Context.WINDOW_SERVICE ); + mLayoutParams = new WindowManager.LayoutParams(); + if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ) { + mLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; + } else { + mLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; + } + mLayoutParams.format = PixelFormat.TRANSLUCENT; + mLayoutParams.gravity = Gravity.CENTER; + mLayoutParams.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH; + + if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) { + mLayoutParams.width = 1920; + mLayoutParams.height = 1080; + } else { + mLayoutParams.width = WindowUtils.getScreenWidth( mParams.mContext ); + mLayoutParams.height = WindowUtils.getScreenHeight( mParams.mContext ); + } + mLayoutParams.dimAmount = 0.5f; + mLayoutParams.x = 0; + mLayoutParams.y = 0; + } + + public boolean isShowing() { + return mIsShowing; + } + + public < T extends View > T findViewById( @IdRes int id ) { + return mParams.mContentView.findViewById( id ); + } + + public void show() { + if ( mIsShowing ) { + return; + } + mIsShowing = true; + mWindowManager.addView( mParams.mContentView, mLayoutParams ); + } + + public void dismiss() { + if ( !mIsShowing ) { + return; + } + if ( mParams != null ) { + mWindowManager.removeViewImmediate( mParams.mContentView ); + } + mIsShowing = false; + } + + public static class Builder { + + private WMViewParams mParams = null; + + public Builder( Context context ) { + mParams = new WMViewParams(); + mParams.mContext = context; + } + + public Builder contentView( View contentView ) { + mParams.mContentView = contentView; + return this; + } + + public Builder contentView( @LayoutRes int contentViewId ) { + mParams.mContentView = LayoutInflater.from( mParams.mContext ).inflate( contentViewId, null ); + return this; + } + + public WindowManagerView build() { + if ( mParams.mContentView == null ) { + throw new NullPointerException( "WMViewParams#mContentView must not be null." ); + } + return new WindowManagerView( mParams ); + } + + } + + public static class WMViewParams { + + public View mContentView; + public Context mContext; + } +} diff --git a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DSVOrientation.java b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DSVOrientation.java deleted file mode 100644 index ce167a9870..0000000000 --- a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DSVOrientation.java +++ /dev/null @@ -1,220 +0,0 @@ -package com.yarolegovich.discretescrollview; - -import android.graphics.Point; -import android.view.View; - -/** - * Created by yarolegovich on 16.03.2017. - */ -public enum DSVOrientation { - - HORIZONTAL { - @Override - Helper createHelper() { - return new HorizontalHelper(); - } - }, - VERTICAL { - @Override - Helper createHelper() { - return new VerticalHelper(); - } - }; - - //Package private - abstract Helper createHelper(); - - interface Helper { - - int getViewEnd(int recyclerWidth, int recyclerHeight); - - int getDistanceToChangeCurrent(int childWidth, int childHeight); - - void setCurrentViewCenter(Point recyclerCenter, int scrolled, Point outPoint); - - void shiftViewCenter(Direction direction, int shiftAmount, Point outCenter); - - int getFlingVelocity(int velocityX, int velocityY); - - int getPendingDx(int pendingScroll); - - int getPendingDy(int pendingScroll); - - void offsetChildren(int amount, RecyclerViewProxy lm); - - float getDistanceFromCenter(Point center, int viewCenterX, int viewCenterY); - - boolean isViewVisible(Point center, int halfWidth, int halfHeight, int endBound, - int extraSpace); - - boolean hasNewBecomeVisible(DiscreteScrollLayoutManager lm); - - boolean canScrollVertically(); - - boolean canScrollHorizontally(); - } - - protected static class HorizontalHelper implements Helper { - - @Override - public int getViewEnd(int recyclerWidth, int recyclerHeight) { - return recyclerWidth; - } - - @Override - public int getDistanceToChangeCurrent(int childWidth, int childHeight) { - return childWidth; - } - - @Override - public void setCurrentViewCenter(Point recyclerCenter, int scrolled, Point outPoint) { - int newX = recyclerCenter.x - scrolled; - outPoint.set(newX, recyclerCenter.y); - } - - @Override - public void shiftViewCenter(Direction direction, int shiftAmount, Point outCenter) { - int newX = outCenter.x + direction.applyTo(shiftAmount); - outCenter.set(newX, outCenter.y); - } - - @Override - public boolean isViewVisible( - Point viewCenter, int halfWidth, int halfHeight, int endBound, - int extraSpace) { - int viewLeft = viewCenter.x - halfWidth; - int viewRight = viewCenter.x + halfWidth; - return viewLeft < (endBound + extraSpace) && viewRight > -extraSpace; - } - - @Override - public boolean hasNewBecomeVisible(DiscreteScrollLayoutManager lm) { - View firstChild = lm.getFirstChild(), lastChild = lm.getLastChild(); - int leftBound = -lm.getExtraLayoutSpace(); - int rightBound = lm.getWidth() + lm.getExtraLayoutSpace(); - boolean isNewVisibleFromLeft = lm.getDecoratedLeft(firstChild) > leftBound - && lm.getPosition(firstChild) > 0; - boolean isNewVisibleFromRight = lm.getDecoratedRight(lastChild) < rightBound - && lm.getPosition(lastChild) < lm.getItemCount() - 1; - return isNewVisibleFromLeft || isNewVisibleFromRight; - } - - @Override - public void offsetChildren(int amount, RecyclerViewProxy helper) { - helper.offsetChildrenHorizontal(amount); - } - - @Override - public float getDistanceFromCenter(Point center, int viewCenterX, int viewCenterY) { - return viewCenterX - center.x; - } - - @Override - public int getFlingVelocity(int velocityX, int velocityY) { - return velocityX; - } - - @Override - public boolean canScrollHorizontally() { - return true; - } - - @Override - public boolean canScrollVertically() { - return false; - } - - @Override - public int getPendingDx(int pendingScroll) { - return pendingScroll; - } - - @Override - public int getPendingDy(int pendingScroll) { - return 0; - } - } - - - protected static class VerticalHelper implements Helper { - - @Override - public int getViewEnd(int recyclerWidth, int recyclerHeight) { - return recyclerHeight; - } - - @Override - public int getDistanceToChangeCurrent(int childWidth, int childHeight) { - return childHeight; - } - - @Override - public void setCurrentViewCenter(Point recyclerCenter, int scrolled, Point outPoint) { - int newY = recyclerCenter.y - scrolled; - outPoint.set(recyclerCenter.x, newY); - } - - @Override - public void shiftViewCenter(Direction direction, int shiftAmount, Point outCenter) { - int newY = outCenter.y + direction.applyTo(shiftAmount); - outCenter.set(outCenter.x, newY); - } - - @Override - public void offsetChildren(int amount, RecyclerViewProxy helper) { - helper.offsetChildrenVertical(amount); - } - - @Override - public float getDistanceFromCenter(Point center, int viewCenterX, int viewCenterY) { - return viewCenterY - center.y; - } - - @Override - public boolean isViewVisible( - Point viewCenter, int halfWidth, int halfHeight, int endBound, - int extraSpace) { - int viewTop = viewCenter.y - halfHeight; - int viewBottom = viewCenter.y + halfHeight; - return viewTop < (endBound + extraSpace) && viewBottom > -extraSpace; - } - - @Override - public boolean hasNewBecomeVisible(DiscreteScrollLayoutManager lm) { - View firstChild = lm.getFirstChild(), lastChild = lm.getLastChild(); - int topBound = -lm.getExtraLayoutSpace(); - int bottomBound = lm.getHeight() + lm.getExtraLayoutSpace(); - boolean isNewVisibleFromTop = lm.getDecoratedTop(firstChild) > topBound - && lm.getPosition(firstChild) > 0; - boolean isNewVisibleFromBottom = lm.getDecoratedBottom(lastChild) < bottomBound - && lm.getPosition(lastChild) < lm.getItemCount() - 1; - return isNewVisibleFromTop || isNewVisibleFromBottom; - } - - @Override - public int getFlingVelocity(int velocityX, int velocityY) { - return velocityY; - } - - @Override - public boolean canScrollHorizontally() { - return false; - } - - @Override - public boolean canScrollVertically() { - return true; - } - - @Override - public int getPendingDx(int pendingScroll) { - return 0; - } - - @Override - public int getPendingDy(int pendingScroll) { - return pendingScroll; - } - } - -} diff --git a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/Direction.java b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/Direction.java deleted file mode 100644 index e4d1c386ce..0000000000 --- a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/Direction.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.yarolegovich.discretescrollview; - -/** - * Created by yarolegovich on 16.03.2017. - */ -enum Direction { - - START { - @Override - public int applyTo(int delta) { - return delta * -1; - } - - @Override - public boolean sameAs(int direction) { - return direction < 0; - } - }, - END { - @Override - public int applyTo(int delta) { - return delta; - } - - @Override - public boolean sameAs(int direction) { - return direction > 0; - } - }; - - public abstract int applyTo(int delta); - - public abstract boolean sameAs(int direction); - - public static Direction fromDelta(int delta) { - return delta > 0 ? END : START; - } -} diff --git a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollLayoutManager.java b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollLayoutManager.java deleted file mode 100644 index 777d950bed..0000000000 --- a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollLayoutManager.java +++ /dev/null @@ -1,836 +0,0 @@ -package com.yarolegovich.discretescrollview; - -import android.content.Context; -import android.graphics.Point; -import android.graphics.PointF; -import android.os.Bundle; -import android.os.Parcelable; -import android.util.DisplayMetrics; -import android.util.SparseArray; -import android.view.View; -import android.view.ViewGroup; -import android.view.accessibility.AccessibilityEvent; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.view.accessibility.AccessibilityEventCompat; -import androidx.core.view.accessibility.AccessibilityRecordCompat; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.LinearSmoothScroller; -import androidx.recyclerview.widget.RecyclerView; -import com.alibaba.idst.nls.internal.utils.L; -import com.mogo.utils.logger.Logger; -import com.yarolegovich.discretescrollview.transform.DiscreteScrollItemTransformer; - -import java.util.Locale; - -/** - * Created by yarolegovich on 17.02.2017. - */ -public class DiscreteScrollLayoutManager extends LinearLayoutManager { - - static final int NO_POSITION = -1; - - private static final String EXTRA_POSITION = "extra_position"; - private static final int DEFAULT_TIME_FOR_ITEM_SETTLE = 300; - private static final int DEFAULT_FLING_THRESHOLD = 2100; //Decrease to increase sensitivity. - private static final int DEFAULT_TRANSFORM_CLAMP_ITEM_COUNT = 1; - - protected static final float SCROLL_TO_SNAP_TO_ANOTHER_ITEM = 0.6f; - - //This field will take value of all visible view's center points during the fill phase - protected Point viewCenterIterator; - protected Point recyclerCenter; - protected Point currentViewCenter; - protected int childHalfWidth, childHalfHeight; - protected int extraLayoutSpace; - - //Max possible distance a view can travel during one scroll phase - protected int scrollToChangeCurrent; - protected int currentScrollState; - - protected int scrolled; - protected int pendingScroll; - protected int currentPosition; - protected int pendingPosition; - - protected SparseArray detachedCache; - - private DSVOrientation.Helper orientationHelper; - - protected boolean isFirstOrEmptyLayout; - - private Context context; - - private int timeForItemSettle; - private int offscreenItems; - private int transformClampItemCount; - - private boolean dataSetChangeShiftedPosition; - - private int flingThreshold; - private boolean shouldSlideOnFling; - - private int viewWidth, viewHeight; - - private float ratio=0.5F; - - private static final String TAG = "DiscreteScrollLayoutMan"; - @NonNull - private final ScrollStateListener scrollStateListener; - private DiscreteScrollItemTransformer itemTransformer; - - private RecyclerViewProxy recyclerViewProxy; - - public DiscreteScrollLayoutManager( - @NonNull Context c, - @NonNull ScrollStateListener scrollStateListener, - @NonNull DSVOrientation orientation) { - super(c); - this.context = c; - this.timeForItemSettle = DEFAULT_TIME_FOR_ITEM_SETTLE; - this.pendingPosition = NO_POSITION; - this.currentPosition = NO_POSITION; - this.flingThreshold = DEFAULT_FLING_THRESHOLD; - this.shouldSlideOnFling = false; - this.recyclerCenter = new Point(); - this.currentViewCenter = new Point(); - this.viewCenterIterator = new Point(); - this.detachedCache = new SparseArray<>(); - this.scrollStateListener = scrollStateListener; - this.orientationHelper = orientation.createHelper(); - this.recyclerViewProxy = new RecyclerViewProxy(this); - this.transformClampItemCount = DEFAULT_TRANSFORM_CLAMP_ITEM_COUNT; - } - - @Override - public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) { - if (state.getItemCount() == 0) { - recyclerViewProxy.removeAndRecycleAllViews(recycler); - currentPosition = pendingPosition = NO_POSITION; - scrolled = pendingScroll = 0; - return; - } - - ensureValidPosition(state); - - updateRecyclerDimensions(state); - - //onLayoutChildren may be called multiple times and this check is required so that the flag - //won't be cleared until onLayoutCompleted - if (!isFirstOrEmptyLayout) { - isFirstOrEmptyLayout = recyclerViewProxy.getChildCount() == 0; - if (isFirstOrEmptyLayout) { - initChildDimensions(recycler); - } - } - - recyclerViewProxy.detachAndScrapAttachedViews(recycler); - - fill(recycler); - - applyItemTransformToChildren(); - } - - private void ensureValidPosition(RecyclerView.State state) { - if (currentPosition == NO_POSITION || currentPosition >= state.getItemCount()) { - //currentPosition might have been assigned in onRestoreInstanceState() - //which can lead to a crash (position out of bounds) when data set - //is not persisted across rotations - currentPosition = 0; - } - } - - public void setRatio(float ratio) { - this.ratio = ratio; - } - - @Override - public void onLayoutCompleted(RecyclerView.State state) { - if (isFirstOrEmptyLayout) { - scrollStateListener.onCurrentViewFirstLayout(); - isFirstOrEmptyLayout = false; - } else if (dataSetChangeShiftedPosition) { - scrollStateListener.onDataSetChangeChangedPosition(); - dataSetChangeShiftedPosition = false; - } - } - - protected void initChildDimensions(RecyclerView.Recycler recycler) { - View viewToMeasure = recyclerViewProxy.getMeasuredChildForAdapterPosition(0, recycler); - - int childViewWidth = recyclerViewProxy.getMeasuredWidthWithMargin(viewToMeasure); - int childViewHeight = recyclerViewProxy.getMeasuredHeightWithMargin(viewToMeasure); - - childHalfWidth = childViewWidth / 2; - childHalfHeight = childViewHeight / 2; - - scrollToChangeCurrent = orientationHelper.getDistanceToChangeCurrent( - childViewWidth, - childViewHeight); - - extraLayoutSpace = scrollToChangeCurrent * offscreenItems; - - recyclerViewProxy.detachAndScrapView(viewToMeasure, recycler); - } - - protected void updateRecyclerDimensions(RecyclerView.State state) { - boolean dimensionsChanged = !state.isMeasuring() - && (recyclerViewProxy.getWidth() != viewWidth - || recyclerViewProxy.getHeight() != viewHeight); - if (dimensionsChanged) { - viewWidth = recyclerViewProxy.getWidth(); - viewHeight = recyclerViewProxy.getHeight(); - recyclerViewProxy.removeAllViews(); - } - recyclerCenter.set( - (int) (recyclerViewProxy.getWidth() * ratio), - recyclerViewProxy.getHeight() / 2); - } - - protected void fill(RecyclerView.Recycler recycler) { - cacheAndDetachAttachedViews(); - - orientationHelper.setCurrentViewCenter(recyclerCenter, scrolled, currentViewCenter); - - final int endBound = orientationHelper.getViewEnd( - recyclerViewProxy.getWidth(), - recyclerViewProxy.getHeight()); - - //Layout current - if (isViewVisible(currentViewCenter, endBound)) { - layoutView(recycler, currentPosition, currentViewCenter); - } - - //Layout items before the current item - layoutViews(recycler, Direction.START, endBound); - - //Layout items after the current item - layoutViews(recycler, Direction.END, endBound); - - recycleDetachedViewsAndClearCache(recycler); - } - - private void layoutViews(RecyclerView.Recycler recycler, Direction direction, int endBound) { - final int positionStep = direction.applyTo(1); - - //Predictive layout is required when we are doing smooth fast scroll towards pendingPosition - boolean noPredictiveLayoutRequired = pendingPosition == NO_POSITION - || !direction.sameAs(pendingPosition - currentPosition); - - viewCenterIterator.set(currentViewCenter.x, currentViewCenter.y); - for (int pos = currentPosition + positionStep; isInBounds(pos); pos += positionStep) { - if (pos == pendingPosition) { - noPredictiveLayoutRequired = true; - } - orientationHelper.shiftViewCenter(direction, scrollToChangeCurrent, viewCenterIterator); - if (isViewVisible(viewCenterIterator, endBound)) { - layoutView(recycler, pos, viewCenterIterator); - } else if (noPredictiveLayoutRequired) { - break; - } - } - } - - protected void layoutView(RecyclerView.Recycler recycler, int position, Point viewCenter) { - if (position < 0) return; - View v = detachedCache.get(position); - if (v == null) { - v = recyclerViewProxy.getMeasuredChildForAdapterPosition(position, recycler); - recyclerViewProxy.layoutDecoratedWithMargins(v, - viewCenter.x - childHalfWidth, viewCenter.y - childHalfHeight, - viewCenter.x + childHalfWidth, viewCenter.y + childHalfHeight); - } else { - recyclerViewProxy.attachView(v); - detachedCache.remove(position); - } - } - - protected void cacheAndDetachAttachedViews() { - detachedCache.clear(); - for (int i = 0; i < recyclerViewProxy.getChildCount(); i++) { - View child = recyclerViewProxy.getChildAt(i); - detachedCache.put(recyclerViewProxy.getPosition(child), child); - } - - for (int i = 0; i < detachedCache.size(); i++) { - recyclerViewProxy.detachView(detachedCache.valueAt(i)); - } - } - - protected void recycleDetachedViewsAndClearCache(RecyclerView.Recycler recycler) { - for (int i = 0; i < detachedCache.size(); i++) { - View viewToRemove = detachedCache.valueAt(i); - recyclerViewProxy.recycleView(viewToRemove, recycler); - } - detachedCache.clear(); - } - - @Override - public void onItemsAdded(RecyclerView recyclerView, int positionStart, int itemCount) { - int newPosition = currentPosition; - if (currentPosition == NO_POSITION) { - newPosition = 0; - } else if (currentPosition >= positionStart) { - newPosition = Math.min(currentPosition + itemCount, recyclerViewProxy.getItemCount() - 1); - } - onNewPosition(newPosition); - } - - @Override - public void onItemsRemoved(RecyclerView recyclerView, int positionStart, int itemCount) { - int newPosition = currentPosition; - if (recyclerViewProxy.getItemCount() == 0) { - newPosition = NO_POSITION; - } else if (currentPosition >= positionStart) { - if (currentPosition < positionStart + itemCount) { - //If currentPosition is in the removed items, then the new item became current - currentPosition = NO_POSITION; - } - newPosition = Math.max(0, currentPosition - itemCount); - } - onNewPosition(newPosition); - } - - @Override - public void onItemsChanged(RecyclerView recyclerView) { - //notifyDataSetChanged() was called. We need to ensure that currentPosition is not out of bounds - currentPosition = Math.min(Math.max(0, currentPosition), recyclerViewProxy.getItemCount() - 1); - dataSetChangeShiftedPosition = true; - } - - private void onNewPosition(int position) { - if (currentPosition != position) { - currentPosition = position; - dataSetChangeShiftedPosition = true; - } - } - - @Override - public int scrollHorizontallyBy(int dx, RecyclerView.Recycler recycler, RecyclerView.State state) { - return scrollBy(dx, recycler); - } - - @Override - public int scrollVerticallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state) { - return scrollBy(dy, recycler); - } - - protected int scrollBy(int amount, RecyclerView.Recycler recycler) { - if (recyclerViewProxy.getChildCount() == 0) { - return 0; - } - - Direction direction = Direction.fromDelta(amount); - int leftToScroll = calculateAllowedScrollIn(direction); - if (leftToScroll <= 0) { - return 0; - } - int delta = direction.applyTo(Math.min(leftToScroll, Math.abs(amount))); - Logger.d(TAG,"leftToScroll--》"+leftToScroll+"---amount--》"+amount); - - scrolled += delta; - if (pendingScroll != 0) { - pendingScroll -= delta; - } - - orientationHelper.offsetChildren(-delta, recyclerViewProxy); - - if (orientationHelper.hasNewBecomeVisible(this)) { - fill(recycler); - } - - notifyScroll(); - - applyItemTransformToChildren(); - - return delta; - } - - protected void applyItemTransformToChildren() { - if (itemTransformer != null) { - int clampAfterDistance = scrollToChangeCurrent * transformClampItemCount; - for (int i = 0; i < recyclerViewProxy.getChildCount(); i++) { - View child = recyclerViewProxy.getChildAt(i); - - //RecyclerView.ViewHolder childViewHolder = recyclerView.getChildViewHolder(child); - float position = getCenterRelativePositionOf(child, clampAfterDistance); - itemTransformer.transformItem(child,null, position); - } - } - } - - @Override - public void scrollToPosition(int position) { - if (currentPosition == position) { - return; - } - - currentPosition = position; - recyclerViewProxy.requestLayout(); - } - - //@Override - //public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position) { - // if (currentPosition == position || pendingPosition != NO_POSITION) { - // return; - // } - // checkTargetPosition(state, position); - // if (currentPosition == NO_POSITION) { - // //Layout not happened yet - // currentPosition = position; - // } else { - // startSmoothPendingScroll(position); - // } - //} - - - @Override - public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position) { - LinearSmoothScroller smoothScroller = - new LinearSmoothScroller(recyclerView.getContext()) { - @Override - protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) { - // 返回:滑过1px时经历的时间(ms)。 - return 10f / displayMetrics.densityDpi; - } - - @Override - public int calculateDtToFit(int viewStart, int viewEnd, int boxStart, int boxEnd, int snapPreference) { - return boxStart - viewStart; - } - }; - - smoothScroller.setTargetPosition(position); - startSmoothScroll(smoothScroller); - } - - @Override - public boolean canScrollHorizontally() { - return orientationHelper.canScrollHorizontally(); - } - - @Override - public boolean canScrollVertically() { - return orientationHelper.canScrollVertically(); - } - - @Override - public void onScrollStateChanged(int state) { - if (currentScrollState == RecyclerView.SCROLL_STATE_IDLE && currentScrollState != state) { - scrollStateListener.onScrollStart(); - } - - if (state == RecyclerView.SCROLL_STATE_IDLE) { - //Scroll is not finished until current view is centered - boolean isScrollEnded = onScrollEnd(); - if (isScrollEnded) { - scrollStateListener.onScrollEnd(); - } else { - //Scroll continues and we don't want to set currentScrollState to STATE_IDLE, - //because this will then trigger .scrollStateListener.onScrollStart() - return; - } - } else if (state == RecyclerView.SCROLL_STATE_DRAGGING) { - onDragStart(); - } - currentScrollState = state; - } - - /** - * @return true if scroll is ended and we don't need to settle items - */ - private boolean onScrollEnd() { - if (pendingPosition != NO_POSITION) { - currentPosition = pendingPosition; - pendingPosition = NO_POSITION; - scrolled = 0; - } - - Direction scrollDirection = Direction.fromDelta(scrolled); - if (Math.abs(scrolled) == scrollToChangeCurrent) { - currentPosition += scrollDirection.applyTo(1); - scrolled = 0; - } - - if (isAnotherItemCloserThanCurrent()) { - pendingScroll = getHowMuchIsLeftToScroll(scrolled); - } else { - pendingScroll = -scrolled; - } - - if (pendingScroll == 0) { - return true; - } else { - startSmoothPendingScroll(); - return false; - } - } - - private void onDragStart() { - //Here we need to: - //1. Stop any pending scroll - //2. Set currentPosition to position of the item that is closest to the center - boolean isScrollingThroughMultiplePositions = Math.abs(scrolled) > scrollToChangeCurrent; - if (isScrollingThroughMultiplePositions) { - int scrolledPositions = scrolled / scrollToChangeCurrent; - currentPosition += scrolledPositions; - scrolled -= scrolledPositions * scrollToChangeCurrent; - } - if (isAnotherItemCloserThanCurrent()) { - Direction direction = Direction.fromDelta(scrolled); - currentPosition += direction.applyTo(1); - scrolled = -getHowMuchIsLeftToScroll(scrolled); - } - pendingPosition = NO_POSITION; - pendingScroll = 0; - } - - public void onFling(int velocityX, int velocityY) { - int velocity = orientationHelper.getFlingVelocity(velocityX, velocityY); - int throttleValue = shouldSlideOnFling ? Math.abs(velocity / flingThreshold) : 1; - int newPosition = currentPosition + Direction.fromDelta(velocity).applyTo(throttleValue); - newPosition = checkNewOnFlingPositionIsInBounds(newPosition); - boolean isInScrollDirection = velocity * scrolled >= 0; - boolean canFling = isInScrollDirection && isInBounds(newPosition); - if (canFling) { - startSmoothPendingScroll(newPosition); - } else { - returnToCurrentPosition(); - } - - Logger.d(TAG,"onFling"+newPosition); - } - - public void returnToCurrentPosition() { - pendingScroll = -scrolled; - if (pendingScroll != 0) { - startSmoothPendingScroll(); - } - } - - protected int calculateAllowedScrollIn(Direction direction) { - if (pendingScroll != 0) { - return Math.abs(pendingScroll); - } - int allowedScroll; - boolean isBoundReached; - boolean isScrollDirectionAsBefore = direction.applyTo(scrolled) > 0; - if (direction == Direction.START && currentPosition == 0) { - //We can scroll to the left when currentPosition == 0 only if we scrolled to the right before - isBoundReached = scrolled == 0; - allowedScroll = isBoundReached ? 0 : Math.abs(scrolled); - } else if (direction == Direction.END && currentPosition == recyclerViewProxy.getItemCount() - 1) { - //We can scroll to the right when currentPosition == last only if we scrolled to the left before - isBoundReached = scrolled == 0; - allowedScroll = isBoundReached ? 0 : Math.abs(scrolled); - } else { - isBoundReached = false; - allowedScroll = isScrollDirectionAsBefore ? - scrollToChangeCurrent - Math.abs(scrolled) : - scrollToChangeCurrent + Math.abs(scrolled); - } - scrollStateListener.onIsBoundReachedFlagChange(isBoundReached); - return allowedScroll; - } - - private void startSmoothPendingScroll() { - LinearSmoothScroller scroller = new DiscreteLinearSmoothScroller(context); - scroller.setTargetPosition(currentPosition); - recyclerViewProxy.startSmoothScroll(scroller); - } - - public void startSmoothPendingScroll(int position) { - if (currentPosition == position) return; - pendingScroll = -scrolled; - Direction direction = Direction.fromDelta(position - currentPosition); - int distanceToScroll = Math.abs(position - currentPosition) * scrollToChangeCurrent; - pendingScroll += direction.applyTo(distanceToScroll); - pendingPosition = position; - startSmoothPendingScroll(); - } - - - - - @Override - public boolean isAutoMeasureEnabled() { - return true; - } - - @Override - public int computeVerticalScrollRange(RecyclerView.State state) { - return computeScrollRange(state); - } - - @Override - public int computeVerticalScrollOffset(RecyclerView.State state) { - return computeScrollOffset(state); - } - - @Override - public int computeVerticalScrollExtent(RecyclerView.State state) { - return computeScrollExtent(state); - } - - @Override - public int computeHorizontalScrollRange(RecyclerView.State state) { - return computeScrollRange(state); - } - - @Override - public int computeHorizontalScrollOffset(RecyclerView.State state) { - return computeScrollOffset(state); - } - - @Override - public int computeHorizontalScrollExtent(RecyclerView.State state) { - return computeScrollExtent(state); - } - - private int computeScrollOffset(RecyclerView.State state) { - int scrollbarSize = computeScrollExtent(state); - int offset = (int) ((scrolled / (float) scrollToChangeCurrent) * scrollbarSize); - return (currentPosition * scrollbarSize) + offset; - } - - private int computeScrollExtent(RecyclerView.State state) { - if (getItemCount() == 0) { - return 0; - } else { - return (int) (computeScrollRange(state) / (float) getItemCount()); - } - } - - private int computeScrollRange(RecyclerView.State state) { - if (getItemCount() == 0) { - return 0; - } else { - return scrollToChangeCurrent * (getItemCount() - 1); - } - } - - @Override - public void onAdapterChanged(RecyclerView.Adapter oldAdapter, RecyclerView.Adapter newAdapter) { - pendingPosition = NO_POSITION; - scrolled = pendingScroll = 0; - if (newAdapter instanceof InitialPositionProvider) { - currentPosition = ((InitialPositionProvider) newAdapter).getInitialPosition(); - } else { - currentPosition = 0; - } - recyclerViewProxy.removeAllViews(); - } - - @Override - public Parcelable onSaveInstanceState() { - Bundle bundle = new Bundle(); - if (pendingPosition != NO_POSITION) { - currentPosition = pendingPosition; - } - bundle.putInt(EXTRA_POSITION, currentPosition); - return bundle; - } - - @Override - public void onRestoreInstanceState(Parcelable state) { - Bundle bundle = (Bundle) state; - currentPosition = bundle.getInt(EXTRA_POSITION); - } - - @Override - public RecyclerView.LayoutParams generateDefaultLayoutParams() { - return new RecyclerView.LayoutParams( - ViewGroup.LayoutParams.WRAP_CONTENT, - ViewGroup.LayoutParams.WRAP_CONTENT); - } - - public int getNextPosition() { - if (scrolled == 0) { - return currentPosition; - } else if (pendingPosition != NO_POSITION) { - return pendingPosition; - } else { - return currentPosition + Direction.fromDelta(scrolled).applyTo(1); - } - } - - public void setItemTransformer(DiscreteScrollItemTransformer itemTransformer) { - this.itemTransformer = itemTransformer; - } - - public void setTimeForItemSettle(int timeForItemSettle) { - this.timeForItemSettle = timeForItemSettle; - } - - public void setOffscreenItems(int offscreenItems) { - this.offscreenItems = offscreenItems; - extraLayoutSpace = scrollToChangeCurrent * offscreenItems; - recyclerViewProxy.requestLayout(); - } - - public void setTransformClampItemCount(int transformClampItemCount) { - this.transformClampItemCount = transformClampItemCount; - applyItemTransformToChildren(); - } - - public void setOrientation(DSVOrientation orientation) { - orientationHelper = orientation.createHelper(); - recyclerViewProxy.removeAllViews(); - recyclerViewProxy.requestLayout(); - } - - public void setShouldSlideOnFling(boolean result) { - shouldSlideOnFling = result; - } - - public void setSlideOnFlingThreshold(int threshold) { - flingThreshold = threshold; - } - - public int getCurrentPosition() { - return currentPosition; - } - - @Override - public void onInitializeAccessibilityEvent(AccessibilityEvent event) { - super.onInitializeAccessibilityEvent(event); - if (recyclerViewProxy.getChildCount() > 0) { - final AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event); - record.setFromIndex(getPosition(getFirstChild())); - record.setToIndex(getPosition(getLastChild())); - } - } - - private float getCenterRelativePositionOf(View v, int maxDistance) { - float distanceFromCenter = orientationHelper.getDistanceFromCenter(recyclerCenter, - getDecoratedLeft(v) + childHalfWidth, - getDecoratedTop(v) + childHalfHeight); - return Math.min(Math.max(-1f, distanceFromCenter / maxDistance), 1f); - } - - private int checkNewOnFlingPositionIsInBounds(int position) { - final int itemCount = recyclerViewProxy.getItemCount(); - //The check is required in case slide through multiple items is turned on - if (currentPosition != 0 && position < 0) { - //If currentPosition == 0 && position < 0 we forbid scroll to the left, - //but if currentPosition != 0 we can slide to the first item - return 0; - } else if (currentPosition != itemCount - 1 && position >= itemCount) { - return itemCount - 1; - } - return position; - } - - private int getHowMuchIsLeftToScroll(int dx) { - return Direction.fromDelta(dx).applyTo(scrollToChangeCurrent - Math.abs(scrolled)); - } - - private boolean isAnotherItemCloserThanCurrent() { - return Math.abs(scrolled) >= scrollToChangeCurrent * SCROLL_TO_SNAP_TO_ANOTHER_ITEM; - } - - public View getFirstChild() { - return recyclerViewProxy.getChildAt(0); - } - - public View getLastChild() { - return recyclerViewProxy.getChildAt(recyclerViewProxy.getChildCount() - 1); - } - - public int getExtraLayoutSpace() { - return extraLayoutSpace; - } - - private void notifyScroll() { - float amountToScroll = pendingPosition != NO_POSITION ? - Math.abs(scrolled + pendingScroll) : - scrollToChangeCurrent; - float position = -Math.min(Math.max(-1f, scrolled / amountToScroll), 1f); - scrollStateListener.onScroll(position); - } - - private boolean isInBounds(int itemPosition) { - return itemPosition >= 0 && itemPosition < recyclerViewProxy.getItemCount(); - } - - private boolean isViewVisible(Point viewCenter, int endBound) { - return orientationHelper.isViewVisible( - viewCenter, childHalfWidth, childHalfHeight, - endBound, extraLayoutSpace); - } - - - public void setPendingScroll(int pendingScroll){ - this.pendingScroll=pendingScroll; - } - - private void checkTargetPosition(RecyclerView.State state, int targetPosition) { - if (targetPosition < 0 || targetPosition >= state.getItemCount()) { - throw new IllegalArgumentException(String.format(Locale.US, - "target position out of bounds: position=%d, itemCount=%d", - targetPosition, state.getItemCount())); - } - } - - protected void setRecyclerViewProxy(RecyclerViewProxy recyclerViewProxy) { - this.recyclerViewProxy = recyclerViewProxy; - } - - protected void setOrientationHelper(DSVOrientation.Helper orientationHelper) { - this.orientationHelper = orientationHelper; - } - - private class DiscreteLinearSmoothScroller extends LinearSmoothScroller { - - public DiscreteLinearSmoothScroller(Context context) { - super(context); - } - - @Override - public int calculateDxToMakeVisible(View view, int snapPreference) { - return orientationHelper.getPendingDx(-pendingScroll); - } - - @Override - public int calculateDyToMakeVisible(View view, int snapPreference) { - return orientationHelper.getPendingDy(-pendingScroll); - } - - @Override - protected int calculateTimeForScrolling(int dx) { - float dist = Math.min(Math.abs(dx), scrollToChangeCurrent); - return (int) (Math.max(0.01f, dist / scrollToChangeCurrent) * timeForItemSettle); - } - - @Nullable - @Override - public PointF computeScrollVectorForPosition(int targetPosition) { - return new PointF( - orientationHelper.getPendingDx(pendingScroll), - orientationHelper.getPendingDy(pendingScroll)); - } - - @Override protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) { - return 10f / displayMetrics.densityDpi; - } - } - - public interface ScrollStateListener { - void onIsBoundReachedFlagChange(boolean isBoundReached); - - void onScrollStart(); - - void onScrollEnd(); - - void onScroll(float currentViewPosition); - - void onCurrentViewFirstLayout(); - - void onDataSetChangeChangedPosition(); - } - - public interface InitialPositionProvider { - int getInitialPosition(); - } -} diff --git a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollView.java b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollView.java deleted file mode 100644 index bf37a87cd7..0000000000 --- a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollView.java +++ /dev/null @@ -1,302 +0,0 @@ -package com.yarolegovich.discretescrollview; - -import android.content.Context; -import android.content.res.TypedArray; -import android.util.AttributeSet; -import android.view.View; - -import androidx.annotation.IntRange; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.recyclerview.widget.RecyclerView; -import com.mogo.module.common.R; -import com.yarolegovich.discretescrollview.transform.DiscreteScrollItemTransformer; -import com.yarolegovich.discretescrollview.util.ScrollListenerAdapter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by yarolegovich on 18.02.2017. - */ -@SuppressWarnings("unchecked") -public class DiscreteScrollView extends RecyclerView { - - public static final int NO_POSITION = DiscreteScrollLayoutManager.NO_POSITION; - - private static final int DEFAULT_ORIENTATION = DSVOrientation.HORIZONTAL.ordinal(); - - private DiscreteScrollLayoutManager layoutManager; - - private List scrollStateChangeListeners; - private List onItemChangedListeners; - - private boolean isOverScrollEnabled; - - public DiscreteScrollView(Context context) { - super(context); - init(null); - } - - public DiscreteScrollView(Context context, AttributeSet attrs) { - super(context, attrs); - init(attrs); - } - - public DiscreteScrollView(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(attrs); - } - - private void init(AttributeSet attrs) { - scrollStateChangeListeners = new ArrayList<>(); - onItemChangedListeners = new ArrayList<>(); - - int orientation = DEFAULT_ORIENTATION; - if (attrs != null) { - TypedArray ta = getContext().obtainStyledAttributes(attrs, R.styleable.DiscreteScrollView); - orientation = ta.getInt(R.styleable.DiscreteScrollView_dsv_orientation, DEFAULT_ORIENTATION); - ta.recycle(); - } - - isOverScrollEnabled = getOverScrollMode() != OVER_SCROLL_NEVER; - - layoutManager = new DiscreteScrollLayoutManager( - getContext(), new ScrollStateListener(), - DSVOrientation.values()[orientation]); - setLayoutManager(layoutManager); - } - - public void setRatio(float ratio){ - layoutManager.setRatio(ratio); - } - - @Override - public void setLayoutManager(LayoutManager layout) { - if (layout instanceof DiscreteScrollLayoutManager) { - super.setLayoutManager(layout); - } else { - throw new IllegalArgumentException(getContext().getString(R.string.dsv_ex_msg_dont_set_lm)); - } - } - - - @Override - public boolean fling(int velocityX, int velocityY) { - boolean isFling = super.fling(velocityX, velocityY); - if (isFling) { - layoutManager.onFling(velocityX, velocityY); - } else { - layoutManager.returnToCurrentPosition(); - } - return isFling; - } - - @Nullable - public ViewHolder getViewHolder(int position) { - View view = layoutManager.findViewByPosition(position); - return view != null ? getChildViewHolder(view) : null; - } - - /** - * @return adapter position of the current item or -1 if nothing is selected - */ - public int getCurrentItem() { - return layoutManager.getCurrentPosition(); - } - - public void setItemTransformer(DiscreteScrollItemTransformer transformer) { - layoutManager.setItemTransformer(transformer); - } - - public void setItemTransitionTimeMillis(@IntRange(from = 10) int millis) { - layoutManager.setTimeForItemSettle(millis); - } - - public void setSlideOnFling(boolean result){ - layoutManager.setShouldSlideOnFling(result); - } - - public void setSlideOnFlingThreshold(int threshold){ - layoutManager.setSlideOnFlingThreshold(threshold); - } - - public void setOrientation(DSVOrientation orientation) { - layoutManager.setOrientation(orientation); - } - - public void setOffscreenItems(int items) { - layoutManager.setOffscreenItems(items); - } - - public void setClampTransformProgressAfter(@IntRange(from = 1) int itemCount) { - if (itemCount <= 1) { - throw new IllegalArgumentException("must be >= 1"); - } - layoutManager.setTransformClampItemCount(itemCount); - } - - public void setOverScrollEnabled(boolean overScrollEnabled) { - isOverScrollEnabled = overScrollEnabled; - setOverScrollMode(OVER_SCROLL_NEVER); - } - - public void addScrollStateChangeListener(@NonNull ScrollStateChangeListener scrollStateChangeListener) { - scrollStateChangeListeners.add(scrollStateChangeListener); - } - - public void addScrollListener(@NonNull ScrollListener scrollListener) { - addScrollStateChangeListener(new ScrollListenerAdapter(scrollListener)); - } - - public void addOnItemChangedListener(@NonNull OnItemChangedListener onItemChangedListener) { - onItemChangedListeners.add(onItemChangedListener); - } - - public void removeScrollStateChangeListener(@NonNull ScrollStateChangeListener scrollStateChangeListener) { - scrollStateChangeListeners.remove(scrollStateChangeListener); - } - - public void removeScrollListener(@NonNull ScrollListener scrollListener) { - removeScrollStateChangeListener(new ScrollListenerAdapter<>(scrollListener)); - } - - public void removeItemChangedListener(@NonNull OnItemChangedListener onItemChangedListener) { - onItemChangedListeners.remove(onItemChangedListener); - } - - private void notifyScrollStart(ViewHolder holder, int current) { - for (ScrollStateChangeListener listener : scrollStateChangeListeners) { - listener.onScrollStart(holder, current); - } - } - - private void notifyScrollEnd(ViewHolder holder, int current) { - for (ScrollStateChangeListener listener : scrollStateChangeListeners) { - listener.onScrollEnd(holder, current); - } - } - - private void notifyScroll(float position, - int currentIndex, int newIndex, - ViewHolder currentHolder, ViewHolder newHolder) { - for (ScrollStateChangeListener listener : scrollStateChangeListeners) { - listener.onScroll(position, currentIndex, newIndex, - currentHolder, - newHolder); - } - } - - private void notifyCurrentItemChanged(ViewHolder holder, int current) { - for (OnItemChangedListener listener : onItemChangedListeners) { - listener.onCurrentItemChanged(holder, current); - } - } - - private void notifyCurrentItemChanged() { - if (onItemChangedListeners.isEmpty()) { - return; - } - int current = layoutManager.getCurrentPosition(); - ViewHolder currentHolder = getViewHolder(current); - notifyCurrentItemChanged(currentHolder, current); - } - - public void setPendingScroll(int PendingScroll ) { - layoutManager.setPendingScroll(PendingScroll); - } - - private class ScrollStateListener implements DiscreteScrollLayoutManager.ScrollStateListener { - - @Override - public void onIsBoundReachedFlagChange(boolean isBoundReached) { - if (isOverScrollEnabled) { - setOverScrollMode(isBoundReached ? OVER_SCROLL_ALWAYS : OVER_SCROLL_NEVER); - } - } - - @Override - public void onScrollStart() { - if (scrollStateChangeListeners.isEmpty()) { - return; - } - int current = layoutManager.getCurrentPosition(); - ViewHolder holder = getViewHolder(current); - if (holder != null) { - notifyScrollStart(holder, current); - } - } - - @Override - public void onScrollEnd() { - if (onItemChangedListeners.isEmpty() && scrollStateChangeListeners.isEmpty()) { - return; - } - int current = layoutManager.getCurrentPosition(); - ViewHolder holder = getViewHolder(current); - if (holder != null) { - notifyScrollEnd(holder, current); - notifyCurrentItemChanged(holder, current); - } - } - - @Override - public void onScroll(float currentViewPosition) { - if (scrollStateChangeListeners.isEmpty()) { - return; - } - int currentIndex = getCurrentItem(); - int newIndex = layoutManager.getNextPosition(); - if (currentIndex != newIndex) { - notifyScroll(currentViewPosition, - currentIndex, newIndex, - getViewHolder(currentIndex), - getViewHolder(newIndex)); - } - } - - @Override - public void onCurrentViewFirstLayout() { - post(new Runnable() { - @Override - public void run() { - notifyCurrentItemChanged(); - } - }); - } - - @Override - public void onDataSetChangeChangedPosition() { - notifyCurrentItemChanged(); - } - } - - public interface ScrollStateChangeListener { - - void onScrollStart(@NonNull T currentItemHolder, int adapterPosition); - - void onScrollEnd(@NonNull T currentItemHolder, int adapterPosition); - - void onScroll(float scrollPosition, - int currentPosition, - int newPosition, - @Nullable T currentHolder, - @Nullable T newCurrent); - } - - public interface ScrollListener { - - void onScroll(float scrollPosition, - int currentPosition, int newPosition, - @Nullable T currentHolder, - @Nullable T newCurrent); - } - - public interface OnItemChangedListener { - /* - * This method will be also triggered when view appears on the screen for the first time. - * If data set is empty, viewHolder will be null and adapterPosition will be NO_POSITION - */ - void onCurrentItemChanged(@Nullable T viewHolder, int adapterPosition); - } -} diff --git a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/InfiniteScrollAdapter.java b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/InfiniteScrollAdapter.java deleted file mode 100644 index 36fb35c94d..0000000000 --- a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/InfiniteScrollAdapter.java +++ /dev/null @@ -1,179 +0,0 @@ -package com.yarolegovich.discretescrollview; - -import android.view.ViewGroup; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; -import com.mogo.module.common.R; -import java.util.Locale; - -/** - * Created by yarolegovich on 28-Apr-17. - */ - -public class InfiniteScrollAdapter extends RecyclerView.Adapter - implements DiscreteScrollLayoutManager.InitialPositionProvider { - - private static final int CENTER = Integer.MAX_VALUE / 2; - private static final int RESET_BOUND = 100; - - public static InfiniteScrollAdapter wrap( - @NonNull RecyclerView.Adapter adapter) { - return new InfiniteScrollAdapter<>(adapter); - } - - private RecyclerView.Adapter wrapped; - private DiscreteScrollLayoutManager layoutManager; - - public InfiniteScrollAdapter(@NonNull RecyclerView.Adapter wrapped) { - this.wrapped = wrapped; - this.wrapped.registerAdapterDataObserver(new DataSetChangeDelegate()); - } - - @Override - public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { - wrapped.onAttachedToRecyclerView(recyclerView); - if (recyclerView instanceof DiscreteScrollView) { - layoutManager = (DiscreteScrollLayoutManager) recyclerView.getLayoutManager(); - } else { - String msg = recyclerView.getContext().getString(R.string.dsv_ex_msg_adapter_wrong_recycler); - throw new RuntimeException(msg); - } - } - - @Override - public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) { - wrapped.onDetachedFromRecyclerView(recyclerView); - layoutManager = null; - } - - @Override - public @NonNull T onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return wrapped.onCreateViewHolder(parent, viewType); - } - - @Override - public void onBindViewHolder(@NonNull T holder, int position) { - if (isResetRequired(position)) { - int resetPosition = CENTER + mapPositionToReal(layoutManager.getCurrentPosition()); - setPosition(resetPosition); - return; - } - wrapped.onBindViewHolder(holder, mapPositionToReal(position)); - } - - @Override - public int getItemViewType(int position) { - return wrapped.getItemViewType(mapPositionToReal(position)); - } - - @Override - public int getItemCount() { - return isInfinite() ? Integer.MAX_VALUE : wrapped.getItemCount(); - } - - public int getRealItemCount() { - return wrapped.getItemCount(); - } - - public int getRealCurrentPosition() { - return getRealPosition(layoutManager.getCurrentPosition()); - } - - public int getRealPosition(int position) { - return mapPositionToReal(position); - } - - public int getClosestPosition(int position) { - ensureValidPosition(position); - int adapterCurrent = layoutManager.getCurrentPosition(); - int current = mapPositionToReal(adapterCurrent); - if (position == current) { - return adapterCurrent; - } - int delta = position - current; - int target = adapterCurrent + delta; - int wraparoundTarget = adapterCurrent + (position > current ? - delta - wrapped.getItemCount() : - wrapped.getItemCount() + delta); - int distance = Math.abs(adapterCurrent - target); - int wraparoundDistance = Math.abs(adapterCurrent - wraparoundTarget); - if (distance == wraparoundDistance) { - //Scroll to the right feels more natural, so prefer it - return target > adapterCurrent ? target : wraparoundTarget; - } else { - return distance < wraparoundDistance ? target : wraparoundTarget; - } - } - - private int mapPositionToReal(int position) { - if (position < CENTER) { - int rem = (CENTER - position) % wrapped.getItemCount(); - return rem == 0 ? 0 : wrapped.getItemCount() - rem; - } else { - return (position - CENTER) % wrapped.getItemCount(); - } - } - - private boolean isResetRequired(int requestedPosition) { - return isInfinite() - && (requestedPosition <= RESET_BOUND - || requestedPosition >= (Integer.MAX_VALUE - RESET_BOUND)); - } - - private void ensureValidPosition(int position) { - if (position >= wrapped.getItemCount()) { - throw new IndexOutOfBoundsException(String.format(Locale.US, - "requested position is outside adapter's bounds: position=%d, size=%d", - position, wrapped.getItemCount())); - } - } - - private boolean isInfinite() { - return wrapped.getItemCount() > 1; - } - - @Override - public int getInitialPosition() { - return isInfinite() ? CENTER : 0; - } - - private void setPosition(int position) { - layoutManager.scrollToPosition(position); - } - - //TODO: handle proper data set change notifications - private class DataSetChangeDelegate extends RecyclerView.AdapterDataObserver { - - @Override - public void onChanged() { - setPosition(getInitialPosition()); - notifyDataSetChanged(); - } - - @Override - public void onItemRangeRemoved(int positionStart, int itemCount) { - onChanged(); - } - - @Override - public void onItemRangeInserted(int positionStart, int itemCount) { - onChanged(); - } - - @Override - public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) { - onChanged(); - } - - @Override - public void onItemRangeChanged(int positionStart, int itemCount) { - notifyItemRangeChanged(0, getItemCount()); - } - - @Override - public void onItemRangeChanged(int positionStart, int itemCount, Object payload) { - notifyItemRangeChanged(0, getItemCount(), payload); - } - } -} \ No newline at end of file diff --git a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/RecyclerViewProxy.java b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/RecyclerViewProxy.java deleted file mode 100644 index cbafbf4f6b..0000000000 --- a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/RecyclerViewProxy.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.yarolegovich.discretescrollview; - -import android.view.View; -import android.view.ViewGroup; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -/** - * Created by yarolegovich on 10/25/17. - */ -public class RecyclerViewProxy { - - private RecyclerView.LayoutManager layoutManager; - - public RecyclerViewProxy(@NonNull RecyclerView.LayoutManager layoutManager) { - this.layoutManager = layoutManager; - } - - public void attachView(View view) { - layoutManager.attachView(view); - } - - public void detachView(View view) { - layoutManager.detachView(view); - } - - public void detachAndScrapView(View view, RecyclerView.Recycler recycler) { - layoutManager.detachAndScrapView(view, recycler); - } - - public void detachAndScrapAttachedViews(RecyclerView.Recycler recycler) { - layoutManager.detachAndScrapAttachedViews(recycler); - } - - public void recycleView(View view, RecyclerView.Recycler recycler) { - recycler.recycleView(view); - } - - public void removeAndRecycleAllViews(RecyclerView.Recycler recycler) { - layoutManager.removeAndRecycleAllViews(recycler); - } - - public int getChildCount() { - return layoutManager.getChildCount(); - } - - public int getItemCount() { - return layoutManager.getItemCount(); - } - - public View getMeasuredChildForAdapterPosition(int position, RecyclerView.Recycler recycler) { - View view = recycler.getViewForPosition(position); - layoutManager.addView(view); - layoutManager.measureChildWithMargins(view, 0, 0); - return view; - } - - public void layoutDecoratedWithMargins(View v, int left, int top, int right, int bottom) { - layoutManager.layoutDecoratedWithMargins(v, left, top, right, bottom); - } - - public View getChildAt(int index) { - return layoutManager.getChildAt(index); - } - - public int getPosition(View view) { - return layoutManager.getPosition(view); - } - - public int getMeasuredWidthWithMargin(View child) { - ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) child.getLayoutParams(); - return layoutManager.getDecoratedMeasuredWidth(child) + lp.leftMargin + lp.rightMargin; - } - - public int getMeasuredHeightWithMargin(View child) { - ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) child.getLayoutParams(); - return layoutManager.getDecoratedMeasuredHeight(child) + lp.topMargin + lp.bottomMargin; - } - - public int getWidth() { - return layoutManager.getWidth(); - } - - public int getHeight() { - return layoutManager.getHeight(); - } - - public void offsetChildrenHorizontal(int amount) { - layoutManager.offsetChildrenHorizontal(amount); - } - - public void offsetChildrenVertical(int amount) { - layoutManager.offsetChildrenVertical(amount); - } - - public void requestLayout() { - layoutManager.requestLayout(); - } - - public void startSmoothScroll(RecyclerView.SmoothScroller smoothScroller) { - layoutManager.startSmoothScroll(smoothScroller); - } - - public void removeAllViews() { - layoutManager.removeAllViews(); - } -} diff --git a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/transform/DiscreteScrollItemTransformer.java b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/transform/DiscreteScrollItemTransformer.java deleted file mode 100644 index 5be48cd737..0000000000 --- a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/transform/DiscreteScrollItemTransformer.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.yarolegovich.discretescrollview.transform; - -import android.view.View; -import androidx.recyclerview.widget.RecyclerView; - -/** - * Created by yarolegovich on 02.03.2017. - */ - -public interface DiscreteScrollItemTransformer { - void transformItem(View item, RecyclerView.ViewHolder childViewHolder,float position); -} diff --git a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/transform/Pivot.java b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/transform/Pivot.java deleted file mode 100644 index fc5fcd11d2..0000000000 --- a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/transform/Pivot.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.yarolegovich.discretescrollview.transform; - -import android.view.View; - -import androidx.annotation.IntDef; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -/** - * Created by yarolegovich on 03.03.2017. - */ - -public class Pivot { - - public static final int AXIS_X = 0; - public static final int AXIS_Y = 1; - - private static final int PIVOT_CENTER = -1; - private static final int PIVOT_MAX = -2; - - private int axis; - private int pivotPoint; - - public Pivot(@Axis int axis, int pivotPoint) { - this.axis = axis; - this.pivotPoint = pivotPoint; - } - - public void setOn(View view) { - if (axis == AXIS_X) { - switch (pivotPoint) { - case PIVOT_CENTER: - view.setPivotX(view.getWidth() * 0.5f); - break; - case PIVOT_MAX: - view.setPivotX(view.getWidth()); - break; - default: - view.setPivotX(pivotPoint); - break; - } - return; - } - - if (axis == AXIS_Y) { - switch (pivotPoint) { - case PIVOT_CENTER: - view.setPivotY(view.getHeight() * 0.5f); - break; - case PIVOT_MAX: - view.setPivotY(view.getHeight()); - break; - default: - view.setPivotY(pivotPoint); - break; - } - } - } - - @Axis - public int getAxis() { - return axis; - } - - public enum X { - LEFT { - @Override - public Pivot create() { - return new Pivot(AXIS_X, 0); - } - }, - CENTER { - @Override - public Pivot create() { - return new Pivot(AXIS_X, PIVOT_CENTER); - } - }, - RIGHT { - @Override - public Pivot create() { - return new Pivot(AXIS_X, PIVOT_MAX); - } - }; - - public abstract Pivot create(); - } - - public enum Y { - TOP { - @Override - public Pivot create() { - return new Pivot(AXIS_Y, 0); - } - }, - CENTER { - @Override - public Pivot create() { - return new Pivot(AXIS_Y, PIVOT_CENTER); - } - }, - BOTTOM { - @Override - public Pivot create() { - return new Pivot(AXIS_Y, PIVOT_MAX); - } - }; - - public abstract Pivot create(); - } - - @IntDef({AXIS_X, AXIS_Y}) - @Retention(RetentionPolicy.SOURCE) - public @interface Axis{ - } -} - diff --git a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/transform/ScaleTransformer.java b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/transform/ScaleTransformer.java deleted file mode 100644 index 89ec6c9b34..0000000000 --- a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/transform/ScaleTransformer.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.yarolegovich.discretescrollview.transform; - -import android.view.View; -import androidx.annotation.FloatRange; -import androidx.recyclerview.widget.RecyclerView; - -/** - * Created by yarolegovich on 03.03.2017. - */ -public class ScaleTransformer implements DiscreteScrollItemTransformer { - - private Pivot pivotX; - private Pivot pivotY; - private float minScale; - private float maxMinDiff; - - public ScaleTransformer() { - pivotX = Pivot.X.CENTER.create(); - pivotY = Pivot.Y.CENTER.create(); - minScale = 0.8f; - maxMinDiff = 0.2f; - } - - @Override - public void transformItem(View item, RecyclerView.ViewHolder childViewHolder, float position) { - pivotX.setOn(item); - pivotY.setOn(item); - float closenessToCenter = 1f - Math.abs(position); - float scale = minScale + maxMinDiff * closenessToCenter; - item.setScaleX(scale); - item.setScaleY(scale); - } - - public static class Builder { - - private ScaleTransformer transformer; - private float maxScale; - - public Builder() { - transformer = new ScaleTransformer(); - 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 ScaleTransformer 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-common/src/main/java/com/yarolegovich/discretescrollview/util/ScrollListenerAdapter.java b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/util/ScrollListenerAdapter.java deleted file mode 100644 index 7611c52a18..0000000000 --- a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/util/ScrollListenerAdapter.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.yarolegovich.discretescrollview.util; - - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.recyclerview.widget.RecyclerView; -import com.yarolegovich.discretescrollview.DiscreteScrollView; - -/** - * Created by yarolegovich on 16.03.2017. - */ -public class ScrollListenerAdapter implements DiscreteScrollView.ScrollStateChangeListener { - - private DiscreteScrollView.ScrollListener adaptee; - - public ScrollListenerAdapter(@NonNull DiscreteScrollView.ScrollListener adaptee) { - this.adaptee = adaptee; - } - - @Override - public void onScrollStart(@NonNull T currentItemHolder, int adapterPosition) { - - } - - @Override - public void onScrollEnd(@NonNull T currentItemHolder, int adapterPosition) { - - } - - @Override - public void onScroll(float scrollPosition, - int currentIndex, int newIndex, - @Nullable T currentHolder, @Nullable T newCurrentHolder) { - adaptee.onScroll(scrollPosition, currentIndex, newIndex, currentHolder, newCurrentHolder); - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof ScrollListenerAdapter) { - return adaptee.equals(((ScrollListenerAdapter) obj).adaptee); - } else { - return super.equals(obj); - } - } -} diff --git a/modules/mogo-module-common/src/main/res/drawable/moddule_commons_shape_react_blue_grident.xml b/modules/mogo-module-common/src/main/res/drawable/moddule_commons_shape_react_blue_grident.xml new file mode 100644 index 0000000000..3c91cb81a9 --- /dev/null +++ b/modules/mogo-module-common/src/main/res/drawable/moddule_commons_shape_react_blue_grident.xml @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/modules/mogo-module-common/src/main/res/drawable/module_commons_shape_react_gray_grident.xml b/modules/mogo-module-common/src/main/res/drawable/module_commons_shape_react_gray_grident.xml new file mode 100644 index 0000000000..5d90ff43e3 --- /dev/null +++ b/modules/mogo-module-common/src/main/res/drawable/module_commons_shape_react_gray_grident.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/modules/mogo-module-common/src/main/res/drawable/module_commons_shape_round_gray.xml b/modules/mogo-module-common/src/main/res/drawable/module_commons_shape_round_gray.xml new file mode 100644 index 0000000000..37f8498d8c --- /dev/null +++ b/modules/mogo-module-common/src/main/res/drawable/module_commons_shape_round_gray.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/modules/mogo-module-common/src/main/res/layout/module_commons_layout_wm_dialog.xml b/modules/mogo-module-common/src/main/res/layout/module_commons_layout_wm_dialog.xml new file mode 100644 index 0000000000..ae4839f484 --- /dev/null +++ b/modules/mogo-module-common/src/main/res/layout/module_commons_layout_wm_dialog.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-common/src/main/res/values/strings.xml b/modules/mogo-module-common/src/main/res/values/strings.xml index f6affe31b5..74f2951c89 100644 --- a/modules/mogo-module-common/src/main/res/values/strings.xml +++ b/modules/mogo-module-common/src/main/res/values/strings.xml @@ -1,5 +1,6 @@ mogo-module-common - You should not set LayoutManager on DiscreteScrollView.class instance. Library uses a special one. Just don\'t call the method. - InfiniteScrollAdapter is supposed to work only with DiscreteScrollView + 确认 + 取消 + 是否退出导航? diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java index eb6788ead6..41dffb39d1 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java @@ -11,11 +11,6 @@ import androidx.annotation.Nullable; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.MvpFragment; -import com.mogo.commons.voice.AIAssist; -import com.mogo.module.extensions.anim.AnimWrapper; -import com.mogo.service.MogoServicePaths; -import com.mogo.service.analytics.IMogoAnalytics; -import com.mogo.service.fragmentmanager.IMogoFragmentManager; /** * @author congtaowang @@ -29,24 +24,13 @@ public class ExtensionsFragment extends MvpFragment< ExtensionsView, ExtensionsP public static final int MAX_DISPLAY_MSG_AMOUNT = 99; - private ImageView mVoiceIcon; - private AnimWrapper mAnim = new AnimWrapper(); - private TextView mVoiceMsg; - - private TextView mTime; - private TextView mDate; - private View mWeatherContainer; private ImageView mWeatherIcon; private TextView mWeatherTemp; - private TextView mWeatherDesc; private View mMsgContainer; private TextView mMsgCounter; - private IMogoAnalytics mAnalytics; - private IMogoFragmentManager mMogoFragmentManager; - @Override protected int getLayoutId() { return R.layout.module_ext_layout_extensions; @@ -54,25 +38,10 @@ public class ExtensionsFragment extends MvpFragment< ExtensionsView, ExtensionsP @Override protected void initViews() { - mVoiceIcon = findViewById( R.id.module_ext_id_voice ); - mAnim.initAnim( mVoiceIcon ); - mVoiceMsg = findViewById( R.id.module_ext_id_voice_msg ); - - mVoiceIcon.setOnClickListener( view -> { - mVoiceMsg.performClick(); - } ); - mVoiceMsg.setOnClickListener( view -> { - AIAssist.startAssistant( getContext() ); - mAnalytics.track( "Launcher_xiaozhi_Click", null ); - } ); - - mTime = findViewById( R.id.module_ext_id_time ); - mDate = findViewById( R.id.module_ext_id_date ); mWeatherContainer = findViewById( R.id.module_ext_id_weather_container ); mWeatherIcon = findViewById( R.id.module_ext_id_weather_icon ); mWeatherTemp = findViewById( R.id.module_ext_id_weather_temp ); - mWeatherDesc = findViewById( R.id.module_ext_id_weather_desc ); mMsgContainer = findViewById( R.id.module_ext_id_msg ); mMsgContainer.setOnClickListener( view -> { @@ -90,35 +59,16 @@ public class ExtensionsFragment extends MvpFragment< ExtensionsView, ExtensionsP @Override public void onActivityCreated( @Nullable Bundle savedInstanceState ) { super.onActivityCreated( savedInstanceState ); - mAnalytics = ( IMogoAnalytics ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_ANALYTICS ).navigation( getContext() ); - mMogoFragmentManager = ( IMogoFragmentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_FRAGMENT_MANAGER ).navigation( getContext() ); - - mMogoFragmentManager.addMainFragmentStackTransactionListener( size -> { - // 主页 fragment 栈变化的时候,改变动画状态 - if ( size == 0 ) { - mAnim.start(); - } else { - mAnim.stop(); - } - } ); } @Override public void onResume() { super.onResume(); - mAnim.start(); } @Override public void onStop() { super.onStop(); - mAnim.stop(); - } - - @Override - public void renderTime( String date, String time ) { - mDate.setText( date ); - mTime.setText( time ); } @Override @@ -134,7 +84,6 @@ public class ExtensionsFragment extends MvpFragment< ExtensionsView, ExtensionsP hidden |= TextUtils.isEmpty( temp ); hidden |= TextUtils.isEmpty( desc ); mWeatherTemp.setText( temp ); - mWeatherDesc.setText( desc ); mWeatherContainer.setVisibility( hidden ? View.GONE : View.VISIBLE ); } @@ -143,11 +92,4 @@ public class ExtensionsFragment extends MvpFragment< ExtensionsView, ExtensionsP mMsgContainer.setVisibility( hasMsg ? View.VISIBLE : View.GONE ); mMsgCounter.setText( amount > MAX_DISPLAY_MSG_AMOUNT ? getString( R.string.module_ext_str_dots ) : String.valueOf( amount ) ); } - - @Override - public void renderAITipWords( String word ) { - if ( !TextUtils.isEmpty( word ) ) { - mVoiceMsg.setText( word ); - } - } } 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..f779f76aec 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 @@ -1,13 +1,5 @@ package com.mogo.module.extensions; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; - import androidx.annotation.NonNull; import androidx.lifecycle.LifecycleOwner; @@ -20,23 +12,6 @@ import com.mogo.module.extensions.weather.WeatherModel; import com.mogo.service.MogoServicePaths; import com.mogo.service.statusmanager.IMogoMsgCenter; import com.mogo.service.statusmanager.IMogoMsgCenterListener; -import com.mogo.service.statusmanager.IMogoStatusChangedListener; -import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.statusmanager.StatusDescriptor; -import com.mogo.utils.UiThreadHandler; -import com.mogo.utils.WorkThreadHandler; -import com.mogo.utils.logger.Logger; - -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Queue; -import java.util.Random; -import java.util.Set; /** @@ -46,136 +21,26 @@ import java.util.Set; * 描述 */ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements WeatherCallback, - IMogoMsgCenterListener, - IMogoStatusChangedListener { + IMogoMsgCenterListener { private static final String TAG = "ExtensionsPresenter"; - private String[] mWeeks; - private WeatherModel mWeatherModel; - public static final int MSG_SWITCH_AI_TIP_WORDS = 4000; - public static final long INTERVAL_TIME = 8_000L; - private String[] mAITipWords; - private int mCurrentIndex = 0; - private Handler mHandler = new Handler( Looper.getMainLooper() ) { - @Override - public void handleMessage( Message msg ) { - super.handleMessage( msg ); - if ( msg.what == MSG_SWITCH_AI_TIP_WORDS ) { - if ( mView != null ) { - if ( mCurrentIndex < mAITipWords.length ) { - mView.renderAITipWords( mAITipWords[mCurrentIndex++] ); - } else { - mCurrentIndex = 0; - mHasTipWords = generateTipWordsSequence(); - } - } - if ( mHasTipWords ) { - mHandler.sendEmptyMessageDelayed( MSG_SWITCH_AI_TIP_WORDS, INTERVAL_TIME ); - } - } - } - }; - private boolean mHasTipWords = false; - - private boolean mHasStarted = false; - - /** - * 接收时间变化的广播 - */ - private BroadcastReceiver mReceiver = new BroadcastReceiver() { - @Override - public void onReceive( Context context, Intent intent ) { - try { - WorkThreadHandler.getInstance().post( () -> { - refreshTimeAndDate(); - } ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error. " ); - } - } - }; - private IMogoMsgCenter mMsgCenter; - private IMogoStatusManager mStatusManager; - - private boolean generateTipWordsSequence() { - if ( mAITipWords != null && mAITipWords.length > 0 ) { - Random random = new Random( System.currentTimeMillis() ); - int loop = mAITipWords.length / 2; - int bound = mAITipWords.length; - for ( int i = 0; i < loop; i++ ) { - int target = random.nextInt( bound ); - int sweepTarget = random.nextInt( bound ); - if ( target != sweepTarget ) { - String targetStr = mAITipWords[target]; - mAITipWords[target] = mAITipWords[sweepTarget]; - mAITipWords[sweepTarget] = targetStr; - } - } - Logger.d( TAG, "next generate sequence: " + mAITipWords ); - return true; - } - return false; - } - public ExtensionsPresenter( ExtensionsView view ) { super( view ); - mWeeks = getContext().getResources().getStringArray( R.array.module_ext_str_arr_week ); - mAITipWords = getContext().getResources().getStringArray( R.array.module_ext_str_arr_ai_tips ); mWeatherModel = new WeatherModel( getContext() ); } @Override public void onCreate( @NonNull LifecycleOwner owner ) { super.onCreate( owner ); - registerTimerReceiver(); mWeatherModel.init( this ); mWeatherModel.queryWeatherInformation(); - refreshTimeAndDate(); mMsgCenter = ( IMogoMsgCenter ) ARouter.getInstance().build( MogoServicePaths.PATH_MSG_CENTER ).navigation(); mMsgCenter.registerMsgCenterListener( this ); - mHasTipWords = generateTipWordsSequence(); - - mStatusManager = ( IMogoStatusManager ) ARouter.getInstance().build( MogoServicePaths.PATH_STATUS_MANAGER ).navigation(); - mStatusManager.registerStatusChangedListener( TAG, StatusDescriptor.APP_LIST_UI, this ); - mStatusManager.registerStatusChangedListener( TAG, StatusDescriptor.SEARCH_UI, this ); - } - - /** - * 注册时间变化监听 - */ - private void registerTimerReceiver() { - IntentFilter filter = new IntentFilter(); - filter.addAction( Intent.ACTION_TIME_TICK ); - filter.addAction( Intent.ACTION_TIME_CHANGED ); - filter.addAction( Intent.ACTION_TIMEZONE_CHANGED ); - filter.addAction( Intent.ACTION_CONFIGURATION_CHANGED ); - getContext().registerReceiver( mReceiver, filter ); - } - - private void refreshTimeAndDate() { - Calendar calendar = Calendar.getInstance(); - int hour = calendar.get( Calendar.HOUR_OF_DAY ); - int minute = calendar.get( Calendar.MINUTE ); - - int month = calendar.get( Calendar.MONTH ); - int day = calendar.get( Calendar.DAY_OF_MONTH ); - int week = calendar.get( Calendar.DAY_OF_WEEK ); - - String timeStr = getContext().getResources().getString( R.string.module_ext_str_time_format, hour, minute > 9 ? String.valueOf( minute ) : "0" + minute ); - String dateStr = getContext().getResources().getString( R.string.module_ext_str_date_format, month + 1, day, mWeeks[week - 1] ); - - UiThreadHandler.post( () -> { - try { - mView.renderTime( dateStr, timeStr ); - } catch ( Exception e ) { - e.printStackTrace(); - } - } ); } @Override @@ -197,43 +62,14 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements } } - @Override - public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) { - switch ( descriptor ) { - case APP_LIST_UI: - case SEARCH_UI: - changeAutoSwitchVoiceTipsWordsStatus( !isTrue ); - break; - } - } - @Override public void onResume( @NonNull LifecycleOwner owner ) { super.onResume( owner ); - changeAutoSwitchVoiceTipsWordsStatus( true ); } @Override public void onPause( @NonNull LifecycleOwner owner ) { super.onPause( owner ); - changeAutoSwitchVoiceTipsWordsStatus( true ); - } - - private void changeAutoSwitchVoiceTipsWordsStatus( boolean autoChange ) { - if ( !mHasTipWords ) { - return; - } - if ( mHasStarted ) { - return; - } - mHasStarted = true; - if ( autoChange ) { - mHandler.sendEmptyMessageDelayed( MSG_SWITCH_AI_TIP_WORDS, INTERVAL_TIME ); - Logger.d( TAG, "auto switch" ); - } else { - mHandler.removeMessages( MSG_SWITCH_AI_TIP_WORDS ); - Logger.d( TAG, "stop auto switch" ); - } } @Override @@ -242,7 +78,6 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements if ( mWeatherModel != null ) { mWeatherModel.destroy(); } - getContext().unregisterReceiver( mReceiver ); if ( mMsgCenter != null ) { mMsgCenter.unregisterMsgCenterListener( this ); } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsView.java index 91f3d5e19c..fa1ef5e128 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsView.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsView.java @@ -11,14 +11,6 @@ import com.mogo.module.extensions.weather.WeatherInfo; */ public interface ExtensionsView extends IView { - /** - * 刷新日期、时间 - * - * @param date 日期 - * @param time 时间 - */ - void renderTime( String date, String time ); - /** * 天气信息 * @@ -35,11 +27,4 @@ public interface ExtensionsView extends IView { * @param amount 消息数量 */ void renderMsgInfo( boolean hasMsg, int amount ); - - /** - * 更换小智语音提示词 - * - * @param word - */ - void renderAITipWords( String word ); } 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..34867b8492 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 @@ -1,12 +1,12 @@ package com.mogo.module.extensions.entrance; import android.content.Intent; +import android.graphics.Rect; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.util.Log; -import android.view.MotionEvent; import android.view.View; import android.widget.ImageView; import android.widget.TextView; @@ -17,16 +17,13 @@ import androidx.annotation.Nullable; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.MvpFragment; -import com.mogo.map.MogoLatLng; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.location.IMogoLocationClient; import com.mogo.map.location.MogoLocation; import com.mogo.map.marker.IMogoMarkerManager; -import com.mogo.map.model.MogoPoi; import com.mogo.map.navi.IMogoAimlessModeListener; import com.mogo.map.navi.IMogoNavi; import com.mogo.map.navi.IMogoNaviListener; -import com.mogo.map.navi.MogoCongestionInfo; import com.mogo.map.navi.MogoNaviInfo; import com.mogo.map.navi.MogoTraffic; import com.mogo.map.uicontroller.EnumMapUI; @@ -34,11 +31,11 @@ import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant; import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListener; import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager; +import com.mogo.module.common.dialog.WMDialog; import com.mogo.module.common.map.MapCenterPointStrategy; import com.mogo.module.common.map.Scene; import com.mogo.module.extensions.ExtensionsModuleConst; import com.mogo.module.extensions.R; -import com.mogo.module.extensions.dialog.NaviNoticeDialog; import com.mogo.module.extensions.navi.NaviInfoView; import com.mogo.module.share.ShareControl; import com.mogo.service.IMogoServiceApis; @@ -48,11 +45,11 @@ import com.mogo.service.entrance.ButtonIndex; import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.map.IMogoMapService; -import com.mogo.service.module.IMogoAddressManager; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.statusmanager.StatusDescriptor; +import com.mogo.utils.ResourcesHelper; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; @@ -77,25 +74,19 @@ 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; - private View mVRMode; private View mMove2CurrentLocation; private NaviInfoView mNaviInfo; private TextView mExitNavi; - private View mSpeedLimit; - private TextView mSpeedLimitValue; - private View mSpeedLimitUnit; + + private View mDisplayOverview; + private ImageView mDisplayOverviewIcon; + private TextView mDisplayOverviewText; private IMogoServiceApis mApis; private IMogoMapService mService; @@ -103,7 +94,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent private IMogoLocationClient mMogoLocationClient; private IMogoNavi mMogoNavi; private IMogoFragmentManager mMogoFragmentManager; - private IMogoAddressManager mMogoAddressManager; private IMogoMarkerManager mMogoMarkerManager; private IMogoRegisterCenter mMogoRegisterCenter; @@ -171,6 +161,19 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent public static final int MSG_STOP_ANIM = 308; public static final long TIME_FRAME_INTERVAL_TIME = 80; + private Rect mDisplayOverviewBounds; + + private Runnable mLockCarRunnable = new Runnable() { + @Override + public void run() { + if ( !mStatusManager.isDisplayOverview() ) { + return; + } + mStatusManager.setDisplayOverview( TAG, false ); + mMApUIController.recoverLockMode(); + } + }; + @Override protected int getLayoutId() { return R.layout.module_ext_layout_entrance; @@ -184,33 +187,9 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mEntrancePresenter = new EntrancePresenter( getContext(), this, mIMogoAuthorizeModuleManager ); mMogoFragmentManager = mApis.getFragmentManagerApi(); - mMogoAddressManager = mApis.getAddressManagerApi(); 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 ); @@ -223,19 +202,35 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent traceData( "1" ); } } ); - mVRMode = findViewById( R.id.module_entrance_id_vr_mode ); - mVRMode.setOnClickListener( view -> { + + mDisplayOverview = findViewById( R.id.module_ext_id_display_overview ); + mDisplayOverviewText = findViewById( R.id.module_ext_id_display_overview_text ); + mDisplayOverviewIcon = findViewById( R.id.module_ext_id_display_overview_icon ); + mDisplayOverview.setOnClickListener( view -> { + if ( !mStatusManager.isDisplayOverview() ) { + mMApUIController.displayOverview( mDisplayOverviewBounds ); + UiThreadHandler.removeCallbacks( mLockCarRunnable ); + UiThreadHandler.postDelayed( mLockCarRunnable, 20_000 ); + } else { + mMApUIController.recoverLockMode(); + UiThreadHandler.removeCallbacks( mLockCarRunnable ); + } + mStatusManager.setDisplayOverview( TAG, !mStatusManager.isDisplayOverview() ); } ); mMove2CurrentLocation = findViewById( R.id.module_entrance_id_move2_current_location ); mMove2CurrentLocation.setOnClickListener( view -> { final MogoLocation location = mMogoLocationClient.getLastKnowLocation(); if ( location != null ) { - if ( !mMogoStatusManager.isADASShow() ) { + if ( !mMogoStatusManager.isV2XShow() ) { mMogoStatusManager.setUserInteractionStatus( TAG, true, false ); mMApUIController.setLockZoom( 16 ); mMApUIController.changeZoom( 16.0f ); } + if ( mStatusManager.isDisplayOverview() ) { + mMogoStatusManager.setDisplayOverview( TAG, false ); + UiThreadHandler.removeCallbacks( mLockCarRunnable ); + } mMogoStatusManager.setUserInteractionStatus( TAG, true, false ); mMApUIController.recoverLockMode(); } @@ -246,8 +241,17 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mExitNavi.setOnClickListener( view -> { if ( mMogoNavi != null ) { if ( mIsLock ) { - NaviNoticeDialog naviNoticeDialog = new NaviNoticeDialog( getContext() ); - naviNoticeDialog.show(); + new WMDialog.Builder( getContext() ) + .setOkButton( R.string.module_commons_button_ok, ( dlg, which ) -> { + dlg.dismiss(); + mMogoNavi.stopNavi(); + } ) + .setCancelButton( R.string.module_commons_button_cancel, ( dlg, which ) -> { + dlg.dismiss(); + } ) + .setContent( R.string.module_commons_exit_navi_content ) + .build() + .show(); } else { MapCenterPointStrategy.setMapCenterPointByScene( mMApUIController, Scene.NAVI ); mMApUIController.recoverLockMode(); @@ -266,10 +270,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mCameraMode.setText( getString( mCameraMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up ) ); } ); - mSpeedLimit = findViewById( R.id.module_entrance_id_speed_limit_container ); - mSpeedLimitValue = findViewById( R.id.module_entrance_id_speed_limit_value ); - mSpeedLimitUnit = findViewById( R.id.module_entrance_id_speed_limit_unit ); - mApis.getIntentManagerApi().registerIntentListener( AUTONAVI_STANDARD_BROADCAST_RECV, new IMogoIntentListener() { @Override @@ -290,6 +290,12 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent MogoEntranceButtons.save( ButtonIndex.BUTTON1, findViewById( R.id.module_entrance_id_button1 ) ); MogoEntranceButtons.save( ButtonIndex.BUTTON2, findViewById( R.id.module_entrance_id_button2 ) ); + mDisplayOverviewBounds = new Rect( + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_display_overview_left_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_display_overview_top_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_display_overview_right_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_display_overview_bottom_margin ) + ); } private static final String AUTONAVI_STANDARD_BROADCAST_RECV = "AUTONAVI_STANDARD_BROADCAST_RECV"; @@ -318,6 +324,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mMogoMarkerManager = mService.getMarkerManager( getContext() ); mMogoStatusManager.registerStatusChangedListener( TAG, StatusDescriptor.UPLOADING, this ); + mMogoStatusManager.registerStatusChangedListener( TAG, StatusDescriptor.DISPLAY_OVERVIEW, this ); } @Override @@ -354,14 +361,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,80 +371,30 @@ 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 ); mMApUIController.changeMapMode( mCameraMode.isSelected() ? EnumMapUI.NorthUP_2D : EnumMapUI.CarUp_2D ); MapCenterPointStrategy.setMapCenterPointBySceneAndDelay( mMApUIController, Scene.NAVI, 500, () -> { return !mMogoNavi.isNaviing(); } ); + mDisplayOverview.setVisibility( View.VISIBLE ); mApis.getAnalyticsApi().track( "Navigation_begin", new HashMap<>() ); } @Override public void onStopNavi() { - mSearch.setVisibility( View.VISIBLE ); - mCommonAddress.setVisibility( View.VISIBLE ); mNaviInfo.setVisibility( View.GONE ); - mCameraMode.setVisibility( View.GONE ); mExitNavi.setVisibility( View.GONE ); - mSpeedLimit.setVisibility( View.GONE ); mMApUIController.changeMapMode( EnumMapUI.NorthUP_2D ); + mDisplayOverview.setVisibility( View.GONE ); 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 ) { return; } - if ( traffic.getSpeedLimit() <= 0 ) { - mSpeedLimit.setVisibility( View.INVISIBLE ); - mSpeedLimitValue.setText( "--" ); - } else { - // 暂时不显示限速,等有好的显示方案在放开 - mSpeedLimit.setVisibility( View.INVISIBLE ); - mSpeedLimitValue.setText( String.valueOf( traffic.getSpeedLimit() ) ); - } - } - - @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 @@ -461,50 +410,12 @@ 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 ); mAnalytics.track( "Launcher_Share_Click", properties ); } - @Override - public void showNaviPanelWidgets() { - if ( !mMogoNavi.isNaviing() ) { - return; - } - mNaviInfo.setVisibility( View.VISIBLE ); - mCameraMode.setVisibility( View.VISIBLE ); - try { - mApis.getWindowManagerApi().showAll(); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - - @Override - public void hideNaviPanelWidgets() { - if ( !mMogoNavi.isNaviing() ) { - return; - } - mNaviInfo.setVisibility( View.GONE ); - mCameraMode.setVisibility( View.GONE ); - try { - mApis.getWindowManagerApi().hideAll(); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - @Override public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) { if ( mUploadRoadCondition == null ) { @@ -527,6 +438,17 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mUploading.setVisibility( View.GONE ); mUpload.setVisibility( View.VISIBLE ); } + } else if ( descriptor == StatusDescriptor.DISPLAY_OVERVIEW ) { + if ( !mMogoNavi.isNaviing() ) { + return; + } + if ( isTrue ) { + mDisplayOverviewText.setText( "退出全览" ); + mCameraMode.setVisibility( View.GONE ); + } else { + mDisplayOverviewText.setText( "全览" ); + mCameraMode.setVisibility( View.VISIBLE ); + } } } @@ -554,10 +476,10 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent if ( mCurrentUploadFrame == mUploadingFrameRes.length ) { mCurrentUploadFrame = 12; } - mUploading.setImageResource( mUploadingFrameRes[mCurrentUploadFrame++%mUploadingFrameRes.length] ); + mUploading.setImageResource( mUploadingFrameRes[mCurrentUploadFrame++ % mUploadingFrameRes.length] ); } mUploadFrameAnimHandler.sendEmptyMessageDelayed( MSG_FRAME_ANIM, TIME_FRAME_INTERVAL_TIME ); - } else if( msg.what == MSG_STOP_ANIM ){ + } else if ( msg.what == MSG_STOP_ANIM ) { mStatusManager.setUploadingStatus( TAG, false ); } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java index 2f1d174767..cec48aab5a 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java @@ -2,7 +2,6 @@ package com.mogo.module.extensions.entrance; import android.content.Context; import android.content.Intent; -import android.net.Uri; import android.text.TextUtils; import android.util.Log; @@ -13,7 +12,6 @@ import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.Presenter; import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.IMogoVoiceCmdCallBack; -import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant; import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager; import com.mogo.module.extensions.ExtensionsModuleConst; import com.mogo.module.share.ShareControl; @@ -22,11 +20,10 @@ import com.mogo.service.MogoServicePaths; import com.mogo.service.analytics.IMogoAnalytics; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.intent.IMogoIntentManager; -import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.logger.Logger; +import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; @@ -40,7 +37,10 @@ import static com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerCons *

* 描述 */ -public class EntrancePresenter extends Presenter< EntranceView > implements IMogoStatusChangedListener { +public class EntrancePresenter extends Presenter< EntranceView > { + private static final String REPORT_TANLU_BLOCK = "10007"; + private static final String REPORT_TANLU_TRAFFIC_CHECK = "10002"; + private static final String REPORT_TANLU_CLOSURE = "10003"; private Context mContext; private IMogoAnalytics mAnalytics; @@ -82,7 +82,7 @@ public class EntrancePresenter extends Presenter< EntranceView > implements IMog Log.d( TAG, "免唤醒 mogoVoiceListener needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) + " >>>cmd = " + cmd ); mVoiceCmdType = cmd; if ( cmd.equals( ExtensionsModuleConst.CANCLE_SHARE ) - /*|| cmd.equals( ExtensionsModuleConst.CLOSE ) */) { //取消分享,关闭页面 + /*|| cmd.equals( ExtensionsModuleConst.CLOSE ) */ ) { //取消分享,关闭页面 if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { @@ -129,7 +129,6 @@ public class EntrancePresenter extends Presenter< EntranceView > implements IMog @Override public void onCreate( @NonNull LifecycleOwner owner ) { super.onCreate( owner ); - mStatusManager.registerStatusChangedListener( TAG, StatusDescriptor.DISPLAY_OVERVIEW, this ); } /** @@ -203,8 +202,19 @@ public class EntrancePresenter extends Presenter< EntranceView > implements IMog if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - uploadRoadCondition(); - Log.d( TAG, "mogoIntentListener 分享路况 唤醒 ----> " ); + JSONObject jsonObject = null; + try { + jsonObject = new JSONObject( data ); + String typeString = jsonObject.get( "obj" ).toString(); + Logger.d(TAG, "mogiIntentListener 准备上报拥堵: " + typeString); + if("拥堵".equals(typeString)) { + uploadRoadCondition(); + Log.d(TAG, "mogoIntentListener 上报拥堵 唤醒 ----> "); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } } else if ( intentStr.equals( ExtensionsModuleConst.SHARE_DIALOG_CLOSE ) ) { //关闭分享框 唤醒 if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { @@ -276,26 +286,26 @@ public class EntrancePresenter extends Presenter< EntranceView > implements IMog } private void uploadRoadCondition() { - mStatusManager.setUploadingStatus("CARD_TYPE_ROAD_CONDITION", true); + mStatusManager.setUploadingStatus( "CARD_TYPE_ROAD_CONDITION", true ); traceTanluData( "2" ); - sendShareReceiver( "1" ); + sendShareReceiver( REPORT_TANLU_BLOCK ); Logger.d( "EntrancePresenter", "mogoIntentListener 上报路况 ----> " ); traceTypeData( "1" ); ShareControl.getInstance( mContext ).dismissDialog(); } private void uploadTrfficCheck() { - mStatusManager.setUploadingStatus("CARD_TYPE_ROAD_CONDITION", true); - sendShareReceiver( "2" ); + mStatusManager.setUploadingStatus( "CARD_TYPE_ROAD_CONDITION", true ); + sendShareReceiver( REPORT_TANLU_TRAFFIC_CHECK ); Logger.d( "EntrancePresenter", "mogoIntentListener 分享交通检查 ----> " ); traceTypeData( "3" ); ShareControl.getInstance( mContext ).dismissDialog(); } private void uploadRoadClosed() { - mStatusManager.setUploadingStatus("CARD_TYPE_ROAD_CONDITION", true); - sendShareReceiver( "3" ); + mStatusManager.setUploadingStatus( "CARD_TYPE_ROAD_CONDITION", true ); + sendShareReceiver( REPORT_TANLU_CLOSURE ); Logger.d( "EntrancePresenter", "mogoIntentListener 分享封路 ----> " ); traceTypeData( "4" ); ShareControl.getInstance( mContext ).dismissDialog(); @@ -321,7 +331,7 @@ public class EntrancePresenter extends Presenter< EntranceView > implements IMog } /** - * 发送广播 1拥堵,2交通检查,3封路 + * 发送广播 上报路况 */ private void sendShareReceiver( String type ) { Logger.d( "EntrancePresenter", "TanluCardViewFragment sendShareReceiver ---->" ); @@ -364,15 +374,4 @@ public class EntrancePresenter extends Presenter< EntranceView > implements IMog AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK ); AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE ); } - - @Override - public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) { - if ( descriptor == StatusDescriptor.DISPLAY_OVERVIEW ) { - if ( isTrue ) { - mView.hideNaviPanelWidgets(); - } else { - mView.showNaviPanelWidgets(); - } - } - } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java index 6309e1b02c..55f070eb71 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java @@ -10,7 +10,4 @@ import com.mogo.commons.mvp.IView; */ public interface EntranceView extends IView { - void showNaviPanelWidgets(); - - void hideNaviPanelWidgets(); } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/BaseNaviInfoView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/BaseNaviInfoView.java index a0c76b7dad..700c23d406 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/BaseNaviInfoView.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/BaseNaviInfoView.java @@ -51,21 +51,58 @@ public abstract class BaseNaviInfoView extends RelativeLayout { protected void fillNextCrossDistance( TextView target, TextView unit, int distance ) { if ( distance >= 1000 ) { target.setText( String.format( "%.1f", distance / 1000f ) ); - unit.setText( "公里" ); + unit.setText( "km" ); } else { target.setText( distance + "" ); - unit.setText( "米" ); + unit.setText( "m" ); } } protected void fillFormatSurplusDistance( int m, StringBuilder builder ) { if ( m >= 1000 ) { - builder.append( String.format( "%.1f公里", m / 1000f ) ); + builder.append( String.format( "%.1fkm", m / 1000f ) ); } else { - builder.append( m ).append( "米" ); + builder.append( m ).append( "m" ); } } + protected String getFormatSurplusDistance( int m ) { + if ( m >= 1000 ) { + mFormatSurplusDistanceUnit = "km"; + return String.format( "%.1f", m / 1000f ); + } else { + mFormatSurplusDistanceUnit = "m"; + return String.format( "%d", m ); + } + } + + private String mFormatSurplusDistanceUnit = ""; + + protected String getFormatSurplusDistanceUnit() { + return mFormatSurplusDistanceUnit; + } + + protected String getFormatSurplusTime( int seconds ) { + if ( seconds > 60 * 60 ) { + mFormatSurplusDistanceUnit = "h"; + return String.format( "%.1f", ( ( float ) seconds ) / 60 * 60 ); + } + + if ( seconds > 60 ) { + mFormatSurplusTimeUnit = "min"; + return String.format( "%.1f", ( ( float ) seconds ) / 60 ); + } + + mFormatSurplusTimeUnit = "s"; + return String.format( "%d", seconds ); + } + + private String mFormatSurplusTimeUnit = ""; + + protected String getFormatSurplusTimeUnit() { + return mFormatSurplusTimeUnit; + } + protected void fillFormatTime( int seconds, StringBuilder builder ) { int days = seconds / ( 24 * 60 * 60 ); if ( days > 0 ) { @@ -81,6 +118,29 @@ public abstract class BaseNaviInfoView extends RelativeLayout { builder.append( min > 1 ? min : 1 ).append( "分钟" ); } + protected String getArriveTime( int seconds ) { + int days = seconds / ( 24 * 60 * 60 ); + if ( days > 0 ) { + return String.format( "%d天后", days ); + } else { + seconds -= days * 24 * 60 * 60; + int hours = seconds / ( 60 * 60 ); + seconds -= hours * 60 * 60; + int min = seconds / 60; + Calendar calendar = Calendar.getInstance(); + int curHour = calendar.get( Calendar.HOUR_OF_DAY ); + int curMin = calendar.get( Calendar.MINUTE ); + if ( curHour + hours + ( curMin + min ) / 60 > 24 ) { + return "一天后"; + } else { + calendar.add( Calendar.HOUR_OF_DAY, hours ); + calendar.add( Calendar.MINUTE, min ); + SimpleDateFormat dateFormat = new SimpleDateFormat( "HH:mm" ); + return dateFormat.format( calendar.getTime() ); + } + } + } + protected void fillArriveTime( int seconds, StringBuilder builder ) { int days = seconds / ( 24 * 60 * 60 ); diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/NaviInfoView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/NaviInfoView.java index 8c34869f9c..c15abd7991 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/NaviInfoView.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/NaviInfoView.java @@ -23,9 +23,12 @@ public class NaviInfoView extends BaseNaviInfoView { private TextView distance; private TextView distanceUnit; private TextView nextRoad; - private TextView estimateInfo; - private StringBuilder mBuilder = new StringBuilder(); + private TextView remainingDistance; + private TextView remainingDistanceUnit; + private TextView remainingTime; + private TextView remainingTimeUnit; + private TextView arriveTime; public NaviInfoView( Context context ) { this( context, null ); @@ -42,7 +45,12 @@ public class NaviInfoView extends BaseNaviInfoView { distance = findViewById( R.id.module_map_id_navi_next_info_distance ); distanceUnit = findViewById( R.id.module_map_id_navi_next_info_distance_unit ); nextRoad = findViewById( R.id.module_map_id_navi_next_info_road ); - estimateInfo = findViewById( R.id.module_map_id_navi_arrive_destination_estimate_info ); + + remainingDistance = findViewById( R.id.module_map_id_remaining_distance ); + remainingDistanceUnit = findViewById( R.id.module_map_id_remaining_distance_unit ); + remainingTime = findViewById( R.id.module_map_id_remaining_time ); + remainingTimeUnit = findViewById( R.id.module_map_id_remaining_time_unit ); + arriveTime = findViewById( R.id.module_map_id_arrive_time ); } @Override @@ -55,46 +63,12 @@ public class NaviInfoView extends BaseNaviInfoView { fillNextCrossIconType( turnIcon, naviInfo.getIconResId() ); nextRoad.setText( naviInfo.getNextRoadName() ); - try { - mBuilder.delete( 0, mBuilder.length() ); - } catch ( Exception e ) { - e.printStackTrace(); - } - mBuilder.append( "剩余" ); - fillFormatSurplusDistance( naviInfo.getPathRetainDistance(), mBuilder ); - mBuilder.append( " " ); - fillFormatTime( naviInfo.getPathRetainTime(), mBuilder ); - mBuilder.append( "\n" ); - fillArriveTime( naviInfo.getPathRetainTime(), mBuilder ); + remainingDistance.setText( getFormatSurplusDistance( naviInfo.getPathRetainDistance() ) ); + remainingDistanceUnit.setText( getFormatSurplusDistanceUnit() ); - final String text = mBuilder.toString(); - estimateInfo.setText( text ); - } + remainingTime.setText( getFormatSurplusTime( naviInfo.getPathRetainTime() ) ); + remainingTimeUnit.setText( getFormatSurplusTimeUnit() ); - /** - * 获取当行信息 - * - * @return - */ - public String getGuideInfo() { - StringBuilder builder = new StringBuilder(); - if ( getVisibility() == VISIBLE ) { - builder.append( distance.getText() ); - builder.append( nextRoad.getText() ); - } - return builder.toString(); - } - - /** - * 获取剩余里程 - * - * @return - */ - public String getPathRetainDistance() { - StringBuilder builder = new StringBuilder(); - if ( getVisibility() == VISIBLE ) { - builder.append( estimateInfo.getText() ); - } - return builder.toString(); + arriveTime.setText( getArriveTime( naviInfo.getPathRetainTime() ) ); } } diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_display_overview.png b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_display_overview.png new file mode 100755 index 0000000000..df4f12f225 Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_display_overview.png differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_message.png b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_message.png deleted file mode 100755 index 09af5d28bd..0000000000 Binary files a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_message.png and /dev/null differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_navi_info1.png b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_navi_info1.png new file mode 100755 index 0000000000..8495a826bc Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_navi_info1.png differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_navi_info2.png b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_navi_info2.png new file mode 100755 index 0000000000..797cb5f596 Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_navi_info2.png differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_navi_info3.png b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_navi_info3.png new file mode 100755 index 0000000000..c62dfd068d Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_navi_info3.png differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_display_overview.png b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_display_overview.png new file mode 100644 index 0000000000..9adb3bbe30 Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_display_overview.png differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_message.png b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_message.png deleted file mode 100644 index ec0f007df5..0000000000 Binary files a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_message.png and /dev/null differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_message2.png b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_message2.png new file mode 100644 index 0000000000..10f53d3374 Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_message2.png differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_navi_info1.png b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_navi_info1.png new file mode 100644 index 0000000000..b962d1c80b Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_navi_info1.png differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_navi_info2.png b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_navi_info2.png new file mode 100644 index 0000000000..a9ae343af8 Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_navi_info2.png differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_navi_info3.png b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_navi_info3.png new file mode 100644 index 0000000000..51ba7976b5 Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_navi_info3.png differ diff --git a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_msg_bkg.xml b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_msg_bkg.xml index 58d86caa09..670765d49a 100644 --- a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_msg_bkg.xml +++ b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_msg_bkg.xml @@ -1,9 +1,8 @@ - - - + + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_msg_container_bkg.xml b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_msg_container_bkg.xml new file mode 100644 index 0000000000..12a3b15758 --- /dev/null +++ b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_msg_container_bkg.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_weather_bkg.xml b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_weather_bkg.xml new file mode 100644 index 0000000000..90fb7a2eaf --- /dev/null +++ b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_weather_bkg.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_common_corner_bkg.xml b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_common_corner_bkg.xml index e90fdc8ce3..9c3715fa3a 100644 --- a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_common_corner_bkg.xml +++ b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_common_corner_bkg.xml @@ -1,15 +1,9 @@ - + - - - - - - - - + + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_navi_info_panel_bkg.xml b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_navi_info_panel_bkg.xml index f21cba570e..c364a86f0c 100644 --- a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_navi_info_panel_bkg.xml +++ b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_navi_info_panel_bkg.xml @@ -2,8 +2,8 @@ - - + + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_upload_road_condition_bkg.xml b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_upload_road_condition_bkg.xml index 375afdd8f9..16e096724d 100644 --- a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_upload_road_condition_bkg.xml +++ b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_upload_road_condition_bkg.xml @@ -1,15 +1,9 @@ - - - - - - - - - - + + + + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/drawable/shape_react_gray_round.xml b/modules/mogo-module-extensions/src/main/res/drawable/shape_react_gray_round.xml index bb02f81c07..c2e7581ff4 100644 --- a/modules/mogo-module-extensions/src/main/res/drawable/shape_react_gray_round.xml +++ b/modules/mogo-module-extensions/src/main/res/drawable/shape_react_gray_round.xml @@ -1,11 +1,12 @@ - + - + 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..61a9d338d0 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,190 +5,87 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:textSize="@dimen/module_ext_north_textSize" + app:layout_constraintRight_toRightOf="@+id/module_entrance_id_upload_road_condition" + app:layout_constraintTop_toBottomOf="@+id/module_entrance_id_navi_info_panel" + app:layout_goneMarginTop="@dimen/module_ext_north_goneMarginTop" /> + + + + + + + + - - - - - - - - - - - + + app:layout_constraintBottom_toTopOf="@+id/module_entrance_id_move2_current_location" + app:layout_constraintRight_toRightOf="@+id/module_entrance_id_move2_current_location" + app:layout_goneMarginBottom="@dimen/module_ext_operation_panel_share_goneMarginBottom"> + + + android:textSize="@dimen/module_ext_operation_panel_share_textSize" + android:visibility="gone" /> diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml index 88dd8f5dcd..87b42bda50 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml @@ -4,84 +4,21 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="@dimen/module_ext_height" - android:orientation="vertical" - android:paddingLeft="@dimen/module_ext_paddingLeft" - android:paddingRight="@dimen/module_ext_paddingRight"> - - - - - - - - - - - - - - + android:orientation="vertical"> + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:visibility="visible"> - - - - - + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:visibility="visible"> + android:layout_gravity="center" + android:scaleType="fitXY" + android:src="@drawable/module_ext_ic_message2" /> + android:background="@drawable/module_ext_dw_navi_info_panel_bkg"> - + android:orientation="vertical"> - + + + + + + + + + + + + + + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:orientation="horizontal"> - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-ldpi/dimens.xml index 57dca9bae6..31fec5ee59 100644 --- a/modules/mogo-module-extensions/src/main/res/values-ldpi/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values-ldpi/dimens.xml @@ -30,37 +30,36 @@ 20px 1px - 58px + 66px 20px 34.5px 58px 17px 31.4px 1.2px - 58px - 58px - 58px + 66px + 66px + 66px 21px - 20px + 16px 34.5px 20px - 64px - 64px + 66px + 66px 20px 32px 20px 30px - 22px + 16px 8px - 64px + 66px 32px 32px - 64px - 64px + 22px 28px 22px @@ -72,14 +71,14 @@ 18.48px 16px 22px - 28px + 16px 15px 15px 11.73px - 244px - 170px + 544px + 117px 85px 85px 13px @@ -87,16 +86,45 @@ 20px 32px 7px - 8px - 16px + 5px + 40px 15px 24px 15px - 9px - 9px - 18px - 18px - -1px + 9px + 9px + 18px + 18px + -1px + + 30px + 23px + 23px + 15px + 15px + 5px + 20px + 14px + 20px + 14px + 20px + 14px + 34px + 8px + 8px + + + 534px + 100px + 68px + 32px + 16px + 142px + 66px + 66px + 16px + 14px + 14px \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml index c4c5d9e9a2..fc372e59cf 100644 --- a/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml @@ -29,18 +29,18 @@ 32px 2px - 90px + 120px 32px 60px 92px 24px 48px 2px - 90px - 90px - 90px + 120px + 120px + 120px 40px - 24px + 30px 32px 32px @@ -57,8 +57,6 @@ 120px 60px 60px - 120px - 120px 32px 48px 80px @@ -70,14 +68,14 @@ 34px 26px 28px - 28px + 30px 30px 30px 20px - 458px - 318px + 1058px + 210px 159px 159px 24px @@ -85,16 +83,45 @@ 40px 60px 12px - 16px - 28px + 10px + 40px 28px 24px 28px - 17px - 17px - 36px - 36px - -2px + 17px + 17px + 36px + 36px + -2px + + 30px + 40px + 40px + 15px + 15px + 5px + 50px + 37px + 26px + 37px + 26px + 37px + 26px + 15px + 15px + + + 952px + 170px + 122px + 61px + 240px + 30px + 120px + 120px + 30px + 122px + 28px \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values/dimens.xml b/modules/mogo-module-extensions/src/main/res/values/dimens.xml index 027c19d25e..d4922bc498 100644 --- a/modules/mogo-module-extensions/src/main/res/values/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values/dimens.xml @@ -29,18 +29,18 @@ 32px 2px - 90px + 120px 32px 60px 92px 24px 48px 2px - 90px - 90px - 90px + 120px + 120px + 120px 40px - 24px + 30px 32px 32px @@ -57,8 +57,7 @@ 120px 60px 60px - 120px - 120px + 32px 48px 80px @@ -70,14 +69,14 @@ 34px 26px 28px - 28px + 30px 30px 30px 20px - 458px - 318px + 1058px + 210px 159px 159px 24px @@ -85,16 +84,45 @@ 10px 60px 12px - 16px - 28px + 10px + 40px 28px 24px 28px - 17px - 17px - 36px - 36px - -2px + 17px + 17px + 36px + 36px + -2px + + 30px + 40px + 40px + 15px + 15px + 5px + 37px + 26px + 37px + 26px + 37px + 26px + 50px + 15px + 15px + + + 952px + 170px + 122px + 61px + 30px + 240px + 120px + 120px + 30px + 22px + 28px \ No newline at end of file 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..f4b8d04f5a 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 @@ -23,18 +23,12 @@ import com.mogo.module.common.MogoModule; 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,39 +53,21 @@ 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; private FrameLayout mCoverUpLayout; private View mLeftShadowFrame; - private View mTopShadowFrame; /** * 主模块管控定位,可以向各个模块发送统一定位信息 */ private IMogoLocationClient mLocationClient; - private int mCurrentPosition = 0; - - private ViewPager.OnPageChangeListener mOnPageChangeListener; - - /** - * 手势切换卡片必须为true - *

- * 业务切换则由业务控制 - */ - private boolean mLockCarStatus = true; - @Override protected int getLayoutId() { return R.layout.module_main_activity_main; @@ -102,87 +78,11 @@ 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 ); mLeftShadowFrame = findViewById( R.id.module_main_id_map_left_shadow_frame ); - mTopShadowFrame = findViewById( R.id.module_main_id_map_top_shadow_frame ); mCoverUpLayout = findViewById( R.id.module_main_id_cover_up ); // 避免事件穿透导致地图被滑动 @@ -194,23 +94,19 @@ 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 ); mLeftShadowFrame.setVisibility( View.GONE ); - mTopShadowFrame.setVisibility( View.GONE ); } // 显示布局 private void showLayout() { mHeader.setVisibility( View.VISIBLE ); - mCards.setVisibility( View.VISIBLE ); mApps.setVisibility( View.VISIBLE ); mEntrance.setVisibility( View.VISIBLE ); mFloatingLayout.setVisibility( View.VISIBLE ); mLeftShadowFrame.setVisibility( View.VISIBLE ); - mTopShadowFrame.setVisibility( View.VISIBLE ); } @Override @@ -249,11 +145,11 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme loadContainerModules(); mMogoModuleHandler.loadModules(); mPresenter.delayOperations(); + mPresenter.initADAS(); hideCoverUpLayout(); // 显示左边遮罩 mLeftShadowFrame.setVisibility( View.VISIBLE ); - mTopShadowFrame.setVisibility( View.VISIBLE ); // 右移地图中心点 mMogoMapUIController = mMogoMapService.getMapUIController(); @@ -264,8 +160,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 +185,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,30 +223,22 @@ 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 protected void onPause() { super.onPause(); mMogoStatusManager.setMainPageResumeStatus( TAG, false ); - CardIntroduceConfigs.flush( getApplicationContext() ); + mServiceApis.getAdasControllerApi().closeADAS(); } @Override @@ -400,7 +279,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/SchemeIntent.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java index 81185341b8..14ec2be9ab 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java @@ -125,7 +125,7 @@ public class SchemeIntent implements IMogoStatusChangedListener { if ( mApis.getMapServiceApi().getNavi( mContext ).isNaviing() ) { mApis.getMapServiceApi().getNavi( mContext ).naviTo( new MogoLatLng( dlat, dlon ) ); } else { - mApis.getAddressManagerApi().calculatePath( new MogoLatLng( dlat, dlon ) ); + mApis.getSearchManagerApi().calculatePath( new MogoLatLng( dlat, dlon ) ); } } catch ( Exception e ) { TipToast.shortTip( "目的地异常,不能导航" ); 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..5834ab346d 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,18 +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()); - CardIntroduceConfigs.init( getContext(), apis ); + EventDispatchCenter.getInstance().registerReceiver( apis.getIntentManagerApi() ); } private Context getContext() { @@ -88,61 +70,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 +117,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 +130,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 +137,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/drawable/module_main_dw_left_frame_bkg.xml b/modules/mogo-module-main/src/main/res/drawable/module_main_dw_left_frame_bkg.xml index b9d160ac66..08a1055bcc 100644 --- a/modules/mogo-module-main/src/main/res/drawable/module_main_dw_left_frame_bkg.xml +++ b/modules/mogo-module-main/src/main/res/drawable/module_main_dw_left_frame_bkg.xml @@ -2,7 +2,13 @@ - + \ No newline at end of file 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..9965a54479 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 @@ -1,5 +1,6 @@ @@ -10,60 +11,36 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> - - + android:visibility="gone" + tools:visibility="visible" /> + + android:layout_height="@dimen/module_ext_height" + android:layout_marginLeft="@dimen/module_main_header_fragment_container_marginLeft" + android:layout_marginTop="@dimen/module_main_header_fragment_container_marginTop" /> + - - - - - - - - - + android:padding="@dimen/module_main_apps_fragment_container_padding" /> + android:padding="@dimen/module_main_entrance_fragment_container_padding" + android:layout_marginLeft="@dimen/module_main_id_entrance_fragment_container_marginLeft" /> + android:background="@drawable/module_main_launcher_bg" + android:visibility="visible" + tools:visibility="gone" /> \ No newline at end of file diff --git a/modules/mogo-module-main/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-main/src/main/res/values-ldpi/dimens.xml index f94f83a779..0ba4ec9f22 100644 --- a/modules/mogo-module-main/src/main/res/values-ldpi/dimens.xml +++ b/modules/mogo-module-main/src/main/res/values-ldpi/dimens.xml @@ -1,7 +1,7 @@ - 384px + 300px 8px 352px 370px @@ -16,4 +16,11 @@ 320px 319px + 110px + 16px + 15px + 460px + 444px + 16px + \ No newline at end of file diff --git a/modules/mogo-module-main/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-main/src/main/res/values-xhdpi/dimens.xml index 05f521641d..ee84bb8039 100644 --- a/modules/mogo-module-main/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-main/src/main/res/values-xhdpi/dimens.xml @@ -1,7 +1,7 @@ - 720px + 300px 10px 660px 690px @@ -15,4 +15,11 @@ 600px 599px + 200px + 30px + 30px + 830px + 800px + 30px + \ No newline at end of file diff --git a/modules/mogo-module-main/src/main/res/values/dimens.xml b/modules/mogo-module-main/src/main/res/values/dimens.xml index 9b62f05a55..af1335b972 100644 --- a/modules/mogo-module-main/src/main/res/values/dimens.xml +++ b/modules/mogo-module-main/src/main/res/values/dimens.xml @@ -1,7 +1,7 @@ - - 720px + + 150px 10px 660px 690px @@ -12,4 +12,11 @@ 15px 270px 352px + + 200px + 30px + 30px + 830px + 800px + 30px \ No newline at end of file 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..f71aceddb0 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 @@ -8,6 +8,7 @@ import android.graphics.Rect; import android.text.TextUtils; import androidx.annotation.NonNull; +import androidx.annotation.UiThread; import androidx.lifecycle.LifecycleOwner; import com.alibaba.android.arouter.launcher.ARouter; @@ -20,20 +21,17 @@ 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; import com.mogo.service.intent.IMogoIntentManager; import com.mogo.service.launcher.IMogoLauncher; import com.mogo.service.map.IMogoMapService; -import com.mogo.service.module.IMogoAddressManager; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.module.IMogoSearchManager; +import com.mogo.service.module.IMogoSettingManager; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.strategy.IMogoRefreshStrategyController; import com.mogo.utils.ResourcesHelper; @@ -62,9 +60,22 @@ public class MapPresenter extends Presenter< MapView > implements private IMogoStatusManager mStatusManager; private IMogoRegisterCenter mRegisterCenter; private IMogoLauncher mLauncher; - private IMogoAddressManager mMogoAddressManager; + private IMogoSearchManager mMogoSearchManager; + private IMogoSettingManager mSettingManager; private Rect mDisplayOverviewBounds; + + private Runnable mLockCarRunnable = new Runnable() { + @Override + public void run() { + if ( !mStatusManager.isDisplayOverview() ) { + return; + } + mStatusManager.setDisplayOverview( TAG, false ); + mView.getUIController().recoverLockMode(); + } + }; + public MapPresenter( MapView view ) { super( view ); initBroadcast(); @@ -211,7 +222,7 @@ public class MapPresenter extends Presenter< MapView > implements lon = intent.getDoubleExtra( "LON", 0.0 ); } - mMogoAddressManager.calculatePath( new MogoLatLng( lat, lon ) ); + mMogoSearchManager.calculatePath( new MogoLatLng( lat, lon ) ); } /** @@ -223,6 +234,7 @@ public class MapPresenter extends Presenter< MapView > implements mStatusManager.setDisplayOverview( TAG, false ); mView.getUIController().recoverLockMode(); AIAssist.getInstance( getContext() ).speakTTSVoice( "已为您继续导航" ); + UiThreadHandler.removeCallbacks( mLockCarRunnable ); } else { mLauncher.backToLauncher( getContext() ); UiThreadHandler.postDelayed( () -> { @@ -230,6 +242,7 @@ public class MapPresenter extends Presenter< MapView > implements mStatusManager.setDisplayOverview( TAG, false ); mView.getUIController().recoverLockMode(); AIAssist.getInstance( getContext() ).speakTTSVoice( "已为您继续导航" ); + UiThreadHandler.removeCallbacks( mLockCarRunnable ); } catch ( Exception e ) { e.printStackTrace(); } @@ -242,7 +255,7 @@ public class MapPresenter extends Presenter< MapView > implements Logger.d( TAG, "未开始导航." ); return; } - if ( mStatusManager.isADASShow() ) { + if ( mStatusManager.isV2XShow() ) { Logger.d( TAG, "ADAS模式忽略该请求." ); return; } @@ -260,6 +273,8 @@ public class MapPresenter extends Presenter< MapView > implements AIAssist.getInstance( getContext() ).speakTTSVoice( "展示全程路线" ); }, 2_000L ); } + + UiThreadHandler.postDelayed( mLockCarRunnable, 20_000 ); } private void zoomMap( boolean zoomIn ) { @@ -282,15 +297,15 @@ public class MapPresenter extends Presenter< MapView > implements mMogoMapService.getMapUIController().recoverLockMode();//缩放地图会导致锁车发生改变,这里强制锁车 }, 1_000 ); } else { - // 20s后锁车刷新 - mRefreshStrategyController.restartAutoRefreshAtTime( 20_000 ); + // 30s后锁车刷新 + mRefreshStrategyController.restartAutoRefreshAtTime( 30_000 ); } } private void onOpenNavi() { mLauncher.backToLauncher( getContext() ); if ( !mMogoMapService.getNavi( getContext() ).isNaviing() && !mStatusManager.isSearchUIShow() ) { - mMogoAddressManager.goSearch(); + mSearchManager.showSearch(); } AIAssist.getInstance( getContext() ).speakTTSVoice( "已打开" ); } @@ -308,7 +323,8 @@ public class MapPresenter extends Presenter< MapView > implements mRegisterCenter = apis.getRegisterCenterApi(); mRegisterCenter.registerMogoNaviListener( TAG, this ); mLauncher = apis.getLauncherApi(); - mMogoAddressManager = apis.getAddressManagerApi(); + mMogoSearchManager = apis.getSearchManagerApi(); + mSettingManager = apis.getSettingManagerApi(); IMogoNavi mogoNavi = mMogoMapService.getNavi( getContext() ); mogoNavi.setCalculatePathDisplayBounds( new Rect( @@ -421,7 +437,7 @@ public class MapPresenter extends Presenter< MapView > implements break; case VoiceConstants.CMD_MAP_STOP_NAVI_MODE_UN_WAKEUP: case VoiceConstants.CMD_MAP_STOP_NAVI_MODE: - mSearchManager.showMain(); + mLauncher.backToLauncher( getContext() ); break; case VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP: case VoiceConstants.CMD_MAP_NIGHT_MODE: @@ -446,12 +462,12 @@ public class MapPresenter extends Presenter< MapView > implements break; case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE: case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE_UN_WAKEUP: - mSearchManager.speakDraft(); + mSettingManager.speakDraft(); AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE: case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE_UN_WAKEUP: - mSearchManager.speakDetail(); + mSettingManager.speakDetail(); AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_SPEAK_REMAIN: @@ -461,46 +477,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 +491,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/AndroidManifest.xml b/modules/mogo-module-search/src/main/AndroidManifest.xml index 2d0a21723d..99b0239918 100644 --- a/modules/mogo-module-search/src/main/AndroidManifest.xml +++ b/modules/mogo-module-search/src/main/AndroidManifest.xml @@ -6,7 +6,6 @@ - + * 描述 + */ +public class SearchApisHolder { + + private static IMogoServiceApis sApis; + private static IMogoMapService sMapServiceApis; + private static IMogoMapUIController sUiControllerApis; + private static IMogoNavi sNaviApis; + private static IMogoMarkerManager sMarkerManagerApis; + private static IMogoFragmentManager sFragmentManagerApis; + private static IMogoAnalytics sAnalyticsApis; + private static IMogoLocationClient sLocationClientApis; + private static IMogoStatusManager sStatusManager; + private static IMogoRegisterCenter sRegisterCenterApis; + private static IMogoIntentManager sIntentManager; + private static IGuideShowProvider sGuideShowApis; + private static IMogoSettingManager sSettingManager; + private static IMogoGpsSimulatorManager sGpsSimulatorManager; + private static IMogoSearchManager sSearchManager; + + static { + sApis = ARouter.getInstance().navigation( IMogoServiceApis.class ); + sMapServiceApis = sApis.getMapServiceApi(); + sUiControllerApis = sMapServiceApis.getMapUIController(); + sNaviApis = sMapServiceApis.getNavi( AbsMogoApplication.getApp() ); + sMarkerManagerApis = sMapServiceApis.getMarkerManager( AbsMogoApplication.getApp() ); + sFragmentManagerApis = sApis.getFragmentManagerApi(); + sAnalyticsApis = sApis.getAnalyticsApi(); + sLocationClientApis = sMapServiceApis.getSingletonLocationClient( AbsMogoApplication.getApp() ); + sStatusManager = sApis.getStatusManagerApi(); + sRegisterCenterApis = sApis.getRegisterCenterApi(); + sIntentManager = sApis.getIntentManagerApi(); + sSettingManager = sApis.getSettingManagerApi(); + sSearchManager = sApis.getSearchManagerApi(); + sGpsSimulatorManager = ARouter.getInstance().navigation( IMogoGpsSimulatorManager.class); + sGuideShowApis = ARouter.getInstance().navigation( IGuideShowProvider.class ); + } + + public static IMogoServiceApis getApis() { + return sApis; + } + + public static IMogoMapService getMapServiceApis() { + return sMapServiceApis; + } + + public static IMogoMapUIController getUiControllerApis() { + return sUiControllerApis; + } + + public static IMogoNavi getNaviApis() { + return sNaviApis; + } + + public static IMogoMarkerManager getMarkerManager() { + return sMarkerManagerApis; + } + + public static IMogoFragmentManager getFragmentManager() { + return sFragmentManagerApis; + } + + public static IMogoAnalytics getAnalyticsApis() { + return sAnalyticsApis; + } + + public static IMogoLocationClient getLocationClientApis() { + return sLocationClientApis; + } + + public static IMogoStatusManager getStatusManager() { + return sStatusManager; + } + + public static IMogoRegisterCenter getRegisterCenterApis() { + return sRegisterCenterApis; + } + + public static IMogoIntentManager getIntentManager() { + return sIntentManager; + } + + public static IGuideShowProvider getGuideShowApis() { + return sGuideShowApis; + } + + public static IMogoSettingManager getSettingManager() { + return sSettingManager; + } + + public static IMogoGpsSimulatorManager getGpsSimulatorManager() { + return sGpsSimulatorManager; + } + + public static IMogoSearchManager getSearchManager() { + return sSearchManager; + } +} 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 deleted file mode 100644 index a74f3e6118..0000000000 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchServiceHolder.kt +++ /dev/null @@ -1,82 +0,0 @@ -package com.mogo.module.navi.constants - -import android.annotation.SuppressLint -import android.content.Context -import androidx.fragment.app.Fragment -import com.alibaba.android.arouter.launcher.ARouter -import com.mogo.map.location.IMogoLocationClient -import com.mogo.map.marker.IMogoMarkerManager -import com.mogo.map.navi.IMogoNavi -import com.mogo.map.search.geo.IMogoGeoSearch -import com.mogo.map.uicontroller.IMogoMapUIController -import com.mogo.module.common.MogoModulePaths -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.MogoServicePaths -import com.mogo.service.analytics.IMogoAnalytics -import com.mogo.service.fragmentmanager.FragmentDescriptor -import com.mogo.service.fragmentmanager.IMogoFragmentManager -import com.mogo.service.intent.IMogoIntentManager -import com.mogo.service.launcher.IMogoLauncher -import com.mogo.service.map.IMogoMapService -import com.mogo.service.module.IMogoRegisterCenter -import com.mogo.service.statusmanager.IMogoStatusManager - -/** - *@author zyz - * 2020-01-08. - */ -@SuppressLint("StaticFieldLeak") -object SearchServiceHolder { - // 单例对象,要使用Application Context - private lateinit var context: Context - - val fragmentManager: IMogoFragmentManager = ARouter.getInstance().build(MogoServicePaths.PATH_FRAGMENT_MANAGER).navigation() as IMogoFragmentManager - val mapService: IMogoMapService = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_MAP).navigation() as IMogoMapService - val listenerCenter: IMogoRegisterCenter = ARouter.getInstance().build(MogoServicePaths.PATH_REGISTER_CENTER).navigation() as IMogoRegisterCenter - val statusManager: IMogoStatusManager = ARouter.getInstance().build(MogoServicePaths.PATH_STATUS_MANAGER).navigation() as IMogoStatusManager - val analyticsManager: IMogoAnalytics = ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_ANALYTICS).navigation() as IMogoAnalytics - val guideShowProvider: IGuideShowProvider = ARouter.getInstance().build(GuideShowProviderConstant.GUIDE_SHOW_PROVIDER).navigation() as IGuideShowProvider - 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 - - var geoSearch: IMogoGeoSearch? = null - fun init(context: Context) { - this.context = context - - } - - fun push(fragment: Fragment, tag: String) { - val builder = FragmentDescriptor.Builder() - builder.fragment(fragment) - val build = builder.tag(tag).build() - fragmentManager.push(build) - } - - fun getNavi(): IMogoNavi { - return mapService.getNavi(context) - } - - fun getLocationClient(): IMogoLocationClient { - return mapService.getLocationClient(context) - } - - fun getMapUIController(): IMogoMapUIController { - return mapService.mapUIController - } - - fun getMarkerManger(): IMogoMarkerManager { - return mapService.getMarkerManager(context) - } - - fun getGeoSearcher(): IMogoGeoSearch { - if (geoSearch == null) { - geoSearch = mapService.getGeoSearch(context) - } - return geoSearch!! - } - -} \ No newline at end of file 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..85ec044c4a 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 @@ -2,15 +2,15 @@ package com.mogo.module.navi.manager import android.annotation.SuppressLint import android.content.Context +import androidx.fragment.app.Fragment import com.mogo.map.MogoLatLng -import com.mogo.module.common.MogoModulePaths import com.mogo.module.common.map.MapCenterPointStrategy import com.mogo.module.common.map.Scene import com.mogo.module.navi.bean.EntityConvertUtils import com.mogo.module.navi.bean.SearchPoi import com.mogo.module.navi.constants.AMapConstants import com.mogo.module.navi.constants.DataConstants -import com.mogo.module.navi.constants.SearchServiceHolder +import com.mogo.module.navi.constants.SearchApisHolder import com.mogo.module.navi.cp.AddressHelper import com.mogo.module.navi.dao.SearchPoiDao import com.mogo.module.navi.database.AppDataBase @@ -47,14 +47,6 @@ object AddressManager { return companyAddress != null } - private fun choosePoint(type: Int){ - MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CHOOSE_POINT) - val builder = FragmentDescriptor.Builder() - builder.fragment(SettingAddressFragment.newInstance(type)) - val build = builder.tag(AMapConstants.PATH_FRAGMENT_SETTING_HOME).build() - SearchServiceHolder.fragmentManager.push(build) - } - private lateinit var context: Context @SuppressLint("CheckResult") fun init(context: Context) { @@ -64,7 +56,7 @@ object AddressManager { poiDao.companyAddress .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe { t1, t2 -> + .subscribe { t1, _ -> if (t1.size > 0) { companyAddress = t1[0] } @@ -73,7 +65,7 @@ object AddressManager { poiDao.homeAddress .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe { t1, t2 -> + .subscribe { t1, _ -> if (t1.size > 0) { homeAddress = t1[0] } @@ -90,7 +82,7 @@ object AddressManager { } } - fun deleteHome(context: Context) { + fun deleteHome() { Observable.create( ObservableOnSubscribe { poiDao.delete(homeAddress) @@ -105,7 +97,7 @@ object AddressManager { } - fun deleteCompany(context: Context) { + fun deleteCompany() { Observable.create( ObservableOnSubscribe { poiDao.delete(companyAddress) @@ -122,7 +114,6 @@ object AddressManager { * 回家 */ fun goHome() { - SearchServiceHolder.statusManager.setSearchUIShow(TAG, true) if (homeAddress == null) { choosePoint(DataConstants.TYPE_HOME_ADDRESS) } else { @@ -130,13 +121,18 @@ object AddressManager { } } + private fun choosePoint(type: Int) { + beforePushFragment() + MapCenterPointStrategy.setMapCenterPointByScene(SearchApisHolder.getUiControllerApis(), Scene.CHOOSE_POINT) + pushFragment(SettingAddressFragment.newInstance(type), AMapConstants.PATH_FRAGMENT_SETTING_HOME, true) + } + /** * 去公司 */ fun goCompany() { - SearchServiceHolder.statusManager.setSearchUIShow(TAG, true) if (companyAddress == null) { - choosePoint( DataConstants.TYPE_COMPANY_ADDRESS) + choosePoint(DataConstants.TYPE_COMPANY_ADDRESS) } else { calculatePath(EntityConvertUtils.poi2MogoTip(companyAddress).point) } @@ -146,13 +142,8 @@ object AddressManager { * 搜索 */ fun goSearch() { - SearchServiceHolder.statusManager.setSearchUIShow(TAG, true) - SearchServiceHolder.fragmentManager.push( - FragmentDescriptor.Builder().fragment(SearchFragment()) - .tag(AMapConstants.PATH_FRAGMENT_SEARCH) - .notifyMainModule(true) - .build() - ) + beforePushFragment() + pushFragment(SearchFragment(), AMapConstants.PATH_FRAGMENT_SEARCH, true) } /** @@ -160,25 +151,46 @@ object AddressManager { */ fun calculatePath(destination: MogoLatLng?) { destination?.let { - var newInstance = ChoosePathFragment.newInstance(destination) - SearchServiceHolder.push(newInstance, AMapConstants.PATH_FRAGMENT_CHOOSE_PATH) + beforePushFragment() + MapCenterPointStrategy.setMapCenterPointByScene(SearchApisHolder.getUiControllerApis(), Scene.CALCULATE_PATH) + pushFragment(ChoosePathFragment.newInstance(destination), AMapConstants.PATH_FRAGMENT_CHOOSE_PATH, true) } } - fun categorySearch(category: String){ - val searchFragment = CategorySearchFragment.newInstance(category) - SearchServiceHolder.fragmentManager.push(FragmentDescriptor.Builder().fragment(searchFragment) - .tag(AMapConstants.PATH_FRAGMENT_SEARCH_CATEGORY) - .notifyMainModule(true) - .build()) + fun categorySearch(category: String) { + beforePushFragment() + pushFragment(CategorySearchFragment.newInstance(category), AMapConstants.PATH_FRAGMENT_SEARCH_CATEGORY, true) } - fun goSettings(){ - val naviSettingFragment = NaviSettingFragment() - SearchServiceHolder.fragmentManager.push(FragmentDescriptor.Builder().fragment(naviSettingFragment) - .tag(AMapConstants.PATH_FRAGMENT_NAVI_SETTING) - .notifyMainModule(true) - .build()) + fun goSettings() { + beforePushFragment() + pushFragment(NaviSettingFragment(), AMapConstants.PATH_FRAGMENT_NAVI_SETTING, true) } + private fun beforePushFragment() { + closeADAS() + if (!SearchApisHolder.getStatusManager().isSearchUIShow) { + SearchApisHolder.getStatusManager().setSearchUIShow(TAG, true) + } + } + + private fun pushFragment(fragment: Fragment, tag: String, notifyMain: Boolean) { + SearchApisHolder.getFragmentManager().push( + FragmentDescriptor.Builder() + .fragment(fragment) + .tag(tag) + .notifyMainModule(notifyMain) + .build() + ) + } + + + private fun closeADAS() { + try { + SearchApisHolder.getApis().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..e5b4c314f6 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,50 +1,59 @@ 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; import com.mogo.service.MogoServicePaths; import com.mogo.service.module.IMogoAddressManager; +import com.mogo.service.module.IMogoSearchManager; +import com.mogo.utils.logger.Logger; /** * @author zyz * 2020-01-12. + *

+ * Deprecated, use {@link IMogoSearchManager} instead. */ + +@Deprecated @Route( path = MogoServicePaths.PATH_ADDRESS_MANAGER ) public class MogoAddressManager implements IMogoAddressManager { - @Override public void goHome() { - AddressManager.INSTANCE.goHome(); + private static final String TAG = "MogoAddressManager"; + + @Override + public void goHome() { + Logger.w( TAG, "Deprecated, use IMogoSearchManager instead." ); } - @Override public void goCompany() { - AddressManager.INSTANCE.goCompany(); + @Override + public void goCompany() { + Logger.w( TAG, "Deprecated, use IMogoSearchManager instead." ); } @Override public void goSearch() { - AddressManager.INSTANCE.goSearch(); + Logger.w( TAG, "Deprecated, use IMogoSearchManager instead." ); } @Override public void calculatePath( MogoLatLng destination ) { - AddressManager.INSTANCE.calculatePath( destination ); + Logger.w( TAG, "Deprecated, use IMogoSearchManager instead." ); } @Override public void categorySearch( String category ) { - AddressManager.INSTANCE.categorySearch( category ); + Logger.w( TAG, "Deprecated, use IMogoSearchManager instead." ); } @Override public void goSettings() { - AddressManager.INSTANCE.goSettings(); + Logger.w( TAG, "Deprecated, use IMogoSearchManager instead." ); } - @Override public void init( Context context) { - AddressManager.INSTANCE.init(context); - SearchServiceHolder.INSTANCE.init(context); - SettingManager.INSTANCE.init(context); + @Override + public void init( Context context ) { + Logger.w( TAG, "Deprecated, use IMogoSearchManager instead." ); } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java index 75a749ba67..db988b10af 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java @@ -1,53 +1,55 @@ package com.mogo.module.navi.manager; import android.content.Context; -import androidx.fragment.app.Fragment; + import com.alibaba.android.arouter.facade.annotation.Route; -import com.mogo.map.constants.BroadcastMode; -import com.mogo.module.common.MogoModulePaths; -import com.mogo.module.navi.constants.AMapConstants; -import com.mogo.module.navi.constants.SearchServiceHolder; -import com.mogo.module.navi.ui.search.CategorySearchFragment; -import com.mogo.module.navi.ui.search.SearchFragment; +import com.mogo.map.MogoLatLng; +import com.mogo.module.navi.constants.SearchApisHolder; import com.mogo.service.MogoServicePaths; -import com.mogo.service.fragmentmanager.FragmentDescriptor; import com.mogo.service.module.IMogoSearchManager; /** * @author zyz * 2020-01-13. */ -@Route(path = MogoServicePaths.PATH_SEARCH_MANAGER) +@Route( path = MogoServicePaths.PATH_SEARCH_MANAGER ) public class MogoSearchManager implements IMogoSearchManager { - @Override public void goHome() { + @Override + public void goHome() { AddressManager.INSTANCE.goHome(); } - @Override public void goCompany() { + @Override + public void goCompany() { AddressManager.INSTANCE.goCompany(); } - @Override public void showSearch() { + @Override + public void showSearch() { + if ( SearchApisHolder.getNaviApis().isNaviing() ) { + return; + } AddressManager.INSTANCE.goSearch(); } - @Override public void showMain() { - SearchServiceHolder.INSTANCE.getFragmentManager().clearAll(); - } - - @Override public void speakDraft() { - SearchServiceHolder.INSTANCE.getNavi().setBroadcastMode(BroadcastMode.CONCISE); - } - - @Override public void speakDetail() { - SearchServiceHolder.INSTANCE.getNavi().setBroadcastMode(BroadcastMode.DETAIL); - } - - @Override public void showCategory(String keyword) { + @Override + public void categorySearch( String keyword ) { AddressManager.INSTANCE.categorySearch( keyword ); } - @Override public void init(Context context) { + @Override + public void calculatePath( MogoLatLng destination ) { + AddressManager.INSTANCE.calculatePath( destination ); + } + @Override + public void goSettings() { + AddressManager.INSTANCE.goSettings(); + } + + @Override + public void init( Context context ) { + AddressManager.INSTANCE.init( context ); + SettingManager.INSTANCE.init( context ); } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSettingManager.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSettingManager.java index c5272a9e4e..89e2199d60 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSettingManager.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSettingManager.java @@ -1,7 +1,7 @@ package com.mogo.module.navi.manager; import android.content.Context; -import android.content.SharedPreferences; + import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.service.MogoServicePaths; import com.mogo.service.module.IMogoSettingManager; @@ -14,23 +14,49 @@ import com.mogo.service.module.IMogoSettingManager; @Route( path = MogoServicePaths.PATH_SETTING_MANAGER ) public class MogoSettingManager implements IMogoSettingManager { - @Override public int getPathPrefer() { + @Override + public int getPathPrefer() { return SettingManager.INSTANCE.getPathPrefer(); } - @Override public int getVolume() { + @Override + public int getVolume() { return SettingManager.INSTANCE.getVolume(); } - @Override public int getVoiceStyle() { + @Override + public int getVoiceStyle() { return SettingManager.INSTANCE.getVoiceStyle(); } - @Override public int getMapType() { + @Override + public int getMapType() { return SettingManager.INSTANCE.getMapType(); } - @Override public void init(Context context) { - SettingManager.INSTANCE.init(context); + @Override + public void init( Context context ) { + SettingManager.INSTANCE.init( context ); + } + + + @Override + public void speakDraft() { + SettingManager.INSTANCE.speakDraft(); + } + + @Override + public void speakDetail() { + SettingManager.INSTANCE.speakDetail(); + } + + @Override + public void openAimlessMode() { + SettingManager.INSTANCE.openAimlessMode(); + } + + @Override + public void closeAimlessMode() { + SettingManager.INSTANCE.closeAimlessMode(); } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/SettingManager.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/SettingManager.kt index 4237428e43..064460aa8c 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/SettingManager.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/SettingManager.kt @@ -2,9 +2,9 @@ package com.mogo.module.navi.manager import android.content.Context import android.content.SharedPreferences -import com.mogo.map.navi.MogoNaviConfig +import com.mogo.map.constants.BroadcastMode import com.mogo.module.navi.R -import com.mogo.module.navi.constants.SearchServiceHolder +import com.mogo.module.navi.constants.SearchApisHolder import com.mogo.service.module.IMogoSettingManager /** @@ -187,7 +187,7 @@ object SettingManager : IMogoSettingManager { } private fun updateConfig() { - SearchServiceHolder.getNavi() + SearchApisHolder.getNaviApis() .naviConfig .cost(cost) .avoidSpeed(avoidSpeed) @@ -195,12 +195,31 @@ object SettingManager : IMogoSettingManager { .congestion(congestion) } - fun setAimlessMode(type: Int){ + fun setAimlessMode(type: Int) { settings.edit().putInt(KEY_AIMLESS_MODE_TYPE, type).apply() } - fun getAimlessMode():Int { + fun getAimlessMode(): Int { return settings.getInt(KEY_AIMLESS_MODE_TYPE, R.id.aimlessModeClose) } + override fun speakDraft() { + voiceStyle = R.id.rb_navi_draft + SearchApisHolder.getNaviApis().setBroadcastMode(BroadcastMode.CONCISE) + } + + override fun speakDetail() { + voiceStyle = R.id.rb_navi_detail + SearchApisHolder.getNaviApis().setBroadcastMode(BroadcastMode.DETAIL) + } + + override fun openAimlessMode() { + setAimlessMode(R.id.aimlessModeOpen) + SearchApisHolder.getNaviApis().setAimlessModeStatus(true) + } + + override fun closeAimlessMode() { + setAimlessMode(R.id.aimlessModeClose) + SearchApisHolder.getNaviApis().setAimlessModeStatus(false) + } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/NaviActivity.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/NaviActivity.kt deleted file mode 100644 index 70eb32f28f..0000000000 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/NaviActivity.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.mogo.module.navi.ui - -import android.os.Bundle -import androidx.fragment.app.Fragment -import com.alibaba.android.arouter.launcher.ARouter -import com.mogo.module.navi.R -import com.mogo.module.navi.ui.base.BaseActivity - -class NaviActivity : BaseActivity() { - - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_navi) - var fragment = ARouter.getInstance() - .build("/navi/search") - .navigation() as Fragment - supportFragmentManager.beginTransaction().replace(R.id.fl_container,fragment).commitNow() - } -} diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/base/BaseFragment.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/base/BaseFragment.java index 73b329da13..4843914c4a 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/base/BaseFragment.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/base/BaseFragment.java @@ -6,12 +6,12 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; + import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import com.mogo.module.common.MogoModulePaths; -import com.mogo.module.navi.constants.SearchServiceHolder; + import com.mogo.utils.NetworkUtils; /** diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/BaseSearchFragment.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/BaseSearchFragment.java index a1651a052a..59be513933 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/BaseSearchFragment.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/BaseSearchFragment.java @@ -101,10 +101,6 @@ public abstract class BaseSearchFragment extends BaseFragment implements SearchV return mSearchType; } - @Override public void startJumpAnimation() { - - } - //@Override //public void renderChoicePointResult( RegeocodeAddress address ) { // if ( address == null ) { diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryPresenter.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryPresenter.java index 4dc1c77384..3e4c2924e5 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryPresenter.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryPresenter.java @@ -1,41 +1,22 @@ package com.mogo.module.navi.ui.search; -import android.app.AlertDialog; -import android.text.Editable; -import android.text.TextUtils; -import android.widget.EditText; +import android.location.Location; + import androidx.annotation.NonNull; import androidx.lifecycle.LifecycleOwner; -import com.alibaba.android.arouter.launcher.ARouter; + +import com.amap.api.maps.model.LatLng; import com.mogo.commons.mvp.Presenter; +import com.mogo.map.MogoLatLng; +import com.mogo.map.location.MogoLocation; import com.mogo.map.search.geo.MogoPoiItem; -import com.mogo.map.search.inputtips.IMogoInputtipsListener; -import com.mogo.map.search.inputtips.IMogoInputtipsSearch; -import com.mogo.map.search.inputtips.MogoTip; -import com.mogo.map.search.inputtips.query.MogoInputtipsQuery; import com.mogo.map.search.poisearch.IMogoPoiSearch; import com.mogo.map.search.poisearch.IMogoPoiSearchListener; import com.mogo.map.search.poisearch.MogoPoiResult; import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery; -import com.mogo.module.common.TextWatcherAdapter; -import com.mogo.module.navi.bean.EntityConvertUtils; -import com.mogo.module.navi.bean.SearchPoi; -import com.mogo.module.navi.constants.DataConstants; -import com.mogo.module.navi.constants.SearchServiceHolder; -import com.mogo.module.navi.database.AppDataBase; -import com.mogo.service.MogoServicePaths; -import com.mogo.service.map.IMogoMapService; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.Single; -import io.reactivex.SingleEmitter; -import io.reactivex.android.schedulers.AndroidSchedulers; +import com.mogo.module.navi.constants.SearchApisHolder; + import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.Consumer; -import io.reactivex.schedulers.Schedulers; -import java.util.List; /** * @author congtaowang @@ -43,55 +24,70 @@ import java.util.List; *

* 搜搜页逻辑处理 */ -public class CategoryPresenter extends Presenter { +public class CategoryPresenter extends Presenter< CategoryView > { private CompositeDisposable mCompositeDisposable; - private IMogoMapService mMapService; - public CategoryPresenter(CategoryView view) { - super(view); + public CategoryPresenter( CategoryView view ) { + super( view ); mCompositeDisposable = new CompositeDisposable(); } @Override - public void onCreate(@NonNull LifecycleOwner owner) { - super.onCreate(owner); - mMapService = (IMogoMapService) ARouter.getInstance() - .build(MogoServicePaths.PATH_SERVICES_MAP) - .navigation(getContext()); + public void onCreate( @NonNull LifecycleOwner owner ) { + super.onCreate( owner ); } - public void startSearchLocalPoiByInput(String keyword) { - MogoPoiSearchQuery mogoInputtipsQuery = new MogoPoiSearchQuery(keyword, keyword); - mogoInputtipsQuery.setPageSize(10); - mogoInputtipsQuery.setLocation( - SearchServiceHolder.INSTANCE.getMapUIController().getWindowCenterLocation()); - IMogoPoiSearch inputtipsSearch = - mMapService.getPoiSearch(getContext(), mogoInputtipsQuery); + public void startSearchLocalPoiByInput( String keyword ) { - inputtipsSearch.setPoiSearchListener(new IMogoPoiSearchListener() { - @Override public void onPoiSearched(MogoPoiResult result, int errorCode) { + MogoPoiSearchQuery poiSearchQuery = new MogoPoiSearchQuery( keyword, keyword ); + poiSearchQuery.setPageSize( 10 ); + poiSearchQuery.setLocation( getCurrentLatLon() ); + IMogoPoiSearch poiSearch = SearchApisHolder.getMapServiceApis().getPoiSearch( getContext(), poiSearchQuery ); + + poiSearch.setPoiSearchListener( new IMogoPoiSearchListener() { + @Override + public void onPoiSearched( MogoPoiResult result, int errorCode ) { if ( result != null ) { - mView.renderSearchPoiResult(result.getPois()); + mView.renderSearchPoiResult( result.getPois() ); } } - @Override public void onPoiItemSearched(MogoPoiItem item, int errorCode) { + @Override + public void onPoiItemSearched( MogoPoiItem item, int errorCode ) { } - }); - inputtipsSearch.searchPOIAsyn(); + } ); + poiSearch.searchPOIAsyn(); } + private MogoLatLng getCurrentLatLon() { + MogoLatLng latLon = SearchApisHolder.getNaviApis().getCarLocation(); + if ( latLon == null ) { + Location location = SearchApisHolder.getNaviApis().getCarLocation2(); + if ( location != null ) { + latLon = new MogoLatLng( location.getLatitude(), location.getLongitude() ); + } + } + if ( latLon == null ) { + MogoLocation location = SearchApisHolder.getLocationClientApis().getLastKnowLocation(); + if ( location != null ) { + latLon = new MogoLatLng( location.getLatitude(), location.getLongitude() ); + } + } + if ( latLon == null ) { + latLon = SearchApisHolder.getUiControllerApis().getWindowCenterLocation(); + } + return latLon; + } @Override - public void onDestroy(@NonNull LifecycleOwner owner) { - super.onDestroy(owner); - if (mCompositeDisposable != null && !mCompositeDisposable.isDisposed()) { + public void onDestroy( @NonNull LifecycleOwner owner ) { + super.onDestroy( owner ); + if ( mCompositeDisposable != null && !mCompositeDisposable.isDisposed() ) { mCompositeDisposable.dispose(); mCompositeDisposable = null; } - //CameraChangedLiveData.getInstance().removeAllObserver(); } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt index 3fbb093871..4dccdb5b3f 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt @@ -4,7 +4,6 @@ import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Rect import android.os.Bundle -import android.text.TextUtils import android.view.View import androidx.fragment.app.Fragment import androidx.recyclerview.widget.LinearLayoutManager @@ -15,36 +14,23 @@ import com.mogo.map.marker.IMogoMarker import com.mogo.map.marker.IMogoMarkerClickListener import com.mogo.map.marker.MogoMarkerOptions import com.mogo.map.search.geo.MogoPoiItem -import com.mogo.map.search.inputtips.MogoTip -import com.mogo.module.common.MogoModulePaths import com.mogo.module.common.map.MapCenterPointStrategy import com.mogo.module.common.map.Scene +import com.mogo.module.common.utils.CarSeries import com.mogo.module.navi.R -import com.mogo.module.navi.bean.SearchPoi -import com.mogo.module.navi.constants.AMapConstants -import com.mogo.module.navi.constants.SearchServiceHolder +import com.mogo.module.navi.constants.SearchApisHolder import com.mogo.module.navi.manager.AddressManager import com.mogo.module.navi.ui.adapter.SearchCategoryAdapter import com.mogo.module.navi.ui.base.BaseFragment import com.mogo.module.navi.uitls.BitmapUtils import com.mogo.module.navi.uitls.StringUtils -import com.mogo.utils.UiThreadHandler -import kotlinx.android.synthetic.main.fragment_search_category.cv_search_result -import kotlinx.android.synthetic.main.fragment_search_category.et_navi_search -import kotlinx.android.synthetic.main.fragment_search_category.iv_navi_back -import kotlinx.android.synthetic.main.fragment_search_category.pb_path -import kotlinx.android.synthetic.main.fragment_search_category.rv_search_result -import kotlinx.android.synthetic.main.fragment_search_category.tv_navi_navi +import kotlinx.android.synthetic.main.fragment_search_category.* /** * @author zyz * 2020-01-09. */ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBack, IMogoMarkerClickListener { -// override fun onMarkerClicked(marker: IMogoMarker?): Boolean { -// -// return true -// } override fun onCmdSelected(cmd: String?) { if (cmd?.startsWith("position") == true) { @@ -55,24 +41,13 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa } } - override fun onCmdAction(speakText: String?) { - } - - override fun onCmdCancel(speakText: String?) { - } - - override fun onSpeakEnd(speakText: String?) { - } - - override fun onSpeakSelectTimeOut(speakText: String?) { - } - private val TAG: String = "CategorySearchFragment" private var addMarkers: ArrayList = ArrayList() var arrayList = ArrayList() var locationList = ArrayList() private lateinit var cmds: ArrayList + override fun renderSearchPoiResult(datums: List?) { mAdapter.setDatas(datums) cv_search_result.visibility = View.VISIBLE @@ -99,7 +74,9 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa // .anchor(0.5f, 1f) .longitude(datums[index].point?.lng ?: 0.0) arrayList.add(options) - locationList.add(datums[index].point) + if( locationList.size < 3 ){ + locationList.add(datums[index].point) + } var int2String = StringUtils.int2String(index + 1) AIAssist.getInstance(context).registerUnWakeupCommand("position${index}", arrayOf("第${int2String}个", "第${int2String}条"), this) @@ -112,15 +89,15 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa private fun addMarkers() { addMarkers.clear() var marginBounder = resources.getDimensionPixelSize(R.dimen.dp_60) * 2 - SearchServiceHolder.getMapUIController().showBounds(TAG, - null, + SearchApisHolder.getUiControllerApis().showBounds(TAG, + locationList[0], locationList, Rect(cv_search_result.width + marginBounder, marginBounder, marginBounder, marginBounder), - false + true ) for (options in arrayList) { - var addMarker = SearchServiceHolder.getMarkerManger().addMarker(TAG, options) + var addMarker = SearchApisHolder.getMarkerManager().addMarker(TAG, options) addMarker.onMarkerClickListener = this addMarkers.add(addMarker) } @@ -180,7 +157,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa iv_navi_back.setOnClickListener { - SearchServiceHolder.fragmentManager.pop() + SearchApisHolder.getFragmentManager().pop() } tv_navi_navi.setOnClickListener { @@ -210,8 +187,8 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa arrayList.get(mAdapter.lastPosition).icon(getMarkerIcon(mAdapter.lastPosition)) arrayList.get(mAdapter.current).icon(getMarkerIcon(mAdapter.current)) if (moveToCenter) { - SearchServiceHolder.statusManager.setUserInteractionStatus(TAG, true, false) - SearchServiceHolder.getMapUIController().moveToCenter(current.position) + SearchApisHolder.getStatusManager().setUserInteractionStatus(TAG, true, false) + SearchApisHolder.getUiControllerApis().moveToCenter(current.position, CarSeries.CAR_SERIES_F80X == CarSeries.getSeries()) } } @@ -236,7 +213,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa super.onDestroyView() mSearchPresenter.onDestroy(viewLifecycleOwner) lifecycle.removeObserver(mSearchPresenter) - SearchServiceHolder.getMarkerManger().removeMarkers(TAG) + SearchApisHolder.getMarkerManager().removeMarkers(TAG) unRegisterVoice() } @@ -247,13 +224,9 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa } } - override fun onDestroy() { - super.onDestroy() - } - companion object { fun newInstance(category: String): Fragment { - MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CATEGORY_SEARCH) + MapCenterPointStrategy.setMapCenterPointByScene(SearchApisHolder.getUiControllerApis(), Scene.CATEGORY_SEARCH) var bundle = Bundle() bundle.putString("category", category) var categorySerachFragment = CategorySearchFragment() diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryView.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryView.java index fad125dcb7..d18de66647 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryView.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryView.java @@ -19,6 +19,4 @@ public interface CategoryView extends IView { * @param datums */ void renderSearchPoiResult(List datums); - - } 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..c3d8767760 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 @@ -11,13 +11,10 @@ import com.mogo.commons.voice.IMogoVoiceCmdCallBack import com.mogo.map.MogoLatLng import com.mogo.map.navi.IMogoNaviListener import com.mogo.map.navi.MogoCalculatePath -import com.mogo.map.navi.MogoNaviConfig -import com.mogo.module.common.map.MapCenterPointStrategy -import com.mogo.module.common.map.Scene import com.mogo.module.navi.R import com.mogo.module.navi.constants.AMapConstants import com.mogo.module.navi.constants.DataConstants -import com.mogo.module.navi.constants.SearchServiceHolder +import com.mogo.module.navi.constants.SearchApisHolder import com.mogo.module.navi.manager.SettingManager import com.mogo.module.navi.ui.adapter.CalculatePathAdapter import com.mogo.module.navi.ui.base.BaseFragment @@ -38,8 +35,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) { @@ -72,7 +69,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB retry() } "cancel" -> { - SearchServiceHolder.fragmentManager.clearAll() + SearchApisHolder.getFragmentManager().clearAll() } } } @@ -84,7 +81,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB } override fun onCalculateSuccess() { - var calculatedStrategies = SearchServiceHolder.getNavi().calculatedStrategies + var calculatedStrategies = SearchApisHolder.getNaviApis().calculatedStrategies if (calculatedStrategies != null && calculatedStrategies.size > 0) { mAdapter.setDatas(calculatedStrategies) mAdapter.selectTag = calculatedStrategies[0].tagId @@ -95,7 +92,9 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB if (calculatedStrategies.isNullOrEmpty()) { return@postDelayed } - SearchServiceHolder.getNavi().itemClickInteraction.onItemClicked(calculatedStrategies[0].tagId) + if (SearchApisHolder.getNaviApis().itemClickInteraction != null) { + SearchApisHolder.getNaviApis().itemClickInteraction.onItemClicked(calculatedStrategies[0].tagId) + } if (calculatedStrategies.size == 1) { // 一条路线,自动开启导航 @@ -157,16 +156,16 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB super.onViewCreated(view, savedInstanceState) iv_navi_back.setOnClickListener { - SearchServiceHolder.fragmentManager.pop() + SearchApisHolder.getFragmentManager().pop() } tv_navi_navi.text = getString(R.string.start_navi) et_navi_search.setText(getString(R.string.choose_path)) et_navi_search.isEnabled = false - SearchServiceHolder.getNavi().naviTo(mogoTip) + SearchApisHolder.getNaviApis().naviTo(mogoTip) - SearchServiceHolder.listenerCenter.registerMogoNaviListener(AMapConstants.PATH_FRAGMENT_CHOOSE_PATH, this) + SearchApisHolder.getRegisterCenterApis().registerMogoNaviListener(AMapConstants.PATH_FRAGMENT_CHOOSE_PATH, this) var arrayList = ArrayList() mAdapter = CalculatePathAdapter(activity, arrayList) @@ -181,7 +180,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB } } - SearchServiceHolder.getNavi().setLineClickInteraction { + SearchApisHolder.getNaviApis().setLineClickInteraction { mAdapter.selectTag = it } @@ -190,7 +189,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB selectPath(item) } - SearchServiceHolder.getMarkerManger().removeMarkers() + SearchApisHolder.getMarkerManager().removeMarkers() DataConstants.sCmds.entries.filter { it != null && !TextUtils.isEmpty(it.key) && (it.value?.isNotEmpty() ?: false) @@ -198,8 +197,8 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB AIAssist.getInstance(mContext).registerUnWakeupCommand(it.key, it.value, this@ChoosePathFragment) } - SearchServiceHolder.intentManager.registerIntentListener(AMapConstants.COMMAND_START_NAVI, this) - SearchServiceHolder.intentManager.registerIntentListener(AMapConstants.COMMAND_CHOOSE_PATH, this) + SearchApisHolder.getIntentManager().registerIntentListener(AMapConstants.COMMAND_START_NAVI, this) + SearchApisHolder.getIntentManager().registerIntentListener(AMapConstants.COMMAND_CHOOSE_PATH, this) } private fun registerRetryVoice() { @@ -211,7 +210,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB } private fun retry() { - SearchServiceHolder.getNavi().naviTo(mogoTip) + SearchApisHolder.getNaviApis().naviTo(mogoTip) pb_path.visibility = View.VISIBLE group_path.visibility = View.GONE } @@ -221,28 +220,30 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB return } - SearchServiceHolder.getNavi().startNavi(!SettingManager.isMonitor()) - SearchServiceHolder.getMapUIController().recoverLockMode() + SearchApisHolder.getNaviApis().startNavi(!SettingManager.isMonitor()) + SearchApisHolder.getUiControllerApis().recoverLockMode() - if (SearchServiceHolder.guideShowProvider.isPlayingVideo()) { - SearchServiceHolder.guideShowProvider.closeGuideShowView() + if (SearchApisHolder.getGuideShowApis().isPlayingVideo()) { + SearchApisHolder.getGuideShowApis().closeGuideShowView() } isStartedNavi = true - SearchServiceHolder.fragmentManager.clearAll() + SearchApisHolder.getFragmentManager().clearAll() } private fun selectPath(item: MogoCalculatePath?) { item?.let { mAdapter.setSelectTag(item.tagId) - SearchServiceHolder.getNavi().itemClickInteraction.onItemClicked(item.tagId) + if (SearchApisHolder.getNaviApis().itemClickInteraction != null) { + SearchApisHolder.getNaviApis().itemClickInteraction.onItemClicked(item.tagId) + } } } override fun onDestroyView() { super.onDestroyView() - SearchServiceHolder.listenerCenter.unregisterMogoNaviListener(AMapConstants.PATH_FRAGMENT_CHOOSE_PATH) + SearchApisHolder.getRegisterCenterApis().unregisterMogoNaviListener(AMapConstants.PATH_FRAGMENT_CHOOSE_PATH) if (!isStartedNavi) { - SearchServiceHolder.getNavi().clearCalculatePaths() + SearchApisHolder.getNaviApis().clearCalculatePaths() } DataConstants.sCmds.entries.filter { @@ -251,8 +252,8 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB AIAssist.getInstance(mContext).unregisterUnWakeupCommand(it.key) } - SearchServiceHolder.intentManager.unregisterIntentListener(AMapConstants.COMMAND_START_NAVI, this) - SearchServiceHolder.intentManager.unregisterIntentListener(AMapConstants.COMMAND_CHOOSE_PATH, this) + SearchApisHolder.getIntentManager().unregisterIntentListener(AMapConstants.COMMAND_START_NAVI, this) + SearchApisHolder.getIntentManager().unregisterIntentListener(AMapConstants.COMMAND_CHOOSE_PATH, this) } override fun onIntentReceived(intentStr: String?, intent: Intent?) { @@ -270,45 +271,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) { @@ -321,7 +295,6 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB val TAG: String = "ChoosePathFragment" fun newInstance(searchPoi: MogoLatLng): Fragment { - MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CALCULATE_PATH) var bundle = Bundle() bundle.putParcelable(AMapConstants.KEY_PARCELABLE, searchPoi) var choosePathFragment = ChoosePathFragment() diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java index 00a7321047..6e2d965b2f 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java @@ -2,34 +2,29 @@ package com.mogo.module.navi.ui.search; import android.content.Context; import android.os.Bundle; -import android.os.health.ServiceHealthStats; import android.text.TextUtils; import android.view.View; 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.facade.annotation.Route; -import com.mogo.commons.analytics.AnalyticsUtils; + import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.IMogoVoiceCmdCallBack; import com.mogo.map.search.inputtips.MogoTip; -import com.mogo.module.common.MogoModulePaths; import com.mogo.module.navi.R; import com.mogo.module.navi.bean.EntityConvertUtils; import com.mogo.module.navi.bean.SearchPoi; -import com.mogo.module.navi.constants.AMapConstants; +import com.mogo.module.navi.constants.SearchApisHolder; import com.mogo.module.navi.manager.AddressManager; -import com.mogo.module.navi.constants.SearchServiceHolder; import com.mogo.module.navi.ui.adapter.HistoryPoiAdapter; import com.mogo.module.navi.ui.adapter.SearchPoiAdapter; import com.mogo.module.navi.ui.base.UiController; -import com.mogo.module.navi.ui.setting.NaviSettingFragment; import com.mogo.module.navi.uitls.StringUtils; -import com.mogo.service.fragmentmanager.FragmentDescriptor; import com.mogo.service.fragmentmanager.FragmentStackTransactionListener; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -45,8 +40,8 @@ import java.util.List; * {@link SearchConstants#SEARCH_TYPE_MULTI_HOME} */ public class SearchFragment extends BaseSearchFragment - implements SearchView, View.OnClickListener, IMogoVoiceCmdCallBack, - FragmentStackTransactionListener { + implements SearchView, View.OnClickListener, IMogoVoiceCmdCallBack, + FragmentStackTransactionListener { public static final String TAG = "search"; @@ -72,14 +67,15 @@ public class SearchFragment extends BaseSearchFragment private TextView tvEmpty; @Override - public void onAttach(Context context) { - super.onAttach(context); - if (context instanceof UiController) { + public void onAttach( Context context ) { + super.onAttach( context ); + if ( context instanceof UiController ) { } } - @Override public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + @Override + public void onCreate( @Nullable Bundle savedInstanceState ) { + super.onCreate( savedInstanceState ); } @Override @@ -88,114 +84,117 @@ public class SearchFragment extends BaseSearchFragment } @Override - public void onActivityCreated(@Nullable Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - SearchServiceHolder.INSTANCE.getMarkerManger().removeMarkers(); - SearchServiceHolder.INSTANCE.getMapUIController().showMyLocation(false); + public void onActivityCreated( @Nullable Bundle savedInstanceState ) { + super.onActivityCreated( savedInstanceState ); + SearchApisHolder.getMarkerManager().removeMarkers(); + SearchApisHolder.getUiControllerApis().showMyLocation( false ); } - @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - mSearchResult = view.findViewById(R.id.rv_navi_search); - rvHistory = view.findViewById(R.id.rv_navi_history); - rlHistory = view.findViewById(R.id.rl_navi_history); + @Override + public void onViewCreated( @NonNull View view, @Nullable Bundle savedInstanceState ) { + super.onViewCreated( view, savedInstanceState ); + mSearchResult = view.findViewById( R.id.rv_navi_search ); + rvHistory = view.findViewById( R.id.rv_navi_history ); + rlHistory = view.findViewById( R.id.rl_navi_history ); LinearLayoutManager linearManager = - new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); + new LinearLayoutManager( getActivity(), LinearLayoutManager.VERTICAL, false ); - rvHistory.setLayoutManager(linearManager); + rvHistory.setLayoutManager( linearManager ); LinearLayoutManager linearLayoutManager = - new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); - mSearchResult.setLayoutManager(linearLayoutManager); + new LinearLayoutManager( getActivity(), LinearLayoutManager.VERTICAL, false ); + mSearchResult.setLayoutManager( linearLayoutManager ); - mPoiAdapter = new SearchPoiAdapter(getActivity(), new ArrayList<>()); - mSearchResult.setAdapter(mPoiAdapter); + mPoiAdapter = new SearchPoiAdapter( getActivity(), new ArrayList<>() ); + mSearchResult.setAdapter( mPoiAdapter ); - mHistoryAdapter = new HistoryPoiAdapter(getActivity(), new ArrayList<>()); - rvHistory.setAdapter(mHistoryAdapter); + mHistoryAdapter = new HistoryPoiAdapter( getActivity(), new ArrayList<>() ); + rvHistory.setAdapter( mHistoryAdapter ); - tvEmpty = findViewById(R.id.tv_navi_list_empty); + tvEmpty = findViewById( R.id.tv_navi_list_empty ); - findViewById(R.id.iv_navi_back).setOnClickListener(new View.OnClickListener() { - @Override public void onClick(View v) { - SearchServiceHolder.INSTANCE.getFragmentManager().pop(); + findViewById( R.id.iv_navi_back ).setOnClickListener( v -> { + SearchApisHolder.getFragmentManager().pop(); + } ); + + mHistoryAdapter.setOnClickListener( new View.OnClickListener() { + @Override + public void onClick( View v ) { + SearchApisHolder.getAnalyticsApis().track( "Navigation_History_destination", new HashMap< String, Object >() ); + SearchPoi item = ( SearchPoi ) v.getTag( R.id.tag_item ); + goHistory( item ); } - }); + } ); - mHistoryAdapter.setOnClickListener(new View.OnClickListener() { - @Override public void onClick(View v) { - SearchServiceHolder.INSTANCE.getAnalyticsManager() - .track("Navigation_History_destination", new HashMap()); - SearchPoi item = (SearchPoi) v.getTag(R.id.tag_item); - goHistory(item); + mPoiAdapter.setOnClickListener( new View.OnClickListener() { + @Override + public void onClick( View v ) { + MogoTip tag = ( MogoTip ) v.getTag( R.id.tag_position ); + goResult( tag ); } - }); + } ); - mPoiAdapter.setOnClickListener(new View.OnClickListener() { - @Override public void onClick(View v) { - MogoTip tag = (MogoTip) v.getTag(R.id.tag_position); - goResult(tag); - } - }); - - findViewById(R.id.tv_navi_history_clear).setOnClickListener(new View.OnClickListener() { - @Override public void onClick(View v) { + findViewById( R.id.tv_navi_history_clear ).setOnClickListener( new View.OnClickListener() { + @Override + public void onClick( View v ) { mSearchPresenter.deleteAllCachedPoi(); } - }); + } ); - findViewById(R.id.tv_navi_setting).setOnClickListener(new View.OnClickListener() { - @Override public void onClick(View v) { + findViewById( R.id.tv_navi_setting ).setOnClickListener( new View.OnClickListener() { + @Override + public void onClick( View v ) { goSetting(); } - }); + } ); - findViewById(R.id.tv_navi_company).setOnClickListener(new View.OnClickListener() { - @Override public void onClick(View v) { + findViewById( R.id.tv_navi_company ).setOnClickListener( new View.OnClickListener() { + @Override + public void onClick( View v ) { AddressManager.INSTANCE.goCompany(); } - }); + } ); - findViewById(R.id.tv_navi_home).setOnClickListener(new View.OnClickListener() { - @Override public void onClick(View v) { + findViewById( R.id.tv_navi_home ).setOnClickListener( new View.OnClickListener() { + @Override + public void onClick( View v ) { AddressManager.INSTANCE.goHome(); } - }); + } ); - findViewById(R.id.tv_navi_wash).setOnClickListener(this); - findViewById(R.id.tv_navi_toilet).setOnClickListener(this); - findViewById(R.id.tv_navi_gas).setOnClickListener(this); - findViewById(R.id.tv_navi_restaurant).setOnClickListener(this); - findViewById(R.id.tv_navi_park).setOnClickListener(this); + findViewById( R.id.tv_navi_wash ).setOnClickListener( this ); + findViewById( R.id.tv_navi_toilet ).setOnClickListener( this ); + findViewById( R.id.tv_navi_gas ).setOnClickListener( this ); + findViewById( R.id.tv_navi_restaurant ).setOnClickListener( this ); + findViewById( R.id.tv_navi_park ).setOnClickListener( this ); - findViewById(R.id.tv_navi_search).setOnClickListener(new View.OnClickListener() { - @Override public void onClick(View v) { - SearchServiceHolder.INSTANCE.getAnalyticsManager() - .track("Navigation_button_search", new HashMap()); - - mSearchPresenter.startSearchPoiByInput(mSearchBox.getText().toString()); + findViewById( R.id.tv_navi_search ).setOnClickListener( new View.OnClickListener() { + @Override + public void onClick( View v ) { + SearchApisHolder.getAnalyticsApis().track( "Navigation_button_search", new HashMap< String, Object >() ); + mSearchPresenter.startSearchPoiByInput( mSearchBox.getText().toString() ); } - }); + } ); - registerVoidCmd(); + registerVoidCmd(); } - private void goResult(MogoTip tag) { - SearchPoi searchPoi = EntityConvertUtils.tipToPoi(tag); - if (tag.getPoint() == null) { - goCategory(tag.getName()); + private void goResult( MogoTip tag ) { + SearchPoi searchPoi = EntityConvertUtils.tipToPoi( tag ); + if ( tag.getPoint() == null ) { + goCategory( tag.getName() ); } else { - mSearchPresenter.insert(searchPoi); + mSearchPresenter.insert( searchPoi ); AddressManager.INSTANCE.calculatePath( tag.getPoint() ); } } private void goSetting() { - SearchServiceHolder.INSTANCE.getAnalyticsManager().track("Navigation_button_setting", new HashMap()); + SearchApisHolder.getAnalyticsApis().track( "Navigation_button_setting", new HashMap< String, Object >() ); AddressManager.INSTANCE.goSettings(); } - private void goHistory(SearchPoi item) { - MogoTip mogoTip = EntityConvertUtils.poi2MogoTip(item); + private void goHistory( SearchPoi item ) { + MogoTip mogoTip = EntityConvertUtils.poi2MogoTip( item ); AddressManager.INSTANCE.calculatePath( mogoTip.getPoint() ); } @@ -211,99 +210,95 @@ public class SearchFragment extends BaseSearchFragment private void registerVoidCmd() { - AIAssist.getInstance(getContext()) - .registerUnWakeupCommand(GO_HOME_CMD, new String[] { "回家" }, this); - AIAssist.getInstance(getContext()) - .registerUnWakeupCommand(GO_COMPANY_CMD, new String[] { "去公司" }, this); - AIAssist.getInstance(getContext()) - .registerUnWakeupCommand(GAS_CMD, new String[] { "加油站" }, this); - AIAssist.getInstance(getContext()) - .registerUnWakeupCommand(RESTAURANT_CMD, new String[] { "餐馆" }, this); - AIAssist.getInstance(getContext()) - .registerUnWakeupCommand(TOILET_CMD, new String[] { "卫生间", "厕所" }, this); - AIAssist.getInstance(getContext()) - .registerUnWakeupCommand(PARK_CMD, new String[] { "停车场" }, this); - AIAssist.getInstance(getContext()) - .registerUnWakeupCommand(NAVI_SETTING_CMD, new String[] { "导航设置" }, this); - AIAssist.getInstance(getContext()) - .registerUnWakeupCommand(CLEAN_CMD, new String[] { "清空历史目的地" }, this); - AIAssist.getInstance(getContext()) - .registerUnWakeupCommand(WASH_CMD, new String[] { "洗车" }, this); + AIAssist.getInstance( getContext() ) + .registerUnWakeupCommand( GO_HOME_CMD, new String[]{"回家"}, this ); + AIAssist.getInstance( getContext() ) + .registerUnWakeupCommand( GO_COMPANY_CMD, new String[]{"去公司"}, this ); + AIAssist.getInstance( getContext() ) + .registerUnWakeupCommand( GAS_CMD, new String[]{"加油站"}, this ); + AIAssist.getInstance( getContext() ) + .registerUnWakeupCommand( RESTAURANT_CMD, new String[]{"餐馆"}, this ); + AIAssist.getInstance( getContext() ) + .registerUnWakeupCommand( TOILET_CMD, new String[]{"卫生间", "厕所"}, this ); + AIAssist.getInstance( getContext() ) + .registerUnWakeupCommand( PARK_CMD, new String[]{"停车场"}, this ); + AIAssist.getInstance( getContext() ) + .registerUnWakeupCommand( NAVI_SETTING_CMD, new String[]{"导航设置"}, this ); + AIAssist.getInstance( getContext() ) + .registerUnWakeupCommand( CLEAN_CMD, new String[]{"清空历史目的地"}, this ); + AIAssist.getInstance( getContext() ) + .registerUnWakeupCommand( WASH_CMD, new String[]{"洗车"}, this ); } @Override - public void renderSearchPoiResult(List datums, boolean showDelete) { - if (datums == null || datums.isEmpty()) { - showEmpty(getString(R.string.search_empty)); + public void renderSearchPoiResult( List< MogoTip > datums, boolean showDelete ) { + if ( datums == null || datums.isEmpty() ) { + showEmpty( getString( R.string.search_empty ) ); return; } showResult(); - mPoiAdapter.setDatas(datums); + mPoiAdapter.setDatas( datums ); registerResult(); } - @Override public void showHistory(List datums) { + @Override + public void showHistory( List< SearchPoi > datums ) { - if (datums == null || datums.isEmpty()) { - showEmpty(getString(R.string.history_empty)); + if ( datums == null || datums.isEmpty() ) { + showEmpty( getString( R.string.history_empty ) ); return; } showHistory(); - mHistoryAdapter.setDatas(datums); + mHistoryAdapter.setDatas( datums ); registerHistory(); } private void registerHistory() { - List datums = mHistoryAdapter.getList(); - for (int i = 0; i < datums.size(); i++) { - String s = StringUtils.int2String(i + 1); - AIAssist.getInstance(getContext()) - .registerUnWakeupCommand("history" + i, - new String[] { "第" + s + "个", "第" + s + "条" }, this); - if (cmds.contains("history" + i)) { + List< SearchPoi > datums = mHistoryAdapter.getList(); + for ( int i = 0; i < datums.size(); i++ ) { + String s = StringUtils.int2String( i + 1 ); + AIAssist.getInstance( getContext() ) + .registerUnWakeupCommand( "history" + i, + new String[]{"第" + s + "个", "第" + s + "条"}, this ); + if ( cmds.contains( "history" + i ) ) { continue; } - cmds.add("history" + i); + cmds.add( "history" + i ); } } private void registerResult() { - List datums = mPoiAdapter.getList(); - for (int i = 0; i < datums.size(); i++) { - String s = StringUtils.int2String(i + 1); - AIAssist.getInstance(getContext()) - .registerUnWakeupCommand("history" + i, - new String[] { "第" + s + "个", "第" + s + "条" }, this); - if (cmds.contains("history" + i)) { + List< MogoTip > datums = mPoiAdapter.getList(); + for ( int i = 0; i < datums.size(); i++ ) { + String s = StringUtils.int2String( i + 1 ); + AIAssist.getInstance( getContext() ) + .registerUnWakeupCommand( "history" + i, + new String[]{"第" + s + "个", "第" + s + "条"}, this ); + if ( cmds.contains( "history" + i ) ) { continue; } - cmds.add("history" + i); + cmds.add( "history" + i ); } } - private List cmds = new ArrayList(); + private List< String > cmds = new ArrayList< String >(); @Override public int getSearchType() { return mSearchType; } - @Override public void startJumpAnimation() { - - } - - /** * 退出搜索,进行清理 */ private void exitSearch() { - switch (mSearchType) { + switch ( mSearchType ) { case SearchConstants.SEARCH_TYPE_COMMON: try { - } catch (Exception e) { + } catch ( Exception e ) { e.printStackTrace(); } break; @@ -313,97 +308,79 @@ public class SearchFragment extends BaseSearchFragment } private void showResult() { - rlHistory.setVisibility(View.GONE); - mSearchResult.setVisibility(View.VISIBLE); - tvEmpty.setVisibility(View.GONE); + rlHistory.setVisibility( View.GONE ); + mSearchResult.setVisibility( View.VISIBLE ); + tvEmpty.setVisibility( View.GONE ); } private void showHistory() { - rlHistory.setVisibility(View.VISIBLE); - mSearchResult.setVisibility(View.GONE); - tvEmpty.setVisibility(View.GONE); + rlHistory.setVisibility( View.VISIBLE ); + mSearchResult.setVisibility( View.GONE ); + tvEmpty.setVisibility( View.GONE ); } - private void showEmpty(String str) { - rlHistory.setVisibility(View.GONE); - tvEmpty.setText(str); - mSearchResult.setVisibility(View.GONE); - tvEmpty.setVisibility(View.VISIBLE); + private void showEmpty( String str ) { + rlHistory.setVisibility( View.GONE ); + tvEmpty.setText( str ); + mSearchResult.setVisibility( View.GONE ); + tvEmpty.setVisibility( View.VISIBLE ); } - private boolean isHistory(){ - return rlHistory.getVisibility()==View.VISIBLE; + private boolean isHistory() { + return rlHistory.getVisibility() == View.VISIBLE; } /** * 类别 */ - @Override public void onClick(View v) { - TextView category = (TextView) v; + @Override + public void onClick( View v ) { + TextView category = ( TextView ) v; String text = category.getText().toString(); - goCategory(text); + goCategory( text ); } - private void goCategory(String text) { + private void goCategory( String text ) { AddressManager.INSTANCE.categorySearch( text ); } - @Override public void onResume() { + @Override + public void onResume() { super.onResume(); } - @Override public void onPause() { + @Override + public void onPause() { super.onPause(); } @Override public void onDestroyView() { super.onDestroyView(); - SearchServiceHolder.INSTANCE.getMapUIController().showMyLocation(true); -// moveMapToRight(); + SearchApisHolder.getUiControllerApis().showMyLocation( true ); unRegisterVoice(); } private void unRegisterVoice() { - //private static final String GO_HOME_CMD="goHome"; - //private static final String GO_COMPANY_CMD="goCompany"; - //private static final String GAS_CMD="gas"; - //private static final String RESTAURANT_CMD="restaurant"; - //private static final String TOILET_CMD="toilet"; - //private static final String PARK_CMD="park"; - //private static final String WASH_CMD="wash"; - //private static final String NAVI_SETTING_CMD="setting"; - //private static final String CLEAN_CMD="clean"; - //private static final String BACK_CMD="back"; - AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(GO_HOME_CMD); - AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(GO_COMPANY_CMD); - AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(GAS_CMD); - AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(RESTAURANT_CMD); - AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(TOILET_CMD); - AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(PARK_CMD); - AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(WASH_CMD); - AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(NAVI_SETTING_CMD); - AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(CLEAN_CMD); - for (String cmd : cmds) { - AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(cmd); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( GO_HOME_CMD ); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( GO_COMPANY_CMD ); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( GAS_CMD ); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( RESTAURANT_CMD ); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( TOILET_CMD ); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( PARK_CMD ); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( WASH_CMD ); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( NAVI_SETTING_CMD ); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( CLEAN_CMD ); + for ( String cmd : cmds ) { + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( cmd ); } } - //@Override public void onPause() { - // super.onPause(); - // unRegisterVoice(); - //} - // - //@Override public void onResume() { - // super.onResume(); - // registerVoidCmd(); - // registerHistory(); - //} - - @Override public void onHiddenChanged(boolean hidden) { - super.onHiddenChanged(hidden); - if (hidden) { + @Override + public void onHiddenChanged( boolean hidden ) { + super.onHiddenChanged( hidden ); + if ( hidden ) { unRegisterVoice(); } else { registerVoidCmd(); @@ -411,36 +388,37 @@ public class SearchFragment extends BaseSearchFragment } } - @Override public void onCmdSelected(String cmd) { - if (!TextUtils.isEmpty(cmd) && cmd.startsWith("history")) { - String index = cmd.substring(7); - Integer integer = Integer.valueOf(index); - if (isHistory()){ - if (integer < mHistoryAdapter.getItemCount()) { - SearchPoi item = mHistoryAdapter.getItem(integer); - goHistory(item); - } - }else { - if (integer < mPoiAdapter.getItemCount()) { - MogoTip item = mPoiAdapter.getItem(integer); - goResult(item); + @Override + public void onCmdSelected( String cmd ) { + if ( !TextUtils.isEmpty( cmd ) && cmd.startsWith( "history" ) ) { + String index = cmd.substring( 7 ); + Integer integer = Integer.valueOf( index ); + if ( isHistory() ) { + if ( integer < mHistoryAdapter.getItemCount() ) { + SearchPoi item = mHistoryAdapter.getItem( integer ); + goHistory( item ); + } + } else { + if ( integer < mPoiAdapter.getItemCount() ) { + MogoTip item = mPoiAdapter.getItem( integer ); + goResult( item ); } } return; } - switch (cmd) { + switch ( cmd ) { case CLEAN_CMD: mSearchPresenter.deleteAllCachedPoi(); - AIAssist.getInstance(getContext()) - .speakQAndACmd(getString(R.string.notice_clean_history), - new String[] { "确定","立即清空" }, new String[] { "取消" }, this); + AIAssist.getInstance( getContext() ) + .speakQAndACmd( getString( R.string.notice_clean_history ), + new String[]{"确定", "立即清空"}, new String[]{"取消"}, this ); break; case GAS_CMD: - goCategory(getString(R.string.navi_gas)); + goCategory( getString( R.string.navi_gas ) ); break; case GO_COMPANY_CMD: @@ -455,20 +433,20 @@ public class SearchFragment extends BaseSearchFragment break; case PARK_CMD: - goCategory(getString(R.string.navi_park)); + goCategory( getString( R.string.navi_park ) ); break; case RESTAURANT_CMD: - goCategory(getString(R.string.navi_restrant)); + goCategory( getString( R.string.navi_restrant ) ); break; case TOILET_CMD: - goCategory(getString(R.string.navi_toilet)); + goCategory( getString( R.string.navi_toilet ) ); break; case WASH_CMD: - goCategory(getString(R.string.navi_wash)); + goCategory( getString( R.string.navi_wash ) ); break; @@ -477,26 +455,31 @@ public class SearchFragment extends BaseSearchFragment } } - @Override public void onCmdAction(String speakText) { + @Override + public void onCmdAction( String speakText ) { mSearchPresenter.hideDialog(); mSearchPresenter.deleteAllCachedPoiImpl(); } - @Override public void onCmdCancel(String speakText) { + @Override + public void onCmdCancel( String speakText ) { mSearchPresenter.hideDialog(); } - @Override public void onSpeakEnd(String speakText) { + @Override + public void onSpeakEnd( String speakText ) { } - @Override public void onSpeakSelectTimeOut(String speakText) { + @Override + public void onSpeakSelectTimeOut( String speakText ) { } - @Override public void onTransaction(int size) { + @Override + public void onTransaction( int size ) { } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java index c50fde48ec..d6ebbb5cfc 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java @@ -1,39 +1,36 @@ package com.mogo.module.navi.ui.search; -import android.app.AlertDialog; import android.text.Editable; import android.text.TextUtils; import android.view.View; import android.widget.EditText; + import androidx.annotation.NonNull; import androidx.lifecycle.LifecycleOwner; + import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.Presenter; import com.mogo.map.location.MogoLocation; -import com.mogo.map.search.geo.MogoPoiItem; import com.mogo.map.search.inputtips.IMogoInputtipsListener; import com.mogo.map.search.inputtips.IMogoInputtipsSearch; import com.mogo.map.search.inputtips.MogoTip; import com.mogo.map.search.inputtips.query.MogoInputtipsQuery; -import com.mogo.map.search.poisearch.IMogoPoiSearch; -import com.mogo.map.search.poisearch.IMogoPoiSearchListener; -import com.mogo.map.search.poisearch.MogoPoiResult; -import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery; import com.mogo.module.common.TextWatcherAdapter; import com.mogo.module.navi.R; import com.mogo.module.navi.bean.EntityConvertUtils; import com.mogo.module.navi.bean.SearchPoi; import com.mogo.module.navi.constants.DataConstants; -import com.mogo.module.navi.constants.SearchServiceHolder; +import com.mogo.module.navi.constants.SearchApisHolder; import com.mogo.module.navi.database.AppDataBase; import com.mogo.module.navi.dialog.NoticeDialog; import com.mogo.service.MogoServicePaths; import com.mogo.service.map.IMogoMapService; + +import java.util.List; + import io.reactivex.Observable; import io.reactivex.ObservableEmitter; import io.reactivex.ObservableOnSubscribe; -import io.reactivex.Observer; -import io.reactivex.Scheduler; import io.reactivex.Single; import io.reactivex.SingleEmitter; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -41,7 +38,6 @@ import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; import io.reactivex.schedulers.Schedulers; -import java.util.List; /** * @author congtaowang @@ -105,8 +101,7 @@ public class SearchPresenter extends Presenter { MogoInputtipsQuery mogoInputtipsQuery = new MogoInputtipsQuery(); mogoInputtipsQuery.setKeyword(keyword); - MogoLocation lastKnowLocation = - SearchServiceHolder.INSTANCE.getLocationClient().getLastKnowLocation(); + MogoLocation lastKnowLocation = SearchApisHolder.getLocationClientApis().getLastKnowLocation(); mogoInputtipsQuery.setCity(lastKnowLocation.getCityName()); mogoInputtipsQuery.setCityLimit(true); IMogoInputtipsSearch inputtipsSearch = diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchUtils.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchUtils.java deleted file mode 100644 index 976a5e209e..0000000000 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchUtils.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.mogo.module.navi.ui.search; - -/** - * @author congtaowang - * @since 2019-12-08 - *

- * 搜索工具类 - */ -public class SearchUtils { - - /** - * @param searchType - * @return - */ - public static int checkAndResetSearchType( int searchType ) { - switch ( searchType ) { - case SearchConstants.SEARCH_TYPE_COMMON: - case SearchConstants.SEARCH_TYPE_MULTI_HOME: - case SearchConstants.SEARCH_TYPE_MULTI_COMPANY: - break; - default: - searchType = SearchConstants.SEARCH_TYPE_COMMON; - break; - } - return searchType; - } - - public static String getSearchTypeActionName( int searchType ) { - switch ( searchType ) { - case SearchConstants.SEARCH_TYPE_COMMON: - return null; - case SearchConstants.SEARCH_TYPE_MULTI_HOME: - return "设为家"; - case SearchConstants.SEARCH_TYPE_MULTI_COMPANY: - return "设为公司"; - } - return null; - } -} diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchView.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchView.java index 633435465e..0153a600ef 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchView.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchView.java @@ -1,9 +1,11 @@ package com.mogo.module.navi.ui.search; import android.widget.EditText; + import com.mogo.commons.mvp.IView; import com.mogo.map.search.inputtips.MogoTip; import com.mogo.module.navi.bean.SearchPoi; + import java.util.List; /** @@ -20,25 +22,11 @@ public interface SearchView extends IView { * @param datums * @param showDelete 是否显示清空历史记录项 */ - void renderSearchPoiResult(List datums, boolean showDelete); + void renderSearchPoiResult( List< MogoTip > datums, boolean showDelete ); - void showHistory(List datums); + void showHistory( List< SearchPoi > datums ); int getSearchType(); - - - ///** - // * 显示逆地理位置编码结果 - // * - // * @param address - // */ - //void renderChoicePointResult(RegeocodeAddress address); - - /** - * 选点完毕后marker动画 - */ - void startJumpAnimation(); - } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt index ac06e82a34..1c2ccc322d 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt @@ -4,25 +4,19 @@ import android.os.Bundle import android.view.View import android.widget.CompoundButton import android.widget.CompoundButton.OnCheckedChangeListener -import android.widget.CompoundButton.VISIBLE import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener -import com.alibaba.android.arouter.facade.annotation.Route import com.mogo.commons.debug.DebugConfig import com.mogo.commons.voice.AIAssist -import com.mogo.map.constants.BroadcastMode import com.mogo.map.uicontroller.EnumMapUI -import com.mogo.module.common.MogoModulePaths import com.mogo.module.navi.R import com.mogo.module.navi.bean.SearchPoi import com.mogo.module.navi.constants.DataConstants -import com.mogo.module.navi.constants.SearchServiceHolder -import com.mogo.module.navi.cp.AddressHelper +import com.mogo.module.navi.constants.SearchApisHolder import com.mogo.module.navi.manager.AddressManager import com.mogo.module.navi.manager.SettingManager import com.mogo.module.navi.manager.VolumeManager import com.mogo.module.navi.ui.base.BaseFragment -import com.mogo.utils.UiThreadHandler import kotlinx.android.synthetic.main.fragment_navi_setting.* import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe @@ -66,7 +60,7 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { } if (isChecked) { - SearchServiceHolder.analyticsManager.track("Navigation_preference", mapOf("type" to type)) + SearchApisHolder.getAnalyticsApis().track("Navigation_preference", mapOf("type" to type)) } } @@ -109,7 +103,7 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { private fun initEvent() { rl_navi_setting_title.setOnClickListener { - SearchServiceHolder.fragmentManager.pop() + SearchApisHolder.getFragmentManager().pop() } iv_sound_plus.setOnClickListener { VolumeManager.getInstance(context).incVolume() @@ -134,8 +128,7 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { sb_navi_volume_progress.setOnSeekBarChangeListener(object : OnSeekBarChangeListener { override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { if (fromUser) { - VolumeManager.getInstance(context) - .setSysVolume(progress) + VolumeManager.getInstance(context).setSysVolume(progress) SettingManager.volume = sb_navi_volume_progress.progress } @@ -156,39 +149,37 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { SettingManager.mapType = checkedId when (checkedId) { R.id.rb_navi_day -> { - SearchServiceHolder.getMapUIController().changeMapMode(EnumMapUI.Type_Light) + SearchApisHolder.getUiControllerApis().changeMapMode(EnumMapUI.Type_Light) } R.id.rb_navi_night -> { - SearchServiceHolder.getMapUIController().changeMapMode(EnumMapUI.Type_Night) + SearchApisHolder.getUiControllerApis().changeMapMode(EnumMapUI.Type_Night) } R.id.rb_navi_auto -> { - SearchServiceHolder.getMapUIController().changeMapMode(EnumMapUI.Type_AUTO_LIGHT_Night) + SearchApisHolder.getUiControllerApis().changeMapMode(EnumMapUI.Type_AUTO_LIGHT_Night) } } } rg_navi_sound_type.setOnCheckedChangeListener { group, checkedId -> - SettingManager.voiceStyle = checkedId - SearchServiceHolder.getNavi().setBroadcastMode( - if (checkedId == R.id.rb_navi_detail) BroadcastMode.DETAIL else BroadcastMode.CONCISE - ) - - if (checkedId == R.id.rb_navi_detail) { - SearchServiceHolder.analyticsManager.track("Navigation_guide_type", mapOf("type" to 1)) - } else { - SearchServiceHolder.analyticsManager.track("Navigation_guide_type", mapOf("type" to 2)) + when (checkedId) { + R.id.rb_navi_detail -> { + SearchApisHolder.getSettingManager().speakDetail() + SearchApisHolder.getAnalyticsApis().track("Navigation_guide_type", mapOf("type" to 1)) + } + R.id.rb_navi_draft -> { + SearchApisHolder.getSettingManager().speakDraft() + SearchApisHolder.getAnalyticsApis().track("Navigation_guide_type", mapOf("type" to 2)) + } } } aimlessModeGroup.setOnCheckedChangeListener { group, checkedId -> - - SettingManager.setAimlessMode(checkedId) - when (checkedId){ + when (checkedId) { R.id.aimlessModeClose -> { - SearchServiceHolder.getNavi().setAimlessModeStatus(false) + SearchApisHolder.getSettingManager().closeAimlessMode() AIAssist.getInstance(mContext).speakTTSVoice("已为您关闭巡航模式") } R.id.aimlessModeOpen -> { - SearchServiceHolder.getNavi().setAimlessModeStatus(true) + SearchApisHolder.getSettingManager().openAimlessMode() AIAssist.getInstance(mContext).speakTTSVoice("已为您开启巡航模式") } } @@ -196,24 +187,24 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { tv_navi_clear_home_address.setOnClickListener { - AddressManager.deleteHome(context!!) + AddressManager.deleteHome() clearHome() } tv_navi_clear_company_address.setOnClickListener { - AddressManager.deleteCompany(context!!) + AddressManager.deleteCompany() clearCompany() } tv_navi_company_address.setOnClickListener { if (!AddressManager.hasCompany()) { - AddressManager.goCompany() + SearchApisHolder.getSearchManager().goCompany() } } tv_navi_home_address.setOnClickListener { if (!AddressManager.hasHome()) { - AddressManager.goHome() + SearchApisHolder.getSearchManager().goHome() } } @@ -231,9 +222,9 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { SettingManager.setGpsSimulator(isChecked) if (isChecked) { - SearchServiceHolder.gpsSimulator.open() + SearchApisHolder.getGpsSimulatorManager().open() } else { - SearchServiceHolder.gpsSimulator.close() + SearchApisHolder.getGpsSimulatorManager().close() } } tb_navi.isChecked = SettingManager.isMonitor() diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt index 099248bac1..b6eb204bd9 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt @@ -9,6 +9,7 @@ import com.mogo.map.MogoLatLng import com.mogo.map.listener.IMogoMapListener import com.mogo.map.marker.IMogoMarker import com.mogo.map.marker.MogoMarkerOptions +import com.mogo.map.search.geo.IMogoGeoSearch import com.mogo.map.search.geo.IMogoGeoSearchListener import com.mogo.map.search.geo.MogoGeocodeResult import com.mogo.map.search.geo.MogoRegeocodeResult @@ -20,7 +21,7 @@ import com.mogo.module.navi.bean.EntityConvertUtils import com.mogo.module.navi.bean.SearchPoi import com.mogo.module.navi.constants.AMapConstants import com.mogo.module.navi.constants.DataConstants -import com.mogo.module.navi.constants.SearchServiceHolder +import com.mogo.module.navi.constants.SearchApisHolder import com.mogo.module.navi.cp.AddressHelper import com.mogo.module.navi.database.AppDataBase import com.mogo.module.navi.manager.AddressManager @@ -37,6 +38,8 @@ import kotlinx.android.synthetic.main.fragment_setting_address.* * 2020-01-07. */ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { + + override fun onRegeocodeSearched(regeocodeResult: MogoRegeocodeResult?) { et_navi_search.setText(regeocodeResult?.regeocodeAddress?.formatAddress) var formatAddress = regeocodeResult?.regeocodeAddress?.formatAddress @@ -58,6 +61,8 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { private var style: Int = DataConstants.TYPE_HOME_ADDRESS var addMarker: IMogoMarker? = null + private lateinit var mGeoSearch: IMogoGeoSearch + private var selectPoi: SearchPoi? = null private var mapListener: IMogoMapListener = object : MogoMapListenerAdapter() { override fun onMapChanged( @@ -69,7 +74,7 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { selectPoi = EntityConvertUtils.geoToPoi(latLng?.lat ?: 0.0, latLng?.lng ?: 0.0, style) var mogoRegeocodeQuery = MogoRegeocodeQuery() mogoRegeocodeQuery.point = latLng - SearchServiceHolder.getGeoSearcher().getFromLocationAsyn(mogoRegeocodeQuery) + mGeoSearch.getFromLocationAsyn(mogoRegeocodeQuery) addMarker?.startJumpAnimation( 150f, 600, @@ -86,12 +91,13 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - style = arguments?.getInt(AMapConstants.KEY_SET_HOME_COMPONY) - ?: DataConstants.TYPE_HOME_ADDRESS - SearchServiceHolder.listenerCenter.registerMogoMapListener(AMapConstants.PATH_FRAGMENT_SETTING_HOME, mapListener) - SearchServiceHolder.getMapUIController().showMyLocation(false) - SearchServiceHolder.getGeoSearcher().setGeoSearchListener(this) - SearchServiceHolder.getMarkerManger().removeMarkers() + style = arguments?.getInt(AMapConstants.KEY_SET_HOME_COMPONY) ?: DataConstants.TYPE_HOME_ADDRESS + SearchApisHolder.getRegisterCenterApis().registerMogoMapListener(AMapConstants.PATH_FRAGMENT_SETTING_HOME, mapListener) + SearchApisHolder.getUiControllerApis().showMyLocation(false) + SearchApisHolder.getMarkerManager().removeMarkers() + + mGeoSearch = SearchApisHolder.getMapServiceApis().getGeoSearch(context) + mGeoSearch.setGeoSearchListener(this) } override fun getLayoutId(): Int { @@ -119,7 +125,7 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { } iv_navi_back.setOnClickListener { - SearchServiceHolder.fragmentManager.pop() + SearchApisHolder.getFragmentManager().pop() } tv_set_as_home.setOnClickListener { if (selectPoi == null) { @@ -127,12 +133,12 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { return@setOnClickListener } insert(selectPoi!!) - SearchServiceHolder.fragmentManager.pop() + SearchApisHolder.getFragmentManager().pop() } et_navi_search.isEnabled = false et_navi_search.setText(getString(string.drag_map_to_choose)) - var location = SearchServiceHolder.getMapUIController().windowCenterLocation + var location = SearchApisHolder.getUiControllerApis().windowCenterLocation UiThreadHandler.postDelayed({ if (!isAdded) { @@ -145,10 +151,9 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { .owner(TAG) .anchor(0.5f, 1f) .longitude(location?.lng ?: 0.0) - addMarker = SearchServiceHolder.getMarkerManger() - .addMarker(AMapConstants.PATH_FRAGMENT_SETTING_HOME, options) + addMarker = SearchApisHolder.getMarkerManager().addMarker(AMapConstants.PATH_FRAGMENT_SETTING_HOME, options) - var locationPointInScreen = SearchServiceHolder.getMapUIController().getLocationPointInScreen(location) + var locationPointInScreen = SearchApisHolder.getUiControllerApis().getLocationPointInScreen(location) addMarker?.setPositionByPixels(locationPointInScreen) }, 500L) } @@ -169,9 +174,7 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { override fun onDestroyView() { super.onDestroyView() - SearchServiceHolder.listenerCenter.unregisterMogoMapListener( - AMapConstants.PATH_FRAGMENT_SETTING_HOME - ) + SearchApisHolder.getRegisterCenterApis().unregisterMogoMapListener(AMapConstants.PATH_FRAGMENT_SETTING_HOME) addMarker?.destroy() } diff --git a/modules/mogo-module-search/src/main/res/layout/activity_navi.xml b/modules/mogo-module-search/src/main/res/layout/activity_navi.xml deleted file mode 100644 index dbec94d82e..0000000000 --- a/modules/mogo-module-search/src/main/res/layout/activity_navi.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java index a1774a2d4a..b2f2391ff6 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java @@ -26,6 +26,7 @@ import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoActionManager; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.statusmanager.IMogoStatusManager; +import com.mogo.utils.logger.Logger; import com.zhidao.carchattingprovider.CallChattingProviderConstant; /** @@ -195,11 +196,9 @@ public class MarkerServiceHandler { /** * 对指定类型高亮处理 * 建议使用 - * - * @see MapMarkerManager#highlightedMarker(String, boolean) */ @Deprecated public static void highlightedMarker( String typeTag ) { - getMapMarkerManager().highlightedMarker( typeTag, false ); + Logger.w( TAG, "do not invoke this method any more." ); } } 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..ed01a0a9e2 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; @@ -509,13 +493,15 @@ public class MogoServices implements IMogoMapListener, if ( mStatusManager.isUserInteracted() ) { mLastCustomRefreshCenterLocation = latLng; mLastZoomLevel = zoom; + Logger.d( TAG, "user interacted" ); return; } // v2x // adas 状态下不做任何操作 - if ( mStatusManager.isADASShow() ) { + if ( mStatusManager.isV2XShow() ) { mLastCustomRefreshCenterLocation = latLng; mLastZoomLevel = zoom; + Logger.d( TAG, "user v2x show" ); return; } @@ -523,6 +509,7 @@ public class MogoServices implements IMogoMapListener, if ( mStatusManager.isSearchUIShow() ) { mLastCustomRefreshCenterLocation = latLng; mLastZoomLevel = zoom; + Logger.d( TAG, "user search Ui show" ); return; } @@ -571,7 +558,7 @@ public class MogoServices implements IMogoMapListener, } float distance = Utils.calculateLineDistance( latLng, mLastCustomRefreshCenterLocation ); Logger.d( TAG, "move distance = %s, factor = %s", distance, factor ); - return distance > factor; + return distance > factor / 2; } catch ( Exception e ) { Logger.e( TAG, e, "warming. " ); return false; @@ -585,7 +572,7 @@ public class MogoServices implements IMogoMapListener, @Override public void onCarLocationChanged2( Location latLng ) { - if ( mStatusManager.isADASShow() ) { + if ( mStatusManager.isV2XShow() ) { return; } @@ -637,28 +624,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 +640,7 @@ public class MogoServices implements IMogoMapListener, } else { // 搜索后,打开打点策略 if ( mAutoRefreshCallback != null ) { - mAutoRefreshCallback.onSuccess(null); + mAutoRefreshCallback.onSuccess( null ); } } break; @@ -722,15 +687,13 @@ public class MogoServices implements IMogoMapListener, private void onAdasOn() { // ADAS 时,不在自动刷新打点策略 stopAutoRefreshStrategy(); - // 清除所有的打点信息记录 - MarkerServiceHandler.getMapMarkerManager().alreadySmallMarker.clear(); } private void onAdasClosed() { refreshStrategy(); // ADAS关闭后,打开打点策略 if ( mAutoRefreshCallback != null ) { - mAutoRefreshCallback.onSuccess(null); + mAutoRefreshCallback.onSuccess( null ); } } @@ -756,21 +719,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 ) { @@ -803,10 +751,13 @@ public class MogoServices implements IMogoMapListener, mStatusManager.setADASUIShow( ServiceConst.TYPE, status == 1 ); } else if ( Intent.ACTION_POWER_CONNECTED.equals( command ) ) { mStatusManager.setAccStatus( ServiceConst.TYPE, true ); + Logger.d( TAG, "acc status: %s", true ); } else if ( Intent.ACTION_POWER_DISCONNECTED.equals( command ) ) { mStatusManager.setAccStatus( ServiceConst.TYPE, false ); + Logger.d( TAG, "acc status: %s", false ); } else if ( MogoReceiver.ACTION_NWD_ACC.equals( command ) ) { int state = intent.getByteExtra( MogoReceiver.PARAM_ACC_STATUS, ( byte ) 0 ); + Logger.d( TAG, "acc status: %s", state == 1 ); mStatusManager.setAccStatus( ServiceConst.TYPE, state == 1 ); } else if ( MogoReceiver.ACTION_VOICE_UI.equals( command ) ) { String val = intent.getStringExtra( MogoReceiver.PARRAM_WAKE_STATUS ); @@ -816,9 +767,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 +860,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 +872,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 +885,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 +899,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/ServiceConst.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java index 304c284b98..41282ef6bc 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java @@ -85,7 +85,7 @@ public class ServiceConst { /** * 20 s */ - public static final int DEFAULT_AUTO_REFRESH_WHEN_INTERRUPT = 20 * 1_000; + public static final int DEFAULT_AUTO_REFRESH_WHEN_INTERRUPT = 30 * 1_000; /** * 所有卡片显示的每类点的最大数据量 diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java index 108ba2ec75..ff9a355949 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java @@ -9,9 +9,20 @@ import android.view.View; import android.widget.TextView; import com.mogo.commons.debug.DebugConfig; +import com.mogo.map.MogoLatLng; +import com.mogo.map.search.geo.IMogoGeoSearch; +import com.mogo.map.search.geo.IMogoGeoSearchListener; +import com.mogo.map.search.geo.MogoGeocodeResult; +import com.mogo.map.search.geo.MogoRegeocodeResult; +import com.mogo.map.search.geo.query.MogoRegeocodeQuery; +import com.mogo.module.common.dialog.WMDialog; import com.mogo.module.service.MarkerServiceHandler; +import com.mogo.module.service.MogoServiceProvider; +import com.mogo.module.service.R; import com.mogo.service.entrance.ButtonIndex; import com.mogo.utils.TipToast; +import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.utils.GsonUtil; /** * @author congtaowang @@ -71,10 +82,10 @@ public class MockIntentHandler implements IntentHandler { button11.setVisibility( View.VISIBLE ); button11.setBackgroundColor( Color.RED ); button11.setOnClickListener( view -> { - Intent intent1 = new Intent( ); + Intent intent1 = new Intent(); intent1.setAction( Intent.ACTION_VIEW ); intent1.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK ); - intent1.setData( Uri.parse("wechathelper://com.zhidao.wechathelper/main/transform?type=navi&lon=116.327007&lat=39.977639&from=os2.0") ); + intent1.setData( Uri.parse( "wechathelper://com.zhidao.wechathelper/main/transform?type=navi&lon=116.327007&lat=39.977639&from=os2.0" ) ); try { view.setOnClickListener( null ); view.getContext().startActivity( intent1 ); @@ -89,6 +100,40 @@ public class MockIntentHandler implements IntentHandler { float bearing = intent.getFloatExtra( "bearing", 0 ); MarkerServiceHandler.getMapUIController().changeBearing( bearing ); break; + case 9: + new WMDialog.Builder( context ) + .setOkButton( "确认", ( dlg, which ) -> { + dlg.dismiss(); + } ) + .setCancelButton( "取消", ( dlg, which ) -> { + dlg.dismiss(); + } ) + .setContent( "内容内容内容内容内容内容内容内容" ) + .build() + .show(); + break; + case 10: + IMogoGeoSearch geoSearch = MarkerServiceHandler.getMapService().getGeoSearch( context ); + geoSearch.setGeoSearchListener( new IMogoGeoSearchListener() { + @Override + public void onRegeocodeSearched( MogoRegeocodeResult regeocodeResult ) { + Logger.d( TAG, GsonUtil.jsonFromObject( regeocodeResult ) ); + } + + @Override + public void onGeocodeSearched( MogoGeocodeResult geocodeResult ) { + + } + } ); + MogoRegeocodeQuery query = new MogoRegeocodeQuery(); + query.setLatlngType( "autonavi" ); + query.setPoint( new MogoLatLng( intent.getFloatExtra( "lat", 39.917366f ), intent.getFloatExtra( "lon", 116.39962f ) ) ); + query.setRadius( 1000 ); + geoSearch.getFromLocationAsyn( query ); + break; + case 11: + MarkerServiceHandler.getADASController().setSettingStatus( intent.getBooleanExtra( "status", false ) ); + break; } } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java index d272ae9046..bb991fdae9 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java @@ -12,6 +12,7 @@ import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; import com.mogo.map.marker.MogoMarkerOptions; +import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.MarkerNoveltyInfo; import com.mogo.module.common.entity.MarkerOnlineCar; import com.mogo.module.common.entity.MarkerPoiTypeEnum; @@ -36,193 +37,145 @@ public class MapMarkerInfoView extends MapMarkerBaseView { private ConstraintLayout clMarkerContent; private ImageView ivReverseTriangle; - public MapMarkerInfoView(Context context) { - super(context); + public MapMarkerInfoView( Context context ) { + super( context ); } - public MapMarkerInfoView(Context context, @Nullable AttributeSet attrs) { - super(context, attrs); + public MapMarkerInfoView( Context context, @Nullable AttributeSet attrs ) { + super( context, attrs ); } - public MapMarkerInfoView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); + public MapMarkerInfoView( Context context, @Nullable AttributeSet attrs, int defStyleAttr ) { + super( context, attrs, defStyleAttr ); } - public MapMarkerInfoView(Context context, MarkerShowEntity markerShowEntity, MogoMarkerOptions options) { - super(context); + public MapMarkerInfoView( Context context, MarkerShowEntity markerShowEntity, MogoMarkerOptions options ) { + super( context ); mOptions = options; - updateView(markerShowEntity); + updateView( markerShowEntity ); } - protected void initView(Context context) { - LayoutInflater.from(context).inflate(R.layout.view_map_marker_info, this); - ivUserHead = findViewById(R.id.ivUserHead); - ivIcon = findViewById(R.id.ivIcon); - clMarkerContent = findViewById(R.id.clMarkerContent); - ivReverseTriangle = findViewById(R.id.ivReverseTriangle); - ivCar = findViewById(R.id.ivCar); - tvMarkerContent = findViewById(R.id.tvMarkerContent); + protected void initView( Context context ) { + LayoutInflater.from( context ).inflate( R.layout.view_map_marker_info, this ); + ivUserHead = findViewById( R.id.ivUserHead ); + ivIcon = findViewById( R.id.ivIcon ); + clMarkerContent = findViewById( R.id.clMarkerContent ); + ivReverseTriangle = findViewById( R.id.ivReverseTriangle ); + ivCar = findViewById( R.id.ivCar ); + tvMarkerContent = findViewById( R.id.tvMarkerContent ); } - public void updateView(MarkerShowEntity markerShowEntity) { + public void updateView( MarkerShowEntity markerShowEntity ) { try { Object bindObj = markerShowEntity.getBindObj(); - switch (markerShowEntity.getMarkerType()) { + ivCar.setImageResource( R.drawable.icon_map_marker_location_yellow ); + clMarkerContent.setBackgroundResource( R.drawable.bg_map_marker_yellow_info ); + ivReverseTriangle.setImageResource( R.drawable.bg_shape_reverse_yellow ); + switch ( markerShowEntity.getMarkerType() ) { case ServiceConst.CARD_TYPE_CARS_CHATTING: case ServiceConst.CARD_TYPE_USER_DATA: - ivUserHead.setVisibility(View.VISIBLE); - ivIcon.setVisibility(View.INVISIBLE); - loadImageWithMarker(markerShowEntity); - ivCar.setImageResource(R.drawable.icon_map_marker_car_gray); + ivUserHead.setVisibility( View.VISIBLE ); + ivIcon.setVisibility( View.INVISIBLE ); + loadImageWithMarker( markerShowEntity ); + ivCar.setImageResource( R.drawable.icon_map_marker_car_gray ); //ivCar.setRotation(new Random().nextInt(360)); - ivCar.setRotation((float) markerShowEntity.getMarkerLocation().getAngle()); - - if (bindObj instanceof MarkerOnlineCar) { - if (((MarkerOnlineCar) bindObj).getUserInfo().getGenderValue() == 0) { - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue); - } else { - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_purple_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_purple); - } - } - + ivCar.setRotation( ( float ) markerShowEntity.getMarkerLocation().getAngle() ); break; case ServiceConst.CARD_TYPE_ROAD_CONDITION: - ivUserHead.setVisibility(View.INVISIBLE); - ivIcon.setVisibility(View.VISIBLE); - - ivIcon.setImageResource(R.drawable.icon_map_marker_road_block_up); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue); - ivCar.setImageResource(R.drawable.icon_map_marker_location_blue); - break; case ServiceConst.CARD_TYPE_NOVELTY: - ivUserHead.setVisibility(View.INVISIBLE); - ivIcon.setVisibility(View.VISIBLE); - ivCar.setImageResource(R.drawable.icon_map_marker_location_blue); + ivUserHead.setVisibility( View.INVISIBLE ); + ivIcon.setVisibility( View.VISIBLE ); - if (bindObj instanceof MarkerNoveltyInfo) { - switch (((MarkerNoveltyInfo) bindObj).getPoiType()) { + if ( bindObj instanceof MarkerExploreWay ) { + switch ( ( ( MarkerExploreWay ) bindObj ).getPoiType() ) { case MarkerPoiTypeEnum.GAS_STATION: - ivIcon.setImageResource(R.drawable.icon_map_marker_refuel); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_orange_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_orange); + ivIcon.setImageResource( R.drawable.icon_map_marker_refuel ); break; case MarkerPoiTypeEnum.TRAFFIC_CHECK: - ivIcon.setImageResource(R.drawable.icon_map_marker_road_check); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_green_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_green); + ivIcon.setImageResource( R.drawable.icon_map_marker_road_check2_light ); break; case MarkerPoiTypeEnum.ROAD_CLOSED: - ivIcon.setImageResource(R.drawable.icon_map_marker_road_block_off); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_dark_blue_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_dark_blue); + ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_off2_light ); break; case MarkerPoiTypeEnum.SHOP_DISCOUNT: - ivIcon.setImageResource(R.drawable.icon_map_marker_shop_discount); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_red_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_red); + ivIcon.setImageResource( R.drawable.icon_map_marker_shop_discount ); break; case MarkerPoiTypeEnum.FOURS_4S: - ivIcon.setImageResource(R.drawable.icon_map_marker_4s); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_dark_blue_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_dark_blue); + ivIcon.setImageResource( R.drawable.icon_map_marker_4s ); break; case MarkerPoiTypeEnum.FOURS_ROAD_WORK: - ivIcon.setImageResource(R.drawable.icon_map_marker_road_work); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_dark_blue_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_dark_blue); + ivIcon.setImageResource( R.drawable.icon_map_marker_road_work2_light ); break; case MarkerPoiTypeEnum.FOURS_BLOCK_UP: - ivIcon.setImageResource(R.drawable.icon_map_marker_road_block_up); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue); + ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2_light ); break; case MarkerPoiTypeEnum.FOURS_PONDING: - ivIcon.setImageResource(R.drawable.icon_map_marker_pondingl); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue); + ivIcon.setImageResource( R.drawable.icon_map_marker_pondingl2_light ); break; case MarkerPoiTypeEnum.FOURS_SHOP_FREE: - ivIcon.setImageResource(R.drawable.icon_map_marker_shop); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_dark_green_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_dark_green); + ivIcon.setImageResource( R.drawable.icon_map_marker_shop ); break; case MarkerPoiTypeEnum.FOURS_FOG: - ivIcon.setImageResource(R.drawable.module_service_ic_rc_dark_frog2); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_grey_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_grey); + ivIcon.setImageResource( R.drawable.module_service_ic_rc_dark_frog2_light ); break; case MarkerPoiTypeEnum.FOURS_ICE: - ivIcon.setImageResource(R.drawable.module_service_ic_rc_freeze2); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue); + ivIcon.setImageResource( R.drawable.module_service_ic_rc_freeze2_light ); break; case MarkerPoiTypeEnum.FOURS_PARKING: - ivIcon.setImageResource(R.drawable.module_service_ic_rc_parking2); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_dark_blue_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_dark_blue); + ivIcon.setImageResource( R.drawable.module_service_ic_rc_parking2 ); break; case MarkerPoiTypeEnum.FOURS_ACCIDENT: - ivIcon.setImageResource(R.drawable.module_service_ic_rc_accident2); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_red_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_red); + ivIcon.setImageResource( R.drawable.module_service_ic_rc_accident3_light ); break; case MarkerPoiTypeEnum.FOURS_NEALY: - ivIcon.setImageResource(R.drawable.icon_map_marker_shear_news); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue); + ivIcon.setImageResource( R.drawable.icon_map_marker_shear_news ); + break; + case MarkerPoiTypeEnum.FOURS_LIVING: + ivIcon.setImageResource( R.drawable.icon_map_marker_living_light ); break; default: - ivIcon.setImageResource(R.drawable.icon_map_marker_shear_news); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_dark_blue_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_dark_blue); + ivIcon.setImageResource( R.drawable.icon_map_marker_shear_news ); break; } } break; case ServiceConst.CARD_TYPE_SHARE_MUSIC: - ivUserHead.setVisibility(View.INVISIBLE); - ivIcon.setVisibility(View.VISIBLE); + ivUserHead.setVisibility( View.INVISIBLE ); + ivIcon.setVisibility( View.VISIBLE ); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_purple_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_purple); - ivCar.setImageResource(R.drawable.icon_map_marker_location_blue); - - if (bindObj instanceof MarkerShareMusic) { + if ( bindObj instanceof MarkerShareMusic ) { // 2 为书籍听书,3 为新闻,1 为qq音乐,int - switch (((MarkerShareMusic) bindObj).getShareType()) { + switch ( ( ( MarkerShareMusic ) bindObj ).getShareType() ) { case 1: - ivIcon.setImageResource(R.drawable.icon_map_marker_misic); + ivIcon.setImageResource( R.drawable.icon_map_marker_misic ); break; case 2: - ivIcon.setImageResource(R.drawable.icon_map_marker_book); + ivIcon.setImageResource( R.drawable.icon_map_marker_book ); break; case 3: - ivIcon.setImageResource(R.drawable.icon_map_marker_news); + ivIcon.setImageResource( R.drawable.icon_map_marker_news ); break; default: - ivIcon.setImageResource(R.drawable.icon_map_marker_misic); + ivIcon.setImageResource( R.drawable.icon_map_marker_misic ); break; } } break; } - if (!TextUtils.isEmpty(markerShowEntity.getTextContent())) { + if ( !TextUtils.isEmpty( markerShowEntity.getTextContent() ) ) { String content; - if (markerShowEntity.getTextContent().length() > 8) { - content = markerShowEntity.getTextContent().substring(0, 7) + "..."; + if ( markerShowEntity.getTextContent().length() > 8 ) { + content = markerShowEntity.getTextContent().substring( 0, 7 ) + "..."; } else { content = markerShowEntity.getTextContent(); } - tvMarkerContent.setText(content); + tvMarkerContent.setText( content ); } - } catch (Exception e) { + } catch ( Exception e ) { e.printStackTrace(); } } 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..9f5a90088b 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 @@ -1,19 +1,13 @@ package com.mogo.module.service.marker; import android.content.Context; -import android.content.Intent; import android.text.TextUtils; -import android.util.Log; -import android.view.animation.BounceInterpolator; -import android.view.animation.OvershootInterpolator; import com.mogo.map.MogoLatLng; -import com.mogo.map.location.MogoLocation; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.marker.IMogoMarkerManager; import com.mogo.map.marker.MogoMarkerOptions; -import com.mogo.map.marker.MogoMarkersHandler; import com.mogo.module.common.ModuleNames; import com.mogo.module.common.entity.MarkerCarPois; import com.mogo.module.common.entity.MarkerCardResult; @@ -30,7 +24,6 @@ import com.mogo.module.service.Utils; import com.mogo.module.service.network.RefreshCallback; import com.mogo.module.service.network.RefreshModel; import com.mogo.module.service.utils.ViewUtils; -import com.mogo.service.cardmanager.IMogoCardChangedListener; import com.mogo.service.connection.IMogoOnMessageListener; import com.mogo.service.module.IMogoBizActionDoneListener; import com.mogo.utils.ThreadPoolService; @@ -54,28 +47,18 @@ import java.util.Map; * version: 1.0 */ public class MapMarkerManager implements IMogoMarkerClickListener, - IMogoOnMessageListener< MarkerResponse >, IMogoCardChangedListener, + IMogoOnMessageListener< MarkerResponse >, IMogoBizActionDoneListener { private static final String TAG = "MapMarkerManager"; - // 是否选中在线卡片及气泡,语音搜索触发 - private boolean mIsAISearchOnlineData = false; private Context mContext; // 最后一次选中的气泡 private IMogoMarker mLastCheckMarker; private static MapMarkerManager mMarkerManager; - private String mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION; - // 记录其它已经缩小的Marker - public ArrayList< String > alreadySmallMarker = new ArrayList<>(); - // 存储所有汽车marker -// public ArrayList carMarkers = new ArrayList<>(); - // 距离用户最近的Marker - private IMogoMarker mNearlyMarker = null; // 记录上次请求数据,切换卡片时做数据处理 private MarkerCardResult mLastDataResult; - private boolean mIsMarkerClicked = false; private RefreshModel mRefreshModel; private MogoLatLng mCarLatLng; // 平滑移动事件间隔(单位:秒) @@ -105,8 +88,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, // 长连接 MarkerServiceHandler.getMogoSocketManager().registerOnMessageListener( 401001, this ); - MarkerServiceHandler.getMogoCardManager().registerCardChangedListener( - "LAUNCHER_MARKER_MODULE", this ); MarkerServiceHandler.getActionManager().registerBizActionDoneListener( this ); } @@ -116,30 +97,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener, Logger.e( TAG, "do not invoke anymore." ); } - @Override - public void onSwitched( int position, String moduleName ) { - Logger.d( TAG, "当前C位卡片:" + moduleName ); - if ( ( TextUtils.isEmpty( mCurrentModuleName ) || TextUtils.equals( mCurrentModuleName, - ServiceConst.CARD_TYPE_BUSINESS_OPERATION ) ) && mIsMarkerClicked ) { - mIsMarkerClicked = false; - // 在广告位(默认位置)点击marker造成卡片切换的,还是现实全部marker 【需求:os2.0.2-2.5-4】 - highlightedMarker( moduleName, false ); - mCurrentModuleName = moduleName; - } else { - mCurrentModuleName = moduleName; - runOnTargetThread( () -> { - MarkerServiceHandler.getMarkerManager().removeMarkersExcept( ModuleNames.CARD_TYPE_USER_DATA ); - drawMarkerByCurrentType( mLastDataResult ); - } ); - } - } - /** * 地图上的Marker点击回调 */ @Override public boolean onMarkerClicked( IMogoMarker marker ) { - mIsMarkerClicked = true; Logger.d( TAG, "onMarkerClicked 点击了大而全中的Marker:" + marker ); try { boolean result = switchMarkerOpenStatus( marker ); @@ -174,90 +136,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, return true; } - - // 对指定类型高亮处理 - public synchronized void highlightedMarker( final String typeTag ) { - highlightedMarker( typeTag, false ); - } - - public synchronized void highlightedMarker( final String typeTag, final boolean netDataRefresh ) { - try { - Logger.e( TAG, "上一次选中的卡片类型:mCurrentModuleName==" + mCurrentModuleName ); - if ( !TextUtils.isEmpty( mCurrentModuleName ) && TextUtils.equals( mCurrentModuleName, - typeTag ) && !netDataRefresh ) { - return; - } - // 从已经缩小的记录删除 - alreadySmallMarker.remove( typeTag ); - List< IMogoMarker > currentHighLightList = - MarkerServiceHandler.getMarkerManager().getMarkers( typeTag ); - - if ( currentHighLightList == null || currentHighLightList.size() == 0 ) { - alreadySmallMarker.clear(); - // 放大所有的气泡 - Map< String, List< IMogoMarker > > lastHighLightList = - MarkerServiceHandler.getMarkerManager().getAllMarkers(); - for ( String markerName : lastHighLightList.keySet() ) { - setMarkersBig( lastHighLightList.get( markerName ) ); - } - } else { - // 缩小其他的气泡 - Map< String, List< IMogoMarker > > lastHighLightList = - MarkerServiceHandler.getMarkerManager().getAllMarkers(); - for ( String markerName : lastHighLightList.keySet() ) { - if ( !markerName.equals( typeTag ) ) { - if ( !alreadySmallMarker.contains( markerName ) ) { - alreadySmallMarker.add( markerName ); - setMarkersSmall( lastHighLightList.get( markerName ) ); - } - } - } - - // 将当前卡片选中的气泡放大 - setMarkersBig( currentHighLightList ); - } - - } catch ( Exception e ) { - e.printStackTrace(); - } - } - - private static void setMarkersBig( List< IMogoMarker > markers ) { - if ( markers == null || markers.isEmpty() ) { - return; - } - for ( IMogoMarker mogoMarker : markers ) { - if ( mogoMarker == null || mogoMarker.isDestroyed() ) { - continue; - } - try { - mogoMarker.startScaleAnimation( 0.6f, 1f, 0.6f, 1f, 1000, new BounceInterpolator() ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - - private static void setMarkersSmall( List< IMogoMarker > markers ) { - if ( markers == null || markers.isEmpty() ) { - return; - } - for ( IMogoMarker mogoMarker : markers ) { - smallMarker( mogoMarker ); - } - } - - private static void smallMarker( IMogoMarker mogoMarker ) { - if ( mogoMarker == null || mogoMarker.isDestroyed() ) { - return; - } - try { - mogoMarker.startScaleAnimation( 1f, 0.6f, 1f, 0.6f, 300, new OvershootInterpolator() ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - // 展开气泡 private void openMarker( IMogoMarker mogoMarker ) { if ( mogoMarker == null ) { @@ -269,6 +147,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 { @@ -298,7 +178,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } // 在线车辆点击使用infoWindow if ( TextUtils.equals( mogoMarker.getOwner(), ModuleNames.CARD_TYPE_USER_DATA ) ) { -// mogoMarker.hideInfoWindow(); + mogoMarker.hideInfoWindow(); Logger.d( TAG, "关闭info window" ); } else { Object object = mogoMarker.getObject(); @@ -338,37 +218,10 @@ public class MapMarkerManager implements IMogoMarkerClickListener, dispatchDataToBiz(); } ); - // 语音触发的在线车辆搜索,采用增量的形式绘制 - if ( mIsAISearchOnlineData = isOnlineCarDataOnly( mLastDataResult ) ) { - MarkerServiceHandler.getMarkerManager().removeMarkers( ServiceConst.CARD_TYPE_USER_DATA ); - MarkerServiceHandler.getMogoCardManager().switch2( ServiceConst.CARD_TYPE_USER_DATA ); - } else { - mLastCheckMarker = null; - // 清空所有地图上绘制的Marker - MarkerServiceHandler.getMarkerManager().removeMarkersExcept( ModuleNames.CARD_TYPE_USER_DATA ); - } - drawMarkerByCurrentType( mLastDataResult ); - // 同步新绘制的气泡状态 - alreadySmallMarker.clear(); -// highlightedMarker( mCurrentModuleName, true ); - trackData( mLastDataResult ); } - /** - * 是否是语音搜索的在线车辆数据:目前根据返回数据判断 - * - * @param markerCardResult - * @return - */ - private boolean isOnlineCarDataOnly( MarkerCardResult markerCardResult ) { - if ( markerCardResult != null && markerCardResult.getDataType() != null && markerCardResult.getDataType().size() == 1 && markerCardResult.getDataType().contains( ServiceConst.CARD_TYPE_USER_DATA ) ) { - return true; - } - return false; - } - /** * 根据类型绘制 * @@ -384,11 +237,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, return; } - if ( TextUtils.isEmpty( mCurrentModuleName ) ) { - // 默认大而全 - mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION; - } - drawAllMarker( markerCardResult ); } @@ -398,15 +246,9 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param markerCardResult */ private void drawAllMarker( MarkerCardResult markerCardResult ) { -// List onlineCarList = markerCardResult.getOnlineCar(); List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay(); - List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic(); - List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo(); -// drawOnlineCarMarkers(onlineCarList, ServiceConst.MAX_AMOUNT_ALL); drawRoadConditionMarker( exploreWayList, ServiceConst.MAX_AMOUNT_ALL ); - drawShareMusicMarker( shareMusicList, ServiceConst.MAX_AMOUNT_ALL ); - drawNoveltyMarker( noveltyInfoList, ServiceConst.MAX_AMOUNT_ALL ); } /** @@ -420,10 +262,9 @@ public class MapMarkerManager implements IMogoMarkerClickListener, return; } - double nearlyDistance = Float.MAX_VALUE; int size = getAppropriateSize( maxAmount, onlineCarList ); - Map< String, IMogoMarker > existCarMap = purgeCarsData( onlineCarList ); + Map< String, IMogoMarker > existCarMap = purgeMarkerData( onlineCarList, ModuleNames.CARD_TYPE_USER_DATA ); for ( int i = 0; i < size; i++ ) { MarkerOnlineCar markerOnlineCar = onlineCarList.get( i ); @@ -438,119 +279,13 @@ public class MapMarkerManager implements IMogoMarkerClickListener, markerShowEntity.setIconUrl( markerOnlineCar.getUserInfo().getUserHead() ); } - if ( markerOnlineCar.getUserInfo() == null || TextUtils.isEmpty( markerOnlineCar.getUserInfo().getSn() ) ) { - continue; - } - IMogoMarker mogoMarker = existCarMap.get( markerOnlineCar.getUserInfo().getSn() ); + String sn = getCarSnFromEntity( markerOnlineCar ); + IMogoMarker mogoMarker = existCarMap.get( sn ); if ( mogoMarker == null ) { - Logger.d( TAG, "car [%s] need be create.", markerOnlineCar.getUserInfo().getSn() ); mogoMarker = drawMapMarker( markerShowEntity ); } startSmooth( mogoMarker, markerOnlineCar, markerLocation ); - - // 计算在线车辆距离当前车辆的距离,每次都与最后一次距离最近的进行比较,保留距离最近的车辆,进行卡片展示 - try { - // 当前车辆的位置 - MogoLocation currentLocation = MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation(); - - // 计算车辆距离指定气泡的距离 - float calculateDistance = - Utils.calculateLineDistance( new MogoLatLng( markerLocation.getLat(), - markerLocation.getLon() ), - new MogoLatLng( currentLocation.getLatitude(), - currentLocation.getLongitude() ) ); - - // 进行比较,保留最近的一个数据 - if ( calculateDistance < nearlyDistance ) { - nearlyDistance = calculateDistance; - mNearlyMarker = mogoMarker; - } - - } catch ( Exception e ) { - e.printStackTrace(); - } } - Logger.d( TAG, "距离当前车辆位置最近的距离为:" + nearlyDistance ); - - try { - // 在ACC on 之后第一次获取到了在线车辆数据,选中最近的一个Marker - if ( !mIsAISearchOnlineData ) { - return; - } - if ( mNearlyMarker == null ) { - return; - } - Logger.d( TAG, "语音搜索触发,默认选中最近的在线车辆:" + mNearlyMarker ); - // 移动地图到指定位置 - MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus( ServiceConst.TYPE, true, false ); - MarkerServiceHandler.getMapUIController().moveToCenter( mNearlyMarker.getPosition() ); - onMarkerClicked( mNearlyMarker ); - MogoMarkersHandler.getInstance().onMarkerClicked( mNearlyMarker ); - mIsAISearchOnlineData = false; - - } catch ( Exception e ) { - e.printStackTrace(); - } - } - - /** - * 根据新的在线车辆列表,选出已存在的在线车辆,并从视图和内存中移除不存在的在线车辆 - * - * @param newCarsList - * @return - */ - private Map< String, IMogoMarker > purgeCarsData( List< MarkerOnlineCar > newCarsList ) { - - final long start = System.currentTimeMillis(); - Map< String, IMogoMarker > existCarsMap = new HashMap<>(); - List< IMogoMarker > allCarsList = MarkerServiceHandler.getMarkerManager().getMarkers( ModuleNames.CARD_TYPE_USER_DATA ); - if ( allCarsList == null || allCarsList.isEmpty() ) { - return existCarsMap; - } - if ( newCarsList == null || newCarsList.isEmpty() ) { - return existCarsMap; - } - - Map< String, IMogoMarker > allCarsMap = new HashMap<>(); - for ( IMogoMarker marker : allCarsList ) { - String sn = getCarSnFromMarker( marker ); - Logger.d( TAG, "sn = [%s]", sn ); - allCarsMap.put( sn, marker ); - } - for ( MarkerOnlineCar markerOnlineCar : newCarsList ) { - String sn = markerOnlineCar.getUserInfo().getSn(); - if ( allCarsMap.containsKey( sn ) ) { - Logger.d( TAG, " car [%s] is cached.", sn ); - existCarsMap.put( sn, allCarsMap.get( sn ) ); - } - } - for ( String sn : allCarsMap.keySet() ) { - if ( !existCarsMap.containsKey( sn ) ) { - IMogoMarker dirtyMarker = allCarsMap.get( sn ); - allCarsList.remove( dirtyMarker ); - dirtyMarker.destroy(); - Logger.d( TAG, " car [%s] is destroy.", sn ); - } - } - allCarsMap.clear(); - Logger.i( "timer", "purge data cost " + ( System.currentTimeMillis() - start ) + "ms" ); - return existCarsMap; - } - - private String getCarSnFromMarker( IMogoMarker marker ) { - if ( marker == null || marker.getObject() == null || marker.isDestroyed() ) { - return null; - } - if ( !( marker.getObject() instanceof MarkerShowEntity ) ) { - return null; - } - if ( !( ( ( MarkerShowEntity ) marker.getObject() ).getBindObj() instanceof MarkerOnlineCar ) ) { - return null; - } - if ( ( ( MarkerOnlineCar ) ( ( MarkerShowEntity ) marker.getObject() ).getBindObj() ).getUserInfo() == null ) { - return null; - } - return ( ( MarkerOnlineCar ) ( ( MarkerShowEntity ) marker.getObject() ).getBindObj() ).getUserInfo().getSn(); } /** @@ -561,9 +296,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener, private void drawRoadConditionMarker( List< MarkerExploreWay > exploreWayList, int maxAmount ) { // 将数据同步给探路,避免探路每次 perform 的时候去拉取,造成消耗 if ( exploreWayList == null || exploreWayList.isEmpty() ) { + MarkerServiceHandler.getMarkerManager().removeMarkers( ModuleNames.CARD_TYPE_ROAD_CONDITION ); return; } int size = getAppropriateSize( maxAmount, exploreWayList ); + Map< String, IMogoMarker > existCarMap = purgeMarkerData( exploreWayList, ModuleNames.CARD_TYPE_ROAD_CONDITION ); + Logger.i( TAG, "existCarMap: size = %d", existCarMap.size() ); for ( int i = 0; i < size; i++ ) { MarkerExploreWay markerExploreWay = exploreWayList.get( i ); if ( !markerExploreWay.getCanLive() ) { @@ -575,21 +313,29 @@ public class MapMarkerManager implements IMogoMarkerClickListener, markerShowEntity.setMarkerType( markerExploreWay.getType() ); markerShowEntity.setTextContent( markerExploreWay.getAddr() ); - drawMapMarker( markerShowEntity ); + String sn = getCarSnFromEntity( markerExploreWay ); + IMogoMarker mogoMarker = existCarMap.get( sn ); + if ( mogoMarker == null ) { + Logger.d( TAG, "draw road condition, sn = %s", sn ); + drawMapMarker( markerShowEntity ); + } } } } + /** * 共享音乐 * * @param shareMusicList */ private void drawShareMusicMarker( List< MarkerShareMusic > shareMusicList, int maxAmount ) { - if ( shareMusicList == null ) { + if ( shareMusicList == null || shareMusicList.isEmpty() ) { + MarkerServiceHandler.getMarkerManager().removeMarkers( ModuleNames.CARD_TYPE_SHARE_MUSIC ); return; } int size = getAppropriateSize( maxAmount, shareMusicList ); + Map< String, IMogoMarker > existCarMap = purgeMarkerData( shareMusicList, ModuleNames.CARD_TYPE_SHARE_MUSIC ); for ( int i = 0; i < size; i++ ) { MarkerShareMusic markerShareMusic = shareMusicList.get( i ); MarkerLocation markerLocation = markerShareMusic.getLocation(); @@ -600,7 +346,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener, markerShowEntity.setTextContent( markerShareMusic.getMediaName() ); markerShowEntity.setIconUrl( markerShareMusic.getMediaImg() ); - drawMapMarker( markerShowEntity ); + String sn = getCarSnFromEntity( markerShareMusic ); + IMogoMarker mogoMarker = existCarMap.get( sn ); + if ( mogoMarker == null ) { + drawMapMarker( markerShowEntity ); + } } } @@ -610,10 +360,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param noveltyInfoList */ private void drawNoveltyMarker( List< MarkerNoveltyInfo > noveltyInfoList, int maxAmount ) { - if ( noveltyInfoList == null ) { + if ( noveltyInfoList == null || noveltyInfoList.isEmpty() ) { + MarkerServiceHandler.getMarkerManager().removeMarkers( ModuleNames.CARD_TYPE_NOVELTY ); return; } int size = getAppropriateSize( maxAmount, noveltyInfoList ); + Map< String, IMogoMarker > existCarMap = purgeMarkerData( noveltyInfoList, ModuleNames.CARD_TYPE_NOVELTY ); for ( int i = 0; i < size; i++ ) { MarkerNoveltyInfo noveltyInfo = noveltyInfoList.get( i ); MarkerLocation markerLocation = noveltyInfo.getLocation(); @@ -627,10 +379,83 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } else { markerShowEntity.setTextContent( noveltyInfo.getContentData().getTitle() ); } - drawMapMarker( markerShowEntity ); + String sn = getCarSnFromEntity( noveltyInfo ); + IMogoMarker mogoMarker = existCarMap.get( sn ); + if ( mogoMarker == null ) { + drawMapMarker( markerShowEntity ); + } } } + /** + * S = (A ∩ B) ∪ B + * (A ∩ B)作为旧列表需要保留的部分 + * + * @param newList + * @return + */ + private Map< String, IMogoMarker > purgeMarkerData( List newList, String markerType ) { + + final long start = System.currentTimeMillis(); + Map< String, IMogoMarker > existMap = new HashMap<>(); + List< IMogoMarker > allCarsList = MarkerServiceHandler.getMarkerManager().getMarkers( markerType ); + if ( allCarsList == null || allCarsList.isEmpty() ) { + return existMap; + } + if ( newList == null || newList.isEmpty() ) { + return existMap; + } + + Map< String, IMogoMarker > allMap = new HashMap<>(); + for ( IMogoMarker marker : allCarsList ) { + String sn = getCarSnFromMarker( marker ); + allMap.put( sn, marker ); + } + for ( Object entity : newList ) { + String sn = getCarSnFromEntity( entity ); + if ( allMap.containsKey( sn ) ) { + existMap.put( sn, allMap.get( sn ) ); + } + } + for ( String sn : allMap.keySet() ) { + if ( !existMap.containsKey( sn ) ) { + IMogoMarker dirtyMarker = allMap.get( sn ); + allCarsList.remove( dirtyMarker ); + dirtyMarker.destroy(); + } + } + allMap.clear(); + Logger.i( "timer", "purge data cost " + ( System.currentTimeMillis() - start ) + "ms" ); + return existMap; + } + + private String getCarSnFromEntity( Object entity ) { + try { + if ( entity instanceof MarkerOnlineCar ) { + return ( ( MarkerOnlineCar ) entity ).getUserInfo().getSn(); + } else if ( entity instanceof MarkerShareMusic ) { + return ( ( MarkerShareMusic ) entity ).getUserInfo().getSn(); + } else if ( entity instanceof MarkerNoveltyInfo ) { + return ( ( MarkerNoveltyInfo ) entity ).getSn(); + } else if ( entity instanceof MarkerExploreWay ) { + return ( ( MarkerExploreWay ) entity ).getInfoId(); + } + } catch ( Exception e ) { + + } + return ""; + } + + private String getCarSnFromMarker( IMogoMarker marker ) { + if ( marker == null || marker.getObject() == null || marker.isDestroyed() ) { + return null; + } + if ( !( marker.getObject() instanceof MarkerShowEntity ) ) { + return null; + } + return getCarSnFromEntity( ( ( MarkerShowEntity ) marker.getObject() ).getBindObj() ); + } + /** * @param maxAmount 展示的最大数量 * @param list @@ -654,76 +479,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener, return; } JSONArray array = new JSONArray(); - List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay(); - List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic(); - List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo(); - int size = onlineCarList == null ? 0 : onlineCarList.size(); - fillPoiTypeTrackBody( array, ModuleNames.CARD_TYPE_USER_DATA, size ); + int size = 0; size = exploreWayList == null ? 0 : exploreWayList.size(); fillPoiTypeTrackBody( array, ModuleNames.CARD_TYPE_ROAD_CONDITION, size ); - size = noveltyInfoList == null ? 0 : noveltyInfoList.size(); - JSONObject novelty = fillPoiTypeTrackBody( array, ModuleNames.CARD_TYPE_NOVELTY, size ); - if ( noveltyInfoList != null ) { - Map< String, Integer > counter = new HashMap<>(); - for ( MarkerNoveltyInfo markerNoveltyInfo : noveltyInfoList ) { - if ( markerNoveltyInfo == null ) { - continue; - } - String childType = markerNoveltyInfo.getPoiType(); - if ( !counter.containsKey( childType ) ) { - counter.put( childType, 0 ); - } - int s = counter.get( childType ).intValue(); - counter.put( childType, s + 1 ); - } - if ( !counter.isEmpty() ) { - JSONArray onlineCarJsonArray = new JSONArray(); - for ( Map.Entry< String, Integer > entry : counter.entrySet() ) { - fillPoiChildTypeTrackBody( onlineCarJsonArray, entry.getKey(), entry.getValue() ); - } - if ( onlineCarJsonArray.length() > 0 ) { - try { - novelty.put( "content", onlineCarJsonArray ); - } catch ( JSONException e ) { - e.printStackTrace(); - } - } - } - } - - size = shareMusicList == null ? 0 : shareMusicList.size(); - JSONObject shareMusic = fillPoiTypeTrackBody( array, ModuleNames.CARD_TYPE_SHARE_MUSIC, size ); - if ( shareMusicList != null ) { - Map< String, Integer > counter = new HashMap<>(); - for ( MarkerShareMusic markerShareMusic : shareMusicList ) { - if ( markerShareMusic == null ) { - continue; - } - String childType = markerShareMusic.getShareType() + ""; - if ( !counter.containsKey( childType ) ) { - counter.put( childType, 0 ); - } - int s = counter.get( childType ).intValue(); - counter.put( childType, s + 1 ); - } - if ( !counter.isEmpty() ) { - JSONArray shareMusicJsonArray = new JSONArray(); - for ( Map.Entry< String, Integer > entry : counter.entrySet() ) { - fillPoiChildTypeTrackBody( shareMusicJsonArray, entry.getKey(), entry.getValue() ); - } - if ( shareMusicJsonArray.length() > 0 ) { - try { - shareMusic.put( "content", shareMusicJsonArray ); - } catch ( JSONException e ) { - e.printStackTrace(); - } - } - } - } - try { if ( array.length() == 0 ) { return; @@ -745,12 +506,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, if ( mLastDataResult == null ) { return; } -// List onlineCarList = mLastDataResult.getOnlineCar(); List< MarkerExploreWay > exploreWayList = mLastDataResult.getExploreWay(); - List< MarkerNoveltyInfo > noveltyInfoList = mLastDataResult.getNoveltyInfo(); -// dispatchDataToBis(ServiceConst.CARD_TYPE_USER_DATA, onlineCarList == null ?new ArrayList<>() : onlineCarList); dispatchDataToBis( ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList == null ? new ArrayList<>() : exploreWayList ); - dispatchDataToBis( ServiceConst.CARD_TYPE_NOVELTY, noveltyInfoList == null ? new ArrayList<>() : noveltyInfoList ); } /** @@ -810,18 +567,14 @@ public class MapMarkerManager implements IMogoMarkerClickListener, */ public synchronized IMogoMarker drawMapMarker( MarkerShowEntity markerShowEntity ) { try { - return drawMapMarker( markerShowEntity, isSmallType() ); + return drawMapMarkerImpl( markerShowEntity ); } catch ( Exception e ) { e.printStackTrace(); return null; } } - private boolean isSmallType() { - return !TextUtils.isEmpty( mCurrentModuleName ) && mLastCheckMarker != null && !mLastCheckMarker.isDestroyed() && TextUtils.equals( mCurrentModuleName, mLastCheckMarker.getOwner() ); - } - - private IMogoMarker drawMapMarker( MarkerShowEntity markerShowEntity, boolean isSmall ) { + private IMogoMarker drawMapMarkerImpl( MarkerShowEntity markerShowEntity ) { if ( markerShowEntity == null || markerShowEntity.getMarkerLocation() == null ) { return null; } @@ -842,12 +595,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, marker.setOwner( markerShowEntity.getMarkerType() ); markerView.setMarker( marker ); marker.setOnMarkerClickListener( this ); - - if ( isSmall ) { - List< IMogoMarker > markers = new ArrayList<>(); - markers.add( marker ); - setMarkersSmall( markers ); - } markerShowEntity.setMarker( marker ); return marker; } @@ -905,9 +652,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } List< MarkerOnlineCar > onlineCarList = result.getOnlineCar(); - if ( !MarkerServiceHandler.getMogoStatusManager().isADASShow() ) { - dispatchDataToBis( ServiceConst.CARD_TYPE_USER_DATA, onlineCarList == null ? new ArrayList<>() : onlineCarList ); - } if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) { return; } @@ -932,15 +676,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) { return true; } - if ( MarkerServiceHandler.getMogoStatusManager().isADASShow() ) { - return false; - } - if ( TextUtils.equals( ServiceConst.CARD_TYPE_USER_DATA, mCurrentModuleName ) - || TextUtils.equals( ServiceConst.CARD_TYPE_BUSINESS_OPERATION, mCurrentModuleName ) - || TextUtils.equals( ServiceConst.CARD_TYPE_CARS_CHATTING, mCurrentModuleName ) ) { - return false; - } - return true; + return false; } private void removeCarMarkers() { @@ -1015,7 +751,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } public String getCurrentModuleName() { - return mCurrentModuleName; + return ""; } @Override diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java index 7679c23839..6479b123ab 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java @@ -9,6 +9,7 @@ import android.widget.ImageView; import androidx.annotation.Nullable; import com.mogo.map.marker.MogoMarkerOptions; +import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.MarkerNoveltyInfo; import com.mogo.module.common.entity.MarkerOnlineCar; import com.mogo.module.common.entity.MarkerPoiTypeEnum; @@ -31,156 +32,137 @@ public class MapMarkerView extends MapMarkerBaseView { private ImageView ivBg; - public MapMarkerView(Context context) { - super(context); + public MapMarkerView( Context context ) { + super( context ); } - public MapMarkerView(Context context, @Nullable AttributeSet attrs) { - super(context, attrs); + public MapMarkerView( Context context, @Nullable AttributeSet attrs ) { + super( context, attrs ); } - public MapMarkerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); + public MapMarkerView( Context context, @Nullable AttributeSet attrs, int defStyleAttr ) { + super( context, attrs, defStyleAttr ); } - public MapMarkerView(Context context, MarkerShowEntity markerShowEntity, MogoMarkerOptions options) { - super(context); + public MapMarkerView( Context context, MarkerShowEntity markerShowEntity, MogoMarkerOptions options ) { + super( context ); mOptions = options; - updateView(markerShowEntity); + updateView( markerShowEntity ); } - protected void initView(Context context) { - LayoutInflater.from(context).inflate(R.layout.view_map_marker, this); - ivUserHead = findViewById(R.id.ivUserHead); - ivIcon = findViewById(R.id.ivIcon); - ivCar = findViewById(R.id.ivCar); - ivBg = findViewById(R.id.ivBg); - clMarkerTopView = findViewById(R.id.clMarkerTopView); + protected void initView( Context context ) { + LayoutInflater.from( context ).inflate( R.layout.view_map_marker, this ); + ivUserHead = findViewById( R.id.ivUserHead ); + ivIcon = findViewById( R.id.ivIcon ); + ivCar = findViewById( R.id.ivCar ); + ivBg = findViewById( R.id.ivBg ); + clMarkerTopView = findViewById( R.id.clMarkerTopView ); } - public void updateView(MarkerShowEntity markerShowEntity) { + public void updateView( MarkerShowEntity markerShowEntity ) { try { Object bindObj = markerShowEntity.getBindObj(); - switch (markerShowEntity.getMarkerType()) { + ivBg.setImageResource( R.drawable.bg_map_marker_dark ); + switch ( markerShowEntity.getMarkerType() ) { case ServiceConst.CARD_TYPE_CARS_CHATTING: case ServiceConst.CARD_TYPE_USER_DATA: - ivUserHead.setVisibility(View.VISIBLE); - ivIcon.setVisibility(View.INVISIBLE); - loadImageWithMarker(markerShowEntity); - ivCar.setImageResource(R.drawable.icon_map_marker_car_gray); - ivCar.setRotation((float) markerShowEntity.getMarkerLocation().getAngle()); + ivUserHead.setVisibility( View.VISIBLE ); + ivIcon.setVisibility( View.INVISIBLE ); + loadImageWithMarker( markerShowEntity ); + ivCar.setImageResource( R.drawable.icon_map_marker_car_gray ); + ivCar.setRotation( ( float ) markerShowEntity.getMarkerLocation().getAngle() ); // ivCar.setRotation(new Random().nextInt(360)); - clMarkerTopView.setVisibility(View.GONE); - if (bindObj instanceof MarkerOnlineCar) { - if (((MarkerOnlineCar) bindObj).getUserInfo().getGenderValue() == 0) { - ivBg.setImageResource(R.drawable.bg_map_marker_blue); + clMarkerTopView.setVisibility( View.GONE ); + if ( bindObj instanceof MarkerOnlineCar ) { + if ( ( ( MarkerOnlineCar ) bindObj ).getUserInfo().getGenderValue() == 0 ) { } else { - ivBg.setImageResource(R.drawable.bg_map_marker_purple); } } break; case ServiceConst.CARD_TYPE_ROAD_CONDITION: - ivUserHead.setVisibility(View.INVISIBLE); - ivIcon.setVisibility(View.VISIBLE); - - ivIcon.setImageResource(R.drawable.icon_map_marker_road_block_up); - ivBg.setImageResource(R.drawable.bg_map_marker_blue); - ivCar.setImageResource(R.drawable.icon_map_marker_location_blue); - break; case ServiceConst.CARD_TYPE_NOVELTY: - ivUserHead.setVisibility(View.INVISIBLE); - ivIcon.setVisibility(View.VISIBLE); + ivUserHead.setVisibility( View.INVISIBLE ); + ivIcon.setVisibility( View.VISIBLE ); - ivCar.setImageResource(R.drawable.icon_map_marker_location_blue); + ivCar.setImageResource( R.drawable.icon_map_marker_location_yellow ); - if (bindObj instanceof MarkerNoveltyInfo) { - switch (((MarkerNoveltyInfo) bindObj).getPoiType()) { + if ( bindObj instanceof MarkerExploreWay ) { + switch ( ( ( MarkerExploreWay ) bindObj ).getPoiType() ) { case MarkerPoiTypeEnum.GAS_STATION: - ivIcon.setImageResource(R.drawable.icon_map_marker_refuel); - ivBg.setImageResource(R.drawable.bg_map_marker_oragne); + ivIcon.setImageResource( R.drawable.icon_map_marker_refuel ); break; case MarkerPoiTypeEnum.TRAFFIC_CHECK: - ivIcon.setImageResource(R.drawable.icon_map_marker_road_check); - ivBg.setImageResource(R.drawable.bg_map_marker_green); + ivIcon.setImageResource( R.drawable.icon_map_marker_road_check2 ); break; case MarkerPoiTypeEnum.ROAD_CLOSED: - ivIcon.setImageResource(R.drawable.icon_map_marker_road_block_off); - ivBg.setImageResource(R.drawable.bg_map_marker_blue_dark); + ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_off2 ); break; case MarkerPoiTypeEnum.SHOP_DISCOUNT: - ivIcon.setImageResource(R.drawable.icon_map_marker_shop_discount); - ivBg.setImageResource(R.drawable.bg_map_marker_red); + ivIcon.setImageResource( R.drawable.icon_map_marker_shop_discount ); break; case MarkerPoiTypeEnum.FOURS_4S: - ivIcon.setImageResource(R.drawable.icon_map_marker_4s); - ivBg.setImageResource(R.drawable.bg_map_marker_blue); + ivIcon.setImageResource( R.drawable.icon_map_marker_4s ); break; case MarkerPoiTypeEnum.FOURS_ROAD_WORK: - ivIcon.setImageResource(R.drawable.icon_map_marker_road_work); - ivBg.setImageResource(R.drawable.bg_map_marker_blue_dark); + ivIcon.setImageResource( R.drawable.icon_map_marker_road_work2 ); break; case MarkerPoiTypeEnum.FOURS_BLOCK_UP: - ivIcon.setImageResource(R.drawable.icon_map_marker_road_block_up); - ivBg.setImageResource(R.drawable.bg_map_marker_blue); + ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2 ); break; case MarkerPoiTypeEnum.FOURS_PONDING: - ivIcon.setImageResource(R.drawable.icon_map_marker_pondingl); - ivBg.setImageResource(R.drawable.bg_map_marker_blue); + ivIcon.setImageResource( R.drawable.icon_map_marker_pondingl2 ); break; case MarkerPoiTypeEnum.FOURS_SHOP_FREE: - ivIcon.setImageResource(R.drawable.icon_map_marker_shop); - ivBg.setImageResource(R.drawable.bg_map_marker_green_dark); + ivIcon.setImageResource( R.drawable.icon_map_marker_shop ); break; case MarkerPoiTypeEnum.FOURS_FOG: - ivBg.setImageResource(R.drawable.module_service_ic_rc_dark_frog); + ivIcon.setImageResource( R.drawable.module_service_ic_rc_dark_frog2 ); break; case MarkerPoiTypeEnum.FOURS_ICE: - ivBg.setImageResource(R.drawable.module_service_ic_rc_freeze); - break; - case MarkerPoiTypeEnum.FOURS_PARKING: - ivBg.setImageResource(R.drawable.module_service_ic_rc_parking); + ivIcon.setImageResource( R.drawable.module_service_ic_rc_freeze2 ); break; case MarkerPoiTypeEnum.FOURS_ACCIDENT: - ivBg.setImageResource(R.drawable.module_service_ic_rc_accident); + ivIcon.setImageResource( R.drawable.module_service_ic_rc_accident3 ); break; case MarkerPoiTypeEnum.FOURS_NEALY: - ivIcon.setImageResource(R.drawable.icon_map_marker_shear_news); - ivBg.setImageResource(R.drawable.bg_map_marker_blue); + ivIcon.setImageResource( R.drawable.icon_map_marker_shear_news ); break; + case MarkerPoiTypeEnum.FOURS_LIVING: + ivIcon.setImageResource( R.drawable.icon_map_marker_living ); + break; + case MarkerPoiTypeEnum.FOURS_PARKING: default: - ivIcon.setImageResource(R.drawable.icon_map_marker_shear_news); - ivBg.setImageResource(R.drawable.bg_map_marker_blue_dark); + ivIcon.setImageResource( R.drawable.icon_map_marker_shear_news ); break; } } break; case ServiceConst.CARD_TYPE_SHARE_MUSIC: - ivUserHead.setVisibility(View.INVISIBLE); - ivIcon.setVisibility(View.VISIBLE); - ivBg.setImageResource(R.drawable.bg_map_marker_purple); - ivCar.setImageResource(R.drawable.icon_map_marker_location_blue); + ivUserHead.setVisibility( View.INVISIBLE ); + ivIcon.setVisibility( View.VISIBLE ); + ivCar.setImageResource( R.drawable.icon_map_marker_location_yellow ); - if (bindObj instanceof MarkerShareMusic) { + if ( bindObj instanceof MarkerShareMusic ) { // 2 为书籍听书,3 为新闻,1 为qq音乐,int - switch (((MarkerShareMusic) bindObj).getShareType()) { + switch ( ( ( MarkerShareMusic ) bindObj ).getShareType() ) { case 1: - ivIcon.setImageResource(R.drawable.icon_map_marker_misic); + ivIcon.setImageResource( R.drawable.icon_map_marker_misic ); break; case 2: - ivIcon.setImageResource(R.drawable.icon_map_marker_book); + ivIcon.setImageResource( R.drawable.icon_map_marker_book ); break; case 3: - ivIcon.setImageResource(R.drawable.icon_map_marker_news); + ivIcon.setImageResource( R.drawable.icon_map_marker_news ); break; default: - ivIcon.setImageResource(R.drawable.icon_map_marker_misic); + ivIcon.setImageResource( R.drawable.icon_map_marker_misic ); break; } } break; } - } catch (Exception e) { + } catch ( Exception e ) { e.printStackTrace(); } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java index 31768b6763..39965debba 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java @@ -9,6 +9,7 @@ import android.widget.ImageView; import android.widget.TextView; import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.network.SubscribeImpl; import com.mogo.map.marker.IMogoInfoWindowAdapter; import com.mogo.map.marker.IMogoMarker; @@ -110,6 +111,10 @@ public class UserDataMarkerInfoWindowAdapter implements IMogoInfoWindowAdapter { } mCall.setOnClickListener( view -> { if ( markerShowEntity.getBindObj() instanceof MarkerOnlineCar ) { + if ( DebugConfig.getNetMode() != DebugConfig.NET_MODE_DEMO ) { + callToFactUser( markerShowEntity ); + return; + } sRefreshApiService.getMockUsers().subscribeOn( Schedulers.io() ) .observeOn( AndroidSchedulers.mainThread() ) .subscribe( new SubscribeImpl< DemoUserInfoEntity >( RequestOptions.create( mContext ) ) { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshBody.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshBody.java index 769aa2c6a1..d1a5384490 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshBody.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshBody.java @@ -19,6 +19,7 @@ public class RefreshBody { public String sn; public boolean onlyFocus; // 是否仅查询已关注的好友 public boolean onlySameCity; // 是否仅查询注册城市相同的同城用户 + public boolean viewPush; // 是否走V2X通道 ,true-401011,false -401001 public static class LatLon { 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/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_living.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_living.png new file mode 100755 index 0000000000..f66b3e8176 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_living.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_living_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_living_light.png new file mode 100755 index 0000000000..b52aab6bad Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_living_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_location_yellow.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_location_yellow.png new file mode 100755 index 0000000000..f8da53f346 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_location_yellow.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_pondingl2.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_pondingl2.png new file mode 100755 index 0000000000..61bb224ffc Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_pondingl2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_pondingl2_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_pondingl2_light.png new file mode 100755 index 0000000000..85de6dcee6 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_pondingl2_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_off2.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_off2.png new file mode 100755 index 0000000000..a29d82adb4 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_off2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_off2_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_off2_light.png new file mode 100755 index 0000000000..3241e2adf4 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_off2_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_up2.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_up2.png new file mode 100755 index 0000000000..a51384a08e Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_up2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_up2_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_up2_light.png new file mode 100755 index 0000000000..33fbef70c4 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_up2_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_check2.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_check2.png new file mode 100755 index 0000000000..45fac29f3f Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_check2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_check2_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_check2_light.png new file mode 100755 index 0000000000..4b7288d976 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_check2_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_work2.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_work2.png new file mode 100755 index 0000000000..4e721b457e Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_work2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_work2_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_work2_light.png new file mode 100755 index 0000000000..5e63a96978 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_work2_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident3.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident3.png new file mode 100755 index 0000000000..3ceef9aa09 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident3.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident3_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident3_light.png new file mode 100755 index 0000000000..cea530e6d2 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident3_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog2.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog2.png old mode 100644 new mode 100755 index ad2cfca0c4..1222b2b6c7 Binary files a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog2.png and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog2_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog2_light.png new file mode 100755 index 0000000000..45b9e35622 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog2_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze2.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze2.png old mode 100644 new mode 100755 index e9befa363b..c363e5feda Binary files a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze2.png and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze2_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze2_light.png new file mode 100755 index 0000000000..70419c886f Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze2_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/bg_map_marker_dark.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/bg_map_marker_dark.png new file mode 100755 index 0000000000..c1ef274cbe Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/bg_map_marker_dark.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_living.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_living.png new file mode 100755 index 0000000000..3780ecf9b9 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_living.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_living_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_living_light.png new file mode 100755 index 0000000000..ae94e4bc3d Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_living_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_location_yellow.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_location_yellow.png new file mode 100644 index 0000000000..f05356795e Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_location_yellow.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_pondingl2.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_pondingl2.png new file mode 100755 index 0000000000..478232ac79 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_pondingl2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_pondingl2_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_pondingl2_light.png new file mode 100755 index 0000000000..700226f150 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_pondingl2_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_off2.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_off2.png new file mode 100755 index 0000000000..2fb4ef553e Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_off2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_off2_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_off2_light.png new file mode 100755 index 0000000000..9b424494ee Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_off2_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_up2.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_up2.png new file mode 100755 index 0000000000..e62fd5ec03 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_up2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_up2_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_up2_light.png new file mode 100755 index 0000000000..0ac89f4dec Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_up2_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_check2.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_check2.png new file mode 100755 index 0000000000..001974ba87 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_check2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_check2_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_check2_light.png new file mode 100755 index 0000000000..5baea2a41b Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_check2_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_work2.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_work2.png new file mode 100755 index 0000000000..c11e911f15 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_work2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_work2_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_work2_light.png new file mode 100755 index 0000000000..7875086c3e Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_work2_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident3.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident3.png new file mode 100755 index 0000000000..fe68bc7cba Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident3.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident3_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident3_light.png new file mode 100755 index 0000000000..911bee2df4 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident3_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog2.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog2.png old mode 100644 new mode 100755 index 107ac5bce6..787101fbb1 Binary files a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog2.png and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog2_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog2_light.png new file mode 100755 index 0000000000..b6164bcfdd Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog2_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze2.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze2.png old mode 100644 new mode 100755 index c7f02cd852..d34779845e Binary files a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze2.png and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze2_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze2_light.png new file mode 100755 index 0000000000..353cfefec6 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze2_light.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable/bg_map_marker_yellow_info.xml b/modules/mogo-module-service/src/main/res/drawable/bg_map_marker_yellow_info.xml new file mode 100644 index 0000000000..b2be8e312e --- /dev/null +++ b/modules/mogo-module-service/src/main/res/drawable/bg_map_marker_yellow_info.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-service/src/main/res/drawable/bg_shape_reverse_yellow.xml b/modules/mogo-module-service/src/main/res/drawable/bg_shape_reverse_yellow.xml new file mode 100644 index 0000000000..6bc80c96dc --- /dev/null +++ b/modules/mogo-module-service/src/main/res/drawable/bg_shape_reverse_yellow.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + diff --git a/modules/mogo-module-share/build.gradle b/modules/mogo-module-share/build.gradle index 41c1cbc2ec..e355181036 100644 --- a/modules/mogo-module-share/build.gradle +++ b/modules/mogo-module-share/build.gradle @@ -34,6 +34,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation rootProject.ext.dependencies.kotlinstdlibjdk7 implementation rootProject.ext.dependencies.androidxappcompat + implementation rootProject.ext.dependencies.androidxrecyclerview implementation rootProject.ext.dependencies.androidxccorektx implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.arouter diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareVoiceCmdReceiver.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareVoiceCmdReceiver.kt index 5a0d662a84..6c4593b685 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareVoiceCmdReceiver.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareVoiceCmdReceiver.kt @@ -4,22 +4,57 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import com.mogo.module.share.constant.ShareConstants -import com.mogo.module.share.constant.ShareConstants.VOICE_CMD_PUB_TROUBLE_HELP +import com.mogo.module.share.constant.ShareConstants.* +import com.mogo.module.share.manager.UploadHelper import com.mogo.utils.logger.Logger +import org.json.JSONObject /** * 用于接收唤醒词指令,现在只接收 com.zhidao.speech.awake.notify 这一条广播 */ class ShareVoiceCmdReceiver : BroadcastReceiver() { + private val TAG = "ShareVoiceCmdReceiver" override fun onReceive(context: Context, intent: Intent) { // 接收唤醒词指令 - val command = intent.getStringExtra("command") - Logger.d("ShareCmdReceiver", "收到唤醒词指令: $command") - if (command == VOICE_CMD_PUB_TROUBLE_HELP) { - // 开启服务,准备上报求助 - val seekHelp = Intent(context, VoiceCmdService::class.java) - seekHelp.putExtra(ShareConstants.VOICE_CMD_SERVICE_EVENT_KEY, ShareConstants.VOICE_CMD_SERVICE_SEEK_HELP) - context.startService(seekHelp) + val command = intent.getStringExtra("command")?:"" + Logger.d(TAG, "收到唤醒词指令: $command") + when (command) { + VOICE_CMD_PUB_TROUBLE_HELP -> { + // 开启服务,准备上报求助 + val seekHelp = Intent(context, VoiceCmdService::class.java) + seekHelp.putExtra(ShareConstants.VOICE_CMD_SERVICE_EVENT_KEY, ShareConstants.VOICE_CMD_SERVICE_SEEK_HELP) + context.startService(seekHelp) + } + VOICE_CMD_GO_TO_SHARE ->{ + val ob = JSONObject(intent.getStringExtra("data") ?: "").opt("ob") + Logger.d(TAG, "ob: $ob") + when (ob) { + "积水"->{ + UploadHelper.upload(context, TYPE_STAGNANT_WATER) + } + "积冰"->{ + UploadHelper.upload(context, TYPE_ROAD_ICY) + } + "雾"->{ + UploadHelper.upload(context, TYPE_DENSE_FOG) + } + "交通事故"->{ + UploadHelper.upload(context, TYPE_ACCIDENT) + } + "施工"->{ + UploadHelper.upload(context, TYPE_ROAD_CONSTRUCTION) + } + } + } + VOICE_CMD_PUB_ROAD_CONDITION->{ + val ob = JSONObject(intent.getStringExtra("data") ?: "").opt("obj") + Logger.d(TAG, "ob: $ob") + if(ob == "路况") { + // 上报实时路况 + Logger.d(TAG, "分享框准备触发上报实时路况") + UploadHelper.upload(context, TYPE_REAL_TIME_TRAFFIC) + } + } } } } \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java index a0134b5feb..30d347f4a6 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java @@ -19,5 +19,22 @@ public class ShareConstants { public static final String VOICE_CMD_SERVICE_EVENT_KEY = "type"; public static final int VOICE_CMD_SERVICE_SEEK_HELP = 1; + // 此处只记录了事故、实时路况、道路积水、道路结冰、浓雾,至于拥堵、交通检查和封路是在extention模块里面管理 public static final String VOICE_CMD_PUB_TROUBLE_HELP = "com.zhidao.auxiliaryDriving.pubTroubleHelp"; + public static final String VOICE_CMD_GO_TO_SHARE = "com.zhidao.share"; + /** + * 这个是实时路况,不是拥堵,拥堵放在了extention模块里面处理 + */ + public static final String VOICE_CMD_PUB_ROAD_CONDITION = "com.zhidao.pathfinder.report.roadCondition"; + + public static final String TYPE_BLOCK = "10007"; + public static final String TYPE_TRAFFIC_CHECK = "10002"; + public static final String TYPE_CLOSURE = "10003"; + public static final String TYPE_ACCIDENT = "10013"; + public static final String TYPE_REAL_TIME_TRAFFIC = "10015"; + public static final String TYPE_SEEK_HELP = "6"; + public static final String TYPE_STAGNANT_WATER = "10008"; + public static final String TYPE_ROAD_ICY = "10011"; + public static final String TYPE_DENSE_FOG = "10010"; + public static final String TYPE_ROAD_CONSTRUCTION = "10006"; } diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java index 6337780fac..d876d6c3e2 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java @@ -20,6 +20,7 @@ import com.mogo.module.share.ShareControl; import com.mogo.module.share.constant.ShareConstants; import com.mogo.module.share.manager.ISeekHelpListener; import com.mogo.module.share.manager.SeekHelpManager; +import com.mogo.module.share.manager.UploadHelper; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.service.analytics.IMogoAnalytics; @@ -47,12 +48,19 @@ public class LaucherShareDialog implements View.OnClickListener { private TextView tvTrafficCheck; private TextView tvClosure; private TextView tvNeedHelp; + + private TextView tvAccident; + private TextView tvRealTimeTraffic; + private TextView tvStagnantWater; + private TextView tvRoadIcy; + private TextView tvDenseFog; + private TextView tvConstruction; + private Context mContext; private IMogoAnalytics mAnalytics; private IMogoStatusManager mStatusManager; private IMogoServiceApis mApis; - private WindowManager windowManager; public LaucherShareDialog(@NonNull Context context) { @@ -72,19 +80,34 @@ public class LaucherShareDialog implements View.OnClickListener { dismiss(); } }); + + tvBlock = body.findViewById(R.id.tvBlock); tvTrafficCheck = body.findViewById(R.id.tvTrafficCheck); tvClosure = body.findViewById(R.id.tvClosure); - tvNeedHelp = body.findViewById(R.id.tvNeedHelp); + tvNeedHelp = body.findViewById(R.id.tvSeekHelp); + + tvAccident = body.findViewById(R.id.tvAccident); + tvRealTimeTraffic = body.findViewById(R.id.tvRealTimeTraffic); + tvStagnantWater = body.findViewById(R.id.tvStagnantWater); + tvRoadIcy = body.findViewById(R.id.tvRoadIcy); + tvDenseFog = body.findViewById(R.id.tvDenseFog); + tvConstruction = body.findViewById(R.id.tvConstruction); } private void initListener() { - tvBlock.setOnClickListener(this); tvNeedHelp.setOnClickListener(this); tvTrafficCheck.setOnClickListener(this); tvClosure.setOnClickListener(this); + + tvAccident.setOnClickListener(this); + tvRealTimeTraffic.setOnClickListener(this); + tvStagnantWater.setOnClickListener(this); + tvRoadIcy.setOnClickListener(this); + tvDenseFog.setOnClickListener(this); + tvConstruction.setOnClickListener(this); } @Override @@ -94,7 +117,7 @@ public class LaucherShareDialog implements View.OnClickListener { if (id == R.id.tvBlock) { //拥堵 traceTanluData("1"); - sendShareReceiver("1"); + sendShareReceiver(ShareConstants.TYPE_BLOCK); traceTypeData("1"); dismiss(); } else if (id == R.id.oil_price_layout) { @@ -108,18 +131,43 @@ public class LaucherShareDialog implements View.OnClickListener { } else if (id == R.id.tvTrafficCheck) { //交通检查 traceData("1"); - sendShareReceiver("2"); + sendShareReceiver(ShareConstants.TYPE_TRAFFIC_CHECK); traceTypeData("3"); dismiss(); } else if (id == R.id.tvClosure) { //封路 traceData("1"); - sendShareReceiver("3"); + sendShareReceiver(ShareConstants.TYPE_CLOSURE); traceTypeData("4"); dismiss(); - } else if (id == R.id.tvNeedHelp) { + } else if (id == R.id.tvSeekHelp) { // 故障求助 SeekHelpManager.INSTANCE.seekHelp(mContext,seekListener,true); + dismiss(); + } else if (id == R.id.tvAccident) { + // 事故 + sendShareReceiver(ShareConstants.TYPE_ACCIDENT); + dismiss(); + } else if (id == R.id.tvConstruction) { + // 道路施工 + sendShareReceiver(ShareConstants.TYPE_ROAD_CONSTRUCTION); + dismiss(); + } else if (id == R.id.tvRealTimeTraffic) { + // 实时路况 + sendShareReceiver(ShareConstants.TYPE_REAL_TIME_TRAFFIC); + dismiss(); + } else if (id == R.id.tvStagnantWater) { + // 道路积水 + sendShareReceiver(ShareConstants.TYPE_STAGNANT_WATER); + dismiss(); + } else if (id == R.id.tvRoadIcy) { + // 道路结冰 + sendShareReceiver(ShareConstants.TYPE_ROAD_ICY); + dismiss(); + } else if (id == R.id.tvDenseFog) { + // 浓雾 + sendShareReceiver(ShareConstants.TYPE_DENSE_FOG); + dismiss(); } } @@ -144,15 +192,7 @@ public class LaucherShareDialog implements View.OnClickListener { * 发送广播 1拥堵,2交通检查,3封路 */ private void sendShareReceiver(String type) { - mStatusManager.setUploadingStatus("CARD_TYPE_ROAD_CONDITION", true); - - Logger.d("LaucherShareDialog", "LaucherShareDialog sendShareReceiver ---->"); - Intent intent = new Intent(); - intent.setAction("com.zhidao.roadcondition.share"); - intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); - intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); - intent.putExtra("type", type); - mContext.sendBroadcast(intent); + UploadHelper.INSTANCE.upload(mContext, type); } /** diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/UploadHelper.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/UploadHelper.kt new file mode 100644 index 0000000000..906c291da8 --- /dev/null +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/UploadHelper.kt @@ -0,0 +1,23 @@ +package com.mogo.module.share.manager + +import android.content.Context +import android.content.Intent +import com.mogo.module.share.ShareControl +import com.mogo.module.share.dialog.LaucherShareDialog +import com.mogo.utils.logger.Logger + +/** + * 上报工具类 + */ +object UploadHelper { + fun upload(context:Context, type: String) { + ShareControl.getInstance(context).mogoServiceApis.statusManagerApi.setUploadingStatus("CARD_TYPE_ROAD_CONDITION", true) + Logger.d("UploadHelper", "upload ----> $type") + val intent = Intent() + intent.action = "com.zhidao.roadcondition.share" + intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND) + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES) + intent.putExtra("type", type) + context.sendBroadcast(intent) + } +} \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_accident.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_accident.png new file mode 100644 index 0000000000..9dd6d425c9 Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_accident.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_block_up.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_block_up.png index d2f7197cce..b504cffe87 100644 Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_block_up.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_block_up.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_dense_fog.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_dense_fog.png new file mode 100644 index 0000000000..6a16103d0e Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_dense_fog.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_real_time_traffic.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_real_time_traffic.png new file mode 100644 index 0000000000..7defe6986d Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_real_time_traffic.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_closure.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_closure.png index f6e8d2b499..d20dacee3a 100644 Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_closure.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_closure.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_construction.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_construction.png new file mode 100644 index 0000000000..3c2ba1225c Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_construction.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_icy.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_icy.png new file mode 100644 index 0000000000..53585d40d1 Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_icy.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_seek_help.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_seek_help.png index c87f75fd0d..30f26921aa 100644 Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_seek_help.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_seek_help.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_stagnant_water.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_stagnant_water.png new file mode 100644 index 0000000000..f125b9f22e Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_stagnant_water.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_traffic_check.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_traffic_check.png index 737a4c75a8..1b5af5fe54 100644 Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_traffic_check.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_traffic_check.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_accident.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_accident.png new file mode 100644 index 0000000000..cfcb9eb87f Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_accident.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_block_up.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_block_up.png index 0d33d14d6c..0a54b48bad 100644 Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_block_up.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_block_up.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_dense_fog.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_dense_fog.png new file mode 100644 index 0000000000..160cdee6a6 Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_dense_fog.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_real_time_traffic.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_real_time_traffic.png new file mode 100644 index 0000000000..d9434fe5f1 Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_real_time_traffic.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_closure.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_closure.png index 0356075b5d..a050e2b61c 100644 Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_closure.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_closure.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_construction.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_construction.png new file mode 100644 index 0000000000..4b82b87aa7 Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_construction.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_icy.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_icy.png new file mode 100644 index 0000000000..9edf8ac119 Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_icy.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_seek_help.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_seek_help.png index 018f787003..6ac62048b6 100644 Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_seek_help.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_seek_help.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_stagnant_water.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_stagnant_water.png new file mode 100644 index 0000000000..de26656f73 Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_stagnant_water.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_traffic_check.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_traffic_check.png index d9139b14e3..a4660d5e0b 100644 Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_traffic_check.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_traffic_check.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable/shape_bg_222533_20px.xml b/modules/mogo-module-share/src/main/res/drawable/shape_bg_222533_20px.xml index 0fa61ad26e..1b1f5226d5 100644 --- a/modules/mogo-module-share/src/main/res/drawable/shape_bg_222533_20px.xml +++ b/modules/mogo-module-share/src/main/res/drawable/shape_bg_222533_20px.xml @@ -1,5 +1,8 @@ - - + + \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/res/layout/item_share_btn.xml b/modules/mogo-module-share/src/main/res/layout/item_share_btn.xml new file mode 100644 index 0000000000..c732a3e2e5 --- /dev/null +++ b/modules/mogo-module-share/src/main/res/layout/item_share_btn.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_2.xml b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_2.xml index 7c4e60d6bc..d88e11d825 100644 --- a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_2.xml +++ b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_2.xml @@ -36,77 +36,133 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableTop="@drawable/share_block_up" - android:drawablePadding="@dimen/share_module_tv_margin_top" - android:gravity="center" - android:text="上报拥堵" + android:text="拥堵" + android:textSize="@dimen/dp_32" + android:textColor="#fff" app:layout_constraintHorizontal_chainStyle="spread_inside" - android:layout_marginStart="@dimen/dp_76" - android:textColor="@color/white" - android:textSize="@dimen/share_module_item" - android:textStyle="bold" - android:layout_marginTop="@dimen/dp_64" - app:layout_constraintLeft_toLeftOf="@+id/vBg" + android:gravity="center" + app:layout_constraintTop_toBottomOf="@+id/btn_share_title" app:layout_constraintRight_toLeftOf="@+id/tvTrafficCheck" - app:layout_constraintTop_toBottomOf="@+id/btn_share_title" /> - + app:layout_constraintLeft_toLeftOf="@+id/vBg" + android:layout_marginStart="@dimen/dp_116" + android:layout_marginTop="@dimen/dp_78" + android:drawablePadding="@dimen/dp_30" /> - + android:drawablePadding="@dimen/dp_30" /> - + app:layout_constraintRight_toLeftOf="@+id/tvAccident" + android:textColor="#fff" + android:gravity="center" + android:drawablePadding="@dimen/dp_30" /> + + + - - + app:layout_constraintTop_toBottomOf="@+id/tvTrafficCheck" + app:layout_constraintLeft_toLeftOf="@+id/tvTrafficCheck" + android:layout_marginTop="@dimen/dp_62" + android:drawablePadding="@dimen/dp_30" /> + android:drawableTop="@drawable/share_stagnant_water" + android:text="道路积水" + android:textSize="@dimen/dp_32" + android:textColor="#fff" + android:gravity="center" + app:layout_constraintTop_toBottomOf="@+id/tvClosure" + app:layout_constraintLeft_toLeftOf="@+id/tvClosure" + android:layout_marginTop="@dimen/dp_62" + android:drawablePadding="@dimen/dp_30" /> + + \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-share/src/main/res/values-ldpi/dimens.xml index d28bf549bd..e74470a9b8 100644 --- a/modules/mogo-module-share/src/main/res/values-ldpi/dimens.xml +++ b/modules/mogo-module-share/src/main/res/values-ldpi/dimens.xml @@ -1,8 +1,8 @@ - 693px - 320px + 776px + 428px 34px 43px 100px diff --git a/modules/mogo-module-share/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-share/src/main/res/values-xhdpi/dimens.xml index ba3a919930..c50ed40d1e 100644 --- a/modules/mogo-module-share/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-share/src/main/res/values-xhdpi/dimens.xml @@ -1,7 +1,7 @@ - 1300px - 600px + 1464px + 808px 64px 80px 200px diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java index b2c827db12..346667562f 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java @@ -160,9 +160,11 @@ public interface IMogoServiceApis extends IProvider { /** * 地址操作 + * Deprecated, use {@link IMogoSearchManager} instead. * * @return */ + @Deprecated IMogoAddressManager getAddressManagerApi(); /** 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..7be4dd6e4e 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,23 @@ public interface IMogoADASController extends IProvider { /** * 打开adas */ + @Deprecated void openADAS(); /** - * 关闭adas + * 隐藏adas */ void closeADAS(); + /** + * 显示 + */ + void showADAS(); + + /** + * 关闭 + */ + void killADAS(); + + void setSettingStatus(boolean show); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoMapService.java b/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoMapService.java index d4a794ea16..dce52487ec 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoMapService.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoMapService.java @@ -41,6 +41,7 @@ public interface IMogoMapService extends IProvider { * @param context * @return 定位实例 */ + @Deprecated IMogoLocationClient getLocationClient( Context context ); /** diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoAddressManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoAddressManager.java index 617023ea53..cd83a54470 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoAddressManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoAddressManager.java @@ -6,22 +6,28 @@ import com.mogo.map.MogoLatLng; /** * @author zyz * 2020-01-12. + *

+ * Deprecated, use {@link IMogoSearchManager} instead." */ +@Deprecated public interface IMogoAddressManager extends IProvider { /** * 回家 */ + @Deprecated void goHome(); /** * 去公司 */ + @Deprecated void goCompany(); /** * 打开搜索 */ + @Deprecated void goSearch(); /** @@ -29,12 +35,15 @@ public interface IMogoAddressManager extends IProvider { * * @param destination 目的地 */ + @Deprecated void calculatePath( MogoLatLng destination ); /** * 分类搜索 */ - void categorySearch(String category); + @Deprecated + void categorySearch( String category ); + @Deprecated void goSettings(); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleLifecycle.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleLifecycle.java index dc2dad5741..7234996fbe 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleLifecycle.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleLifecycle.java @@ -22,4 +22,5 @@ public interface IMogoModuleLifecycle { * accOn 事件回调 */ void accOn(); + } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoSearchManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoSearchManager.java index c477e5ecf0..92b1fe5067 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoSearchManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoSearchManager.java @@ -1,6 +1,7 @@ package com.mogo.service.module; import com.alibaba.android.arouter.facade.template.IProvider; +import com.mogo.map.MogoLatLng; /** * @author zyz @@ -8,11 +9,35 @@ import com.alibaba.android.arouter.facade.template.IProvider; */ public interface IMogoSearchManager extends IProvider { + /** + * 回家 + */ void goHome(); + + /** + * 去公司 + */ void goCompany(); + + /** + * 打开搜索 + */ void showSearch(); - void showMain(); - void speakDraft(); - void speakDetail(); - void showCategory(String keyword); + + /** + * 规划路线 + * + * @param destination 目的地 + */ + void calculatePath( MogoLatLng destination ); + + /** + * 分类搜索 + */ + void categorySearch( String keyword ); + + /** + * 打开导航设置 + */ + void goSettings(); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoSettingManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoSettingManager.java index 5c7bacd731..f043179468 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoSettingManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoSettingManager.java @@ -8,8 +8,51 @@ import com.alibaba.android.arouter.facade.template.IProvider; */ public interface IMogoSettingManager extends IProvider { + /** + * 路线偏好 + * + * @return + */ int getPathPrefer(); + + /** + * 音量 + * + * @return + */ int getVolume(); + + /** + * 获取播报模式 + * + * @return + */ int getVoiceStyle(); + + /** + * 日夜墨水 + * + * @return + */ int getMapType(); + + /** + * 简洁播报 + */ + void speakDraft(); + + /** + * 详细播报 + */ + void speakDetail(); + + /** + * 打开巡航模式 + */ + void openAimlessMode(); + + /** + * 关闭巡航模式 + */ + void closeAimlessMode(); } 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..1b26b1e000 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 @@ -47,6 +48,7 @@ dependencies { implementation rootProject.ext.dependencies.mogocommons implementation rootProject.ext.dependencies.mogoserviceapi implementation rootProject.ext.dependencies.mogoconnection + implementation rootProject.ext.dependencies.modulecommon } else { api project(":libraries:mogo-map") implementation project(":libraries:mogo-map-api") @@ -54,6 +56,7 @@ dependencies { implementation project(":foudations:mogo-commons") implementation project(":services:mogo-service-api") implementation project(":foudations:mogo-connection") + implementation project(":modules:mogo-module-common") } } 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..019e4c91c1 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 @@ -1,22 +1,30 @@ package com.mogo.service.impl.adas; +import android.app.ActivityManager; import android.app.Application; import android.content.Context; import android.content.Intent; +import android.content.pm.ApplicationInfo; +import android.os.RemoteException; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.commons.AbsMogoApplication; import com.mogo.map.MogoOverlayManager; +import com.mogo.module.common.utils.CarSeries; import com.mogo.service.MogoServicePaths; import com.mogo.service.adas.IMogoADASController; 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; +import java.util.List; + /** * @author congtaowang * @since 2020-03-10 @@ -28,7 +36,7 @@ public class MogoADASController implements IMogoADASController { private static final String TAG = "MogoADASController"; - public static final String ACTION = "com.zhidao.speech.awake.notify"; + public static final String ACTION = "com.zhidao.autopilot.ACTION_BOOT"; public static final String PARAM_COMMAND = "command"; public static final String VAL_COMMAND = "system.application.operation"; public static final String PARAM_DATA = "data"; @@ -38,49 +46,76 @@ 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" ); + if ( !isProcessRunning( AbsMogoApplication.getApp(), getPackageUid( AbsMogoApplication.getApp(), "com.zhidiao.autopilot" ) ) ) { + init( AbsMogoApplication.getApp() ); + } + + int delay = CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ? 0 : 500; + + 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." ); + } + } + }, delay ); + } + @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 +130,45 @@ public class MogoADASController implements IMogoADASController { @Override public void init( Context context ) { + AutopilotServiceManage.getInstance().init( context ); + } + //获取已安装应用的 uid,-1 表示未安装此应用或程序异常 + public static int getPackageUid( Context context, String packageName ) { + try { + ApplicationInfo applicationInfo = context.getPackageManager().getApplicationInfo( packageName, 0 ); + if ( applicationInfo != null ) { + return applicationInfo.uid; + } + } catch ( Exception e ) { + return -1; + } + return -1; + } + + /** + * 判断某一 uid 的程序是否有正在运行的进程,即是否存活 + * Created by cafeting on 2017/2/4. + * + * @param context 上下文 + * @param uid 已安装应用的 uid + * @return true 表示正在运行,false 表示没有运行 + */ + public static boolean isProcessRunning( Context context, int uid ) { + ActivityManager am = ( ActivityManager ) context.getSystemService( Context.ACTIVITY_SERVICE ); + List< ActivityManager.RunningServiceInfo > runningServiceInfos = am.getRunningServices( 200 ); + if ( runningServiceInfos.size() > 0 ) { + for ( ActivityManager.RunningServiceInfo appProcess : runningServiceInfos ) { + if ( uid == appProcess.uid ) { + return true; + } + } + } + return false; + } + + @Override + public void setSettingStatus( boolean show ) { + AutopilotServiceManage.getInstance().setSettingStatus( show ); } } 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/network/MogoNetWorkService.java b/services/mogo-service/src/main/java/com/mogo/service/impl/network/MogoNetWorkService.java index 9c6942f7a7..eda4617702 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/network/MogoNetWorkService.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/network/MogoNetWorkService.java @@ -3,7 +3,6 @@ package com.mogo.service.impl.network; import android.content.Context; import com.alibaba.android.arouter.facade.annotation.Route; -import com.mogo.map.MogoInitor; import com.mogo.service.MogoServicePaths; import com.mogo.service.network.IMogoNetwork; import com.mogo.utils.network.RetrofitFactory; @@ -19,7 +18,6 @@ public class MogoNetWorkService implements IMogoNetwork { @Override public void init(Context context) { - MogoInitor.init(context); } @Override 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 ); }