diff --git a/config.gradle b/config.gradle
index 1d47272fe2..1b9170ba35 100644
--- a/config.gradle
+++ b/config.gradle
@@ -48,6 +48,8 @@ ext {
fresco : 'com.facebook.fresco:fresco:1.1.0',
// 公司服务 - 语音
aiassist : "com.zhidaoauto.common:service:1.0.4.10",
+ // 语音替换方案 暂时只用TTS 解决焦点问题
+ aiassistReplace : "com.zhidao.mogoVoicesdk:voice:1.0.4",
// 公司服务 - 埋点
analytics : "com.elegant.analytics:analytics:1.1.19",
@@ -139,7 +141,7 @@ ext {
// gps 模拟
gpssimulator : "com.mogo.module:module-gps-simulator:${MOGO_MODULE_GPS_SIMULATOR_VERSION}",
- gpssimulatordebug : "com.mogo.module:mogo-module-gps-simulator-debug:${MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION}",
- gpssimulatornoop : "com.mogo.module:mogo-module-gps-simulator-noop:${MOGO_MODULE_GPS_SIMULATOR_NOOP_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}",
]
}
\ No newline at end of file
diff --git a/foudations/mogo-commons/build.gradle b/foudations/mogo-commons/build.gradle
index 682617dd4d..0f2fc4036c 100644
--- a/foudations/mogo-commons/build.gradle
+++ b/foudations/mogo-commons/build.gradle
@@ -37,6 +37,7 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
api rootProject.ext.dependencies.aiassist
+ api rootProject.ext.dependencies.aiassistReplace
api rootProject.ext.dependencies.androidxappcompat
api rootProject.ext.dependencies.analytics
implementation rootProject.ext.dependencies.arouter
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java
index 785c282c6c..f12e737695 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java
@@ -1,6 +1,12 @@
package com.mogo.commons;
import android.app.Application;
+import android.content.Context;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.TextView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.elegant.analytics.Analytics;
@@ -57,13 +63,40 @@ public class AbsMogoApplication extends Application {
asyncInit();
}
- private void syncInit(){
+ private void syncInit() {
// 初始化 arouter
if ( DebugConfig.isDebug() ) {
ARouter.openDebug();
ARouter.openLog();
}
ARouter.init( sApp );
+ TipToast.init( this, new TipToast.ToastViewGenerator() {
+ @Override
+ public View make( Context context, String message ) {
+ if ( TextUtils.isEmpty( message ) ) {
+ return null;
+ }
+ View contentView = LayoutInflater.from( context ).inflate( R.layout.module_commons_layout_toast, null );
+ TextView txt = contentView.findViewById( R.id.module_commons_toast_msg );
+ txt.setText( message );
+ return contentView;
+ }
+
+ @Override
+ public int gravity() {
+ return Gravity.TOP | Gravity.CENTER_HORIZONTAL;
+ }
+
+ @Override
+ public int yOffset() {
+ return sApp.getResources().getDimensionPixelSize( R.dimen.module_commons_toast_y_offset );
+ }
+
+ @Override
+ public int xOffset() {
+ return 0;
+ }
+ } );
}
/**
@@ -79,12 +112,11 @@ public class AbsMogoApplication extends Application {
return sc;
}
- private void asyncInit(){
- ThreadPoolService.execute( ()->{
+ private void asyncInit() {
+ ThreadPoolService.execute( () -> {
initNetConfig();
initAccountSdk();
// 初始化toast
- TipToast.init( sApp, null );
// 初始化埋点
Analytics.getInstance().start( sApp );
Analytics.getInstance().setAppKey( "6bbe7e0e1ecd8e2f8dc336e1678a2791" );
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java
index c8a7924de0..295fd6d847 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java
@@ -8,6 +8,10 @@ import android.text.TextUtils;
import com.mogo.utils.logger.Logger;
import com.zhidao.auto.platform.voice.VoiceClient;
+import com.zhidao.voicesdk.MogoVoiceManager;
+import com.zhidao.voicesdk.MogoVoiceManagerImpl;
+import com.zhidao.voicesdk.callback.OnConnStatusListener;
+import com.zhidao.voicesdk.callback.OnTtsListener;
import java.util.ArrayList;
import java.util.HashMap;
@@ -22,13 +26,14 @@ import java.util.concurrent.ConcurrentHashMap;
*
* 语音助手通信助手
*/
-public class AIAssist implements VoiceClient.VoiceCmdCallBack {
+public class AIAssist implements VoiceClient.VoiceCmdCallBack , OnTtsListener {
private static final String TAG = "AIAssist";
private static volatile AIAssist sInstance;
private String mLastQAndASpeakText;
private boolean mHasFlush = false;
+ private boolean mInitReady = false;
public static AIAssist getInstance( Context context ) {
if ( sInstance == null ) {
@@ -56,6 +61,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
}
private final VoiceClient mVoiceClient;
+ private MogoVoiceManager mogoVoiceManager;
// 免唤醒指令
private Map< String, List< IMogoVoiceCmdCallBack > > mCmdMap = new HashMap<>();
// 问答指令
@@ -70,7 +76,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
mVoiceClient = new VoiceClient( context.getApplicationContext() );
mVoiceClient.setCallBack( this );
initFlushStatus( context );
-
+ initSpeech( context );
Logger.w( TAG, "voice is ready = %s", mHasFlush );
}
@@ -78,6 +84,24 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
mHasFlush = isVoiceServiceReady( context );
}
+ /**
+ * 初始化
+ */
+ private void initSpeech( Context context ){
+ mogoVoiceManager = MogoVoiceManagerImpl.getInstance();
+ mogoVoiceManager.init(context, new OnConnStatusListener() {
+ @Override
+ public void onSuccess() {
+ mInitReady = true;
+ }
+
+ @Override
+ public void onFailed() {
+
+ }
+ });
+ }
+
/**
* 是否语音注册成功
* @return
@@ -185,7 +209,6 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
}
}
-
/**
* 语音播报
*
@@ -402,4 +425,36 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
return false;
}
+ public void speakTTSAndDuck(String text ){
+ speakTTSAndDuck(text,null);
+ }
+
+ public void speakTTSAndDuck( String text, IMogoVoiceCmdCallBack callBack ){
+ try {
+ if( mInitReady ){
+ mSpeakVoiceMap.put( text, callBack );
+ mogoVoiceManager.toSpeak( text, -3, this);
+ }
+ } catch ( Exception e ) {
+ }
+ }
+
+ @Override
+ public void onTtsStart(String ext) {
+
+ }
+
+ @Override
+ public void onTtsFinish(String speakText) {
+ IMogoVoiceCmdCallBack callBack = mSpeakVoiceMap.remove( speakText );
+ if ( callBack != null ) {
+ callBack.onSpeakEnd( speakText );
+ }
+ }
+
+ @Override
+ public void onTtsError(String ext) {
+
+ }
+
}
diff --git a/foudations/mogo-commons/src/main/res/drawable/module_commons_toast_bkg.xml b/foudations/mogo-commons/src/main/res/drawable/module_commons_toast_bkg.xml
new file mode 100644
index 0000000000..58389abf7c
--- /dev/null
+++ b/foudations/mogo-commons/src/main/res/drawable/module_commons_toast_bkg.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/foudations/mogo-commons/src/main/res/layout/module_commons_layout_toast.xml b/foudations/mogo-commons/src/main/res/layout/module_commons_layout_toast.xml
new file mode 100644
index 0000000000..0b01115f63
--- /dev/null
+++ b/foudations/mogo-commons/src/main/res/layout/module_commons_layout_toast.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/foudations/mogo-commons/src/main/res/values-ldpi/dimens.xml b/foudations/mogo-commons/src/main/res/values-ldpi/dimens.xml
new file mode 100644
index 0000000000..54534fb37b
--- /dev/null
+++ b/foudations/mogo-commons/src/main/res/values-ldpi/dimens.xml
@@ -0,0 +1,11 @@
+
+
+ 30px
+ 30px
+ 16px
+ 16px
+ 22px
+ 371px
+ 500px
+ 72px
+
\ No newline at end of file
diff --git a/foudations/mogo-commons/src/main/res/values-xhdpi/dimens.xml b/foudations/mogo-commons/src/main/res/values-xhdpi/dimens.xml
new file mode 100644
index 0000000000..c1558d9ba0
--- /dev/null
+++ b/foudations/mogo-commons/src/main/res/values-xhdpi/dimens.xml
@@ -0,0 +1,13 @@
+
+
+ 50px
+ 50px
+ 32px
+ 32px
+ 40px
+ 698px
+ 900px
+ 130px
+
+
+
diff --git a/foudations/mogo-commons/src/main/res/values/dimens.xml b/foudations/mogo-commons/src/main/res/values/dimens.xml
new file mode 100644
index 0000000000..c1558d9ba0
--- /dev/null
+++ b/foudations/mogo-commons/src/main/res/values/dimens.xml
@@ -0,0 +1,13 @@
+
+
+ 50px
+ 50px
+ 32px
+ 32px
+ 40px
+ 698px
+ 900px
+ 130px
+
+
+
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java
index 93af03bbae..540fa45017 100644
--- a/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java
@@ -9,6 +9,7 @@ package com.mogo.utils;
import android.content.Context;
import android.os.Handler;
import android.text.TextUtils;
+import android.view.Gravity;
import android.view.View;
import android.widget.Toast;
@@ -144,10 +145,6 @@ public final class TipToast {
sToast.cancel();
}
- if ( sGenerator == null ) {
- sToast = Toast.makeText( context, msg, duration );
- }
-
if ( sGenerator == null ) {
sToast = Toast.makeText( context, msg, duration );
} else {
@@ -155,6 +152,7 @@ public final class TipToast {
final View view = sGenerator.make( context, msg );
if ( view != null ) {
sToast.setView( view );
+ sToast.setGravity( sGenerator.gravity(), sGenerator.xOffset(), sGenerator.yOffset() );
sToast.setDuration( duration );
} else {
sToast = Toast.makeText( context, msg, duration );
@@ -171,6 +169,12 @@ public final class TipToast {
public interface ToastViewGenerator {
View make( Context context, String message );
+
+ int gravity();
+
+ int yOffset();
+
+ int xOffset();
}
}
diff --git a/gradle.properties b/gradle.properties
index fff8943382..f8d5fe5ffb 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -27,38 +27,38 @@ PASSWORD=xintai2018
RELEASE=false
# 模块版本
## 工程内模块
-MOGO_COMMONS_VERSION=1.0.3.1
-MOGO_UTILS_VERSION=1.0.3.1
-MAP_AMAP_VERSION=1.0.3.1
-MOGO_MAP_VERSION=1.0.3.1
-MOGO_MAP_API_VERSION=1.0.3.1
-MOGO_SERVICE_VERSION=1.0.3.1
-MOGO_SERVICE_API_VERSION=1.0.3.1
-MOGO_CONNECTION_VERSION=1.0.3.1
-MOGO_MODULE_APPS_VERSION=1.0.3.1
-MOGO_MODULE_NAVI_VERSION=1.0.3.1
-MOGO_MODULE_SHARE_VERSION=1.0.3.1
-MOGO_MODULE_COMMON_VERSION=1.0.3.2
-MOGO_MODULE_MAIN_VERSION=1.0.3.1
-MOGO_MODULE_MAP_VERSION=1.0.3.1
-MOGO_MODULE_SERVICE_VERSION=1.0.3.1
-MOGO_MODULE_EXTENSIONS_VERSION=1.0.3.1
-MOGO_MODULE_SEARCH_VERSION=1.0.3.1
-MOGO_MODULE_BACK_VERSION=1.0.3.1
-MOGO_MODULE_GPS_SIMULATOR_VERSION=1.0.3.1
-MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION=1.0.3.1
-MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION=1.0.3.1
+MOGO_COMMONS_VERSION=1.0.3.8
+MOGO_UTILS_VERSION=1.0.3.8
+MAP_AMAP_VERSION=1.0.3.8
+MOGO_MAP_VERSION=1.0.3.8
+MOGO_MAP_API_VERSION=1.0.3.8
+MOGO_SERVICE_VERSION=1.0.3.8
+MOGO_SERVICE_API_VERSION=1.0.3.8
+MOGO_CONNECTION_VERSION=1.0.3.8
+MOGO_MODULE_APPS_VERSION=1.0.3.8
+MOGO_MODULE_NAVI_VERSION=1.0.3.8
+MOGO_MODULE_SHARE_VERSION=1.0.3.8
+MOGO_MODULE_COMMON_VERSION=1.0.3.8
+MOGO_MODULE_MAIN_VERSION=1.0.3.8
+MOGO_MODULE_MAP_VERSION=1.0.3.8
+MOGO_MODULE_SERVICE_VERSION=1.0.3.8
+MOGO_MODULE_EXTENSIONS_VERSION=1.0.3.8
+MOGO_MODULE_SEARCH_VERSION=1.0.3.8
+MOGO_MODULE_BACK_VERSION=1.0.3.8
+MOGO_MODULE_GPS_SIMULATOR_VERSION=1.0.3.8
+MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION=1.0.3.8
+MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION=1.0.3.8
+MOGO_MODULE_AUTHORIZE_VERSION=1.0.3.8
+MOGO_MODULE_GUIDE_VERSION=1.0.3.8
-MOGO_MODULE_AUTHORIZE_VERSION=1.0.0
-MOGO_MODULE_GUIDE_VERSION=1.0.0
## 工程外部模块
# 探路
-MOGO_MODULE_TANLU_VERSION=1.0.3.2
+MOGO_MODULE_TANLU_VERSION=1.0.4.2
# 车聊聊
-CARCHATTING_VERSION=1.0.3
+CARCHATTING_VERSION=1.0.3.2-SNAPSHOT
# 车聊聊接口
-CARCHATTINGPROVIDER_VERSION=1.0.3
+CARCHATTINGPROVIDER_VERSION=1.0.3.2-SNAPSHOT
# 视频引导
MOGO_MODULE_GUIDESHOW_VERSION=1.0.2-SNAPSHOT
# 视频引导接口
@@ -66,13 +66,12 @@ MOGO_MODULE_GUIDESHOW_PROVIDER_VERSION=1.0.2-SNAPSHOT
# 在线车辆F
MOGO_MODULE_ONLINECAR_VERSION=1.0.3.1
# v2x
-MOGO_MODULE_V2X_VERSION=1.0.3.2
+MOGO_MODULE_V2X_VERSION=1.0.3.3-SNAPSHOT
# 媒体卡片
-MOGO_MODULE_MEDIA_VERSION=1.0.3
+MOGO_MODULE_MEDIA_VERSION=1.0.4.1
# 推送
MOGO_MODULE_PUSH_VERSION=1.0.1
# 广告资源位
MOGO_MODULE_AD_CARD_VERSION=1.0.1
# 新鲜事
-MOGO_MODULE_FRESH_NEWS_VERSION=1.0.3.1
-
+MOGO_MODULE_FRESH_NEWS_VERSION=1.0.3.2
diff --git a/libraries/map-amap/build.gradle b/libraries/map-amap/build.gradle
index 555ca0b60e..780c7af6f6 100644
--- a/libraries/map-amap/build.gradle
+++ b/libraries/map-amap/build.gradle
@@ -39,10 +39,12 @@ dependencies {
implementation rootProject.ext.dependencies.mogoutils
implementation rootProject.ext.dependencies.mogomapapi
implementation rootProject.ext.dependencies.mogocommons
+ implementation rootProject.ext.dependencies.mogomapapi
} else {
implementation project(':foudations:mogo-utils')
implementation project(':libraries:mogo-map-api')
implementation project(':foudations:mogo-commons')
+ implementation project(':services:mogo-service-api')
}
}
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 99ccd4db65..26f0836020 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
@@ -601,11 +601,11 @@ public class AMapNaviViewWrapper implements IMogoMapView,
}
@Override
- public void displayOverview() {
+ public void displayOverview( Rect bounds ) {
if ( checkAMapView() ) {
if ( NaviClient.getInstance( getContext() ).isNaviing() ) {
loseLockMode();
- NaviClient.getInstance( getContext() ).displayOverview();
+ NaviClient.getInstance( getContext() ).displayOverview( bounds );
}
}
}
@@ -633,6 +633,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
if ( checkAMapView() ) {
mMapView.setCarOverlayVisible( false );
showMyLocation( true );
+ NaviClient.getInstance( getContext() ).startAimlessMode();
}
}
@@ -823,12 +824,16 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void setCarCursorOption( CarCursorOption option ) {
- if ( mCarCursorOption != null ) {
+ if ( mCarCursorOption != null && mCarCursorOption != DEFAULT_OPTION ) {
mCarCursorOption.destroy();
}
- try {
- mCarCursorOption = option.clone();
- } catch ( CloneNotSupportedException e ) {
+ if ( option != null ) {
+ try {
+ mCarCursorOption = option.clone();
+ } catch ( Exception e ) {
+ mCarCursorOption = DEFAULT_OPTION;
+ }
+ } else {
mCarCursorOption = DEFAULT_OPTION;
}
if ( !checkAMapView() ) {
@@ -837,8 +842,10 @@ public class AMapNaviViewWrapper implements IMogoMapView,
AMapNaviViewOptions options = mMapView.getViewOptions();
if ( options != null && mCarCursorOption.getNaviCursorRes() != 0 ) {
options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(), mCarCursorOption.getNaviCursorRes() ) );
- mMapView.setViewOptions( options );
+ } else {
+ options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(), DEFAULT_OPTION.getNaviCursorRes() ) );
}
+ mMapView.setViewOptions( options );
if ( mMapView.getMap() == null ) {
return;
@@ -849,6 +856,8 @@ public class AMapNaviViewWrapper implements IMogoMapView,
} else {
if ( mCarCursorOption.getCarCursorRes() != 0 ) {
style.myLocationIcon( BitmapDescriptorFactory.fromResource( mCarCursorOption.getCarCursorRes() ) );
+ } else {
+ style.myLocationIcon( BitmapDescriptorFactory.fromResource( DEFAULT_OPTION.getCarCursorRes() ) );
}
}
mMapView.getMap().setMyLocationStyle( style );
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java
index b851ca258c..5e1eff04c3 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java
@@ -15,6 +15,8 @@ import com.amap.api.navi.model.AimLessModeCongestionInfo;
import com.amap.api.navi.model.AimLessModeStat;
import com.amap.api.navi.model.NaviInfo;
import com.autonavi.tbt.TrafficFacilityInfo;
+import com.mogo.commons.AbsMogoApplication;
+import com.mogo.commons.voice.AIAssist;
import com.mogo.map.MogoLatLng;
import com.mogo.utils.logger.Logger;
import java.util.List;
@@ -64,6 +66,7 @@ public abstract class AMapNaviListenerAdapter implements AMapNaviListener {
public void onGetNavigationText( String s ) {
mLastSpeakWord = s;
Logger.d( TAG, s );
+ AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSAndDuck(s);
}
@Override
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java
index 5d6afc5cfe..e9a150116b 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java
@@ -11,17 +11,20 @@ import com.amap.api.navi.enums.AimLessMode;
import com.amap.api.navi.enums.NaviType;
import com.amap.api.navi.model.NaviLatLng;
import com.mogo.commons.AbsMogoApplication;
+import com.mogo.commons.voice.AIAssist;
import com.mogo.map.MogoLatLng;
import com.mogo.map.impl.amap.AMapWrapper;
import com.mogo.map.impl.amap.message.AMapMessageManager;
import com.mogo.map.impl.amap.utils.ObjectUtils;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
+import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.navi.MogoCalculatePath;
import com.mogo.map.navi.MogoNaviConfig;
import com.mogo.map.navi.MogoNaviListenerHandler;
import com.mogo.map.navi.OnCalculatePathItemClickInteraction;
import com.mogo.utils.logger.Logger;
+import com.mogo.utils.storage.SharedPrefsMgr;
import java.util.ArrayList;
import java.util.Arrays;
@@ -35,7 +38,13 @@ import java.util.List;
*/
public class NaviClient implements IMogoNavi {
+ /**
+ * 巡航状态控制
+ */
+ public static final String KEY_AIMLESS_STATUS = "KEY_AIMLESS_STATUS";
+
private static final String TAG = "NaviClient";
+ private final Context mContext;
private AMapNavi mAMapNavi;
private final NaviListenerAdapter mAMapNaviListener;
@@ -53,10 +62,20 @@ public class NaviClient implements IMogoNavi {
private boolean mIsRealNavi;
private Location mCarLocation;
- private IMogoCarLocationChangedListener mCarLocationChangedListener;
+ private IMogoCarLocationChangedListener2 mCarLocationChangedListener;
private LocationSource.OnLocationChangedListener mOnLocationChangedListener;
+ /**
+ * 巡航模式配置状态
+ */
+ private boolean mAimlessModeStatus;
+
+ /**
+ * 巡航状态
+ */
+ private boolean mAimlessStatus;
private NaviClient( Context context ) {
+ mContext = context;
mAMapNavi = AMapNavi.getInstance( context );
mAMapNavi.setEmulatorNaviSpeed( 120 );
mAMapNavi.setUseInnerVoice( false, true );
@@ -65,6 +84,7 @@ public class NaviClient implements IMogoNavi {
};
mAMapNavi.addAMapNaviListener( mAMapNaviListener );
mAMapNavi.addAimlessModeListener( mAimlessModeListener );
+ mAimlessModeStatus = SharedPrefsMgr.getInstance( mContext ).getBoolean( KEY_AIMLESS_STATUS, false );
}
public static NaviClient getInstance( Context context ) {
@@ -151,7 +171,7 @@ public class NaviClient implements IMogoNavi {
return;
}
mIsRealNavi = isRealNavi;
-
+ stopAimlessMode();
boolean isNaving = isNaviing();
boolean result = mAMapNavi.startNavi( isRealNavi ? NaviType.GPS : NaviType.EMULATOR );
if ( isNaving && !result ) {
@@ -241,7 +261,12 @@ public class NaviClient implements IMogoNavi {
}
@Override
- public void registerCarLocationChangedListener( IMogoCarLocationChangedListener listener ) {
+ public Location getCarLocation2() {
+ return mCarLocation;
+ }
+
+ @Override
+ public void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener ) {
mCarLocationChangedListener = listener;
}
@@ -250,7 +275,7 @@ public class NaviClient implements IMogoNavi {
public void syncCarLocation( Location location ) {
mCarLocation = location;
if ( mCarLocationChangedListener != null ) {
- mCarLocationChangedListener.onCarLocationChanged( getCarLocation() );
+ mCarLocationChangedListener.onCarLocationChanged2( mCarLocation );
}
}
@@ -274,18 +299,42 @@ public class NaviClient implements IMogoNavi {
@Override
public void startAimlessMode() {
- mAMapNavi.startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED );
+ if ( mAimlessModeStatus && !isNaviing() ) {
+ mAMapNavi.startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED );
+ mAimlessStatus = true;
+ Logger.d( TAG, "开启巡航成功" );
+ } else {
+ mAimlessStatus = false;
+ Logger.d( TAG, "开启巡航失败" );
+ }
}
@Override
public void stopAimlessMode() {
mAMapNavi.stopAimlessMode();
+ mAimlessStatus = false;
+ Logger.d( TAG, "关闭巡航成功" );
}
@Override
- public void displayOverview() {
+ public void setAimlessModeStatus( boolean open ) {
+ this.mAimlessModeStatus = open;
+ SharedPrefsMgr.getInstance( mContext ).putBoolean( KEY_AIMLESS_STATUS, open );
+ if ( open ) {
+ if ( !mAimlessStatus ) {
+ startAimlessMode();
+ }
+ } else {
+ if ( mAimlessStatus ) {
+ stopAimlessMode();
+ }
+ }
+ }
+
+ @Override
+ public void displayOverview( Rect bounds ) {
if ( mAMapNaviListener != null ) {
- mAMapNaviListener.displayOverview();
+ mAMapNaviListener.displayOverview( bounds );
}
}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java
index dfd56d70de..c402fdc0a4 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java
@@ -95,6 +95,7 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter {
@Override
public void onInitNaviSuccess() {
MogoNaviListenerHandler.getInstance().onInitNaviSuccess();
+ NaviClient.getInstance( mContext ).startAimlessMode();
}
@Override
@@ -245,9 +246,10 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter {
public void handleClickedPolyline( Polyline polyline ) {
if ( mNaviOverlayHelper != null ) {
+
mNaviOverlayHelper.handleClickedPolyline( polyline, isNaviing() );
mAMapNavi.selectRouteId( mNaviOverlayHelper.getSelectedPathId() );
- mNaviOverlayHelper.showBounds();
+ mNaviOverlayHelper.showBoundsWithSettingBounds();
}
}
@@ -291,9 +293,9 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter {
}
}
- public void displayOverview(){
+ public void displayOverview( Rect bounds ) {
if ( mNaviOverlayHelper != null ) {
- mNaviOverlayHelper.displayOverview();
+ mNaviOverlayHelper.displayOverview( bounds );
}
}
}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java
index 19cd0dabfb..9448f2b296 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java
@@ -99,7 +99,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
if ( after != null ) {
after.run();
}
- } );
+ }, mBoundRect );
}
private LatLngBounds getBounds() {
@@ -169,25 +169,32 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
}
}
- public void showBounds() {
+ public void showBoundsWithSettingBounds() {
+ showBounds( mBoundRect );
+ }
+
+ public void showBounds( Rect bounds ) {
Logger.d( TAG, "showBounds" );
- showPathsBound( getBounds(), null );
+ showPathsBound( getBounds(), null, bounds );
}
/**
* 将规划好的路径显示在视野内
*/
- private void showPathsBound( LatLngBounds bounds, Runnable after ) {
+ private void showPathsBound( LatLngBounds bounds, Runnable after, Rect rect ) {
if ( bounds == null ) {
return;
}
+ if ( rect == null ) {
+ rect = new Rect();
+ }
checkAMapInstance();
mAMap.moveCamera( CameraUpdateFactory.newLatLngBoundsRect(
bounds,
- mBoundRect.left,
- mBoundRect.right,
- mBoundRect.top,
- mBoundRect.bottom ));
+ rect.left,
+ rect.right,
+ rect.top,
+ rect.bottom ) );
if ( after != null ) {
after.run();
}
@@ -431,7 +438,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
public void onItemClicked( String tagId ) {
handleClickedPolyline( tagId );
mAMapNavi.selectRouteId( getSelectedPathId() );
- showBounds();
+ showBounds( mBoundRect );
}
public OnCalculatePathItemClickInteraction getItemClickInteraction() {
@@ -451,7 +458,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
/**
* 展示全程
*/
- public void displayOverview(){
- showBounds();
+ public void displayOverview( Rect bounds ) {
+ showBounds( bounds );
}
}
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 6e395ec1ba..b5f5c7da96 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
@@ -126,9 +126,9 @@ public class AMapUIController implements IMogoMapUIController {
}
@Override
- public void displayOverview() {
+ public void displayOverview( Rect bounds ) {
if (mClient != null) {
- mClient.displayOverview();
+ mClient.displayOverview(bounds);
}
}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoCarLocationChangedListener2.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoCarLocationChangedListener2.java
new file mode 100644
index 0000000000..fe2bf33422
--- /dev/null
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoCarLocationChangedListener2.java
@@ -0,0 +1,14 @@
+package com.mogo.map.navi;
+
+import android.location.Location;
+
+/**
+ * @author congtaowang
+ * @since 2020-03-14
+ *
+ * 车辆位置变化
+ */
+public interface IMogoCarLocationChangedListener2 extends IMogoCarLocationChangedListener {
+
+ void onCarLocationChanged2( Location latLng );
+}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java
index 4a780f8b61..de314483b5 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java
@@ -144,12 +144,19 @@ public interface IMogoNavi {
*/
MogoLatLng getCarLocation();
+ /**
+ * 获取车标经纬度
+ *
+ * @return
+ */
+ Location getCarLocation2();
+
/**
* 注册车辆位置变化监听,非业务使用
*
* @param listener
*/
- void registerCarLocationChangedListener( IMogoCarLocationChangedListener listener );
+ void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener );
/**
* 打开巡航模式
@@ -161,10 +168,17 @@ public interface IMogoNavi {
*/
void stopAimlessMode();
+ /**
+ * 设置巡航模式状态
+ *
+ * @param open
+ */
+ void setAimlessModeStatus( boolean open );
+
/**
* 查看全程
*/
- void displayOverview();
+ void displayOverview( Rect bounds );
/**
* 设置使用外部定位源
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 053ae1b848..e8a557dd79 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
@@ -7,6 +7,7 @@ import android.view.View;
import android.view.animation.Interpolator;
import androidx.annotation.DrawableRes;
+import androidx.annotation.Nullable;
import com.mogo.map.MogoLatLng;
import com.mogo.map.marker.IMogoMarker;
@@ -88,8 +89,10 @@ public interface IMogoMapUIController {
/**
* 预览全程
+ *
+ * @param bounds 显示范围
*/
- void displayOverview();
+ void displayOverview( Rect bounds );
/**
* 获取比例尺数据
@@ -192,7 +195,7 @@ public interface IMogoMapUIController {
/**
* 配置自车图标样式
*
- * @param option
+ * @param option 为空时使用默认配置
*/
- void setCarCursorOption( CarCursorOption option );
+ void setCarCursorOption( @Nullable CarCursorOption option );
}
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 e430a33b65..286b7aec12 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
@@ -120,9 +120,9 @@ public class MogoMapUIController implements IMogoMapUIController {
}
@Override
- public void displayOverview() {
+ public void displayOverview( Rect bounds ) {
if (mDelegate != null) {
- mDelegate.displayOverview();
+ mDelegate.displayOverview(bounds);
}
}
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java
index b3d7c0c75c..74e6615a7c 100644
--- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java
@@ -6,6 +6,7 @@ import android.location.Location;
import com.mogo.map.impl.amap.navi.NaviClient;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
+import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.navi.MogoCalculatePath;
import com.mogo.map.navi.MogoNaviConfig;
@@ -176,7 +177,15 @@ public class MogoNavi implements IMogoNavi {
}
@Override
- public void registerCarLocationChangedListener( IMogoCarLocationChangedListener listener ) {
+ public Location getCarLocation2() {
+ if ( mDelegate != null ) {
+ return mDelegate.getCarLocation2();
+ }
+ return null;
+ }
+
+ @Override
+ public void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener ) {
if ( mDelegate != null ) {
mDelegate.registerCarLocationChangedListener( listener );
}
@@ -197,9 +206,16 @@ public class MogoNavi implements IMogoNavi {
}
@Override
- public void displayOverview() {
+ public void setAimlessModeStatus( boolean open ) {
if ( mDelegate != null ) {
- mDelegate.displayOverview();
+ mDelegate.setAimlessModeStatus( open );
+ }
+ }
+
+ @Override
+ public void displayOverview( Rect bounds ) {
+ if ( mDelegate != null ) {
+ mDelegate.displayOverview(bounds);
}
}
diff --git a/map-upload.sh b/map-upload.sh
index a53d5d66df..eeb258a13e 100755
--- a/map-upload.sh
+++ b/map-upload.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-./gradlew :libraries:mogo-map-api:clean :libraries:mogo-map-api:uploadArchives
-./gradlew :libraries:map-amap:clean :libraries:map-amap:uploadArchives
-./gradlew :libraries:mogo-map:clean :libraries:mogo-map:uploadArchives
\ No newline at end of file
+./gradlew :services:mogo-service-api:clean :services:mogo-service-api:uploadArchives
+./gradlew :services:mogo-service:clean :services:mogo-service:uploadArchives
+./gradlew :modules:mogo-module-extensions:clean :modules:mogo-module-extensions:uploadArchives
\ No newline at end of file
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java
index 62c4a193ad..03d6f72ae3 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java
@@ -39,14 +39,14 @@ public class MapCenterPointStrategy {
// 导航场景,定位视图右下角偏下
Map< Integer, MapCenterPoint > navi = new HashMap<>();
navi.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.7734375D, 0.65D ) );
- navi.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.775521D, 0.6759259D ) );
+ navi.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.775521D, 0.661165D ) );
sStrategies.put( Scene.NAVI, navi );
// 巡航场景,定位视图右下角偏下
Map< Integer, MapCenterPoint > aimless = new HashMap<>();
aimless.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.677734375D, 0.54D ) );
- aimless.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.6963541D, 0.6833333D ) );
+ aimless.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.6963541D, 0.558737D ) );
sStrategies.put( Scene.AIMLESS, aimless );
@@ -61,6 +61,13 @@ public class MapCenterPointStrategy {
categorySearch.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.733398D, 0.610833D ) );
categorySearch.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.733594D, 0.596759D ) );
sStrategies.put( Scene.CATEGORY_SEARCH, categorySearch );
+
+
+ // V2X,场景视图右边
+ Map< Integer, MapCenterPoint > categoryV2XEvent = new HashMap<>();
+ categoryV2XEvent.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.677734375D, 0.7D ) );
+ categoryV2XEvent.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.6963541D, 0.65D ) );
+ sStrategies.put( Scene.CATEGORY_V2X_EVENT, categoryV2XEvent );
}
public static void addScene( int scene, Map< Integer, MapCenterPoint > config ) {
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java
index 4def37a007..c37810ae50 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java
@@ -37,4 +37,9 @@ public interface Scene {
* 分类搜索
*/
int CATEGORY_SEARCH = 5;
+
+ /**
+ * V2X触发了预警场景
+ */
+ int CATEGORY_V2X_EVENT = 6;
}
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 3cb221d814..ffe850df7a 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
@@ -24,8 +24,6 @@ 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.overlay.IMogoPolyline;
-import com.mogo.map.uicontroller.CarCursorOption;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant;
@@ -41,12 +39,14 @@ import com.mogo.module.share.ShareControl;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
+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.IMogoStatusManager;
+import com.mogo.utils.logger.Logger;
import java.util.HashMap;
import java.util.Map;
@@ -222,6 +222,8 @@ 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 ) );
}
@@ -303,6 +305,7 @@ 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 );
@@ -315,6 +318,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
@Override
public void onStopNavi() {
+ mSearch.setVisibility( View.VISIBLE );
mCommonAddress.setVisibility( View.VISIBLE );
mNaviInfo.setVisibility( View.GONE );
mCameraMode.setVisibility( View.GONE );
@@ -345,7 +349,8 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
mSpeedLimit.setVisibility( View.INVISIBLE );
mSpeedLimitValue.setText( "--" );
} else {
- mSpeedLimit.setVisibility( View.VISIBLE );
+ // 暂时不显示限速,等有好的显示方案在放开
+ mSpeedLimit.setVisibility( View.INVISIBLE );
mSpeedLimitValue.setText( String.valueOf( traffic.getSpeedLimit() ) );
}
}
@@ -380,6 +385,9 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
mIsLock = isLock;
if ( isLock ) {
mExitNavi.setText( R.string.module_ext_str_exit_navi );
+ if ( mMogoStatusManager.isDisplayOverview() ) {
+ mMogoStatusManager.setDisplayOverview( TAG, false );
+ }
} else {
mExitNavi.setText( R.string.module_ext_str_continue_navi );
}
@@ -400,4 +408,32 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
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." );
+ }
+ }
}
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 c998dcc7ab..7662f0ac2a 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
@@ -6,6 +6,9 @@ import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
+import androidx.annotation.NonNull;
+import androidx.lifecycle.LifecycleOwner;
+
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.mvp.Presenter;
import com.mogo.commons.voice.AIAssist;
@@ -14,10 +17,14 @@ 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;
+import com.mogo.service.IMogoServiceApis;
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.JSONObject;
@@ -33,7 +40,7 @@ import static com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerCons
*
* 描述
*/
-public class EntrancePresenter extends Presenter {
+public class EntrancePresenter extends Presenter< EntranceView > implements IMogoStatusChangedListener {
private Context mContext;
private IMogoAnalytics mAnalytics;
@@ -42,32 +49,28 @@ public class EntrancePresenter extends Presenter {
private IMogoAuthorizeModuleManager mIMogoAuthorizeModuleManager;
private String mVoiceCmdType; //一级命令
private String mVoiceCmdShareType; //对某些一级命令里面细分的类型做处理
+ private IMogoStatusManager mStatusManager;
- public EntrancePresenter(Context context, EntranceView view, IMogoAuthorizeModuleManager authorizeModuleManager) {
- super(view);
+ public EntrancePresenter( Context context, EntranceView view, IMogoAuthorizeModuleManager authorizeModuleManager ) {
+ super( view );
mContext = context;
- mAnalytics = (IMogoAnalytics) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_ANALYTICS).navigation(getContext());
- mogoIntentManager = (IMogoIntentManager) ARouter.getInstance().build(MogoServicePaths.PATH_INTENT_MANAGER).navigation(getContext());
+ IMogoServiceApis apis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( mContext );
+ mAnalytics = apis.getAnalyticsApi();
+ mogoIntentManager = apis.getIntentManagerApi();
mIMogoAuthorizeModuleManager = authorizeModuleManager;
-
+ mStatusManager = apis.getStatusManagerApi();
registerUnWake();
registerAwakeVoice();
}
-
private void registerUnWake() {
- AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.CLOSE,
- ExtensionsModuleConst.CMD_CLOSE, mogoVoiceListener);
- AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.CANCLE_SHARE,
- ExtensionsModuleConst.CMD_CANCLE_SHARE, mogoVoiceListener);
+ AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.CLOSE, ExtensionsModuleConst.CMD_CLOSE, mogoVoiceListener );
+ AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.CANCLE_SHARE, ExtensionsModuleConst.CMD_CANCLE_SHARE, mogoVoiceListener );
//探路相关上报
- AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK,
- ExtensionsModuleConst.CMD_UPLOAD_BLOCK, mogoVoiceListener);
- AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK,
- ExtensionsModuleConst.CMD_TRAFFIC_CHECK, mogoVoiceListener);
- AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE,
- ExtensionsModuleConst.CMD_ROAD_CLOSURE, mogoVoiceListener);
+ AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.UPLOAD_ROAD_BLOCK, ExtensionsModuleConst.CMD_UPLOAD_BLOCK, mogoVoiceListener );
+ AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK, ExtensionsModuleConst.CMD_TRAFFIC_CHECK, mogoVoiceListener );
+ AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE, ExtensionsModuleConst.CMD_ROAD_CLOSURE, mogoVoiceListener );
}
/**
@@ -75,31 +78,31 @@ public class EntrancePresenter extends Presenter {
*/
private IMogoVoiceCmdCallBack mogoVoiceListener = new IMogoVoiceCmdCallBack() {
@Override
- public void onCmdSelected(String cmd) {
- Log.d(TAG, "免唤醒 mogoVoiceListener needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE) + " >>>cmd = " + cmd);
+ public void onCmdSelected( String cmd ) {
+ 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)) { //取消分享,关闭页面
- if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
+ if ( cmd.equals( ExtensionsModuleConst.CANCLE_SHARE )
+ || cmd.equals( ExtensionsModuleConst.CLOSE ) ) { //取消分享,关闭页面
+ if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE );
} else {
- ShareControl.getInstance(mContext).dismissDialog();
+ ShareControl.getInstance( mContext ).dismissDialog();
}
- } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK)) { //上报拥堵
- if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
+ } else if ( cmd.equals( ExtensionsModuleConst.UPLOAD_ROAD_BLOCK ) ) { //上报拥堵
+ if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE );
} else {
uploadRoadCondition();
}
- } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK)) { //上报交通检查
- if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
+ } else if ( cmd.equals( ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK ) ) { //上报交通检查
+ if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE );
} else {
uploadTrfficCheck();
}
- } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE)) { //上报封路
- if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
+ } else if ( cmd.equals( ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE ) ) { //上报封路
+ if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE );
} else {
uploadRoadClosed();
}
@@ -107,32 +110,38 @@ public class EntrancePresenter extends Presenter {
}
@Override
- public void onCmdAction(String speakText) {
+ public void onCmdAction( String speakText ) {
}
@Override
- public void onCmdCancel(String speakText) {
+ public void onCmdCancel( String speakText ) {
}
@Override
- public void onSpeakEnd(String speakText) {
+ public void onSpeakEnd( String speakText ) {
}
@Override
- public void onSpeakSelectTimeOut(String speakText) {
+ public void onSpeakSelectTimeOut( String speakText ) {
}
};
+ @Override
+ public void onCreate( @NonNull LifecycleOwner owner ) {
+ super.onCreate( owner );
+ mStatusManager.registerStatusChangedListener( TAG, StatusDescriptor.DISPLAY_OVERVIEW, this );
+ }
+
/**
* 注册唤醒命令
*/
private void registerAwakeVoice() {
- mogoIntentManager.registerIntentListener(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION, mogoIntentListener);
+ mogoIntentManager.registerIntentListener( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION, mogoIntentListener );
- mogoIntentManager.registerIntentListener(ExtensionsModuleConst.GO_TO_SHARE, mogoIntentListener);
- mogoIntentManager.registerIntentListener(ExtensionsModuleConst.SHARE_DIALOG_CLOSE, mogoIntentListener);
- mogoIntentManager.registerIntentListener(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN, mogoIntentListener);
- mogoIntentManager.registerIntentListener(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE, mogoIntentListener);
+ mogoIntentManager.registerIntentListener( ExtensionsModuleConst.GO_TO_SHARE, mogoIntentListener );
+ mogoIntentManager.registerIntentListener( ExtensionsModuleConst.SHARE_DIALOG_CLOSE, mogoIntentListener );
+ mogoIntentManager.registerIntentListener( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN, mogoIntentListener );
+ mogoIntentManager.registerIntentListener( ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE, mogoIntentListener );
}
/**
@@ -140,81 +149,81 @@ public class EntrancePresenter extends Presenter {
*/
private IMogoIntentListener mogoIntentListener = new IMogoIntentListener() {
@Override
- public void onIntentReceived(String intentStr, Intent intent) {
+ public void onIntentReceived( String intentStr, Intent intent ) {
mVoiceCmdType = intentStr;
EntranceFragment.isClickShare = false;
- String data = intent.getStringExtra("data");
- Log.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data + " >>> needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE));
- if (intentStr.equals(ExtensionsModuleConst.GO_TO_SHARE)) { //我要分享 --ok
- String conditionData = intent.getStringExtra("data");
- Log.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>conditionData =" + conditionData);
+ String data = intent.getStringExtra( "data" );
+ Log.d( TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data + " >>> needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) );
+ if ( intentStr.equals( ExtensionsModuleConst.GO_TO_SHARE ) ) { //我要分享 --ok
+ String conditionData = intent.getStringExtra( "data" );
+ Log.d( TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>conditionData =" + conditionData );
try {
- JSONObject jsonObject = new JSONObject(data);
- String typeString = jsonObject.get("ob").toString();
- Log.d(TAG, "mogoIntentListener specified typeString = " + typeString);
+ JSONObject jsonObject = new JSONObject( data );
+ String typeString = jsonObject.get( "ob" ).toString();
+ Log.d( TAG, "mogoIntentListener specified typeString = " + typeString );
mVoiceCmdShareType = typeString;
- if (!TextUtils.isEmpty(typeString)) {
- if (typeString.equals("封路")) {
- if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
+ if ( !TextUtils.isEmpty( typeString ) ) {
+ if ( typeString.equals( "封路" ) ) {
+ if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE );
} else {
- Log.d(TAG, "mogoIntentListener 封路 -------> ");
+ Log.d( TAG, "mogoIntentListener 封路 -------> " );
uploadRoadClosed();
}
- } else if (typeString.equals("油价")) {
- if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
+ } else if ( typeString.equals( "油价" ) ) {
+ if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE );
} else {
- Log.d(TAG, "mogoIntentListener 油价 -------> ");
+ Log.d( TAG, "mogoIntentListener 油价 -------> " );
shareOilPrice();
}
- } else if (typeString.equals("交通检查")) {
- if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
+ } else if ( typeString.equals( "交通检查" ) ) {
+ if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE );
} else {
- Log.d(TAG, "mogoIntentListener 交通检查 -------> ");
+ Log.d( TAG, "mogoIntentListener 交通检查 -------> " );
uploadTrfficCheck();
}
}
} else {
- if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
+ if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE );
} else {
- ShareControl.getInstance(mContext).showDialog();
- Log.d(TAG, "mogoIntentListener 我要分享 ----> ");
- traceData("2");
+ ShareControl.getInstance( mContext ).showDialog();
+ Log.d( TAG, "mogoIntentListener 我要分享 ----> " );
+ traceData( "2" );
}
}
- } catch (Exception e) {
+ } catch ( Exception e ) {
e.printStackTrace();
}
- } else if (intentStr.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN)) {
+ } else if ( intentStr.equals( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN ) ) {
//分享路况/上报路况/上报拥堵 唤醒
- if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
+ if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE );
} else {
uploadRoadCondition();
- Log.d(TAG, "mogoIntentListener 分享路况 唤醒 ----> ");
+ Log.d( TAG, "mogoIntentListener 分享路况 唤醒 ----> " );
}
- } else if (intentStr.equals(ExtensionsModuleConst.SHARE_DIALOG_CLOSE)) { //关闭分享框 唤醒
- if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
+ } else if ( intentStr.equals( ExtensionsModuleConst.SHARE_DIALOG_CLOSE ) ) { //关闭分享框 唤醒
+ if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE );
} else {
- ShareControl.getInstance(mContext).dismissDialog();
- Log.d(TAG, "mogoIntentListener 关闭分享框 唤醒 ----> ");
+ ShareControl.getInstance( mContext ).dismissDialog();
+ Log.d( TAG, "mogoIntentListener 关闭分享框 唤醒 ----> " );
}
- } else if (intentStr.equals(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE)) {
+ } else if ( intentStr.equals( ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE ) ) {
// 两次未回复关闭对话框
- if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
+ if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE );
} else {
- ShareControl.getInstance(mContext).dismissDialog();
- Logger.d(TAG, "mogoIntentListener 两次未回复关闭对话框");
+ ShareControl.getInstance( mContext ).dismissDialog();
+ Logger.d( TAG, "mogoIntentListener 两次未回复关闭对话框" );
}
- } else if (intentStr.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION)) { //上报路况 免唤醒 --ok
- if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
+ } else if ( intentStr.equals( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION ) ) { //上报路况 免唤醒 --ok
+ if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE );
} else {
uploadRoadCondition();
}
@@ -227,65 +236,65 @@ public class EntrancePresenter extends Presenter {
* 处理需要授权的命令 TODO
*/
public void handleNeedAuthorizeCmd() {
- Log.e(TAG, "handleNeedAuthorizeCmd mVoiceCmdType = " + mVoiceCmdType + " >>> mVoiceCmdShareType = " + mVoiceCmdShareType);
- if (!TextUtils.isEmpty(mVoiceCmdType)) {
- if (mVoiceCmdType.equals(ExtensionsModuleConst.CANCLE_SHARE) || mVoiceCmdType.equals(ExtensionsModuleConst.CLOSE)
- || mVoiceCmdType.equals(ExtensionsModuleConst.SHARE_DIALOG_CLOSE) || mVoiceCmdType.equals(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE)) { //关闭分享弹框
- ShareControl.getInstance(mContext).dismissDialog();
- } else if (mVoiceCmdType.equals(ExtensionsModuleConst.GO_TO_SHARE)) { //打开分享弹框
- if (!TextUtils.isEmpty(mVoiceCmdShareType)) {
- if (mVoiceCmdShareType.equals("封路")) {
- Log.d(TAG, "handleNeedAuthorizeCmd 封路 -------> ");
+ Log.e( TAG, "handleNeedAuthorizeCmd mVoiceCmdType = " + mVoiceCmdType + " >>> mVoiceCmdShareType = " + mVoiceCmdShareType );
+ if ( !TextUtils.isEmpty( mVoiceCmdType ) ) {
+ if ( mVoiceCmdType.equals( ExtensionsModuleConst.CANCLE_SHARE ) || mVoiceCmdType.equals( ExtensionsModuleConst.CLOSE )
+ || mVoiceCmdType.equals( ExtensionsModuleConst.SHARE_DIALOG_CLOSE ) || mVoiceCmdType.equals( ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE ) ) { //关闭分享弹框
+ ShareControl.getInstance( mContext ).dismissDialog();
+ } else if ( mVoiceCmdType.equals( ExtensionsModuleConst.GO_TO_SHARE ) ) { //打开分享弹框
+ if ( !TextUtils.isEmpty( mVoiceCmdShareType ) ) {
+ if ( mVoiceCmdShareType.equals( "封路" ) ) {
+ Log.d( TAG, "handleNeedAuthorizeCmd 封路 -------> " );
uploadRoadClosed();
- } else if (mVoiceCmdShareType.equals("油价")) {
- Log.d(TAG, "handleNeedAuthorizeCmd 油价 -------> ");
+ } else if ( mVoiceCmdShareType.equals( "油价" ) ) {
+ Log.d( TAG, "handleNeedAuthorizeCmd 油价 -------> " );
shareOilPrice();
- } else if (mVoiceCmdShareType.equals("交通检查")) {
- Log.d(TAG, "handleNeedAuthorizeCmd 交通检查 -------> ");
+ } else if ( mVoiceCmdShareType.equals( "交通检查" ) ) {
+ Log.d( TAG, "handleNeedAuthorizeCmd 交通检查 -------> " );
uploadTrfficCheck();
}
} else {
- ShareControl.getInstance(mContext).showDialog();
- Log.d(TAG, "handleNeedAuthorizeCmd 我要分享 ----> ");
- traceData("2");
+ ShareControl.getInstance( mContext ).showDialog();
+ Log.d( TAG, "handleNeedAuthorizeCmd 我要分享 ----> " );
+ traceData( "2" );
}
- } else if (mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK)) { //上报交通检查
- Log.d(TAG, "handleNeedAuthorizeCmd 上报交通检查 ----> ");
+ } else if ( mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK ) ) { //上报交通检查
+ Log.d( TAG, "handleNeedAuthorizeCmd 上报交通检查 ----> " );
uploadTrfficCheck();
- } else if (mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE)) { //上报封路
- Log.d(TAG, "handleNeedAuthorizeCmd 上报封路 ----> ");
+ } else if ( mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE ) ) { //上报封路
+ Log.d( TAG, "handleNeedAuthorizeCmd 上报封路 ----> " );
uploadRoadClosed();
- } else if (mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK)
- || mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN)
- || mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION)) { //上报拥堵, 分享路况, 上报路况
- Log.d(TAG, "handleNeedAuthorizeCmd 上报路况 ----> ");
+ } else if ( mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_ROAD_BLOCK )
+ || mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN )
+ || mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION ) ) { //上报拥堵, 分享路况, 上报路况
+ Log.d( TAG, "handleNeedAuthorizeCmd 上报路况 ----> " );
uploadRoadCondition();
}
} else {
- Log.e(TAG, "handleNeedAuthorizeCmd mVoiceCmdType == null ");
+ Log.e( TAG, "handleNeedAuthorizeCmd mVoiceCmdType == null " );
}
}
private void uploadRoadCondition() {
- traceTanluData("2");
- sendShareReceiver("1");
- Logger.d("EntrancePresenter", "mogoIntentListener 上报路况 ----> ");
- traceTypeData("1");
- ShareControl.getInstance(mContext).dismissDialog();
+ traceTanluData( "2" );
+ sendShareReceiver( "1" );
+ Logger.d( "EntrancePresenter", "mogoIntentListener 上报路况 ----> " );
+ traceTypeData( "1" );
+ ShareControl.getInstance( mContext ).dismissDialog();
}
private void uploadTrfficCheck() {
- sendShareReceiver("2");
- Logger.d("EntrancePresenter", "mogoIntentListener 分享交通检查 ----> ");
- traceTypeData("3");
- ShareControl.getInstance(mContext).dismissDialog();
+ sendShareReceiver( "2" );
+ Logger.d( "EntrancePresenter", "mogoIntentListener 分享交通检查 ----> " );
+ traceTypeData( "3" );
+ ShareControl.getInstance( mContext ).dismissDialog();
}
private void uploadRoadClosed() {
- sendShareReceiver("3");
- Logger.d("EntrancePresenter", "mogoIntentListener 分享封路 ----> ");
- traceTypeData("4");
- ShareControl.getInstance(mContext).dismissDialog();
+ sendShareReceiver( "3" );
+ Logger.d( "EntrancePresenter", "mogoIntentListener 分享封路 ----> " );
+ traceTypeData( "4" );
+ ShareControl.getInstance( mContext ).dismissDialog();
}
/**
@@ -293,10 +302,10 @@ public class EntrancePresenter extends Presenter {
*
* @param from
*/
- private void traceData(String from) {
- Map properties = new HashMap<>();
- properties.put("from", from);
- mAnalytics.track(ExtensionsModuleConst.LAUNCHER_SHARE_CLICK, properties);
+ private void traceData( String from ) {
+ Map< String, Object > properties = new HashMap<>();
+ properties.put( "from", from );
+ mAnalytics.track( ExtensionsModuleConst.LAUNCHER_SHARE_CLICK, properties );
}
private void shareOilPrice() {
@@ -310,14 +319,14 @@ public class EntrancePresenter extends Presenter {
/**
* 发送广播 1拥堵,2交通检查,3封路
*/
- private void sendShareReceiver(String type) {
- Logger.d("EntrancePresenter", "TanluCardViewFragment sendShareReceiver ---->");
+ private void sendShareReceiver( String type ) {
+ Logger.d( "EntrancePresenter", "TanluCardViewFragment 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);
- getContext().sendBroadcast(intent);
+ intent.setAction( "com.zhidao.roadcondition.share" );
+ intent.addFlags( Intent.FLAG_RECEIVER_FOREGROUND );
+ intent.addFlags( Intent.FLAG_INCLUDE_STOPPED_PACKAGES );
+ intent.putExtra( "type", type );
+ getContext().sendBroadcast( intent );
}
/**
@@ -331,27 +340,35 @@ public class EntrancePresenter extends Presenter {
*
* @param type
*/
- private void traceTypeData(String type) {
- Map properties = new HashMap<>();
- properties.put("type", type);
- mAnalytics.track(ExtensionsModuleConst.LAUNCHER_SHARE_TYPE, properties);
+ private void traceTypeData( String type ) {
+ Map< String, Object > properties = new HashMap<>();
+ properties.put( "type", type );
+ mAnalytics.track( ExtensionsModuleConst.LAUNCHER_SHARE_TYPE, properties );
}
- private void traceTanluData(String type) {
- Map properties = new HashMap<>();
- properties.put("type", type);
- mAnalytics.track(ExtensionsModuleConst.CARNET_USER_UPLOAD, properties);
+ private void traceTanluData( String type ) {
+ Map< String, Object > properties = new HashMap<>();
+ properties.put( "type", type );
+ mAnalytics.track( ExtensionsModuleConst.CARNET_USER_UPLOAD, properties );
}
public void unregisterUnWake() {
- AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.CANCLE_SHARE);
- AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.CLOSE);
-
- AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK);
- AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK);
- AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE);
-
+ AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.CANCLE_SHARE );
+ AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.CLOSE );
+ AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.UPLOAD_ROAD_BLOCK );
+ 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 9ea2e13101..6309e1b02c 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
@@ -9,4 +9,8 @@ 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/entrance/MogoEntranceButtonControllerImpl.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java
new file mode 100644
index 0000000000..2b4f032948
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java
@@ -0,0 +1,29 @@
+package com.mogo.module.extensions.entrance;
+
+import android.content.Context;
+import android.widget.TextView;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.mogo.service.MogoServicePaths;
+import com.mogo.service.entrance.ButtonIndex;
+import com.mogo.service.entrance.IMogoEntranceButtonController;
+
+/**
+ * @author congtaowang
+ * @since 2020-04-16
+ *
+ * 描述
+ */
+@Route( path = MogoServicePaths.PATH_ENTRANCE_BUTTON_API )
+public class MogoEntranceButtonControllerImpl implements IMogoEntranceButtonController {
+
+ @Override
+ public TextView getButton( ButtonIndex index ) {
+ return MogoEntranceButtons.getButton( index );
+ }
+
+ @Override
+ public void init( Context context ) {
+
+ }
+}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtons.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtons.java
new file mode 100644
index 0000000000..686d01e72e
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtons.java
@@ -0,0 +1,31 @@
+package com.mogo.module.extensions.entrance;
+
+import android.widget.TextView;
+
+import com.mogo.service.entrance.ButtonIndex;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author congtaowang
+ * @since 2020-04-16
+ *
+ * 描述
+ */
+public class MogoEntranceButtons {
+
+ private static Map< ButtonIndex, TextView > sButtons = new HashMap<>();
+
+ public static void save( ButtonIndex index, TextView btn ) {
+ sButtons.put( index, btn );
+ }
+
+ public static TextView getButton( ButtonIndex index ) {
+ return sButtons.get( index );
+ }
+
+ public static void clear() {
+ sButtons.clear();
+ }
+}
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 2fb0371afd..4dac1458fd 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
@@ -80,8 +80,8 @@
android:layout_marginRight="@dimen/module_ext_speed_limit_marginRight"
android:background="@drawable/module_ext_dw_speed_limit_bkg"
android:gravity="center"
- android:visibility="invisible"
android:orientation="vertical"
+ android:visibility="invisible"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
@@ -116,18 +116,18 @@
+ app:layout_constraintTop_toBottomOf="@+id/module_entrance_id_navi_info_panel" />
-
+ app:layout_constraintLeft_toLeftOf="parent">
+
+
+
+
+
+
+
\ 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 1436b11965..57dca9bae6 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
@@ -46,11 +46,14 @@
20px
- 130px
- 58px
+ 64px
+ 64px
20px
32px
+ 20px
+ 30px
22px
+ 8px
64px
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 faf483cc84..c4c5d9e9a2 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
@@ -44,11 +44,14 @@
32px
32px
- 200px
- 90px
+ 120px
+ 120px
32px
60px
+ 32px
+ 60px
32px
+ 20px
120px
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 5e54d8ef68..027c19d25e 100644
--- a/modules/mogo-module-extensions/src/main/res/values/dimens.xml
+++ b/modules/mogo-module-extensions/src/main/res/values/dimens.xml
@@ -44,11 +44,14 @@
32px
32px
- 200px
- 90px
+ 120px
+ 120px
32px
60px
+ 32px
+ 60px
32px
+ 20px
120px
diff --git a/modules/mogo-module-gps-simulator-debug/build.gradle b/modules/mogo-module-gps-simulator-debug/build.gradle
index 2382df5823..12fbf4774d 100644
--- a/modules/mogo-module-gps-simulator-debug/build.gradle
+++ b/modules/mogo-module-gps-simulator-debug/build.gradle
@@ -51,3 +51,5 @@ dependencies {
implementation project(':services:mogo-service-api')
}
}
+
+apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
diff --git a/modules/mogo-module-gps-simulator-noop/build.gradle b/modules/mogo-module-gps-simulator-noop/build.gradle
index 7427dc421a..4e4194af0d 100644
--- a/modules/mogo-module-gps-simulator-noop/build.gradle
+++ b/modules/mogo-module-gps-simulator-noop/build.gradle
@@ -46,3 +46,5 @@ dependencies {
implementation project(':modules:mogo-module-gps-simulator')
}
}
+
+apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
diff --git a/modules/mogo-module-gps-simulator/build.gradle b/modules/mogo-module-gps-simulator/build.gradle
index b3a5b2a6a6..df36963bb0 100644
--- a/modules/mogo-module-gps-simulator/build.gradle
+++ b/modules/mogo-module-gps-simulator/build.gradle
@@ -37,3 +37,5 @@ dependencies {
implementation project(':modules:mogo-module-authorize')
}
}
+
+apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
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 9e9a8846fe..6cfa8e244b 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
@@ -30,7 +30,7 @@ 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.WindowViewHandler;
+import com.mogo.module.main.windowview.FloatingViewHandler;
import com.mogo.module.service.ServiceConst;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
@@ -192,7 +192,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
// 避免事件穿透导致地图被滑动
mLeftShadowFrame.setOnClickListener( view -> {
} );
- WindowViewHandler.init( mFloatingLayout );
+ FloatingViewHandler.init( mFloatingLayout );
}
// 隐藏布局
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 06f4296965..08c8f4417e 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
@@ -7,6 +7,7 @@ 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;
@@ -26,7 +27,7 @@ public interface MogoModulesHandler extends IMogoMapListener,
IMogoLocationListener,
IMogoMarkerClickListener,
IMogoAimlessModeListener,
- IMogoCarLocationChangedListener {
+ IMogoCarLocationChangedListener2 {
/**
* 地图加载完成回调
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 11476ac886..e2876f8737 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
@@ -2,6 +2,7 @@ package com.mogo.module.main.cards;
import android.content.Context;
import android.content.Intent;
+import android.location.Location;
import android.text.TextUtils;
import android.view.MotionEvent;
@@ -17,6 +18,7 @@ import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.model.MogoPoi;
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.map.navi.IMogoNaviListener2;
import com.mogo.map.navi.MogoCongestionInfo;
@@ -109,7 +111,7 @@ public class MogoModulesManager implements MogoModulesHandler,
final List< MogoModule > modules = MogoModulePaths.getModules();
if ( modules != null && !modules.isEmpty() ) {
for ( MogoModule module : modules ) {
- Logger.d(TAG,"module.getPath():" + module.getPath() + " name: " + module.getName());
+ Logger.d( TAG, "module.getPath():" + module.getPath() + " name: " + module.getName() );
IMogoModuleProvider provider = load( module.getPath() );
if ( provider != null ) {
mModuleProviders.put( module, provider );
@@ -655,15 +657,30 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onCarLocationChanged( MogoLatLng latLng ) {
+ // do nothing.
+ }
+
+ @Override
+ public void onCarLocationChanged2( Location latLng ) {
Iterator< IMogoCarLocationChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getCarLocationChangedListener();
if ( iterator == null ) {
return;
}
+ MogoLatLng target = null;
while ( iterator.hasNext() ) {
IMogoCarLocationChangedListener listener = iterator.next();
- if ( listener != null ) {
+ if ( listener instanceof IMogoCarLocationChangedListener2 ) {
try {
- listener.onCarLocationChanged( latLng );
+ ( ( IMogoCarLocationChangedListener2 ) listener ).onCarLocationChanged2( latLng );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ } else {
+ try {
+ if ( target == null ) {
+ target = new MogoLatLng( latLng.getLatitude(), latLng.getLongitude() );
+ }
+ listener.onCarLocationChanged( target );
} catch ( Exception e ) {
e.printStackTrace();
}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/WindowViewHandler.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/FloatingViewHandler.java
similarity index 50%
rename from modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/WindowViewHandler.java
rename to modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/FloatingViewHandler.java
index 1b37bea1c9..5485f4778d 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/WindowViewHandler.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/FloatingViewHandler.java
@@ -13,7 +13,7 @@ import com.mogo.utils.logger.Logger;
*
* 描述
*/
-public class WindowViewHandler {
+public class FloatingViewHandler {
private static final String TAG = "WindowViewHandler";
@@ -35,9 +35,9 @@ public class WindowViewHandler {
*/
private static boolean sMovable = false;
- public static FrameLayout sFloatingLayout = null;
+ private static FrameLayout sFloatingLayout = null;
- public static void init(FrameLayout frameLayout) {
+ public static void init( FrameLayout frameLayout ) {
sFloatingLayout = frameLayout;
}
@@ -49,20 +49,20 @@ public class WindowViewHandler {
* @param y
* @param movable
*/
- public static void addView(View view, int x, int y, boolean movable) {
- if (view == null) {
+ public static void addView( View view, int x, int y, boolean movable ) {
+ if ( view == null ) {
return;
}
- if (sFloatingLayout == null) {
- Logger.e(TAG, "no floating frame. ");
+ if ( sFloatingLayout == null ) {
+ Logger.e( TAG, "no floating frame. " );
return;
}
- FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+ FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT );
params.leftMargin = x;
params.topMargin = y;
- sFloatingLayout.addView(view, params);
+ sFloatingLayout.addView( view, params );
}
/**
@@ -72,16 +72,16 @@ public class WindowViewHandler {
* @param params
* @param movable
*/
- public static void addView(View view, FrameLayout.LayoutParams params, boolean movable) {
- if (view == null) {
+ public static void addView( View view, FrameLayout.LayoutParams params, boolean movable ) {
+ if ( view == null ) {
return;
}
- if (sFloatingLayout == null) {
- Logger.e(TAG, "no floating frame. ");
+ if ( sFloatingLayout == null ) {
+ Logger.e( TAG, "no floating frame. " );
return;
}
- sFloatingLayout.addView(view, params);
+ sFloatingLayout.addView( view, params );
}
/**
@@ -93,27 +93,27 @@ public class WindowViewHandler {
* @param y
* @param movable
*/
- public static void addView(View view, int priority, int x, int y, boolean movable) {
- if (view == null) {
+ public static void addView( View view, int priority, int x, int y, boolean movable ) {
+ if ( view == null ) {
return;
}
- if (sFloatingLayout == null) {
- Logger.e(TAG, "no floating frame. ");
+ if ( sFloatingLayout == null ) {
+ Logger.e( TAG, "no floating frame. " );
return;
}
- if (sView == view) {
- Logger.w(TAG, "改布局已添加且没有移除,不操作");
+ if ( sView == view ) {
+ Logger.w( TAG, "改布局已添加且没有移除,不操作" );
return;
}
- if (sView != null) {
- if (priority < sPriority) {
- Logger.w(TAG, "过滤低优先级布局");
+ if ( sView != null ) {
+ if ( priority < sPriority ) {
+ Logger.w( TAG, "过滤低优先级布局" );
return;
}
- sFloatingLayout.removeView(sView);
+ sFloatingLayout.removeView( sView );
}
sView = view;
sMovable = movable;
@@ -131,27 +131,27 @@ public class WindowViewHandler {
* @param params
* @param movable
*/
- public static void addView(View view, int priority, FrameLayout.LayoutParams params, boolean movable) {
- if (view == null) {
+ public static void addView( View view, int priority, FrameLayout.LayoutParams params, boolean movable ) {
+ if ( view == null ) {
return;
}
- if (sFloatingLayout == null) {
- Logger.e(TAG, "no floating frame. ");
+ if ( sFloatingLayout == null ) {
+ Logger.e( TAG, "no floating frame. " );
return;
}
- if (sView == view) {
- Logger.w(TAG, "改布局已添加且没有移除,不操作");
+ if ( sView == view ) {
+ Logger.w( TAG, "改布局已添加且没有移除,不操作" );
return;
}
- if (sView != null) {
- if (priority < sPriority) {
- Logger.w(TAG, "过滤低优先级布局");
+ if ( sView != null ) {
+ if ( priority < sPriority ) {
+ Logger.w( TAG, "过滤低优先级布局" );
return;
}
- sFloatingLayout.removeView(sView);
+ sFloatingLayout.removeView( sView );
}
sView = view;
sMovable = movable;
@@ -160,15 +160,15 @@ public class WindowViewHandler {
addView();
}
- public static void removeView(View view) {
- if (sFloatingLayout == null) {
+ public static void removeView( View view ) {
+ if ( sFloatingLayout == null ) {
return;
}
- if (view == null) {
+ if ( view == null ) {
return;
}
- sFloatingLayout.removeView(view);
- if (sView == view) {
+ sFloatingLayout.removeView( view );
+ if ( sView == view ) {
sView = null;
sPriority = Integer.MIN_VALUE;
sMovable = false;
@@ -177,29 +177,35 @@ public class WindowViewHandler {
}
private static void addView() {
- if (sView == null) {
+ if ( sView == null ) {
return;
}
FrameLayout.LayoutParams params = sParams;
- if (params == null) {
- params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+ if ( params == null ) {
+ params = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT );
params.leftMargin = sX;
params.topMargin = sY;
}
- sFloatingLayout.addView(sView, params);
+ sFloatingLayout.addView( sView, params );
}
- public static void attachMovementEvent(View view, WindowManager.LayoutParams params) {
- if (view == null) {
+ public static void attachMovementEvent( View view, WindowManager.LayoutParams params ) {
+ if ( view == null ) {
return;
}
- view.setOnTouchListener((v, event) -> {
+ view.setOnTouchListener( ( v, event ) -> {
DispatchTouchEventWrapper.getInstance()
- .attach(view, params)
- .handle(event);
+ .attach( view, params )
+ .handle( event );
return false;
- });
+ } );
+ }
+
+ public static void setVisible( boolean visible ) {
+ if ( sFloatingLayout != null ) {
+ sFloatingLayout.setVisibility( visible ? View.VISIBLE : View.INVISIBLE );
+ }
}
}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/MogoWindowManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/MogoWindowManager.java
index 2357701d68..f7b69a8dd2 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/MogoWindowManager.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/MogoWindowManager.java
@@ -14,36 +14,46 @@ import com.mogo.service.windowview.IMogoWindowManager;
*
* 根据优先级控制显示 window view.
*/
-@Route(path = MogoServicePaths.PATH_WINDOW_MANAGER)
+@Route( path = MogoServicePaths.PATH_WINDOW_MANAGER )
public class MogoWindowManager implements IMogoWindowManager {
@Override
- public void addView(View view, int x, int y, boolean movable) {
- WindowViewHandler.addView(view, x, y, movable);
+ public void addView( View view, int x, int y, boolean movable ) {
+ FloatingViewHandler.addView( view, x, y, movable );
}
@Override
- public void addView(View view, FrameLayout.LayoutParams params, boolean movable) {
- WindowViewHandler.addView(view, params, movable);
+ public void addView( View view, FrameLayout.LayoutParams params, boolean movable ) {
+ FloatingViewHandler.addView( view, params, movable );
}
@Override
- public void addView(int priority, View view, int x, int y, boolean movable) {
- WindowViewHandler.addView(view, priority, x, y, movable);
+ public void addView( int priority, View view, int x, int y, boolean movable ) {
+ FloatingViewHandler.addView( view, priority, x, y, movable );
}
@Override
- public void addView(int priority, View view, FrameLayout.LayoutParams params, boolean movable) {
- WindowViewHandler.addView(view, priority, params, movable);
+ public void addView( int priority, View view, FrameLayout.LayoutParams params, boolean movable ) {
+ FloatingViewHandler.addView( view, priority, params, movable );
}
@Override
- public void removeView(View view) {
- WindowViewHandler.removeView(view);
+ public void removeView( View view ) {
+ FloatingViewHandler.removeView( view );
}
@Override
- public void init(Context context) {
+ public void hideAll() {
+ FloatingViewHandler.setVisible( false );
+ }
+
+ @Override
+ public void showAll() {
+ FloatingViewHandler.setVisible( true );
+ }
+
+ @Override
+ public void init( Context context ) {
}
}
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 cc2ca88ad3..d5db0d506d 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
@@ -21,7 +21,8 @@ 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.MogoModulePaths;
+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;
@@ -32,12 +33,8 @@ import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.module.IMogoSearchManager;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.strategy.IMogoRefreshStrategyController;
-import com.mogo.service.voice.IMogoVoiceListener;
-import com.mogo.service.voice.IMogoVoiceManager;
-import com.mogo.utils.AppUtils;
import com.mogo.utils.ResourcesHelper;
import com.mogo.utils.UiThreadHandler;
-import com.mogo.utils.WindowUtils;
import com.mogo.utils.logger.Logger;
import java.util.Map;
@@ -62,6 +59,7 @@ public class MapPresenter extends Presenter< MapView > implements
private IMogoStatusManager mStatusManager;
private IMogoRegisterCenter mRegisterCenter;
private IMogoLauncher mLauncher;
+ private Rect mDisplayOverviewBounds;
public MapPresenter( MapView view ) {
super( view );
@@ -99,11 +97,8 @@ public class MapPresenter extends Presenter< MapView > implements
mView.getUIController().changeMapMode( EnumMapUI.CarUp_2D );
} else if ( opera_type == 1 ) {
mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D );
- //AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
-
} else if ( opera_type == 2 ) {
mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D );
- //AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
}
}
@@ -123,18 +118,14 @@ public class MapPresenter extends Presenter< MapView > implements
//intent.putExtra("EXTRA_ENDURANCE_DATA", continueNavi);
//继续导航
} else if ( key_type == 10049 ) {
- boolean extra_endurance_data =
- intent.getBooleanExtra( "EXTRA_ENDURANCE_DATA", false );
+ boolean extra_endurance_data = intent.getBooleanExtra( "EXTRA_ENDURANCE_DATA", false );
if ( extra_endurance_data ) {
onContinueNavigation();
}
} else if ( key_type == 10006 ) {
-
int extra_is_show = intent.getIntExtra( "EXTRA_IS_SHOW", 0 );
-
if ( extra_is_show == 0 ) {
- mStatusManager.setUserInteractionStatus( TAG, true, false );
- mView.getUIController().displayOverview();
+ onDisplayOverview();
} else {
onContinueNavigation();
}
@@ -173,13 +164,16 @@ public class MapPresenter extends Presenter< MapView > implements
/**
* 继续导航
*/
- private void onContinueNavigation(){
+ private void onContinueNavigation() {
+
if ( mStatusManager.isMainPageOnResume() ) {
+ mStatusManager.setDisplayOverview( TAG, false );
mView.getUIController().recoverLockMode();
} else {
mLauncher.backToLauncher( getContext() );
UiThreadHandler.postDelayed( () -> {
try {
+ mStatusManager.setDisplayOverview( TAG, false );
mView.getUIController().recoverLockMode();
} catch ( Exception e ) {
e.printStackTrace();
@@ -188,6 +182,16 @@ public class MapPresenter extends Presenter< MapView > implements
}
}
+ private void onDisplayOverview() {
+ if ( !mMogoMapService.getNavi( getContext() ).isNaviing() ) {
+ Logger.d( TAG, "未开始导航." );
+ return;
+ }
+ mStatusManager.setUserInteractionStatus( TAG, true, false );
+ mStatusManager.setDisplayOverview( TAG, true );
+ mView.getUIController().displayOverview( mDisplayOverviewBounds );
+ }
+
private void zoomMap( boolean zoomIn ) {
boolean isLocked = mMogoMapService.getMapUIController().isCarLocked();
MapControlResult result = mView.getUIController().changeZoom( zoomIn );
@@ -229,11 +233,18 @@ public class MapPresenter extends Presenter< MapView > implements
IMogoNavi mogoNavi = mMogoMapService.getNavi( getContext() );
mogoNavi.setCalculatePathDisplayBounds( new Rect(
+ ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_calculate_path_display_overview_left_margin ),
+ ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_calculate_path_display_overview_top_margin ),
+ ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_calculate_path_display_overview_right_margin ),
+ ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_calculate_path_display_overview_bottom_margin )
+ ) );
+
+ 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 )
- ) );
+ );
}
@Override
@@ -259,8 +270,7 @@ public class MapPresenter extends Presenter< MapView > implements
private void registerVoiceCmd() {
for ( Map.Entry< String, String[] > entry : VoiceConstants.sVoiceCmds.entrySet() ) {
- AIAssist.getInstance( getContext() )
- .registerUnWakeupCommand( entry.getKey(), entry.getValue(), this );
+ AIAssist.getInstance( getContext() ).registerUnWakeupCommand( entry.getKey(), entry.getValue(), this );
}
for ( String cmd : VoiceConstants.sCmds ) {
@@ -293,12 +303,10 @@ public class MapPresenter extends Presenter< MapView > implements
switch ( cmd ) {
case VoiceConstants.CMD_MAP_TRAFFIC_MODE_UN_WAKEUP:
case VoiceConstants.CMD_MAP_TRAFFIC_MODE:
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已打开", null );
mView.getUIController().setTrafficEnabled( true );
break;
case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP:
case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE:
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已关闭", null );
mView.getUIController().setTrafficEnabled( false );
break;
case VoiceConstants.CMD_MAP_ZOOM_IN_UN_WAKEUP:
@@ -314,12 +322,10 @@ public class MapPresenter extends Presenter< MapView > implements
case VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP:
case VoiceConstants.CMD_MAP_NORTH_UP_MODE:
mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D );
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
break;
case VoiceConstants.CMD_MAP_3D_UN_WAKEUP:
case VoiceConstants.CMD_MAP_3D:
mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D );
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
break;
case VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP:
@@ -359,7 +365,7 @@ public class MapPresenter extends Presenter< MapView > implements
AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
break;
case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE:
- mView.getUIController().displayOverview();
+ onDisplayOverview();
break;
case VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE:
onContinueNavigation();
diff --git a/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml
index 7f51191319..bcf618205a 100644
--- a/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml
+++ b/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml
@@ -1,7 +1,13 @@
- 558px
- 174px
- 32px
- 80px
+ 558px
+ 174px
+ 32px
+ 80px
+
+
+ 534px
+ 100px
+ 68px
+ 32px
\ No newline at end of file
diff --git a/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml
index 275b7ffcd1..2d58420a11 100644
--- a/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml
@@ -1,7 +1,13 @@
- 977px
- 249px
- 61px
- 80px
+ 977px
+ 249px
+ 61px
+ 80px
+
+
+ 952px
+ 170px
+ 122px
+ 61px
\ No newline at end of file
diff --git a/modules/mogo-module-map/src/main/res/values/dimens.xml b/modules/mogo-module-map/src/main/res/values/dimens.xml
index 275b7ffcd1..4cf55c67a5 100644
--- a/modules/mogo-module-map/src/main/res/values/dimens.xml
+++ b/modules/mogo-module-map/src/main/res/values/dimens.xml
@@ -1,7 +1,13 @@
- 977px
- 249px
- 61px
- 80px
+
+ 977px
+ 249px
+ 61px
+ 80px
+
+ 952px
+ 170px
+ 122px
+ 61px
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/NaviManager.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/NaviManager.kt
index e67b538fc0..13428466a1 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/NaviManager.kt
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/NaviManager.kt
@@ -36,8 +36,6 @@ object NaviManager {
SearchServiceHolder.getNavi().stopNavi()
} else if (key_type == 20009) {
SearchServiceHolder.mogoLauncher.backToLauncher(context)
- gotoSearch()
-
} else if (key_type == 10005) {
// * 仅在导航场景下,⽀持第三⽅进⾏路线偏好的重新选择。
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 66c998b9f9..4237428e43 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
@@ -12,186 +12,195 @@ import com.mogo.service.module.IMogoSettingManager
* 2020-01-12.
*/
object SettingManager : IMogoSettingManager {
- private val KEY_PAHT_PREFER = "keyPath"
- private val KEY_VOLUME = "keyVolume"
- private val KEY_VOICE_STYLE = "keyVoice"
- private val KEY_MAP_TYPE = "keyMapType"
- private lateinit var settings: SharedPreferences
+ private val KEY_PAHT_PREFER = "keyPath"
+ private val KEY_VOLUME = "keyVolume"
+ private val KEY_VOICE_STYLE = "keyVoice"
+ private val KEY_MAP_TYPE = "keyMapType"
+ private val KEY_AIMLESS_MODE_TYPE = "keyAimlessModeType"
+ private lateinit var settings: SharedPreferences
- /**
- * 是否躲避拥堵
- */
- private var congestion = false
+ /**
+ * 是否躲避拥堵
+ */
+ private var congestion = false
- /**
- * 不走高速
- */
- private var avoidSpeed = false
+ /**
+ * 不走高速
+ */
+ private var avoidSpeed = false
- /**
- * 避免收费
- */
- private var cost = false
+ /**
+ * 避免收费
+ */
+ private var cost = false
- /**
- * 高速优先
- */
- private var highSpeed = false
- /**
- * 模拟导航
- */
- private var isMonitor: Boolean = false
+ /**
+ * 高速优先
+ */
+ private var highSpeed = false
+ /**
+ * 模拟导航
+ */
+ private var isMonitor: Boolean = false
- /**
- * GPS 模拟
- */
- private var isGpsSimulator: Boolean = false
+ /**
+ * GPS 模拟
+ */
+ private var isGpsSimulator: Boolean = false
- override fun getPathPrefer(): Int {
- return settings!!.getInt(KEY_PAHT_PREFER, 0)
- }
-
- override fun getVolume(): Int {
- return settings!!.getInt(KEY_VOLUME, 0)
- }
-
- override fun getVoiceStyle(): Int {
- return settings!!.getInt(KEY_VOICE_STYLE, R.id.rb_navi_detail)
- }
-
- override fun getMapType(): Int {
- return settings!!.getInt(KEY_MAP_TYPE, R.id.rb_navi_day)
- }
-
- fun setPathPrefer(type: Int) {
- settings!!.edit()
- .putInt(KEY_PAHT_PREFER, type)
- .apply()
- }
-
- fun setVolume(type: Int) {
- settings!!.edit()
- .putInt(KEY_VOLUME, type)
- .apply()
- }
-
- fun setVoiceStyle(type: Int) {
- settings!!.edit()
- .putInt(KEY_VOICE_STYLE, type)
- .apply()
- }
-
- fun setMapType(type: Int) {
- settings!!.edit()
- .putInt(KEY_MAP_TYPE, type)
- .apply()
- }
-
- fun setMonitor(type: Boolean) {
- isMonitor = type
- }
-
- fun isMonitor(): Boolean {
- return isMonitor
- }
-
- fun setGpsSimulator(type:Boolean){
- isGpsSimulator = type
- }
-
- fun isGpsSimulator(): Boolean {
- return isGpsSimulator
- }
-
- /**
- * 是否躲避拥堵
- */
- fun congestion(congestion: Boolean) {
- this.congestion = congestion
- save()
- }
-
- /**
- * 不走高速
- */
- fun avoidSpeed(avoidSpeed: Boolean) {
- this.avoidSpeed = avoidSpeed
- if (avoidSpeed) {
- this.highSpeed = false
+ override fun getPathPrefer(): Int {
+ return settings!!.getInt(KEY_PAHT_PREFER, 0)
}
- save()
- }
-
- /**
- * 避免收费
- */
- fun cost(cost: Boolean) {
- this.cost = cost
- if (cost) {
- this.highSpeed = false
+ override fun getVolume(): Int {
+ return settings!!.getInt(KEY_VOLUME, 0)
}
- save()
- }
-
- /**
- * 高速优先
- */
- fun highSpeed(highSpeed: Boolean) {
- this.highSpeed = highSpeed
- if (highSpeed) {
- this.avoidSpeed = false
- this.cost = false
+ override fun getVoiceStyle(): Int {
+ return settings!!.getInt(KEY_VOICE_STYLE, R.id.rb_navi_detail)
}
- save()
- }
+ override fun getMapType(): Int {
+ return settings!!.getInt(KEY_MAP_TYPE, R.id.rb_navi_day)
+ }
- fun isCongestion(): Boolean {
- return congestion
- }
+ fun setPathPrefer(type: Int) {
+ settings!!.edit()
+ .putInt(KEY_PAHT_PREFER, type)
+ .apply()
+ }
- fun isAvoidSpeed(): Boolean {
- return avoidSpeed
- }
+ fun setVolume(type: Int) {
+ settings!!.edit()
+ .putInt(KEY_VOLUME, type)
+ .apply()
+ }
- fun isCost(): Boolean {
- return cost
- }
+ fun setVoiceStyle(type: Int) {
+ settings!!.edit()
+ .putInt(KEY_VOICE_STYLE, type)
+ .apply()
+ }
- fun isHighSpeed(): Boolean {
- return highSpeed
- }
+ fun setMapType(type: Int) {
+ settings!!.edit()
+ .putInt(KEY_MAP_TYPE, type)
+ .apply()
+ }
- private fun save() {
- settings.edit()
- .putBoolean("congestion", congestion)
- .putBoolean("avoidSpeed", avoidSpeed)
- .putBoolean("cost", cost)
- .putBoolean("highSpeed", highSpeed)
- .apply()
- updateConfig()
+ fun setMonitor(type: Boolean) {
+ isMonitor = type
+ }
- }
+ fun isMonitor(): Boolean {
+ return isMonitor
+ }
- override fun init(context: Context) {
- settings = context.getSharedPreferences("settings", Context.MODE_PRIVATE)
+ fun setGpsSimulator(type: Boolean) {
+ isGpsSimulator = type
+ }
- congestion = settings.getBoolean("congestion", false)
- avoidSpeed = settings.getBoolean("avoidSpeed", false)
- cost = settings.getBoolean("cost", false)
- highSpeed = settings.getBoolean("highSpeed", false)
- updateConfig()
- }
+ fun isGpsSimulator(): Boolean {
+ return isGpsSimulator
+ }
- private fun updateConfig() {
- SearchServiceHolder.getNavi()
- .naviConfig
- .cost(cost)
- .avoidSpeed(avoidSpeed)
- .highSpeed(highSpeed)
- .congestion(congestion)
- }
+ /**
+ * 是否躲避拥堵
+ */
+ fun congestion(congestion: Boolean) {
+ this.congestion = congestion
+ save()
+ }
+
+ /**
+ * 不走高速
+ */
+ fun avoidSpeed(avoidSpeed: Boolean) {
+ this.avoidSpeed = avoidSpeed
+ if (avoidSpeed) {
+ this.highSpeed = false
+ }
+ save()
+
+ }
+
+ /**
+ * 避免收费
+ */
+ fun cost(cost: Boolean) {
+ this.cost = cost
+ if (cost) {
+ this.highSpeed = false
+ }
+ save()
+
+ }
+
+ /**
+ * 高速优先
+ */
+ fun highSpeed(highSpeed: Boolean) {
+ this.highSpeed = highSpeed
+ if (highSpeed) {
+ this.avoidSpeed = false
+ this.cost = false
+ }
+ save()
+
+ }
+
+ fun isCongestion(): Boolean {
+ return congestion
+ }
+
+ fun isAvoidSpeed(): Boolean {
+ return avoidSpeed
+ }
+
+ fun isCost(): Boolean {
+ return cost
+ }
+
+ fun isHighSpeed(): Boolean {
+ return highSpeed
+ }
+
+ private fun save() {
+ settings.edit()
+ .putBoolean("congestion", congestion)
+ .putBoolean("avoidSpeed", avoidSpeed)
+ .putBoolean("cost", cost)
+ .putBoolean("highSpeed", highSpeed)
+ .apply()
+ updateConfig()
+
+ }
+
+ override fun init(context: Context) {
+ settings = context.getSharedPreferences("settings", Context.MODE_PRIVATE)
+
+ congestion = settings.getBoolean("congestion", false)
+ avoidSpeed = settings.getBoolean("avoidSpeed", false)
+ cost = settings.getBoolean("cost", false)
+ highSpeed = settings.getBoolean("highSpeed", false)
+ updateConfig()
+ }
+
+ private fun updateConfig() {
+ SearchServiceHolder.getNavi()
+ .naviConfig
+ .cost(cost)
+ .avoidSpeed(avoidSpeed)
+ .highSpeed(highSpeed)
+ .congestion(congestion)
+ }
+
+ fun setAimlessMode(type: Int){
+ settings.edit().putInt(KEY_AIMLESS_MODE_TYPE, type).apply()
+ }
+
+ fun getAimlessMode():Int {
+ return settings.getInt(KEY_AIMLESS_MODE_TYPE, R.id.aimlessModeClose)
+ }
}
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 40affa22cf..3fbb093871 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
@@ -40,255 +40,225 @@ import kotlinx.android.synthetic.main.fragment_search_category.tv_navi_navi
* @author zyz
* 2020-01-09.
*/
-class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBack {
+class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBack, IMogoMarkerClickListener {
// override fun onMarkerClicked(marker: IMogoMarker?): Boolean {
//
// return true
// }
- override fun onCmdSelected(cmd: String?) {
- if (cmd?.startsWith("position") == true) {
- var index = cmd.substring(8)
- mAdapter.setCurrent(index.toInt())
- updateMarker()
- goPath()
+ override fun onCmdSelected(cmd: String?) {
+ if (cmd?.startsWith("position") == true) {
+ var index = cmd.substring(8)
+ mAdapter.current = index.toInt()
+ updateMarker(false)
+ goPath()
+ }
}
- }
- override fun onCmdAction(speakText: String?) {
- }
+ override fun onCmdAction(speakText: String?) {
+ }
- override fun onCmdCancel(speakText: String?) {
- }
+ override fun onCmdCancel(speakText: String?) {
+ }
- override fun onSpeakEnd(speakText: String?) {
- }
+ override fun onSpeakEnd(speakText: String?) {
+ }
- override fun onSpeakSelectTimeOut(speakText: String?) {
- }
+ override fun onSpeakSelectTimeOut(speakText: String?) {
+ }
- private val TAG: String = "CategorySearchFragment"
- private var addMarkers: ArrayList = ArrayList()
- var arrayList = ArrayList()
- var locationList = ArrayList()
+ 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
- pb_path.visibility = View.GONE
- AIAssist.getInstance(context)
- .speakTTSVoice(String.format("搜索到%d个位置,请选择", datums?.size))
+ private lateinit var cmds: ArrayList
+ override fun renderSearchPoiResult(datums: List?) {
+ mAdapter.setDatas(datums)
+ cv_search_result.visibility = View.VISIBLE
+ pb_path.visibility = View.GONE
+ AIAssist.getInstance(context).speakTTSVoice(String.format("搜索到%d个位置,请选择", datums?.size))
- arrayList.clear()
- locationList.clear()
+ arrayList.clear()
+ locationList.clear()
- for (index in 0 until datums!!.size) {
- var decodeResource =
- BitmapFactory.decodeResource(
- resources,
- if (mAdapter.current == index) R.mipmap.icon_search_category_checked else R.mipmap.icon_search_category_unchecked
- )
+ for (index in 0 until datums!!.size) {
+ var decodeResource = BitmapFactory.decodeResource(
+ resources,
+ if (mAdapter.current == index) R.mipmap.icon_search_category_checked else R.mipmap.icon_search_category_unchecked
+ )
- var createWaterMask =
- BitmapUtils.createWaterMask(
- context, decodeResource, (index + 1).toString(), R.color.white, 18
- )
- val options = MogoMarkerOptions()
- .icon(createWaterMask)
- .latitude(datums[index].point?.lat ?: 0.0)
- .owner("CategorySearchFragment")
- .`object`(index)
+ var createWaterMask = BitmapUtils.createWaterMask(
+ context, decodeResource, (index + 1).toString(), R.color.white, 18
+ )
+ val options = MogoMarkerOptions()
+ .icon(createWaterMask)
+ .latitude(datums[index].point?.lat ?: 0.0)
+ .owner("CategorySearchFragment")
+ .`object`(index)
// .anchor(0.5f, 1f)
- .longitude(datums[index].point?.lng ?: 0.0)
- arrayList.add(options)
- locationList.add(datums[index].point)
+ .longitude(datums[index].point?.lng ?: 0.0)
+ arrayList.add(options)
+ locationList.add(datums[index].point)
- var int2String = StringUtils.int2String(index + 1)
- AIAssist.getInstance(context)
- .registerUnWakeupCommand(
- "position" + index, arrayOf("第" + int2String + "个", "第" + int2String + "条"), this
- )
- cmds.add("position" + index)
+ var int2String = StringUtils.int2String(index + 1)
+ AIAssist.getInstance(context).registerUnWakeupCommand("position${index}", arrayOf("第${int2String}个", "第${int2String}条"), this)
+ cmds.add("position" + index)
+ }
+ addMarkers()
}
- addMarkers()
- }
- private fun addMarkers() {
- addMarkers.clear()
- var marginBounder = resources.getDimensionPixelSize(R.dimen.dp_60) * 2
- SearchServiceHolder.getMapUIController()
- .showBounds(
- TAG, null, locationList, Rect(
- cv_search_result.width + marginBounder, marginBounder, marginBounder, marginBounder
- ), false
+ private fun addMarkers() {
+ addMarkers.clear()
+ var marginBounder = resources.getDimensionPixelSize(R.dimen.dp_60) * 2
+ SearchServiceHolder.getMapUIController().showBounds(TAG,
+ null,
+ locationList,
+ Rect(cv_search_result.width + marginBounder, marginBounder, marginBounder, marginBounder),
+ false
)
- for (options in arrayList) {
- var addMarker = SearchServiceHolder.getMarkerManger()
- .addMarker(TAG, options)
- addMarkers.add(addMarker)
- }
- addClick()
- }
-
- private fun registerVoice() {
-
- for (index in 0 until cmds.size) {
- var int2String = StringUtils.int2String(index + 1)
- AIAssist.getInstance(context)
- .registerUnWakeupCommand(
- "position" + index, arrayOf("第" + int2String + "个", "第" + int2String + "条"), this
- )
+ for (options in arrayList) {
+ var addMarker = SearchServiceHolder.getMarkerManger().addMarker(TAG, options)
+ addMarker.onMarkerClickListener = this
+ addMarkers.add(addMarker)
+ }
}
- }
-
- override fun onHiddenChanged(hidden: Boolean) {
- super.onHiddenChanged(hidden)
- if (!hidden) {
- registerVoice()
- addMarkers()
- } else {
- unRegisterVoice()
+ private fun registerVoice() {
+ for (index in 0 until cmds.size) {
+ var int2String = StringUtils.int2String(index + 1)
+ AIAssist.getInstance(context).registerUnWakeupCommand("position${index}", arrayOf("第${int2String}个", "第${int2String}条"), this)
+ }
}
- }
- private fun addClick() {
- if (addMarkers != null) {
- for (item in addMarkers!!) {
- item.setOnMarkerClickListener {
+ override fun onHiddenChanged(hidden: Boolean) {
+ super.onHiddenChanged(hidden)
+ if (!hidden) {
+ registerVoice()
+ addMarkers()
+ } else {
+ unRegisterVoice()
+ }
+ }
- var index = it.mogoMarkerOptions.`object` as Int
- mAdapter.current = index
- rv_search_result.smoothScrollToPosition(index)
- updateMarker()
- true
+ override fun onMarkerClicked(marker: IMogoMarker?): Boolean {
+ var index = marker?.mogoMarkerOptions?.`object` as Int
+ mAdapter.current = index
+ rv_search_result.smoothScrollToPosition(index)
+ updateMarker()
+ return true
+ }
+
+ private lateinit var mAdapter: SearchCategoryAdapter
+
+ private lateinit var mSearchPresenter: CategoryPresenter
+ private var category: String? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ category = arguments?.getString("category")
+ mSearchPresenter = CategoryPresenter(this)
+ lifecycle.addObserver(mSearchPresenter)
+ cmds = ArrayList()
+ }
+
+ override fun getLayoutId(): Int {
+ return R.layout.fragment_search_category
+ }
+
+ override fun onViewCreated(
+ view: View,
+ savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ mAdapter = SearchCategoryAdapter(activity, ArrayList())
+
+ rv_search_result.layoutManager = LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
+ rv_search_result.adapter = mAdapter
+ et_navi_search.setText(category)
+
+
+ iv_navi_back.setOnClickListener {
+ SearchServiceHolder.fragmentManager.pop()
}
- }
+ tv_navi_navi.setOnClickListener {
+ goPath()
+ }
+ mAdapter.setOnClickListener {
+ var position = it.getTag(R.id.tag_position) as Int
+ mAdapter.current = position
+ updateMarker()
+ }
+
+ AIAssist.getInstance(context).registerUnWakeupCommand("back", arrayOf("关闭", "返回"), this)
}
- }
-
- private lateinit var mAdapter: SearchCategoryAdapter
-
- private lateinit var mSearchPresenter: CategoryPresenter
- private var category: String? = null
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- category = arguments?.getString("category")
- mSearchPresenter = CategoryPresenter(this)
- lifecycle.addObserver(mSearchPresenter)
- cmds = ArrayList()
- }
-
- override fun getLayoutId(): Int {
- return R.layout.fragment_search_category
- }
-
- override fun onViewCreated(
- view: View,
- savedInstanceState: Bundle?
- ) {
- super.onViewCreated(view, savedInstanceState)
- mAdapter = SearchCategoryAdapter(activity, ArrayList())
-
- rv_search_result.layoutManager =
- LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
-
- rv_search_result.adapter = mAdapter
-
- et_navi_search.setText(category)
-
-
- iv_navi_back.setOnClickListener {
- SearchServiceHolder.fragmentManager.pop()
+ private fun goPath() {
+ mAdapter.currentItem?.let {
+ AddressManager.calculatePath(mAdapter.currentItem.point)
+ }
}
- tv_navi_navi.setOnClickListener {
+ private fun updateMarker(moveToCenter:Boolean = true) {
- goPath()
- }
- mAdapter.setOnClickListener {
- var position = it.getTag(R.id.tag_position) as Int
- mAdapter.setCurrent(position)
- updateMarker()
+ addMarkers?.get(mAdapter.lastPosition)?.setIcon(getMarkerIcon(mAdapter.lastPosition))
+ var current = addMarkers?.get(mAdapter.current)
+ current?.setIcon(getMarkerIcon(mAdapter.current))
+ current?.setToTop()
+ 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)
+ }
}
- AIAssist.getInstance(context)
- .registerUnWakeupCommand("back", arrayOf("关闭", "返回"), this)
+ private fun getMarkerIcon(index: Int): Bitmap {
+ var decodeResource = BitmapFactory.decodeResource(
+ resources,
+ if (mAdapter.current == index) R.mipmap.icon_search_category_checked else R.mipmap.icon_search_category_unchecked
+ )
- }
-
- private fun goPath() {
- mAdapter.currentItem?.let {
- AddressManager.calculatePath(mAdapter.currentItem.point)
+ var createWaterMask = BitmapUtils.createWaterMask(
+ context, decodeResource, (index + 1).toString(), R.color.white, 18
+ )
+ return createWaterMask
}
- }
- private fun updateMarker() {
-
- addMarkers?.get(mAdapter.lastPosition)
- ?.setIcon(getMarkerIcon(mAdapter.lastPosition))
- var current = addMarkers?.get(mAdapter.current)
- current?.setIcon(getMarkerIcon(mAdapter.current))
- current?.setToTop()
- arrayList.get(mAdapter.lastPosition)
- .icon(getMarkerIcon(mAdapter.lastPosition))
- arrayList.get(mAdapter.current)
- .icon(getMarkerIcon(mAdapter.current))
- }
-
- private fun getMarkerIcon(index: Int): Bitmap {
- var decodeResource =
- BitmapFactory.decodeResource(
- resources,
- if (mAdapter.current == index) R.mipmap.icon_search_category_checked else R.mipmap.icon_search_category_unchecked
- )
-
- var createWaterMask =
- BitmapUtils.createWaterMask(
- context, decodeResource, (index + 1).toString(), R.color.white, 18
- )
- return createWaterMask
- }
-
- override fun onActivityCreated(savedInstanceState: Bundle?) {
- super.onActivityCreated(savedInstanceState)
- mSearchPresenter.startSearchLocalPoiByInput(category)
- }
-
- override fun onDestroyView() {
- super.onDestroyView()
- mSearchPresenter.onDestroy(viewLifecycleOwner)
- lifecycle.removeObserver(mSearchPresenter)
- SearchServiceHolder.getMarkerManger()
- .removeMarkers(TAG)
-
- unRegisterVoice()
- }
-
- private fun unRegisterVoice() {
- cmds.forEach {
- AIAssist.getInstance(context)
- .unregisterUnWakeupCommand(it)
+ override fun onActivityCreated(savedInstanceState: Bundle?) {
+ super.onActivityCreated(savedInstanceState)
+ mSearchPresenter.startSearchLocalPoiByInput(category)
}
- }
- override fun onDestroy() {
- super.onDestroy()
- }
+ override fun onDestroyView() {
+ super.onDestroyView()
+ mSearchPresenter.onDestroy(viewLifecycleOwner)
+ lifecycle.removeObserver(mSearchPresenter)
+ SearchServiceHolder.getMarkerManger().removeMarkers(TAG)
- companion object {
- fun newInstance(category: String): Fragment {
- MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CATEGORY_SEARCH)
- var bundle = Bundle()
- bundle.putString("category", category)
- var categorySerachFragment = CategorySearchFragment()
- categorySerachFragment.arguments = bundle
- return categorySerachFragment
+ unRegisterVoice()
+ }
+
+ private fun unRegisterVoice() {
+ cmds.forEach {
+ AIAssist.getInstance(context).unregisterUnWakeupCommand(it)
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ }
+
+ companion object {
+ fun newInstance(category: String): Fragment {
+ MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CATEGORY_SEARCH)
+ var bundle = Bundle()
+ bundle.putString("category", category)
+ var categorySerachFragment = CategorySearchFragment()
+ categorySerachFragment.arguments = bundle
+ return categorySerachFragment
+ }
}
- }
}
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 07d9b1c445..ac06e82a34 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
@@ -9,6 +9,7 @@ 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
@@ -79,9 +80,6 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- iv_back.setOnClickListener {
- SearchServiceHolder.fragmentManager.pop()
- }
initViews()
initEvent()
EventBus.getDefault().register(this)
@@ -101,7 +99,8 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
rb_navi_auto.isChecked = SettingManager.mapType == R.id.rb_navi_auto
rb_navi_detail.isChecked = SettingManager.voiceStyle == R.id.rb_navi_detail
rb_navi_draft.isChecked = SettingManager.voiceStyle == R.id.rb_navi_draft
-
+ aimlessModeClose.isChecked = SettingManager.getAimlessMode() == aimlessModeClose.id
+ aimlessModeOpen.isChecked = SettingManager.getAimlessMode() == aimlessModeOpen.id
updateHome()
updateCompany()
@@ -109,6 +108,9 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
}
private fun initEvent() {
+ rl_navi_setting_title.setOnClickListener {
+ SearchServiceHolder.fragmentManager.pop()
+ }
iv_sound_plus.setOnClickListener {
VolumeManager.getInstance(context).incVolume()
sb_navi_volume_progress.progress = sb_navi_volume_progress.progress.plus(10)
@@ -177,6 +179,21 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
}
}
+ aimlessModeGroup.setOnCheckedChangeListener { group, checkedId ->
+
+ SettingManager.setAimlessMode(checkedId)
+ when (checkedId){
+ R.id.aimlessModeClose -> {
+ SearchServiceHolder.getNavi().setAimlessModeStatus(false)
+ AIAssist.getInstance(mContext).speakTTSVoice("已为您关闭巡航模式")
+ }
+ R.id.aimlessModeOpen -> {
+ SearchServiceHolder.getNavi().setAimlessModeStatus(true)
+ AIAssist.getInstance(mContext).speakTTSVoice("已为您开启巡航模式")
+ }
+ }
+ }
+
tv_navi_clear_home_address.setOnClickListener {
AddressManager.deleteHome(context!!)
diff --git a/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml b/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml
index 1c4a00bfa9..821c7aafa5 100644
--- a/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml
+++ b/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml
@@ -313,6 +313,47 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/mogo-module-search/src/main/res/layout/fragment_search_category.xml b/modules/mogo-module-search/src/main/res/layout/fragment_search_category.xml
index 1b2b1d6786..10e1904bb2 100644
--- a/modules/mogo-module-search/src/main/res/layout/fragment_search_category.xml
+++ b/modules/mogo-module-search/src/main/res/layout/fragment_search_category.xml
@@ -125,7 +125,8 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
-
+ android:enabled="false"
+ android:inputType="none"
android:textSize="@dimen/module_search_et_text_size"
android:imeOptions="actionDone"
android:hint="@string/hint_map_search"
diff --git a/modules/mogo-module-search/src/main/res/values/strings.xml b/modules/mogo-module-search/src/main/res/values/strings.xml
index 7ecb774534..469b899192 100644
--- a/modules/mogo-module-search/src/main/res/values/strings.xml
+++ b/modules/mogo-module-search/src/main/res/values/strings.xml
@@ -42,4 +42,7 @@
日夜模式
设置刷新帧率
清空历史记录,确定还是取消
+ 巡航播报设置
+ 开启
+ 关闭
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 7d843891ca..089851d54e 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
@@ -82,6 +82,10 @@ public class MarkerServiceHandler {
mMapMarkerManager.init( context );
}
+ public static IMogoServiceApis getApis(){
+ return mApis;
+ }
+
public static IMogoMapService getMapService() {
return mMapService;
}
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 b1c9b4c84b..a4f9a98b66 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
@@ -8,7 +8,6 @@ import android.location.LocationManager;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
-import android.os.Trace;
import android.text.TextUtils;
import android.util.Log;
import android.view.MotionEvent;
@@ -37,6 +36,7 @@ import com.mogo.module.common.MogoModulePaths;
import com.mogo.module.common.map.MapCenterPointStrategy;
import com.mogo.module.common.map.Scene;
import com.mogo.module.service.carinfo.CarStateInfo;
+import com.mogo.module.service.intent.IntentHandlerFactory;
import com.mogo.module.service.marker.MapMarkerManager;
import com.mogo.module.service.network.RefreshCallback;
import com.mogo.module.service.network.RefreshModel;
@@ -44,6 +44,7 @@ import com.mogo.module.service.receiver.MogoReceiver;
import com.mogo.module.service.refresh.AutoRefreshStrategy;
import com.mogo.module.service.refresh.CustomRefreshStrategy;
import com.mogo.module.service.refresh.RefreshObject;
+import com.mogo.module.service.strategy.CarIconDisplayStrategy;
import com.mogo.service.adas.IMogoADASController;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.fragmentmanager.FragmentStackTransactionListener;
@@ -58,13 +59,11 @@ import com.mogo.service.module.MogoAction;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.statusmanager.StatusDescriptor;
-import com.mogo.utils.AppUtils;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.WorkThreadHandler;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
-import org.json.JSONException;
import org.json.JSONObject;
import java.util.List;
@@ -207,8 +206,7 @@ public class MogoServices implements IMogoMapListener,
mUiController.setLockZoom( ServiceConst.DEFAULT_LOCK_CAR_ZOOM_LEVEL );
mStatusManager.setUserInteractionStatus( TAG, true, false );
mUiController.recoverLockMode();
- notifyRefreshData( mLastAutoRefreshLocation,
- ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS, mAutoRefreshCallback );
+ notifyRefreshData( mLastAutoRefreshLocation, ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS, mAutoRefreshCallback );
}
};
private Context mContext;
@@ -508,6 +506,8 @@ public class MogoServices implements IMogoMapListener,
return;
}
+ Logger.d( TAG, "mLastZoomLevel = %s, zoom = %s", mLastZoomLevel, zoom );
+
// 手动刷新触发
if ( mLastZoomLevel - zoom > mCustomRefreshStrategy.getZoomOutLevel() ) {
// 缩放级别缩小
@@ -522,6 +522,7 @@ public class MogoServices implements IMogoMapListener,
msg.what = ServiceConst.MSG_MAP_CHANGED;
msg.obj = new RefreshObject( mCustomRefreshCallback, getQueryRadius(), latLng, 0 );
mThreadHandler.sendMessage( msg );
+ Logger.d( TAG, "平移触发" );
}
}
@@ -539,7 +540,6 @@ public class MogoServices implements IMogoMapListener,
*/
private boolean invokeRefreshWhenTranslationByUser( MogoLatLng latLng ) {
try {
- Trace.beginSection( "timer.invokeRefreshWhenTranslationByUser" );
float factor = 0.0f;
if ( mIsVertical ) {
factor = getMapCameraFactWidth();
@@ -550,7 +550,7 @@ public class MogoServices implements IMogoMapListener,
return false;
}
float distance = Utils.calculateLineDistance( latLng, mLastCustomRefreshCenterLocation );
- Trace.endSection();
+ Logger.d( TAG, "move distance = %s, factor = %s", distance, factor );
return distance > factor;
} catch ( Exception e ) {
Logger.e( TAG, e, "warming. " );
@@ -669,17 +669,18 @@ public class MogoServices implements IMogoMapListener,
}
break;
case SEEK_HELPING:
+ CarIconDisplayStrategy.getInstance().changeCarIconStatus( mUiController, isTrue );
notifySeekHelpingStatusChanged( isTrue );
break;
}
}
- private void notifySeekHelpingStatusChanged( boolean open ) {
+ private void notifySeekHelpingStatusChanged( boolean seekHelpingStatus ) {
Intent intent = new Intent( "com.mogo.launcher.adas.app" );
try {
JSONObject data = new JSONObject();
data.put( "object", "辅助驾驶" );
- data.put( "action", open ? "2" : "1" );
+ data.put( "action", seekHelpingStatus ? "2" : "1" );
data.put( "des", "自身故障报警" );
data.put( "v2x_warning_type", "20007" );// 后台返回
intent.putExtra( "data", data.toString() );
@@ -787,33 +788,14 @@ public class MogoServices implements IMogoMapListener,
}
} else if ( ServiceConst.COMMAND_NEXT.equals( command ) ) {
if ( mStatusManager.isMainPageOnResume() ) {
- mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(),
- MogoAction.Next );
+ mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), MogoAction.Next );
}
} else if ( ServiceConst.COMMAND_PREVIOUS.equals( command ) ) {
if ( mStatusManager.isMainPageOnResume() ) {
- mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(),
- MogoAction.Prev );
+ mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), MogoAction.Prev );
}
} else if ( ServiceConst.COMMAND_SWITCH_CARD.equals( command ) ) {
- String data = intent.getStringExtra( "data" );
- try {
- JSONObject jsonObject = new JSONObject( data );
- String card = jsonObject.getString( "card" );
- if ( TextUtils.equals( "多媒体卡片", card )
- || TextUtils.equals( "媒体中心卡片", card )
- || TextUtils.equals( "音乐卡片", card ) ) {
- switchCard2( ServiceConst.CARD_TYPE_SHARE_MUSIC );
- } else if ( TextUtils.equals( "探路卡片", card ) ) {
- switchCard2( ServiceConst.CARD_TYPE_ROAD_CONDITION );
- } else if ( TextUtils.equals( "在线车辆卡片", card ) ) {
- switchCard2( ServiceConst.CARD_TYPE_USER_DATA );
- } else if ( TextUtils.equals( "新鲜事卡片", card ) ) {
- switchCard2( ServiceConst.CARD_TYPE_NOVELTY );
- }
- } catch ( JSONException e ) {
- e.printStackTrace();
- }
+ IntentHandlerFactory.getInstance().handle( mContext, command, intent );
} else if ( MogoReceiver.ACTION_ADAS_STATUS.equals( command ) ) {
String msg = intent.getStringExtra( "adasMsg" );
if ( TextUtils.isEmpty( msg ) ) {
@@ -825,62 +807,14 @@ public class MogoServices implements IMogoMapListener,
// changeMyLocation( stateInfo.getValues() );
}
} else if ( ServiceConst.COMMAND_OPERATION.equals( command ) ) {
- try {
- JSONObject object = new JSONObject( intent.getStringExtra( "data" ) );
- String app = object.optString( "object" );
- String operation = object.optString( "operation" );
- if ( TextUtils.equals( app, "车聊聊" ) ) {
- if ( TextUtils.equals( "打开", operation ) ) {
- switchCard2( ServiceConst.CARD_TYPE_CARS_CHATTING );
- }
- } else {
- if ( TextUtils.equals( app, "探路" ) ) {
- if ( TextUtils.equals( "打开", operation ) ) {
- switchCard2( ServiceConst.CARD_TYPE_ROAD_CONDITION );
- }
- }
- }
- } catch ( JSONException e ) {
- e.printStackTrace();
- }
+ IntentHandlerFactory.getInstance().handle( mContext, command, intent );
} else if ( MogoReceiver.ACTION_VOICE_READY.equals( command ) ) {
AIAssist.getInstance( mContext ).flush();
mStatusManager.setAIAssistReady( TAG, true );
} else if ( ServiceConst.COMMAND_MY_LOCATION.equals( command ) ) {
- if ( mStatusManager.isSearchUIShow() ) {
- return;
- }
- if ( mStatusManager.isMainPageOnResume() ) {
- mUiController.recoverLockMode();
- }
+ IntentHandlerFactory.getInstance().handle( mContext, command, intent );
} else if ( MogoReceiver.ACTION_MOCK.equals( command ) ) {
- final int oper = intent.getIntExtra( "oper", -1 );
- switch ( oper ) {
- case 1:
- mUiController.showMyLocation( true );
- break;
- }
- }
- }
-
- /**
- * 切换卡片
- */
- private void switchCard2( String card ) {
- if ( AppUtils.isApplicationBroughtToBackground( mContext ) ) {
- mLauncher.backToLauncher( mContext );
- UiThreadHandler.postDelayed( () -> {
- if ( mStatusManager.isADASShow() ) {
- mADASController.closeADAS();
- }
- mCardManager.switch2( card, true );
- }, 2000L );
- } else {
- mFragmentManager.clearAll();
- if ( mStatusManager.isADASShow() ) {
- mADASController.closeADAS();
- }
- mCardManager.switch2( card, true );
+ IntentHandlerFactory.getInstance().handle( mContext, command, intent );
}
}
@@ -894,11 +828,13 @@ public class MogoServices implements IMogoMapListener,
if ( !mStatusManager.isMainPageOnResume() ) {
return;
}
+ if ( mStatusManager.isSeekHelping() ) {
+ return;
+ }
if ( mUiController.getCurrentUiMode() != EnumMapUI.NorthUP_2D ) {
return;
}
UiThreadHandler.post( () -> {
-
mUiController.showMyLocation( inflateCursorView( degree ) );
} );
}
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 10250b21ab..967f8e7155 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
@@ -78,7 +78,7 @@ public class ServiceConst {
public static final int DEFAULT_LOCK_CAR_ZOOM_LEVEL = 16;
/**
- * 自动酸辛默认半径
+ * 自动刷新默认半径
*/
public static final int DEFAULT_AUTO_REFRESH_DATA_RADIUS = 2_000;
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/AppOperationIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/AppOperationIntentHandler.java
new file mode 100644
index 0000000000..66ca68b304
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/AppOperationIntentHandler.java
@@ -0,0 +1,41 @@
+package com.mogo.module.service.intent;
+
+import android.content.Context;
+import android.content.Intent;
+import android.text.TextUtils;
+
+import com.mogo.module.service.ServiceConst;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * @author congtaowang
+ * @since 2020-04-17
+ *
+ * 描述
+ */
+public class AppOperationIntentHandler implements IntentHandler {
+
+ @Override
+ public void handle( Context context, Intent intent ) {
+ try {
+ JSONObject object = new JSONObject( intent.getStringExtra( "data" ) );
+ String app = object.optString( "object" );
+ String operation = object.optString( "operation" );
+ if ( TextUtils.equals( app, "车聊聊" ) ) {
+ if ( TextUtils.equals( "打开", operation ) ) {
+ SwitchCardIntentHandler.switchCard2( context, ServiceConst.CARD_TYPE_CARS_CHATTING );
+ }
+ } else {
+ if ( TextUtils.equals( app, "探路" ) ) {
+ if ( TextUtils.equals( "打开", operation ) ) {
+ SwitchCardIntentHandler.switchCard2( context, ServiceConst.CARD_TYPE_ROAD_CONDITION );
+ }
+ }
+ }
+ } catch ( JSONException e ) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/EmptyIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/EmptyIntentHandler.java
new file mode 100644
index 0000000000..64d6edd24a
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/EmptyIntentHandler.java
@@ -0,0 +1,22 @@
+package com.mogo.module.service.intent;
+
+import android.content.Context;
+import android.content.Intent;
+
+import com.mogo.utils.logger.Logger;
+
+/**
+ * @author congtaowang
+ * @since 2020-04-17
+ *
+ * 描述
+ */
+public class EmptyIntentHandler implements IntentHandler {
+
+ private static final String TAG = "EmptyIntentHandler";
+
+ @Override
+ public void handle( Context context, Intent intent ) {
+ Logger.w( TAG, "空实现." );
+ }
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandler.java
new file mode 100644
index 0000000000..cf040875d5
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandler.java
@@ -0,0 +1,15 @@
+package com.mogo.module.service.intent;
+
+import android.content.Context;
+import android.content.Intent;
+
+/**
+ * @author congtaowang
+ * @since 2020-04-17
+ *
+ * 描述
+ */
+public interface IntentHandler {
+
+ void handle( Context context, Intent intent );
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandlerFactory.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandlerFactory.java
new file mode 100644
index 0000000000..fbba17c7b6
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandlerFactory.java
@@ -0,0 +1,59 @@
+package com.mogo.module.service.intent;
+
+import android.content.Context;
+import android.content.Intent;
+
+import com.mogo.module.service.ServiceConst;
+import com.mogo.module.service.receiver.MogoReceiver;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author congtaowang
+ * @since 2020-04-17
+ *
+ * 描述
+ */
+public class IntentHandlerFactory {
+
+ private IntentHandlerFactory() {
+ // private constructor
+ mHandlers.put( MogoReceiver.ACTION_MOCK, new MockIntentHandler() );
+ mHandlers.put( ServiceConst.COMMAND_SWITCH_CARD, new SwitchCardIntentHandler() );
+ mHandlers.put( ServiceConst.COMMAND_OPERATION, new AppOperationIntentHandler() );
+ mHandlers.put( ServiceConst.COMMAND_MY_LOCATION, new MyLocationHandler() );
+ }
+
+ private static final class InstanceHolder {
+ private static final IntentHandlerFactory INSTANCE = new IntentHandlerFactory();
+ }
+
+ public static IntentHandlerFactory getInstance() {
+ return InstanceHolder.INSTANCE;
+ }
+
+ private Object readResolve() {
+ // 阻止反序列化,必须实现 Serializable 接口
+ return InstanceHolder.INSTANCE;
+ }
+
+ private Map< String, IntentHandler > mHandlers = new HashMap<>();
+
+ private IntentHandler DEFAULT = new EmptyIntentHandler();
+
+ private IntentHandler getIntentHandler( String intent ) {
+ if ( mHandlers.containsKey( intent ) && mHandlers.get( intent ) != null ) {
+ return mHandlers.get( intent );
+ }
+ return DEFAULT;
+ }
+
+ public void handle( Context context, String intent, Intent obj ) {
+ IntentHandler handler = getIntentHandler( intent );
+ if ( handler != null ) {
+ handler.handle( context, obj );
+ }
+ }
+
+}
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
new file mode 100644
index 0000000000..cc1ccbd4fa
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java
@@ -0,0 +1,65 @@
+package com.mogo.module.service.intent;
+
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.TextView;
+
+import com.mogo.commons.debug.DebugConfig;
+import com.mogo.module.service.MarkerServiceHandler;
+import com.mogo.service.entrance.ButtonIndex;
+import com.mogo.utils.TipToast;
+
+/**
+ * @author congtaowang
+ * @since 2020-04-17
+ *
+ * 描述
+ */
+public class MockIntentHandler implements IntentHandler {
+
+ private static final String TAG = "MockIntentHandler";
+
+ @Override
+ public void handle( Context context, Intent intent ) {
+ if ( !DebugConfig.isDebug() ) {
+ return;
+ }
+
+ final int oper = intent.getIntExtra( "oper", -1 );
+ switch ( oper ) {
+ case 1:
+ MarkerServiceHandler.getMapUIController().showMyLocation( true );
+ break;
+ case 2:
+ boolean status = intent.getBooleanExtra( "status", false );
+ MarkerServiceHandler.getMogoStatusManager().setSeekHelping( TAG, status );
+ break;
+ case 3:
+ String msg = intent.getStringExtra( "msg" );
+ if ( !TextUtils.isEmpty( msg ) ) {
+ TipToast.shortTip( msg );
+ }
+ break;
+ case 4:
+ TextView button1 = MarkerServiceHandler.getApis().getEntranceButtonController().getButton( ButtonIndex.BUTTON1 );
+ if ( button1 != null ) {
+ button1.setVisibility( View.VISIBLE );
+ button1.setBackgroundColor( Color.RED );
+ button1.setOnClickListener( view -> {
+ TipToast.shortTip( "测试" );
+ } );
+ }
+ break;
+ case 5:
+ TextView button2 = MarkerServiceHandler.getApis().getEntranceButtonController().getButton( ButtonIndex.BUTTON1 );
+ if ( button2 != null ) {
+ button2.setOnClickListener( null );
+ button2.setVisibility( View.GONE );
+ }
+ break;
+ }
+ }
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MyLocationHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MyLocationHandler.java
new file mode 100644
index 0000000000..4504dd7e01
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MyLocationHandler.java
@@ -0,0 +1,31 @@
+package com.mogo.module.service.intent;
+
+import android.content.Context;
+import android.content.Intent;
+
+import com.mogo.module.service.MarkerServiceHandler;
+import com.mogo.utils.UiThreadHandler;
+
+/**
+ * @author congtaowang
+ * @since 2020-04-17
+ *
+ * 语音指令:定位我的位置等处理
+ */
+public class MyLocationHandler implements IntentHandler {
+
+ @Override
+ public void handle( Context context, Intent intent ) {
+ if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) {
+ return;
+ }
+ if ( MarkerServiceHandler.getMogoStatusManager().isMainPageOnResume() ) {
+ MarkerServiceHandler.getMapUIController().recoverLockMode();
+ } else {
+ MarkerServiceHandler.getLauncher().backToLauncher( context );
+ UiThreadHandler.postDelayed( () -> {
+ MarkerServiceHandler.getMapUIController().recoverLockMode();
+ }, 2_000L );
+ }
+ }
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/SwitchCardIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/SwitchCardIntentHandler.java
new file mode 100644
index 0000000000..1c3e56567a
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/SwitchCardIntentHandler.java
@@ -0,0 +1,65 @@
+package com.mogo.module.service.intent;
+
+import android.content.Context;
+import android.content.Intent;
+import android.text.TextUtils;
+
+import com.mogo.module.service.MarkerServiceHandler;
+import com.mogo.module.service.ServiceConst;
+import com.mogo.utils.AppUtils;
+import com.mogo.utils.UiThreadHandler;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * @author congtaowang
+ * @since 2020-04-17
+ *
+ * 描述
+ */
+public class SwitchCardIntentHandler implements IntentHandler {
+
+ @Override
+ public void handle( Context context, Intent intent ) {
+ String data = intent.getStringExtra( "data" );
+ try {
+ JSONObject jsonObject = new JSONObject( data );
+ String card = jsonObject.getString( "card" );
+ if ( TextUtils.equals( "多媒体卡片", card )
+ || TextUtils.equals( "媒体中心卡片", card )
+ || TextUtils.equals( "音乐卡片", card ) ) {
+ switchCard2( context, ServiceConst.CARD_TYPE_SHARE_MUSIC );
+ } else if ( TextUtils.equals( "探路卡片", card ) ) {
+ switchCard2( context, ServiceConst.CARD_TYPE_ROAD_CONDITION );
+ } else if ( TextUtils.equals( "在线车辆卡片", card ) ) {
+ switchCard2( context, ServiceConst.CARD_TYPE_USER_DATA );
+ } else if ( TextUtils.equals( "新鲜事卡片", card ) ) {
+ switchCard2( context, ServiceConst.CARD_TYPE_NOVELTY );
+ }
+ } catch ( JSONException e ) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 切换卡片
+ */
+ public static void switchCard2( Context context, String card ) {
+ if ( AppUtils.isApplicationBroughtToBackground( context ) ) {
+ MarkerServiceHandler.getLauncher().backToLauncher( context );
+ UiThreadHandler.postDelayed( () -> {
+ if ( MarkerServiceHandler.getMogoStatusManager().isADASShow() ) {
+ MarkerServiceHandler.getADASController().closeADAS();
+ }
+ MarkerServiceHandler.getMogoCardManager().switch2( card, true );
+ }, 2000L );
+ } else {
+ MarkerServiceHandler.getFragmentManager().clearAll();
+ if ( MarkerServiceHandler.getMogoStatusManager().isADASShow() ) {
+ MarkerServiceHandler.getADASController().closeADAS();
+ }
+ MarkerServiceHandler.getMogoCardManager().switch2( card, true );
+ }
+ }
+}
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 08304c9da5..2828c1b12c 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
@@ -12,7 +12,6 @@ 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.entity.MarkerCarPois;
import com.mogo.module.common.entity.MarkerCardResult;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerLocation;
@@ -25,8 +24,6 @@ import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.ServiceConst;
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;
@@ -52,7 +49,8 @@ import java.util.Map;
* version: 1.0
*/
public class MapMarkerManager implements IMogoMarkerClickListener,
- IMogoOnMessageListener, IMogoCardChangedListener,
+ IMogoOnMessageListener< MarkerResponse >,
+ IMogoCardChangedListener,
IMogoBizActionDoneListener {
private static final String TAG = "MapMarkerManager";
// 是否选中在线卡片及气泡,语音搜索触发
@@ -65,25 +63,20 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
private String mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION;
// 记录其它已经缩小的Marker
- public ArrayList alreadySmallMarker = new ArrayList<>();
- // 存储所有汽车marker
- public ArrayList carMarkers = new ArrayList<>();
+ public ArrayList< String > alreadySmallMarker = new ArrayList<>();
// 距离用户最近的Marker
private IMogoMarker mNearlyMarker = null;
// 记录上次请求数据,切换卡片时做数据处理
private MarkerCardResult mLastDataResult;
private boolean mIsMarkerClicked = false;
- private RefreshModel mRefreshModel;
- private MogoLatLng mCarLatLng;
- private int mCarSmoothDuration = 5;
private MapMarkerManager() {
}
public static synchronized MapMarkerManager getInstance() {
- synchronized (MapMarkerManager.class) {
- if (mMarkerManager == null) {
+ synchronized ( MapMarkerManager.class ) {
+ if ( mMarkerManager == null ) {
mMarkerManager = new MapMarkerManager();
}
}
@@ -96,38 +89,36 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
*
* @param context
*/
- public void init(Context context) {
+ public void init( Context context ) {
mContext = context;
- mRefreshModel = new RefreshModel(mContext);
-
// 长连接
- MarkerServiceHandler.getMogoSocketManager().registerOnMessageListener(401001, this);
- MarkerServiceHandler.getMogoCardManager().registerCardChangedListener(
- "LAUNCHER_MARKER_MODULE", this);
- MarkerServiceHandler.getActionManager().registerBizActionDoneListener(this);
+ MarkerServiceHandler.getMogoSocketManager().registerOnMessageListener( 401001, this );
+ MarkerServiceHandler.getMogoCardManager().registerCardChangedListener( "LAUNCHER_MARKER_MODULE", this );
+ MarkerServiceHandler.getActionManager().registerBizActionDoneListener( this );
}
// ACC ON 的时候重置为true,ACC OFF 设置为 false
// 保留 - 外部模块调用
- public void setCheckOn(boolean checkOnLineData) {
- Logger.e(TAG, "do not invoke anymore.");
+ public void setCheckOn( boolean checkOnLineData ) {
+ 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) {
+ 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);
+ highlightedMarker( moduleName, false );
mCurrentModuleName = moduleName;
} else {
mCurrentModuleName = moduleName;
- runOnTargetThread(() -> {
+ runOnTargetThread( () -> {
MarkerServiceHandler.getMarkerManager().removeMarkers();
- drawMarkerByCurrentType(mLastDataResult);
- });
+ drawMarkerByCurrentType( mLastDataResult );
+ } );
}
}
@@ -135,58 +126,58 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
* 地图上的Marker点击回调
*/
@Override
- public boolean onMarkerClicked(IMogoMarker marker) {
+ public boolean onMarkerClicked( IMogoMarker marker ) {
mIsMarkerClicked = true;
- Logger.d(TAG, "onMarkerClicked 点击了大而全中的Marker:" + marker);
+ Logger.d( TAG, "onMarkerClicked 点击了大而全中的Marker:" + marker );
try {
- boolean result = switchMarkerOpenStatus(marker);
- if (!result) {
+ boolean result = switchMarkerOpenStatus( marker );
+ if ( !result ) {
return false;
}
// 数据统计代码
- final Map properties = new HashMap<>();
- switch (mLastCheckMarker.getOwner()) {
+ final Map< String, Object > properties = new HashMap<>();
+ switch ( mLastCheckMarker.getOwner() ) {
case ServiceConst.CARD_TYPE_CARS_CHATTING:
- properties.put("type", 3);
+ properties.put( "type", 3 );
break;
case ServiceConst.CARD_TYPE_USER_DATA:
- properties.put("type", 5);
+ properties.put( "type", 5 );
break;
case ServiceConst.CARD_TYPE_ROAD_CONDITION:
- properties.put("type", 2);
+ properties.put( "type", 2 );
break;
case ServiceConst.CARD_TYPE_NOVELTY:
- MarkerShowEntity showEntity = (MarkerShowEntity) mLastCheckMarker.getObject();
+ MarkerShowEntity showEntity = ( MarkerShowEntity ) mLastCheckMarker.getObject();
Object bindObj = showEntity.getBindObj();
- if (bindObj instanceof MarkerNoveltyInfo) {
- switch (((MarkerNoveltyInfo) bindObj).getPoiType()) {
+ if ( bindObj instanceof MarkerNoveltyInfo ) {
+ switch ( ( ( MarkerNoveltyInfo ) bindObj ).getPoiType() ) {
case MarkerPoiTypeEnum.GAS_STATION:
- properties.put("type", 4);
+ properties.put( "type", 4 );
break;
case MarkerPoiTypeEnum.TRAFFIC_CHECK:
- properties.put("type", 8);
+ properties.put( "type", 8 );
break;
case MarkerPoiTypeEnum.ROAD_CLOSED:
- properties.put("type", 7);
+ properties.put( "type", 7 );
break;
case MarkerPoiTypeEnum.SHOP_DISCOUNT:
- properties.put("type", 9);
+ properties.put( "type", 9 );
break;
case MarkerPoiTypeEnum.FOURS_4S:
- properties.put("type", 10);
+ properties.put( "type", 10 );
break;
}
}
break;
case ServiceConst.CARD_TYPE_SHARE_MUSIC:
- properties.put("type", 6);
+ properties.put( "type", 6 );
break;
}
- MarkerServiceHandler.getMogoAnalytics().track("Launcher_Icon_Click", properties);
+ MarkerServiceHandler.getMogoAnalytics().track( "Launcher_Icon_Click", properties );
- } catch (Exception e) {
+ } catch ( Exception e ) {
e.printStackTrace();
}
return false;
@@ -198,103 +189,99 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
* @param marker
* @return
*/
- private boolean switchMarkerOpenStatus(IMogoMarker marker) {
- if (mLastCheckMarker != null) {
+ private boolean switchMarkerOpenStatus( IMogoMarker marker ) {
+ if ( mLastCheckMarker != null ) {
// 判断点击的是否是同一个
- if (marker.equals(mLastCheckMarker)) {
- Logger.d(TAG, "onMarkerClicked 与上一次点击的Marker一样,不做处理:" + marker);
+ if ( marker.equals( mLastCheckMarker ) ) {
+ Logger.d( TAG, "onMarkerClicked 与上一次点击的Marker一样,不做处理:" + marker );
return false;
}
// 将上次选中 Marker 设置为未选中状态
- closeMarker(mLastCheckMarker);
+ closeMarker( mLastCheckMarker );
}
// 将当前的Marker设置为选中
- openMarker(marker);
+ openMarker( marker );
return true;
}
// 对指定类型高亮处理
- public synchronized void highlightedMarker(final String typeTag) {
- highlightedMarker(typeTag, false);
+ public synchronized void highlightedMarker( final String typeTag ) {
+ highlightedMarker( typeTag, false );
}
- public synchronized void highlightedMarker(final String typeTag, final boolean netDataRefresh) {
+ 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) {
+ Logger.e( TAG, "上一次选中的卡片类型:mCurrentModuleName==" + mCurrentModuleName );
+ if ( !TextUtils.isEmpty( mCurrentModuleName ) && TextUtils.equals( mCurrentModuleName, typeTag ) && !netDataRefresh ) {
return;
}
// 从已经缩小的记录删除
- alreadySmallMarker.remove(typeTag);
- List currentHighLightList =
- MarkerServiceHandler.getMarkerManager().getMarkers(typeTag);
+ alreadySmallMarker.remove( typeTag );
+ List< IMogoMarker > currentHighLightList = MarkerServiceHandler.getMarkerManager().getMarkers( typeTag );
- if (currentHighLightList == null || currentHighLightList.size() == 0) {
+ if ( currentHighLightList == null || currentHighLightList.size() == 0 ) {
alreadySmallMarker.clear();
// 放大所有的气泡
- Map> lastHighLightList =
- MarkerServiceHandler.getMarkerManager().getAllMarkers();
- for (String markerName : lastHighLightList.keySet()) {
- setMarkersBig(lastHighLightList.get(markerName));
+ Map< String, List< IMogoMarker > > lastHighLightList = MarkerServiceHandler.getMarkerManager().getAllMarkers();
+ for ( String markerName : lastHighLightList.keySet() ) {
+ setMarkersBig( lastHighLightList.get( markerName ) );
}
} else {
// 缩小其他的气泡
- Map> lastHighLightList =
- MarkerServiceHandler.getMarkerManager().getAllMarkers();
- for (String markerName : lastHighLightList.keySet()) {
- if (!markerName.equals(typeTag)) {
- if (!alreadySmallMarker.contains(markerName)) {
- alreadySmallMarker.add(markerName);
- setMarkersSmall(lastHighLightList.get(markerName));
+ 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);
+ setMarkersBig( currentHighLightList );
}
- } catch (Exception e) {
+ } catch ( Exception e ) {
e.printStackTrace();
}
}
- private static void setMarkersBig(List markers) {
- if (markers == null || markers.isEmpty()) {
+ private static void setMarkersBig( List< IMogoMarker > markers ) {
+ if ( markers == null || markers.isEmpty() ) {
return;
}
- for (IMogoMarker mogoMarker : markers) {
- if (mogoMarker == null || mogoMarker.isDestroyed()) {
+ 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.");
+ mogoMarker.startScaleAnimation( 0.6f, 1f, 0.6f, 1f, 1000, new BounceInterpolator() );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error." );
}
}
}
- private static void setMarkersSmall(List markers) {
- if (markers == null || markers.isEmpty()) {
+ private static void setMarkersSmall( List< IMogoMarker > markers ) {
+ if ( markers == null || markers.isEmpty() ) {
return;
}
- for (IMogoMarker mogoMarker : markers) {
- smallMarker(mogoMarker);
+ for ( IMogoMarker mogoMarker : markers ) {
+ smallMarker( mogoMarker );
}
}
- private static void smallMarker(IMogoMarker mogoMarker) {
- if (mogoMarker == null || mogoMarker.isDestroyed()) {
+ 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.");
+ mogoMarker.startScaleAnimation( 1f, 0.6f, 1f, 0.6f, 300, new OvershootInterpolator() );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error." );
}
}
@@ -303,85 +290,83 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
*
* @param marker 要关闭的Marker
*/
- public synchronized void closeMarkerSelect(IMogoMarker marker) {
+ public synchronized void closeMarkerSelect( IMogoMarker marker ) {
// 将上次选中 Marker 设置为未选中状态
- if (marker != null) {
- Logger.i(TAG, "closeMarkerSelect 将出Marker详情关闭:" + marker);
- closeMarker(marker);
+ if ( marker != null ) {
+ Logger.i( TAG, "closeMarkerSelect 将出Marker详情关闭:" + marker );
+ closeMarker( marker );
mLastCheckMarker = null;
}
}
// 展开气泡
- private void openMarker(IMogoMarker mogoMarker) {
- if (mogoMarker == null) {
+ private void openMarker( IMogoMarker mogoMarker ) {
+ if ( mogoMarker == null ) {
return;
}
- if (mLastCheckMarker != null) {
- closeMarker(mLastCheckMarker);
+ if ( mLastCheckMarker != null ) {
+ closeMarker( mLastCheckMarker );
}
mLastCheckMarker = mogoMarker;
Object object = mogoMarker.getObject();
- if (object != null) {
- MarkerShowEntity markerShowEntity = (MarkerShowEntity) object;
- markerShowEntity.setChecked(true);
- IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity,
- mogoMarker.getMogoMarkerOptions());
- mogoMarker.setIcon(ViewUtils.fromView(markerView.getView()));
+ if ( object != null ) {
+ MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object;
+ markerShowEntity.setChecked( true );
+ IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() );
+ mogoMarker.setIcon( ViewUtils.fromView( markerView.getView() ) );
mogoMarker.setToTop();
}
}
// 折叠气泡
- private void closeMarker(IMogoMarker mogoMarker) {
- if (mogoMarker == null) {
+ private void closeMarker( IMogoMarker mogoMarker ) {
+ if ( mogoMarker == null ) {
return;
}
Object object = mogoMarker.getObject();
- if (object != null) {
- MarkerShowEntity markerShowEntity = (MarkerShowEntity) object;
- markerShowEntity.setChecked(false);
- IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity,
- mogoMarker.getMogoMarkerOptions());
- mogoMarker.setIcon(ViewUtils.fromView(markerView.getView()));
+ if ( object != null ) {
+ MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object;
+ markerShowEntity.setChecked( false );
+ IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() );
+ mogoMarker.setIcon( ViewUtils.fromView( markerView.getView() ) );
}
}
// 绘制Marker
- public synchronized void drawMapMarker(MarkerResponse response) {
+ public synchronized void drawMapMarker( MarkerResponse response ) {
- if (response == null || response.getResult() == null) {
+ if ( response == null || response.getResult() == null ) {
return;
}
- if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()) {
+ if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) {
return;
}
// 解析不同的Marker类型,然后对应的进行绘制
- Logger.d(TAG, "draw marker");
+ Logger.d( TAG, "draw marker" );
mLastDataResult = response.getResult();
- UiThreadHandler.post(() -> {
+ UiThreadHandler.post( () -> {
dispatchDataToBiz();
- });
+ } );
// 语音触发的在线车辆搜索,采用增量的形式绘制
- if (mIsAISearchOnlineData = isOnlineCarDataOnly(mLastDataResult)) {
- MarkerServiceHandler.getMarkerManager().removeMarkers(ServiceConst.CARD_TYPE_USER_DATA);
- MarkerServiceHandler.getMogoCardManager().switch2(ServiceConst.CARD_TYPE_USER_DATA);
+ 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().removeMarkers();
}
- drawMarkerByCurrentType(mLastDataResult);
+ drawMarkerByCurrentType( mLastDataResult );
// 同步新绘制的气泡状态
alreadySmallMarker.clear();
// highlightedMarker( mCurrentModuleName, true );
- trackData(mLastDataResult);
+ trackData( mLastDataResult );
}
/**
@@ -390,8 +375,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
* @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)) {
+ 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;
@@ -402,42 +390,42 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
*
* @param markerCardResult
*/
- private synchronized void drawMarkerByCurrentType(MarkerCardResult markerCardResult) {
+ private synchronized void drawMarkerByCurrentType( MarkerCardResult markerCardResult ) {
- if (markerCardResult == null) {
+ if ( markerCardResult == null ) {
return;
}
- if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()) {
+ if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) {
return;
}
- if (TextUtils.isEmpty(mCurrentModuleName)) {
+ if ( TextUtils.isEmpty( mCurrentModuleName ) ) {
// 默认大而全
mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION;
}
-// List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar();
- List exploreWayList = markerCardResult.getExploreWay();
- List shareMusicList = markerCardResult.getShareMusic();
- List noveltyInfoList = markerCardResult.getNoveltyInfo();
+ List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar();
+ List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay();
+ List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic();
+ List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo();
- switch (mCurrentModuleName) {
+ switch ( mCurrentModuleName ) {
case ServiceConst.CARD_TYPE_BUSINESS_OPERATION:
- drawAllMarker(markerCardResult);
+ drawAllMarker( markerCardResult );
break;
case ServiceConst.CARD_TYPE_NOVELTY:
- drawNoveltyMarker(noveltyInfoList, ServiceConst.MAX_AMOUNT_SINGLE_CARD);
+ drawNoveltyMarker( noveltyInfoList, ServiceConst.MAX_AMOUNT_SINGLE_CARD );
break;
case ServiceConst.CARD_TYPE_CARS_CHATTING:
case ServiceConst.CARD_TYPE_USER_DATA:
-// drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD );
+ drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD );
break;
case ServiceConst.CARD_TYPE_ROAD_CONDITION:
- drawRoadConditionMarker(exploreWayList, ServiceConst.MAX_AMOUNT_SINGLE_CARD);
+ drawRoadConditionMarker( exploreWayList, ServiceConst.MAX_AMOUNT_SINGLE_CARD );
break;
case ServiceConst.CARD_TYPE_SHARE_MUSIC:
- drawShareMusicMarker(shareMusicList, ServiceConst.MAX_AMOUNT_SINGLE_CARD);
+ drawShareMusicMarker( shareMusicList, ServiceConst.MAX_AMOUNT_SINGLE_CARD );
break;
}
}
@@ -447,16 +435,16 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
*
* @param markerCardResult
*/
- private void drawAllMarker(MarkerCardResult markerCardResult) {
- List onlineCarList = markerCardResult.getOnlineCar();
- List exploreWayList = markerCardResult.getExploreWay();
- List shareMusicList = markerCardResult.getShareMusic();
- List noveltyInfoList = markerCardResult.getNoveltyInfo();
+ private void drawAllMarker( MarkerCardResult markerCardResult ) {
+ List< MarkerOnlineCar > 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);
+ drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_ALL );
+ drawRoadConditionMarker( exploreWayList, ServiceConst.MAX_AMOUNT_ALL );
+ drawShareMusicMarker( shareMusicList, ServiceConst.MAX_AMOUNT_ALL );
+ drawNoveltyMarker( noveltyInfoList, ServiceConst.MAX_AMOUNT_ALL );
}
/**
@@ -464,92 +452,61 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
*
* @param onlineCarList
*/
- private void drawOnlineCarMarkers(List onlineCarList, int maxAmount) {
+ private void drawOnlineCarMarkers( List< MarkerOnlineCar > onlineCarList, int maxAmount ) {
// 将数据同步给在线车辆,避免每次 perform 的时候去拉取,造成消耗
- if (onlineCarList == null || onlineCarList.isEmpty()) {
+ if ( onlineCarList == null || onlineCarList.isEmpty() ) {
return;
}
-
- for (int i = 0; i < carMarkers.size(); i++) {
- IMogoMarker marker = carMarkers.get(i);
- marker.destroy();
- }
-
double nearlyDistance = Float.MAX_VALUE;
- int size = getAppropriateSize(maxAmount, onlineCarList);
- for (int i = 0; i < size; i++) {
- MarkerOnlineCar markerOnlineCar = onlineCarList.get(i);
+ int size = getAppropriateSize( maxAmount, onlineCarList );
+ for ( int i = 0; i < size; i++ ) {
+ MarkerOnlineCar markerOnlineCar = onlineCarList.get( i );
MarkerLocation markerLocation = markerOnlineCar.getLocation();
MarkerShowEntity markerShowEntity = new MarkerShowEntity();
- markerShowEntity.setBindObj(markerOnlineCar);
- markerShowEntity.setMarkerLocation(markerLocation);
- markerShowEntity.setMarkerType(markerOnlineCar.getType());
-
- if (markerOnlineCar.getCarInfo() != null) {
- markerShowEntity.setTextContent(markerOnlineCar.getUserInfo().getUserName());
- markerShowEntity.setIconUrl(markerOnlineCar.getUserInfo().getUserHead());
- }
-
- IMogoMarker iMogoMarker = drawMapMarker(markerShowEntity);
-
- carMarkers.add(iMogoMarker);
- List poisList = markerOnlineCar.getPois();
- if (poisList.size() > 0){
- List points = new ArrayList<>();
-
- if (poisList.size() == 1){
- points.add(new MogoLatLng(markerLocation.getLat(),markerLocation.getLon()));
- }
- for (int j = 0; j < poisList.size(); j++) {
- MarkerCarPois pois = poisList.get(j);
- double lat = pois.getCoordinates()[1];
- double lng = pois.getCoordinates()[0];
- points.add(new MogoLatLng(lat,lng));
-
- }
- iMogoMarker.startSmooth(points,mCarSmoothDuration);
- }
-
+ markerShowEntity.setBindObj( markerOnlineCar );
+ markerShowEntity.setMarkerLocation( markerLocation );
+ markerShowEntity.setMarkerType( markerOnlineCar.getType() );
+ markerShowEntity.setTextContent( markerOnlineCar.getUserInfo().getUserName() );
+ markerShowEntity.setIconUrl( markerOnlineCar.getUserInfo().getUserHead() );
+ IMogoMarker iMogoMarker = drawMapMarker( markerShowEntity );
// 计算在线车辆距离当前车辆的距离,每次都与最后一次距离最近的进行比较,保留距离最近的车辆,进行卡片展示
try {
// 当前车辆的位置
- MogoLocation currentLocation =
- MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation();
+ MogoLocation currentLocation = MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation();
// 计算车辆距离指定气泡的距离
- float calculateDistance =
- Utils.calculateLineDistance(new MogoLatLng(markerLocation.getLat(),
- markerLocation.getLon()),
- new MogoLatLng(currentLocation.getLatitude(),
- currentLocation.getLongitude()));
+ float calculateDistance = Utils.calculateLineDistance(
+ new MogoLatLng( markerLocation.getLat(), markerLocation.getLon() ),
+ new MogoLatLng( currentLocation.getLatitude(), currentLocation.getLongitude() )
+ );
// 进行比较,保留最近的一个数据
- if (calculateDistance < nearlyDistance) {
+ if ( calculateDistance < nearlyDistance ) {
nearlyDistance = calculateDistance;
mNearlyMarker = iMogoMarker;
}
- } catch (Exception e) {
+ } catch ( Exception e ) {
e.printStackTrace();
}
}
- Logger.d(TAG, "距离当前车辆位置最近的距离为:" + nearlyDistance);
+ Logger.d( TAG, "距离当前车辆位置最近的距离为:" + nearlyDistance );
try {
// 在ACC on 之后第一次获取到了在线车辆数据,选中最近的一个Marker
- if (mIsAISearchOnlineData) {
- if (mNearlyMarker != null) {
- Logger.d(TAG, "语音搜索触发,默认选中最近的在线车辆:" + mNearlyMarker);
+ if ( mIsAISearchOnlineData ) {
+ if ( mNearlyMarker != null ) {
+ Logger.d( TAG, "语音搜索触发,默认选中最近的在线车辆:" + mNearlyMarker );
// 移动地图到指定位置
- MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus(ServiceConst.TYPE, true, false);
- MarkerServiceHandler.getMapUIController().moveToCenter(mNearlyMarker.getPosition());
- onMarkerClicked(mNearlyMarker);
- MogoMarkersHandler.getInstance().onMarkerClicked(mNearlyMarker);
+ MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus( ServiceConst.TYPE, true, false );
+ MarkerServiceHandler.getMapUIController().moveToCenter( mNearlyMarker.getPosition() );
+ onMarkerClicked( mNearlyMarker );
+ MogoMarkersHandler.getInstance().onMarkerClicked( mNearlyMarker );
mIsAISearchOnlineData = false;
}
}
- } catch (Exception e) {
+ } catch ( Exception e ) {
e.printStackTrace();
}
}
@@ -559,24 +516,24 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
*
* @param exploreWayList
*/
- private void drawRoadConditionMarker(List exploreWayList, int maxAmount) {
+ private void drawRoadConditionMarker( List< MarkerExploreWay > exploreWayList, int maxAmount ) {
// 将数据同步给探路,避免探路每次 perform 的时候去拉取,造成消耗
- if (exploreWayList == null || exploreWayList.isEmpty()) {
+ if ( exploreWayList == null || exploreWayList.isEmpty() ) {
return;
}
- int size = getAppropriateSize(maxAmount, exploreWayList);
- for (int i = 0; i < size; i++) {
- MarkerExploreWay markerExploreWay = exploreWayList.get(i);
- if (!markerExploreWay.getCanLive()) {
+ int size = getAppropriateSize( maxAmount, exploreWayList );
+ for ( int i = 0; i < size; i++ ) {
+ MarkerExploreWay markerExploreWay = exploreWayList.get( i );
+ if ( !markerExploreWay.getCanLive() ) {
MarkerLocation markerLocation = markerExploreWay.getLocation();
MarkerShowEntity markerShowEntity = new MarkerShowEntity();
- markerShowEntity.setBindObj(markerExploreWay);
- markerShowEntity.setMarkerLocation(markerLocation);
- markerShowEntity.setMarkerType(markerExploreWay.getType());
- markerShowEntity.setTextContent(markerExploreWay.getAddr());
+ markerShowEntity.setBindObj( markerExploreWay );
+ markerShowEntity.setMarkerLocation( markerLocation );
+ markerShowEntity.setMarkerType( markerExploreWay.getType() );
+ markerShowEntity.setTextContent( markerExploreWay.getAddr() );
- drawMapMarker(markerShowEntity);
+ drawMapMarker( markerShowEntity );
}
}
}
@@ -586,22 +543,22 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
*
* @param shareMusicList
*/
- private void drawShareMusicMarker(List shareMusicList, int maxAmount) {
- if (shareMusicList == null) {
+ private void drawShareMusicMarker( List< MarkerShareMusic > shareMusicList, int maxAmount ) {
+ if ( shareMusicList == null ) {
return;
}
- int size = getAppropriateSize(maxAmount, shareMusicList);
- for (int i = 0; i < size; i++) {
- MarkerShareMusic markerShareMusic = shareMusicList.get(i);
+ int size = getAppropriateSize( maxAmount, shareMusicList );
+ for ( int i = 0; i < size; i++ ) {
+ MarkerShareMusic markerShareMusic = shareMusicList.get( i );
MarkerLocation markerLocation = markerShareMusic.getLocation();
MarkerShowEntity markerShowEntity = new MarkerShowEntity();
- markerShowEntity.setBindObj(markerShareMusic);
- markerShowEntity.setMarkerLocation(markerLocation);
- markerShowEntity.setMarkerType(markerShareMusic.getType());
- markerShowEntity.setTextContent(markerShareMusic.getMediaName());
- markerShowEntity.setIconUrl(markerShareMusic.getMediaImg());
+ markerShowEntity.setBindObj( markerShareMusic );
+ markerShowEntity.setMarkerLocation( markerLocation );
+ markerShowEntity.setMarkerType( markerShareMusic.getType() );
+ markerShowEntity.setTextContent( markerShareMusic.getMediaName() );
+ markerShowEntity.setIconUrl( markerShareMusic.getMediaImg() );
- drawMapMarker(markerShowEntity);
+ drawMapMarker( markerShowEntity );
}
}
@@ -610,20 +567,20 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
*
* @param noveltyInfoList
*/
- private void drawNoveltyMarker(List noveltyInfoList, int maxAmount) {
- if (noveltyInfoList == null) {
+ private void drawNoveltyMarker( List< MarkerNoveltyInfo > noveltyInfoList, int maxAmount ) {
+ if ( noveltyInfoList == null ) {
return;
}
- int size = getAppropriateSize(maxAmount, noveltyInfoList);
- for (int i = 0; i < size; i++) {
- MarkerNoveltyInfo noveltyInfo = noveltyInfoList.get(i);
+ int size = getAppropriateSize( maxAmount, noveltyInfoList );
+ for ( int i = 0; i < size; i++ ) {
+ MarkerNoveltyInfo noveltyInfo = noveltyInfoList.get( i );
MarkerLocation markerLocation = noveltyInfo.getLocation();
MarkerShowEntity markerShowEntity = new MarkerShowEntity();
- markerShowEntity.setBindObj(noveltyInfo);
- markerShowEntity.setMarkerLocation(markerLocation);
- markerShowEntity.setMarkerType(noveltyInfo.getType());
- markerShowEntity.setTextContent(noveltyInfo.getLocation().getAddress());
- drawMapMarker(markerShowEntity);
+ markerShowEntity.setBindObj( noveltyInfo );
+ markerShowEntity.setMarkerLocation( markerLocation );
+ markerShowEntity.setMarkerType( noveltyInfo.getType() );
+ markerShowEntity.setTextContent( noveltyInfo.getLocation().getAddress() );
+ drawMapMarker( markerShowEntity );
}
}
@@ -632,11 +589,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
* @param list
* @return
*/
- private int getAppropriateSize(int maxAmount, List list) {
- if (list == null) {
+ private int getAppropriateSize( int maxAmount, List list ) {
+ if ( list == null ) {
return 0;
}
- return Math.min(maxAmount, list.size());
+ return Math.min( maxAmount, list.size() );
}
@@ -645,22 +602,22 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
*
* @param markerCardResult
*/
- private void trackData(MarkerCardResult markerCardResult) {
- if (markerCardResult == null) {
+ private void trackData( MarkerCardResult markerCardResult ) {
+ if ( markerCardResult == null ) {
return;
}
JSONArray array = new JSONArray();
- List onlineCarList = markerCardResult.getOnlineCar();
- List exploreWayList = markerCardResult.getExploreWay();
- List shareMusicList = markerCardResult.getShareMusic();
- List noveltyInfoList = markerCardResult.getNoveltyInfo();
+ 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();
- fillNumberTrackEventBody(array, 3, size);
+ fillNumberTrackEventBody( array, 3, size );
size = exploreWayList == null ? 0 : exploreWayList.size();
- fillNumberTrackEventBody(array, 1, size);
+ fillNumberTrackEventBody( array, 1, size );
size = shareMusicList == null ? 0 : shareMusicList.size();
- fillNumberTrackEventBody(array, 4, size);
+ fillNumberTrackEventBody( array, 4, size );
int num_gas_station = 0;
int num_traffic_check = 0;
@@ -668,12 +625,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
int num_shop_discount = 0;
int num_fours_shop = 0;
- if (noveltyInfoList != null) {
- for (MarkerNoveltyInfo markerNoveltyInfo : noveltyInfoList) {
- if (markerNoveltyInfo == null) {
+ if ( noveltyInfoList != null ) {
+ for ( MarkerNoveltyInfo markerNoveltyInfo : noveltyInfoList ) {
+ if ( markerNoveltyInfo == null ) {
continue;
}
- switch (markerNoveltyInfo.getPoiType()) {
+ switch ( markerNoveltyInfo.getPoiType() ) {
case MarkerPoiTypeEnum.GAS_STATION:
num_gas_station++;
break;
@@ -693,20 +650,20 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
}
}
- fillNumberTrackEventBody(array, 2, num_gas_station);
- fillNumberTrackEventBody(array, 6, num_road_closed);
- fillNumberTrackEventBody(array, 5, num_traffic_check);
- fillNumberTrackEventBody(array, 7, num_shop_discount);
- fillNumberTrackEventBody(array, 8, num_fours_shop);
+ fillNumberTrackEventBody( array, 2, num_gas_station );
+ fillNumberTrackEventBody( array, 6, num_road_closed );
+ fillNumberTrackEventBody( array, 5, num_traffic_check );
+ fillNumberTrackEventBody( array, 7, num_shop_discount );
+ fillNumberTrackEventBody( array, 8, num_fours_shop );
try {
- if (array.length() == 0) {
+ if ( array.length() == 0 ) {
return;
}
- final Map properties = new HashMap<>();
- properties.put("data", array.toString());
- MarkerServiceHandler.getMogoAnalytics().track("Launcher_Data_Get", properties);
- } catch (Exception e) {
+ final Map< String, Object > properties = new HashMap<>();
+ properties.put( "data", array.toString() );
+ MarkerServiceHandler.getMogoAnalytics().track( "Launcher_Data_Get", properties );
+ } catch ( Exception e ) {
e.printStackTrace();
}
}
@@ -717,18 +674,15 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
* 仅在数据刷新的时候分发
*/
private void dispatchDataToBiz() {
- if (mLastDataResult == null) {
+ if ( mLastDataResult == null ) {
return;
}
- List onlineCarList = mLastDataResult.getOnlineCar();
- List exploreWayList = mLastDataResult.getExploreWay();
- List 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);
+ List< MarkerOnlineCar > 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 );
}
/**
@@ -737,14 +691,14 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
* @param biz
* @param object
*/
- private void dispatchDataToBis(String biz, Object object) {
- if (TextUtils.isEmpty(biz)) {
+ private void dispatchDataToBis( String biz, Object object ) {
+ if ( TextUtils.isEmpty( biz ) ) {
return;
}
try {
- Logger.d(TAG, "dispatch data to %s", biz);
- MarkerServiceHandler.getDataManager().syncData(biz, object);
- } catch (Exception e) {
+ Logger.d( TAG, "dispatch data to %s", biz );
+ MarkerServiceHandler.getDataManager().syncData( biz, object );
+ } catch ( Exception e ) {
e.printStackTrace();
}
}
@@ -752,15 +706,15 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
/**
* 统计埋点
*/
- private synchronized static void fillNumberTrackEventBody(JSONArray arr, int type, int size) {
+ private synchronized static void fillNumberTrackEventBody( JSONArray arr, int type, int size ) {
JSONObject object = new JSONObject();
try {
- object.put("type", type);
- object.put("num", size);
- if (arr != null) {
- arr.put(object);
+ object.put( "type", type );
+ object.put( "num", size );
+ if ( arr != null ) {
+ arr.put( object );
}
- } catch (JSONException e) {
+ } catch ( JSONException e ) {
e.printStackTrace();
}
}
@@ -771,143 +725,75 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
* @param markerShowEntity marker 绘制数据实体
* @return 绘制的Marker
*/
- public synchronized IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity) {
+ public synchronized IMogoMarker drawMapMarker( MarkerShowEntity markerShowEntity ) {
try {
- return drawMapMarker(markerShowEntity, isSmallType());
- } catch (Exception e) {
+ return drawMapMarker( markerShowEntity, isSmallType() );
+ } catch ( Exception e ) {
e.printStackTrace();
return null;
}
}
private boolean isSmallType() {
- return !TextUtils.isEmpty(mCurrentModuleName) && mLastCheckMarker != null && !mLastCheckMarker.isDestroyed() && TextUtils.equals(mCurrentModuleName, mLastCheckMarker.getOwner());
+ return !TextUtils.isEmpty( mCurrentModuleName )
+ && mLastCheckMarker != null
+ && !mLastCheckMarker.isDestroyed()
+ && TextUtils.equals( mCurrentModuleName, mLastCheckMarker.getOwner() );
}
- private IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity, boolean isSmall) {
- if (markerShowEntity == null || markerShowEntity.getMarkerLocation() == null) {
+ private IMogoMarker drawMapMarker( MarkerShowEntity markerShowEntity, boolean isSmall ) {
+ if ( markerShowEntity == null || markerShowEntity.getMarkerLocation() == null ) {
return null;
}
- MogoMarkerOptions options =
- new MogoMarkerOptions().owner(markerShowEntity.getMarkerType()).object(markerShowEntity).latitude(markerShowEntity.getMarkerLocation().getLat()).longitude(markerShowEntity.getMarkerLocation().getLon());
- IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity,
- options);
- options.icon(markerView.getView());
+ MogoMarkerOptions options = new MogoMarkerOptions()
+ .owner( markerShowEntity.getMarkerType() )
+ .object( markerShowEntity )
+ .latitude( markerShowEntity.getMarkerLocation().getLat() )
+ .longitude( markerShowEntity.getMarkerLocation().getLon() );
+ IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, options );
+ options.icon( markerView.getView() );
- IMogoMarker marker =
- MarkerServiceHandler.getMarkerManager().addMarker(markerShowEntity.getMarkerType(), options);
- marker.setOwner(markerShowEntity.getMarkerType());
- markerView.setMarker(marker);
- marker.setOnMarkerClickListener(this);
+ IMogoMarker marker = MarkerServiceHandler.getMarkerManager().addMarker( markerShowEntity.getMarkerType(), options );
+ marker.setOwner( markerShowEntity.getMarkerType() );
+ markerView.setMarker( marker );
+ marker.setOnMarkerClickListener( this );
- if (isSmall) {
- List markers = new ArrayList<>();
- markers.add(marker);
- setMarkersSmall(markers);
+ if ( isSmall ) {
+ List< IMogoMarker > markers = new ArrayList<>();
+ markers.add( marker );
+ setMarkersSmall( markers );
}
- markerShowEntity.setMarker(marker);
+ markerShowEntity.setMarker( marker );
return marker;
}
@Override
- public Class target() {
+ public Class< MarkerResponse > target() {
return MarkerResponse.class;
}
@Override
- public void onMsgReceived(final MarkerResponse response) {
- if (ignoreDrawRequest()) {
+ public void onMsgReceived( final MarkerResponse response ) {
+ if ( ignoreDrawRequest() ) {
return;
}
- Logger.d(TAG, "接收到了地图大而全数据");
- runOnTargetThread(() -> {
- drawMapMarker(response);
- });
+ Logger.d( TAG, "接收到了地图大而全数据" );
+ runOnTargetThread( () -> {
+ drawMapMarker( response );
+ } );
}
- public void getOnlineCarData(MogoLatLng latlng) {
-// if (mCurrentModuleName.equals(ServiceConst.CARD_TYPE_USER_DATA)){
- mCarLatLng = latlng;
- getOnlineCarList();
- UiThreadHandler.removeCallbacks(runnable);
- UiThreadHandler.postDelayed(runnable, mCarSmoothDuration * 1000);
-// }
- }
-
- private Runnable runnable = new Runnable() {
- @Override
- public void run() {
- getOnlineCarList();
- UiThreadHandler.postDelayed(this, mCarSmoothDuration * 1000);
- }
- };
-
- private double lat = 39.969161;
- private double lng = 116.412334;
- private int a = 0;
-
- private void getOnlineCarList() {
- mRefreshModel.queryOnLineCarWithRoute(mCarLatLng, false, false, new RefreshCallback() {
- @Override
- public void onSuccess(Object o) {
- Logger.i(TAG, "11111111211" + o.toString());
-
-// MarkerResponse data = (MarkerResponse)o;
-// MarkerCardResult result = data.getResult();
-// if (result == null) {
-// return;
-// }
-//
-// List onlineCarList = result.getOnlineCar();
-// drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD );
-
- a++;
- if (a == 3){
- return;
- }
-
- MarkerLocation location = new MarkerLocation();
- location.setLat(lat);
- location.setLon(lng);
-
-
- lng += 0.003;
- double[] coor2 = {lng,lat};
- MarkerCarPois pois2 = new MarkerCarPois();
- pois2.setCoordinates(coor2);
-
- List pois = new ArrayList<>();
- pois.add(pois2);
- MarkerOnlineCar onlineCar = new MarkerOnlineCar();
- onlineCar.setLocation(location);
- onlineCar.setType(ServiceConst.CARD_TYPE_USER_DATA);
- onlineCar.setPois(pois);
-
- List onlineCarList = new ArrayList<>();
- onlineCarList.add(onlineCar);
-
- drawOnlineCarMarkers(onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD);
-
- }
-
- @Override
- public void onFail() {
-
- }
- });
- }
-
-
private boolean ignoreDrawRequest() {
- return MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() || MarkerServiceHandler.getMogoStatusManager().isADASShow();
+ return MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()
+ || MarkerServiceHandler.getMogoStatusManager().isADASShow();
}
- private void runOnTargetThread(Runnable runnable) {
- if (runnable == null) {
+ private void runOnTargetThread( Runnable runnable ) {
+ if ( runnable == null ) {
return;
}
- ThreadPoolService.execute(runnable);
+ ThreadPoolService.execute( runnable );
}
public String getCurrentModuleName() {
@@ -915,19 +801,20 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
}
@Override
- public void onBizActionDone(String biz, int position, Object data) {
- Logger.d(TAG, "biz = %s, position = %s", biz, position);
- if (data instanceof MarkerShowEntity && ((MarkerShowEntity) data).getMarker() != null) {
- switchMarkerOpenStatus(((MarkerShowEntity) data).getMarker());
+ public void onBizActionDone( String biz, int position, Object data ) {
+ Logger.d( TAG, "biz = %s, position = %s", biz, position );
+ if ( data instanceof MarkerShowEntity &&
+ ( ( MarkerShowEntity ) data ).getMarker() != null ) {
+ switchMarkerOpenStatus( ( ( MarkerShowEntity ) data ).getMarker() );
} else {
IMogoMarkerManager markerManager = MarkerServiceHandler.getMarkerManager();
- List markers = markerManager.getMarkers(biz);
- if (markers != null) {
+ List< IMogoMarker > markers = markerManager.getMarkers( biz );
+ if ( markers != null ) {
try {
- IMogoMarker marker = markers.get(position);
- switchMarkerOpenStatus(marker);
- } catch (Exception e) {
- Logger.e(TAG, e, "occur error.");
+ IMogoMarker marker = markers.get( position );
+ switchMarkerOpenStatus( marker );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "occur error." );
}
}
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java
new file mode 100644
index 0000000000..2dc942e40d
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java
@@ -0,0 +1,179 @@
+package com.mogo.module.service.strategy;
+
+import android.os.Handler;
+import android.os.Message;
+
+import com.mogo.map.uicontroller.CarCursorOption;
+import com.mogo.map.uicontroller.IMogoMapUIController;
+import com.mogo.module.common.utils.CarSeries;
+import com.mogo.module.service.R;
+import com.mogo.utils.WorkThreadHandler;
+
+
+/**
+ * @author congtaowang
+ * @since 2020-04-16
+ *
+ * 上报故障求助之后自车的图标显示策略
+ */
+public class CarIconDisplayStrategy {
+
+ public static final int MSG_SEEK_HELPING_ANIM = 2000;
+
+ // F 系列才有这个帧动画
+ public static final int[] sFrame = {
+ R.drawable.module_service_ic_seek_helping_00000,
+ R.drawable.module_service_ic_seek_helping_00001,
+ R.drawable.module_service_ic_seek_helping_00002,
+ R.drawable.module_service_ic_seek_helping_00003,
+ R.drawable.module_service_ic_seek_helping_00004,
+ R.drawable.module_service_ic_seek_helping_00005,
+ R.drawable.module_service_ic_seek_helping_00006,
+ R.drawable.module_service_ic_seek_helping_00007,
+ R.drawable.module_service_ic_seek_helping_00008,
+ R.drawable.module_service_ic_seek_helping_00009,
+ R.drawable.module_service_ic_seek_helping_00010,
+ R.drawable.module_service_ic_seek_helping_00011,
+ R.drawable.module_service_ic_seek_helping_00012,
+ R.drawable.module_service_ic_seek_helping_00013,
+ R.drawable.module_service_ic_seek_helping_00014,
+ R.drawable.module_service_ic_seek_helping_00015,
+ R.drawable.module_service_ic_seek_helping_00016,
+ R.drawable.module_service_ic_seek_helping_00017,
+ R.drawable.module_service_ic_seek_helping_00018,
+ R.drawable.module_service_ic_seek_helping_00019,
+ R.drawable.module_service_ic_seek_helping_00020,
+ R.drawable.module_service_ic_seek_helping_00021,
+ R.drawable.module_service_ic_seek_helping_00022,
+ R.drawable.module_service_ic_seek_helping_00023,
+ R.drawable.module_service_ic_seek_helping_00024,
+ R.drawable.module_service_ic_seek_helping_00025,
+ R.drawable.module_service_ic_seek_helping_00026,
+ R.drawable.module_service_ic_seek_helping_00027,
+ R.drawable.module_service_ic_seek_helping_00028,
+ R.drawable.module_service_ic_seek_helping_00029,
+ R.drawable.module_service_ic_seek_helping_00030,
+ R.drawable.module_service_ic_seek_helping_00031,
+ R.drawable.module_service_ic_seek_helping_00032,
+ R.drawable.module_service_ic_seek_helping_00033,
+ R.drawable.module_service_ic_seek_helping_00034,
+ R.drawable.module_service_ic_seek_helping_00035,
+ R.drawable.module_service_ic_seek_helping_00036,
+ R.drawable.module_service_ic_seek_helping_00037,
+ R.drawable.module_service_ic_seek_helping_00038,
+ R.drawable.module_service_ic_seek_helping_00039,
+ R.drawable.module_service_ic_seek_helping_00040,
+ R.drawable.module_service_ic_seek_helping_00041,
+ R.drawable.module_service_ic_seek_helping_00042,
+ R.drawable.module_service_ic_seek_helping_00043,
+ R.drawable.module_service_ic_seek_helping_00044,
+ R.drawable.module_service_ic_seek_helping_00045,
+ R.drawable.module_service_ic_seek_helping_00046,
+ R.drawable.module_service_ic_seek_helping_00047,
+ R.drawable.module_service_ic_seek_helping_00048,
+ R.drawable.module_service_ic_seek_helping_00049,
+ R.drawable.module_service_ic_seek_helping_00050,
+ R.drawable.module_service_ic_seek_helping_00051,
+ R.drawable.module_service_ic_seek_helping_00052,
+ R.drawable.module_service_ic_seek_helping_00053,
+ R.drawable.module_service_ic_seek_helping_00054,
+ R.drawable.module_service_ic_seek_helping_00055,
+ R.drawable.module_service_ic_seek_helping_00056,
+ R.drawable.module_service_ic_seek_helping_00057,
+ R.drawable.module_service_ic_seek_helping_00058,
+ R.drawable.module_service_ic_seek_helping_00059,
+ R.drawable.module_service_ic_seek_helping_00060,
+ R.drawable.module_service_ic_seek_helping_00061,
+ R.drawable.module_service_ic_seek_helping_00062,
+ R.drawable.module_service_ic_seek_helping_00063,
+ R.drawable.module_service_ic_seek_helping_00064
+ };
+
+ private static volatile CarIconDisplayStrategy sInstance;
+ private IMogoMapUIController mController;
+
+ private CarIconDisplayStrategy() {
+ mOption = new CarCursorOption.Builder().carCursorRes( R.drawable.module_service_ic_seek_helping ).build();
+ }
+
+ public static CarIconDisplayStrategy getInstance() {
+ if ( sInstance == null ) {
+ synchronized ( CarIconDisplayStrategy.class ) {
+ if ( sInstance == null ) {
+ sInstance = new CarIconDisplayStrategy();
+ }
+ }
+ }
+ return sInstance;
+ }
+
+ public synchronized void release() {
+ sInstance = null;
+ }
+
+ private Handler mSeekHelpingHandler;
+ private int mCounter = 0;
+ private boolean mStopStatus = true;
+ private CarCursorOption mOption;
+
+ public void changeCarIconStatus( IMogoMapUIController controller, boolean seekHelpingStatus ) {
+ mController = controller;
+ if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) {
+ if ( seekHelpingStatus ) {
+ playSeekHelpingAnim();
+ } else {
+ stopSeekHelpingAnim();
+ }
+ } else {
+ if ( seekHelpingStatus ) {
+ controller.setCarCursorOption( mOption );
+ } else {
+ controller.setCarCursorOption( null );
+ }
+ }
+ }
+
+ private void playSeekHelpingAnim() {
+ initHandler();
+ mStopStatus = false;
+ Message msg = Message.obtain();
+ msg.what = MSG_SEEK_HELPING_ANIM;
+ msg.arg1 = mCounter++;
+ mSeekHelpingHandler.sendMessageDelayed( msg, 100 );
+ }
+
+ private void initHandler() {
+ if ( mSeekHelpingHandler != null ) {
+ return;
+ }
+ mSeekHelpingHandler = new Handler( WorkThreadHandler.getInstance().getLooper() ) {
+ @Override
+ public void handleMessage( Message msg ) {
+ super.handleMessage( msg );
+ if ( mStopStatus ) {
+ mSeekHelpingHandler.removeMessages( MSG_SEEK_HELPING_ANIM );
+ mCounter = 0;
+ mController.setCarCursorOption( null );
+ return;
+ }
+ switch ( msg.what ) {
+ case MSG_SEEK_HELPING_ANIM:
+ mOption.setCarCursorRes( sFrame[msg.arg1 % sFrame.length] );
+ mController.setCarCursorOption( mOption );
+ playSeekHelpingAnim();
+ break;
+ }
+ }
+ };
+ }
+
+ private void stopSeekHelpingAnim() {
+ mStopStatus = true;
+ if ( mSeekHelpingHandler == null ) {
+ return;
+ }
+ mCounter = 0;
+ mSeekHelpingHandler.removeMessages( MSG_SEEK_HELPING_ANIM );
+ mController.setCarCursorOption( null );
+ }
+}
diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_seek_helping.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_seek_helping.png
new file mode 100755
index 0000000000..ed3ff999dd
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_seek_helping.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping.png
new file mode 100755
index 0000000000..aa6eb75043
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00000.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00000.png
new file mode 100755
index 0000000000..91ef580142
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00000.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00001.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00001.png
new file mode 100755
index 0000000000..035c1dc64e
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00001.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00002.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00002.png
new file mode 100755
index 0000000000..be7329b427
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00002.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00003.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00003.png
new file mode 100755
index 0000000000..477ae463a1
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00003.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00004.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00004.png
new file mode 100755
index 0000000000..1e9174360a
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00004.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00005.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00005.png
new file mode 100755
index 0000000000..1f5662e952
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00005.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00006.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00006.png
new file mode 100755
index 0000000000..99f9c399c7
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00006.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00007.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00007.png
new file mode 100755
index 0000000000..51c2854387
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00007.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00008.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00008.png
new file mode 100755
index 0000000000..e85fbc19bf
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00008.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00009.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00009.png
new file mode 100755
index 0000000000..f2843ce176
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00009.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00010.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00010.png
new file mode 100755
index 0000000000..2d03318e75
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00010.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00011.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00011.png
new file mode 100755
index 0000000000..ad788d3c68
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00011.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00012.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00012.png
new file mode 100755
index 0000000000..dc52364e7b
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00012.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00013.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00013.png
new file mode 100755
index 0000000000..b8ea0b316c
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00013.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00014.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00014.png
new file mode 100755
index 0000000000..8abb4ccf51
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00014.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00015.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00015.png
new file mode 100755
index 0000000000..41549be007
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00015.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00016.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00016.png
new file mode 100755
index 0000000000..9fb488f78a
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00016.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00017.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00017.png
new file mode 100755
index 0000000000..de08a87e4c
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00017.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00018.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00018.png
new file mode 100755
index 0000000000..8a257850cc
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00018.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00019.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00019.png
new file mode 100755
index 0000000000..938c6485e0
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00019.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00020.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00020.png
new file mode 100755
index 0000000000..41bf443f4d
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00020.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00021.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00021.png
new file mode 100755
index 0000000000..f3f8aa9264
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00021.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00022.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00022.png
new file mode 100755
index 0000000000..5a12355914
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00022.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00023.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00023.png
new file mode 100755
index 0000000000..c189afaf82
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00023.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00024.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00024.png
new file mode 100755
index 0000000000..a5e9a3a255
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00024.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00025.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00025.png
new file mode 100755
index 0000000000..030107cd78
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00025.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00026.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00026.png
new file mode 100755
index 0000000000..6267571bff
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00026.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00027.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00027.png
new file mode 100755
index 0000000000..abec499d36
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00027.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00028.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00028.png
new file mode 100755
index 0000000000..eba6b2bcbf
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00028.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00029.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00029.png
new file mode 100755
index 0000000000..a67c5f9cec
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00029.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00030.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00030.png
new file mode 100755
index 0000000000..3f33fb9c3a
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00030.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00031.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00031.png
new file mode 100755
index 0000000000..0f3fd7a901
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00031.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00032.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00032.png
new file mode 100755
index 0000000000..5a9fd6fbd0
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00032.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00033.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00033.png
new file mode 100755
index 0000000000..3ded233972
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00033.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00034.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00034.png
new file mode 100755
index 0000000000..3cdb8c6e34
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00034.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00035.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00035.png
new file mode 100755
index 0000000000..182a4ba602
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00035.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00036.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00036.png
new file mode 100755
index 0000000000..ea15361039
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00036.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00037.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00037.png
new file mode 100755
index 0000000000..a8d2759378
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00037.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00038.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00038.png
new file mode 100755
index 0000000000..162dc6d8cc
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00038.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00039.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00039.png
new file mode 100755
index 0000000000..cd55a2012c
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00039.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00040.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00040.png
new file mode 100755
index 0000000000..fb2bf1d674
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00040.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00041.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00041.png
new file mode 100755
index 0000000000..b9c1d75d70
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00041.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00042.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00042.png
new file mode 100755
index 0000000000..592a4fa684
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00042.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00043.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00043.png
new file mode 100755
index 0000000000..2bf047529a
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00043.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00044.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00044.png
new file mode 100755
index 0000000000..1e6b1c62ca
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00044.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00045.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00045.png
new file mode 100755
index 0000000000..0ef8052522
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00045.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00046.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00046.png
new file mode 100755
index 0000000000..ddf515a0cc
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00046.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00047.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00047.png
new file mode 100755
index 0000000000..32804bc40f
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00047.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00048.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00048.png
new file mode 100755
index 0000000000..e79bb3147b
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00048.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00049.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00049.png
new file mode 100755
index 0000000000..5d2e4c32a7
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00049.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00050.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00050.png
new file mode 100755
index 0000000000..b710ad29b0
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00050.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00051.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00051.png
new file mode 100755
index 0000000000..a3e2f3e5bc
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00051.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00052.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00052.png
new file mode 100755
index 0000000000..c5fd7137d8
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00052.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00053.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00053.png
new file mode 100755
index 0000000000..975e1d8fca
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00053.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00054.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00054.png
new file mode 100755
index 0000000000..f9e8bf57cc
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00054.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00055.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00055.png
new file mode 100755
index 0000000000..3bc6fd7222
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00055.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00056.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00056.png
new file mode 100755
index 0000000000..d4e83d833b
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00056.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00057.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00057.png
new file mode 100755
index 0000000000..28d16d7b2f
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00057.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00058.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00058.png
new file mode 100755
index 0000000000..fabcdee32f
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00058.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00059.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00059.png
new file mode 100755
index 0000000000..6bd5034043
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00059.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00060.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00060.png
new file mode 100755
index 0000000000..ce803618bc
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00060.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00061.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00061.png
new file mode 100755
index 0000000000..973c84895e
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00061.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00062.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00062.png
new file mode 100755
index 0000000000..9f2edaa2d8
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00062.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00063.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00063.png
new file mode 100755
index 0000000000..dfe6bb88bf
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00063.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00064.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00064.png
new file mode 100755
index 0000000000..c4eeda5a13
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00064.png differ
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
index c5b20b8269..5307736cd1 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
@@ -1,7 +1,6 @@
package com.mogo.module.share;
import android.content.Context;
-import android.util.Log;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.module.share.dialog.LaucherShareDialog;
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 3b2cd1e96e..5a0d662a84 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,16 +4,19 @@ 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.utils.logger.Logger
/**
* 用于接收唤醒词指令,现在只接收 com.zhidao.speech.awake.notify 这一条广播
*/
class ShareVoiceCmdReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
- // todo 接收唤醒词指令
+ // 接收唤醒词指令
val command = intent.getStringExtra("command")
- if (command == "zhunbeishangbao") {
- //todo 开启服务,准备上报求助
+ 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)
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/VoiceCmdService.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/VoiceCmdService.kt
index c7cd4e464b..ae1c6924c9 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/VoiceCmdService.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/VoiceCmdService.kt
@@ -42,7 +42,7 @@ class VoiceCmdService:Service() {
if (intent.getIntExtra(ShareConstants.VOICE_CMD_SERVICE_EVENT_KEY,0) == ShareConstants.VOICE_CMD_SERVICE_SEEK_HELP) {
// 收到语音指令,准备上报求助
Logger.i(TAG, "收到语音指令,准备上报求助")
- SeekHelpManager.seekHelp(this,seekListener,false)
+ SeekHelpManager.seekHelp(this,seekListener)
}
}
return super.onStartCommand(intent, flags, startId)
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 139081e11f..a0134b5feb 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
@@ -18,4 +18,6 @@ public class ShareConstants {
public static final String VOICE_CMD_SERVICE_EVENT_KEY = "type";
public static final int VOICE_CMD_SERVICE_SEEK_HELP = 1;
+
+ public static final String VOICE_CMD_PUB_TROUBLE_HELP = "com.zhidao.auxiliaryDriving.pubTroubleHelp";
}
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 a56664a2e3..a2fbf3cc96 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
@@ -10,7 +10,6 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;
-import android.widget.Toast;
import androidx.annotation.NonNull;
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt
index 19142774ef..bcc2b3cd73 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt
@@ -3,8 +3,6 @@ package com.mogo.module.share.manager
import android.annotation.SuppressLint
import android.content.Context
import android.os.SystemClock
-import android.widget.Toast
-import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.commons.data.BaseData
import com.mogo.commons.network.SubscribeImpl
import com.mogo.commons.voice.AIAssist
@@ -15,12 +13,9 @@ import com.mogo.module.share.bean.SeekRequest
import com.mogo.module.share.bean.getJson
import com.mogo.module.share.constant.HttpConstant
import com.mogo.module.share.net.ShareApiService
-import com.mogo.service.IMogoServiceApis
-import com.mogo.service.MogoServicePaths
-import com.mogo.utils.DeviceIdUtils
+import com.mogo.utils.TipToast
import com.mogo.utils.logger.Logger
import com.mogo.utils.network.RequestOptions
-import com.mogo.utils.network.utils.GsonUtil
import com.zhidao.auto.platform.util.DeviceUtil
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
@@ -42,12 +37,13 @@ object SeekHelpManager {
private const val SEEK_RECORD_LIMIT_AMOUNT = 2
const val VOICE_WILL_SEEK_HELP = "将发布故障求助"
- private var context:Context? = null
- private var aiAssist:AIAssist? = null
+ private var context: Context? = null
+ private var aiAssist: AIAssist? = null
private val seekRecordList = mutableListOf()
private val seekListenerList = mutableListOf()
private var isSeekHelp = false
+ private var isSeeking = false
private val voiceCallback = object : IMogoVoiceCmdCallBack {
override fun onCmdSelected(cmd: String?) {
@@ -82,34 +78,36 @@ object SeekHelpManager {
*
* @param useLocalVoiceNotice 使用自己的语音播报,如果是从语音助手过来的请求,语音助手可能会走自己的播报,默认是使用自己的播报
*/
- fun seekHelp(context: Context, seekHelpListener: ISeekHelpListener,useLocalVoiceNotice:Boolean = true) {
- // context初始化
- if (this.context == null) {
- this.context = context
- aiAssist = AIAssist.getInstance(context)
- }
- isSeekHelp = ShareControl.getInstance(SeekHelpManager.context).mogoServiceApis.statusManagerApi.isSeekHelping
- Logger.d(TAG, "开始故障求助上报---${isSeekHelp}")
- seekListenerList.add(seekHelpListener)
- when {
- isSeekHelp -> {
- // 正在求助中,进行异常提示
- toast("已发布故障求助,请耐心等待")
- aiAssist?.speakTTSVoice("已发布故障求助,请耐心等待")
+ fun seekHelp(context: Context, seekHelpListener: ISeekHelpListener, useLocalVoiceNotice: Boolean = true) {
+ if(!isSeeking) {
+ isSeeking = true
+ if (this.context == null) {
+ this.context = context
+ aiAssist = AIAssist.getInstance(context)
}
- getSeekAmountByLimitTime() >= SEEK_RECORD_LIMIT_AMOUNT -> {
- // 超过限制时间内的限制次数,进行异常提示
- toast("已在求助状态,请勿连续发布哦")
- aiAssist?.speakTTSVoice("已在求助状态,请勿连续发布哦")
- }
- else -> {
- // 没有异常情况,开始故障求助
- if(useLocalVoiceNotice) {
- // 语音说完再请求,要不然可能请求的太快
- aiAssist?.speakTTSVoice(VOICE_WILL_SEEK_HELP, voiceCallback)
- }else{
- Logger.d(TAG,"不使用本地语音播报,直接开始发起求助")
- realSeekHelp()
+ isSeekHelp = ShareControl.getInstance(SeekHelpManager.context).mogoServiceApis.statusManagerApi.isSeekHelping
+ Logger.d(TAG, "开始故障求助上报---${isSeekHelp}")
+ seekListenerList.add(seekHelpListener)
+ when {
+ isSeekHelp -> {
+ // 正在求助中,进行异常提示
+ toast("已发布故障求助,请耐心等待")
+ aiAssist?.speakTTSVoice("已发布故障求助,请耐心等待")
+ }
+ getSeekAmountByLimitTime() >= SEEK_RECORD_LIMIT_AMOUNT -> {
+ // 超过限制时间内的限制次数,进行异常提示
+ toast("已在求助状态,请勿连续发布哦")
+ aiAssist?.speakTTSVoice("已在求助状态,请勿连续发布哦")
+ }
+ else -> {
+ // 没有异常情况,开始故障求助
+ if (useLocalVoiceNotice) {
+ // 语音说完再请求,要不然可能请求的太快
+ aiAssist?.speakTTSVoice(VOICE_WILL_SEEK_HELP, voiceCallback)
+ } else {
+ Logger.d(TAG, "不使用本地语音播报,直接开始发起求助")
+ realSeekHelp()
+ }
}
}
}
@@ -121,7 +119,7 @@ object SeekHelpManager {
}
private fun toast(msg: String) {
- Toast.makeText(context, msg, Toast.LENGTH_LONG).show()
+ TipToast.tip(msg)
}
/**
@@ -149,12 +147,12 @@ object SeekHelpManager {
// 请求故障求助接口
val seekRequest = SeekRequest(DeviceUtil.getSn())
val param = mutableMapOf("data" to seekRequest.getJson())
-
+
ShareControl.getInstance(context).mogoServiceApis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendHelpSignal(param).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(object : SubscribeImpl(RequestOptions.create(context)) {
override fun onSuccess(o: BaseData?) {
super.onSuccess(o)
// 接口请求成功,内部同步v2x状态,通知adas,改变自车图标
- ShareControl.getInstance(context).mogoServiceApis.statusManagerApi.setSeekHelping("ShareDialog",true)
+ ShareControl.getInstance(context).mogoServiceApis.statusManagerApi.setSeekHelping("ShareDialog", true)
isSeekHelp = true
aiAssist?.speakTTSVoice("已发布求助信息,将为你通知其他车主")
toast("已发布求助信息,将为你通知其他车主")
@@ -162,6 +160,7 @@ object SeekHelpManager {
seekListenerList.forEach {
it.onSeekHelpSuccess()
}
+ isSeeking = false
}
override fun onError(e: Throwable) {
@@ -170,6 +169,7 @@ object SeekHelpManager {
Logger.e(TAG, "上报求助失败,网络异常")
e.printStackTrace()
seekHelpFail()
+ isSeeking = false
}
override fun onError(message: String?, code: Int) {
@@ -177,6 +177,7 @@ object SeekHelpManager {
// 接口请求失败
Logger.e(TAG, "上报求助失败")
seekHelpFail()
+ isSeeking = false
}
})
}
@@ -190,4 +191,30 @@ object SeekHelpManager {
aiAssist?.speakTTSVoice("求助上报失败,请稍后重试")
}
+ fun debugCancelSeek() {
+ val seekRequest = SeekRequest(DeviceUtil.getSn(), 0)
+ val param = mutableMapOf("data" to seekRequest.getJson())
+ ShareControl.getInstance(context).mogoServiceApis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendHelpSignal(param).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(object : SubscribeImpl(RequestOptions.create(context)) {
+ override fun onSuccess(o: BaseData?) {
+ super.onSuccess(o)
+ // 接口请求成功,内部同步v2x状态,通知adas,改变自车图标
+ ShareControl.getInstance(context).mogoServiceApis.statusManagerApi.setSeekHelping("ShareDialog", false)
+ isSeekHelp = false
+ }
+
+ override fun onError(e: Throwable) {
+ super.onError(e)
+ // 接口请求失败
+ Logger.e(TAG, "上报求助失败,网络异常")
+ e.printStackTrace()
+ }
+
+ override fun onError(message: String?, code: Int) {
+ super.onError(message, code)
+ // 接口请求失败
+ Logger.e(TAG, "上报求助失败")
+ }
+ })
+ }
+
}
\ No newline at end of file
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 ab5e22a384..d2f7197cce 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_road_closure.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_closure.png
index 0e20d530b5..f6e8d2b499 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_seek_help.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_seek_help.png
new file mode 100644
index 0000000000..c87f75fd0d
Binary files /dev/null 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_traffic_check.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_traffic_check.png
index 3fe74d1514..737a4c75a8 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_block_up.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_block_up.png
index aa80dfe42f..0d33d14d6c 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_road_closure.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_closure.png
index 7726fc04d4..0356075b5d 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_seek_help.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_seek_help.png
new file mode 100644
index 0000000000..018f787003
Binary files /dev/null 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_traffic_check.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_traffic_check.png
index 18e28e06f7..d9139b14e3 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/layout/launcher_dialog_share_2.xml b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_2.xml
index 06ea3db506..7c4e60d6bc 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
@@ -39,10 +39,12 @@
android:drawablePadding="@dimen/share_module_tv_margin_top"
android:gravity="center"
android:text="上报拥堵"
+ 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_30"
+ android:layout_marginTop="@dimen/dp_64"
app:layout_constraintLeft_toLeftOf="@+id/vBg"
app:layout_constraintRight_toLeftOf="@+id/tvTrafficCheck"
app:layout_constraintTop_toBottomOf="@+id/btn_share_title" />
@@ -83,11 +85,12 @@
android:id="@+id/tvNeedHelp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:drawableTop="@drawable/share_oil_price"
+ android:drawableTop="@drawable/share_seek_help"
android:drawablePadding="@dimen/share_module_tv_margin_top"
android:gravity="center"
- android:text="故障求助"
+ android:text="发起求助"
android:textColor="@color/white"
+ android:layout_marginEnd="@dimen/dp_76"
android:textSize="@dimen/share_module_item"
android:textStyle="bold"
app:layout_constraintLeft_toRightOf="@+id/tvClosure"
@@ -98,11 +101,11 @@
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 829f3c866b..b2c827db12 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
@@ -8,6 +8,7 @@ import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.service.datamanager.IMogoDataManager;
+import com.mogo.service.entrance.IMogoEntranceButtonController;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.imageloader.IMogoImageloader;
import com.mogo.service.intent.IMogoIntentManager;
@@ -170,4 +171,11 @@ public interface IMogoServiceApis extends IProvider {
* @return
*/
IMogoLauncher getLauncherApi();
+
+ /**
+ * 获取入口按钮控制器
+ *
+ * @return
+ */
+ IMogoEntranceButtonController getEntranceButtonController();
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
index c422f05b1a..ca78173ea3 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
@@ -160,4 +160,10 @@ public class MogoServicePaths {
*/
@Deprecated
public static final String PATH_LAUNCHER_API = "/launcher/api";
+
+ /**
+ * 入口按钮
+ */
+ @Deprecated
+ public static final String PATH_ENTRANCE_BUTTON_API = "/entrancebutton/api";
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/entrance/ButtonIndex.java b/services/mogo-service-api/src/main/java/com/mogo/service/entrance/ButtonIndex.java
new file mode 100644
index 0000000000..1c4e955019
--- /dev/null
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/entrance/ButtonIndex.java
@@ -0,0 +1,20 @@
+package com.mogo.service.entrance;
+
+/**
+ * @author congtaowang
+ * @since 2020-04-16
+ *
+ * 入口按钮顺序:从上到下
+ */
+public enum ButtonIndex {
+
+ /**
+ * 第一个
+ */
+ BUTTON1,
+
+ /**
+ * 第二个
+ */
+ BUTTON2;
+}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/entrance/IMogoEntranceButtonController.java b/services/mogo-service-api/src/main/java/com/mogo/service/entrance/IMogoEntranceButtonController.java
new file mode 100644
index 0000000000..254109c16b
--- /dev/null
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/entrance/IMogoEntranceButtonController.java
@@ -0,0 +1,22 @@
+package com.mogo.service.entrance;
+
+import android.widget.TextView;
+
+import com.alibaba.android.arouter.facade.template.IProvider;
+
+/**
+ * @author congtaowang
+ * @since 2020-04-16
+ *
+ * 入口按钮
+ */
+public interface IMogoEntranceButtonController extends IProvider {
+
+ /**
+ * 获取入口按钮实例
+ *
+ * @param index
+ * @return
+ */
+ TextView getButton( ButtonIndex index );
+}
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 06105ec2f5..b5abb42654 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
@@ -86,10 +86,18 @@ public interface IMogoStatusManager extends IProvider {
/**
* 求助状态
+ *
* @return
*/
boolean isSeekHelping();
+ /**
+ * 是否在查看全程状态
+ *
+ * @return
+ */
+ boolean isDisplayOverview();
+
/**
* 设置小智语音UI状态
*
@@ -174,10 +182,19 @@ public interface IMogoStatusManager extends IProvider {
/**
* 设置求助状态
+ *
* @param tag
* @param seekHelping
*/
- void setSeekHelping(String tag, boolean seekHelping);
+ void setSeekHelping( String tag, boolean seekHelping );
+
+ /**
+ * 设置展示全程状态
+ *
+ * @param tag
+ * @param display
+ */
+ void setDisplayOverview( String tag, boolean display );
/**
* 注册监听
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java
index 5dc6262546..f6f078d542 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java
@@ -64,5 +64,10 @@ public enum StatusDescriptor {
/**
* 求助状态
*/
- SEEK_HELPING;
+ SEEK_HELPING,
+
+ /**
+ * 展示全程
+ */
+ DISPLAY_OVERVIEW;
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoWindowManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoWindowManager.java
index e3d86b0ae3..6ef9929854 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoWindowManager.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoWindowManager.java
@@ -22,7 +22,7 @@ public interface IMogoWindowManager extends IProvider {
* @param y 左上角y坐标
* @param movable 是否可移动(无效)
*/
- void addView(View view, int x, int y, boolean movable);
+ void addView( View view, int x, int y, boolean movable );
/**
@@ -32,7 +32,7 @@ public interface IMogoWindowManager extends IProvider {
* @param params 布局参数
* @param movable 是否可移动(无效)
*/
- void addView(View view, FrameLayout.LayoutParams params, boolean movable);
+ void addView( View view, FrameLayout.LayoutParams params, boolean movable );
/**
* 向window中添加指定的布局,优先级大的展示
@@ -43,7 +43,7 @@ public interface IMogoWindowManager extends IProvider {
* @param y 左上角y坐标
* @param movable 是否可移动(无效)
*/
- void addView(int priority, View view, int x, int y, boolean movable);
+ void addView( int priority, View view, int x, int y, boolean movable );
/**
* 向window中添加指定的布局,优先级大的展示
@@ -53,12 +53,22 @@ public interface IMogoWindowManager extends IProvider {
* @param params 布局参数
* @param movable 是否可移动(无效)
*/
- void addView(int priority, View view, FrameLayout.LayoutParams params, boolean movable);
+ void addView( int priority, View view, FrameLayout.LayoutParams params, boolean movable );
/**
* 移除对应的 view
*
* @param view
*/
- void removeView(View view);
+ void removeView( View view );
+
+ /**
+ * 隐藏所有
+ */
+ void hideAll();
+
+ /**
+ * 显示所有
+ */
+ void showAll();
}
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java
index b23dddd85a..462e799b7a 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java
@@ -13,6 +13,7 @@ import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.service.datamanager.IMogoDataManager;
+import com.mogo.service.entrance.IMogoEntranceButtonController;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.imageloader.IMogoImageloader;
import com.mogo.service.impl.analytics.impl.MogoAnalyticsImpl;
@@ -153,6 +154,11 @@ public class MogoServiceApis implements IMogoServiceApis {
return getApiInstance( IMogoLauncher.class, MogoServicePaths.PATH_LAUNCHER_API );
}
+ @Override
+ public IMogoEntranceButtonController getEntranceButtonController() {
+ return getApiInstance( IMogoEntranceButtonController.class, MogoServicePaths.PATH_ENTRANCE_BUTTON_API );
+ }
+
private static < T extends IProvider > T getApiInstance( Class< T > clazz, String path ) {
T inst = SingletonsHolder.get( clazz );
if ( inst == null ) {
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java
index 117f11db27..47202f552c 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java
@@ -105,6 +105,11 @@ public class MogoStatusManager implements IMogoStatusManager {
return get_bool_val( StatusDescriptor.SEEK_HELPING );
}
+ @Override
+ public boolean isDisplayOverview() {
+ return get_bool_val( StatusDescriptor.DISPLAY_OVERVIEW );
+ }
+
private boolean get_bool_val( StatusDescriptor descriptor ) {
Boolean val = mStatus.get( descriptor );
return val == null ? false : val;
@@ -190,6 +195,13 @@ public class MogoStatusManager implements IMogoStatusManager {
recordStatusModifier( tag, StatusDescriptor.SEEK_HELPING );
}
+ @Override
+ public void setDisplayOverview( String tag, boolean display ) {
+ mStatus.put( StatusDescriptor.DISPLAY_OVERVIEW, display );
+ invokeStatusChangedListener( StatusDescriptor.DISPLAY_OVERVIEW, display );
+ recordStatusModifier( tag, StatusDescriptor.DISPLAY_OVERVIEW );
+ }
+
private void invokeStatusChangedListener( StatusDescriptor descriptor, boolean status ) {
if ( mListeners.containsKey( descriptor ) ) {
Iterator< IMogoStatusChangedListener > iterator = mListeners.get( descriptor ).iterator();
diff --git a/upload.sh b/upload.sh
index 317bc3cf79..69ea42b918 100755
--- a/upload.sh
+++ b/upload.sh
@@ -15,11 +15,11 @@
./gradlew :modules:mogo-module-share:clean :modules:mogo-module-share:uploadArchives
./gradlew :modules:mogo-module-authorize:clean :modules:mogo-module-authorize:uploadArchives
./gradlew :modules:mogo-module-extensions:clean :modules:mogo-module-extensions:uploadArchives
+./gradlew :modules:mogo-module-gps-simulator:clean :modules:mogo-module-gps-simulator:uploadArchives
./gradlew :modules:mogo-module-search:clean :modules:mogo-module-search:uploadArchives
./gradlew :modules:mogo-module-main:clean :modules:mogo-module-main:uploadArchives
./gradlew :modules:mogo-module-back:clean :modules:mogo-module-back:uploadArchives
./gradlew :modules:mogo-module-guide:clean :modules:mogo-module-guide:uploadArchives
-./gradlew :modules:mogo-module-gps-simulator:clean :modules:mogo-module-gps-simulator:uploadArchives
./gradlew :modules:mogo-module-gps-simulator-debug:clean :modules:mogo-module-gps-simulator-debug:uploadArchives
./gradlew :modules:mogo-module-gps-simulator-noop:clean :modules:mogo-module-gps-simulator-noop:uploadArchives