? = hashMapOf()) {
+ if (trackRouter == null) {
+ val arouter = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation()
+ if (arouter is IMogoServiceApis) {
+ trackRouter = arouter.analyticsApi
+ }
+ }
+ trackRouter!!.track(eventType, data)
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/util/SharedPreferenceUtil.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/util/SharedPreferenceUtil.kt
index 5348919b04..5a1fcb87e3 100644
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/util/SharedPreferenceUtil.kt
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/util/SharedPreferenceUtil.kt
@@ -11,4 +11,8 @@ object SharedPreferenceUtil {
return SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).getBoolean(HAS_GUIDE, false)
}
+ fun setGuideFinish() {
+ SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).putBoolean(HAS_GUIDE, true)
+ }
+
}
\ No newline at end of file
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java
index dde1f24783..a3c1ea3cde 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
@@ -25,6 +25,8 @@ import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.MogoModule;
import com.mogo.module.common.MogoModulePaths;
import com.mogo.module.main.assist.MapBroadCastHelper;
+import com.mogo.module.main.cards.CardIntroduceConfig;
+import com.mogo.module.main.cards.CardIntroduceConfigs;
import com.mogo.module.main.cards.CardModulesAdapter;
import com.mogo.module.main.cards.HorizentalStackTransformer;
import com.mogo.module.main.cards.MogoModulesHandler;
@@ -198,7 +200,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mCardCoverUpBottomLayout = findViewById( R.id.module_main_id_card_cover_up_bottom );
// 避免事件穿透导致地图被滑动
- mLeftShadowFrame.setOnClickListener( view -> {} );
+ mLeftShadowFrame.setOnClickListener( view -> {
+ } );
WindowViewHandler.init( mFloatingLayout );
}
@@ -378,6 +381,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
MapBroadCastHelper.getInstance( this ).mapBackground();
super.onPause();
mMogoStatusManager.setMainPageResumeStatus( TAG, false );
+ CardIntroduceConfigs.flush( getApplicationContext() );
}
@Override
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/CardIntroduceConfig.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/CardIntroduceConfig.java
new file mode 100644
index 0000000000..ef3b24ed50
--- /dev/null
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/CardIntroduceConfig.java
@@ -0,0 +1,23 @@
+package com.mogo.module.main.cards;
+
+/**
+ * @author congtaowang
+ * @since 2020-03-27
+ *
+ * 卡片播报配置
+ */
+public class CardIntroduceConfig {
+
+ public String cardType;
+ public String broadcastWords;
+ public int broadcastAmount;
+
+ public CardIntroduceConfig( String cardType, String broadcastWords, int broadcastAmount ) {
+ this.cardType = cardType;
+ this.broadcastWords = broadcastWords;
+ this.broadcastAmount = broadcastAmount;
+ }
+
+ public CardIntroduceConfig() {
+ }
+}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/CardIntroduceConfigs.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/CardIntroduceConfigs.java
new file mode 100644
index 0000000000..70124fa932
--- /dev/null
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/CardIntroduceConfigs.java
@@ -0,0 +1,99 @@
+package com.mogo.module.main.cards;
+
+import android.content.Context;
+
+import com.mogo.commons.voice.AIAssist;
+import com.mogo.commons.voice.VoicePreemptType;
+import com.mogo.module.common.ModuleNames;
+import com.mogo.service.statusmanager.IMogoStatusManager;
+import com.mogo.utils.CommonUtils;
+import com.mogo.utils.WorkThreadHandler;
+import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.utils.GsonUtil;
+import com.mogo.utils.storage.SharedPrefsMgr;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author congtaowang
+ * @since 2020-03-27
+ *
+ * 卡片播报配置
+ */
+public class CardIntroduceConfigs {
+
+ private static final String TAG = "CardIntroduceConfigs";
+
+ public static final String KEY_VOICE_BROADCAST_CONFIG = "voice_broadcast_";
+ public static String sBroadcastConfigKey;
+
+ public static Map< String, CardIntroduceConfig > sConfigs = new HashMap<>();
+ private static IMogoStatusManager sStatusManager;
+
+ static {
+ sConfigs.put( ModuleNames.CARD_TYPE_BUSINESS_OPERATION, new CardIntroduceConfig( ModuleNames.CARD_TYPE_BUSINESS_OPERATION, "", 3 ) );
+ sConfigs.put( ModuleNames.CARD_TYPE_SHARE_MUSIC, new CardIntroduceConfig( ModuleNames.CARD_TYPE_SHARE_MUSIC, "音乐新闻听书,海量资源随你选", 0 ) );
+ sConfigs.put( ModuleNames.CARD_TYPE_CARS_CHATTING, new CardIntroduceConfig( ModuleNames.CARD_TYPE_CARS_CHATTING, "开车无聊,就用车聊聊", 0 ) );
+ sConfigs.put( ModuleNames.CARD_TYPE_ROAD_CONDITION, new CardIntroduceConfig( ModuleNames.CARD_TYPE_ROAD_CONDITION, "随时查看路况,可以对我说某某地点堵不堵", 0 ) );
+ sConfigs.put( ModuleNames.CARD_TYPE_USER_DATA, new CardIntroduceConfig( ModuleNames.CARD_TYPE_USER_DATA, "在线车辆,邀你在地图上发现万千有趣的车友", 0 ) );
+ sConfigs.put( ModuleNames.CARD_TYPE_NOVELTY, new CardIntroduceConfig( ModuleNames.CARD_TYPE_NOVELTY, "新鲜事,邀你给同城车友分享沿途封路、拥堵消息", 0 ) );
+ }
+
+ public static void init( Context context, IMogoStatusManager manager ) {
+ sStatusManager = manager;
+ WorkThreadHandler.getInstance().post( () -> {
+ sBroadcastConfigKey = KEY_VOICE_BROADCAST_CONFIG + CommonUtils.getVersionCode( context );
+ String configsStr = SharedPrefsMgr.getInstance( context ).getString( sBroadcastConfigKey );
+ List< CardIntroduceConfig > configs = GsonUtil.arrayFromJson( configsStr, CardIntroduceConfig.class );
+ if ( configs == null ) {
+ return;
+ }
+ for ( CardIntroduceConfig config : configs ) {
+ if ( config == null ) {
+ return;
+ }
+ sConfigs.put( config.cardType, config );
+ }
+ } );
+ }
+
+ public static void broadcastCardIntroduce( Context context, String type ) {
+ if ( sConfigs.get( type ) == null ) {
+ Logger.d( TAG, "un support %s", type );
+ return;
+ }
+
+ if ( sConfigs.get( type ).broadcastAmount >= 3 ) {
+ Logger.d( TAG, "do not broadcastCardIntroduce %s cast amount = %s", type, type );
+ return;
+ }
+
+ if ( sStatusManager != null ) {
+ if ( !sStatusManager.isAIAssistReady() ) {
+ Logger.w( TAG, "ai assist not ready: %s", type );
+ return;
+ }
+ }
+
+ CardIntroduceConfig config = sConfigs.get( type );
+ config.broadcastAmount++;
+
+ Logger.d( TAG, "speak card introduce: %s", config.broadcastWords );
+ AIAssist.getInstance( context ).speakTTSVoice( config.broadcastWords, VoicePreemptType.PREEMPT_TYPE_IMMEADIATELY, null );
+ }
+
+ public static void flush( Context context ) {
+ if ( sBroadcastConfigKey == null || sConfigs.isEmpty() ) {
+ return;
+ }
+ WorkThreadHandler.getInstance().post( () -> {
+ synchronized ( sConfigs ) {
+ ArrayList configs = new ArrayList( sConfigs.entrySet() );
+ SharedPrefsMgr.getInstance( context ).putString( sBroadcastConfigKey, GsonUtil.jsonFromObject( configs ) );
+ }
+ } );
+ }
+}
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 961aafd349..94c87acb14 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
@@ -31,6 +31,7 @@ import com.mogo.module.main.MainActivity;
import com.mogo.module.main.assist.MapBroadCastHelper;
import com.mogo.module.main.registercenter.MogoRegisterCenterHandler;
import com.mogo.module.service.receiver.MogoReceiver;
+import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.intent.IMogoIntentListener;
@@ -66,6 +67,9 @@ public class MogoModulesManager implements MogoModulesHandler,
private static final String TAG = "MogoModulesManager";
+
+ private String mBroadcastConfigKey;
+
private MainActivity mActivity;
private Map< MogoModule, IMogoModuleProvider > mModuleProviders = new HashMap<>();
@@ -86,15 +90,12 @@ public class MogoModulesManager implements MogoModulesHandler,
throw new NullPointerException( "activity can't be null." );
}
this.mActivity = activity;
- mTrackManager = ( IMogoAnalytics ) ARouter.getInstance()
- .build( MogoServicePaths.PATH_UTILS_ANALYTICS )
- .navigation();
-
- mMogoIntentManager = ( IMogoIntentManager ) ARouter.getInstance()
- .build( MogoServicePaths.PATH_INTENT_MANAGER )
- .navigation();
+ IMogoServiceApis apis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation();
+ mTrackManager = apis.getAnalyticsApi();
+ mMogoIntentManager = apis.getIntentManagerApi();
registerReceiver();
+ CardIntroduceConfigs.init( getContext(), apis.getStatusManagerApi() );
}
private Context getContext() {
@@ -279,6 +280,8 @@ public class MogoModulesManager implements MogoModulesHandler,
mSortedCards.add( 0, mEnableModuleName );
SharedPrefsMgr.getInstance( getContext() ).putString( KEY_SORTED_CARD_MODULES, GsonUtil.jsonFromObject( mSortedCards ) );
Log.i( TAG, "enable & disable card cost " + ( System.currentTimeMillis() - start1 ) + "ms" );
+
+ CardIntroduceConfigs.broadcastCardIntroduce( mActivity, mEnableModuleName );
}
@Override
diff --git a/modules/mogo-module-main/src/main/res/drawable/module_main_dw_top_frame_bkg.xml b/modules/mogo-module-main/src/main/res/drawable/module_main_dw_top_frame_bkg.xml
index f9f2d1743c..96231332f1 100644
--- a/modules/mogo-module-main/src/main/res/drawable/module_main_dw_top_frame_bkg.xml
+++ b/modules/mogo-module-main/src/main/res/drawable/module_main_dw_top_frame_bkg.xml
@@ -2,7 +2,7 @@
-
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java
index 0ab0657e81..9de4be2d80 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
@@ -85,7 +85,7 @@ public class MapPresenter extends Presenter implements
}, 1_000 );
} else {
// 30s后锁车刷新
- mRefreshStrategyController.restartAutoRefreshAtTime( 30 );
+ mRefreshStrategyController.restartAutoRefreshAtTime( 30_000 );
}
} else if (type == 2) {
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 bf2913cbab..97b99a52ab 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
@@ -13,12 +13,14 @@ import android.os.Looper;
import android.os.Message;
import android.os.Trace;
import android.text.TextUtils;
+import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import androidx.annotation.NonNull;
import com.alibaba.android.arouter.launcher.ARouter;
+import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.voice.AIAssist;
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
import com.mogo.map.MogoLatLng;
@@ -81,13 +83,13 @@ import java.util.List;
* 4. 用户交互语音导致地图视图移动,缩放,不触发刷新
*/
public class MogoServices implements IMogoMapListener,
- IMogoLocationListener,
- IMogoNaviListener,
- IMogoStatusChangedListener,
- IMogoIntentListener,
- IMogoAimlessModeListener,
- IMogoVoiceCmdCallBack,
- FragmentStackTransactionListener {
+ IMogoLocationListener,
+ IMogoNaviListener,
+ IMogoStatusChangedListener,
+ IMogoIntentListener,
+ IMogoAimlessModeListener,
+ IMogoVoiceCmdCallBack,
+ FragmentStackTransactionListener {
private boolean mInternalUnWakeupRegisterStatus = false;
@@ -165,30 +167,30 @@ public class MogoServices implements IMogoMapListener,
*/
private boolean mLoopRequest = false;
- private Handler mHandler = new Handler(Looper.getMainLooper()) {
+ private Handler mHandler = new Handler( Looper.getMainLooper() ) {
@Override
- public void handleMessage(@NonNull Message msg) {
- super.handleMessage(msg);
- switch (msg.what) {
+ public void handleMessage( @NonNull Message msg ) {
+ super.handleMessage( msg );
+ switch ( msg.what ) {
case ServiceConst.MSG_TYPE_REFRESH_DECREASE:
- if (mStatusManager.isSearchUIShow() || mStatusManager.isADASShow()) {
+ if ( mStatusManager.isSearchUIShow() || mStatusManager.isADASShow() ) {
stopAutoRefreshStrategy();
return;
}
mRefreshRemainingTime -= ServiceConst.DECREASE_INTERVAL;
- if (mRefreshRemainingTime <= 0) {
- Logger.d(TAG, "move to center and refresh data.");
+ if ( mRefreshRemainingTime <= 0 ) {
+ Logger.d( TAG, "move to center and refresh data." );
invokeAutoRefresh();
} else {
- mHandler.sendEmptyMessageDelayed(msg.what, ServiceConst.DECREASE_INTERVAL);
+ mHandler.sendEmptyMessageDelayed( msg.what, ServiceConst.DECREASE_INTERVAL );
}
break;
case ServiceConst.MSG_LOOP_REQUEST:
- if (mStatusManager.isSearchUIShow() || mStatusManager.isADASShow()) {
+ if ( mStatusManager.isSearchUIShow() || mStatusManager.isADASShow() ) {
return;
}
- if (mLoopRequest) {
- Logger.d(TAG, "补偿刷新触发");
+ if ( mLoopRequest ) {
+ Logger.d( TAG, "补偿刷新触发" );
invokeAutoRefresh();
}
break;
@@ -199,13 +201,13 @@ public class MogoServices implements IMogoMapListener,
* 自动刷新:锁车、缩放比例:16、半径 2KM
*/
private void invokeAutoRefresh() {
- mStatusManager.setUserInteractionStatus(ServiceConst.TYPE, true, false);
- mUiController.changeZoom(ServiceConst.DEFAULT_LOCK_CAR_ZOOM_LEVEL);
- mUiController.setLockZoom(ServiceConst.DEFAULT_LOCK_CAR_ZOOM_LEVEL);
- mStatusManager.setUserInteractionStatus(TAG, true, false);
+ mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, false );
+ mUiController.changeZoom( ServiceConst.DEFAULT_LOCK_CAR_ZOOM_LEVEL );
+ 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;
@@ -228,7 +230,7 @@ public class MogoServices implements IMogoMapListener,
public void onSuccess() {
mLoopRequest = false;
// 用户手动操作地图刷新成功后,设置状态为 true,引发延时策略
- mStatusManager.setUserInteractionStatus(ServiceConst.TYPE, true, true);
+ mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, true );
}
@Override
@@ -244,29 +246,29 @@ public class MogoServices implements IMogoMapListener,
@Override
public void onSuccess() {
mLoopRequest = false;
- Logger.d(TAG, "request Success.");
+ Logger.d( TAG, "request Success." );
invokeAutoRefreshStrategy();
}
@Override
public void onFail() {
- if (mLoopRequest) {
- Logger.d(TAG, "onFail and loop");
- mHandler.sendEmptyMessageDelayed(ServiceConst.MSG_LOOP_REQUEST,
- ServiceConst.LOOP_INTERVAL);
+ if ( mLoopRequest ) {
+ Logger.d( TAG, "onFail and loop" );
+ mHandler.sendEmptyMessageDelayed( ServiceConst.MSG_LOOP_REQUEST,
+ ServiceConst.LOOP_INTERVAL );
} else {
invokeAutoRefreshStrategy();
}
}
private void invokeAutoRefreshStrategy() {
- if (mStatusManager.isSearchUIShow()) {
+ if ( mStatusManager.isSearchUIShow() ) {
return;
}
mRefreshRemainingTime = mAutoRefreshStrategy.getInterval();
- mHandler.removeMessages(ServiceConst.MSG_TYPE_REFRESH_DECREASE);
- mHandler.sendEmptyMessageDelayed(ServiceConst.MSG_TYPE_REFRESH_DECREASE,
- ServiceConst.DECREASE_INTERVAL);
+ mHandler.removeMessages( ServiceConst.MSG_TYPE_REFRESH_DECREASE );
+ mHandler.sendEmptyMessageDelayed( ServiceConst.MSG_TYPE_REFRESH_DECREASE,
+ ServiceConst.DECREASE_INTERVAL );
}
};
@@ -274,120 +276,120 @@ public class MogoServices implements IMogoMapListener,
private Handler mThreadHandler;
- public void init(Context context) {
+ public void init( Context context ) {
mContext = context;
- MarkerServiceHandler.init(mContext);
- mRefreshModel = new RefreshModel(context);
+ MarkerServiceHandler.init( mContext );
+ mRefreshModel = new RefreshModel( context );
mMogoMapService = MarkerServiceHandler.getMapService();
mUiController = mMogoMapService.getMapUIController();
- mNavi = mMogoMapService.getNavi(context);
+ mNavi = mMogoMapService.getNavi( context );
mStatusManager = MarkerServiceHandler.getMogoStatusManager();
- mStatusManager.registerStatusChangedListener(ServiceConst.TYPE,
- StatusDescriptor.USER_INTERACTED, this);
- mStatusManager.registerStatusChangedListener(ServiceConst.TYPE, StatusDescriptor.SEARCH_UI,
- this);
- mStatusManager.registerStatusChangedListener(ServiceConst.TYPE, StatusDescriptor.ADAS_UI,
- this);
- mStatusManager.registerStatusChangedListener(ServiceConst.TYPE,
- StatusDescriptor.MAIN_PAGE_RESUME, this);
+ mStatusManager.registerStatusChangedListener( ServiceConst.TYPE,
+ StatusDescriptor.USER_INTERACTED, this );
+ mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.SEARCH_UI,
+ this );
+ mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.ADAS_UI,
+ this );
+ mStatusManager.registerStatusChangedListener( ServiceConst.TYPE,
+ StatusDescriptor.MAIN_PAGE_RESUME, this );
- registerMogoReceiver(context);
+ registerMogoReceiver( context );
registerInternalUnWakeupWords();
mRegisterCenter = MarkerServiceHandler.getRegisterCenter();
- mRegisterCenter.registerMogoLocationListener(ServiceConst.TYPE, this);
- mRegisterCenter.registerMogoNaviListener(ServiceConst.TYPE, this);
- mRegisterCenter.registerMogoMapListener(ServiceConst.TYPE, this);
- mRegisterCenter.registerMogoAimlessModeListener(ServiceConst.TYPE, this);
+ mRegisterCenter.registerMogoLocationListener( ServiceConst.TYPE, this );
+ mRegisterCenter.registerMogoNaviListener( ServiceConst.TYPE, this );
+ mRegisterCenter.registerMogoMapListener( ServiceConst.TYPE, this );
+ mRegisterCenter.registerMogoAimlessModeListener( ServiceConst.TYPE, this );
mActionManager = MarkerServiceHandler.getActionManager();
mIntentManager = MarkerServiceHandler.getIntentManager();
- mIntentManager.registerIntentListener(MogoReceiver.ACTIION_ADAS, this);
- mIntentManager.registerIntentListener(Intent.ACTION_POWER_CONNECTED, this);
- mIntentManager.registerIntentListener(Intent.ACTION_POWER_DISCONNECTED, this);
- mIntentManager.registerIntentListener(MogoReceiver.ACTION_NWD_ACC, this);
- mIntentManager.registerIntentListener(MogoReceiver.ACTION_VOICE_UI, this);
- mIntentManager.registerIntentListener(ServiceConst.COMMAND_NEXT, this);
- mIntentManager.registerIntentListener(ServiceConst.COMMAND_PREVIOUS, this);
- mIntentManager.registerIntentListener(ServiceConst.COMMAND_SWITCH_CARD, this);
- mIntentManager.registerIntentListener(ServiceConst.COMMAND_MY_LOCATION, this);
- mIntentManager.registerIntentListener(MogoReceiver.ACTION_ADAS_STATUS, this);
- mIntentManager.registerIntentListener(ServiceConst.COMMAND_OPERATION, this);
- mIntentManager.registerIntentListener(MogoReceiver.ACTION_VOICE_READY, this);
- mIntentManager.registerIntentListener(MogoReceiver.ACTION_MOCK, this);
+ mIntentManager.registerIntentListener( MogoReceiver.ACTIION_ADAS, this );
+ mIntentManager.registerIntentListener( Intent.ACTION_POWER_CONNECTED, this );
+ mIntentManager.registerIntentListener( Intent.ACTION_POWER_DISCONNECTED, this );
+ mIntentManager.registerIntentListener( MogoReceiver.ACTION_NWD_ACC, this );
+ mIntentManager.registerIntentListener( MogoReceiver.ACTION_VOICE_UI, this );
+ mIntentManager.registerIntentListener( ServiceConst.COMMAND_NEXT, this );
+ mIntentManager.registerIntentListener( ServiceConst.COMMAND_PREVIOUS, this );
+ mIntentManager.registerIntentListener( ServiceConst.COMMAND_SWITCH_CARD, this );
+ mIntentManager.registerIntentListener( ServiceConst.COMMAND_MY_LOCATION, this );
+ mIntentManager.registerIntentListener( MogoReceiver.ACTION_ADAS_STATUS, this );
+ mIntentManager.registerIntentListener( ServiceConst.COMMAND_OPERATION, this );
+ mIntentManager.registerIntentListener( MogoReceiver.ACTION_VOICE_READY, this );
+ mIntentManager.registerIntentListener( MogoReceiver.ACTION_MOCK, this );
mADASController = MarkerServiceHandler.getADASController();
mLauncher = MarkerServiceHandler.getLauncher();
mFragmentManager = MarkerServiceHandler.getFragmentManager();
mCardManager = MarkerServiceHandler.getMogoCardManager();
- mFragmentManager.addMainFragmentStackTransactionListener(this);
+ mFragmentManager.addMainFragmentStackTransactionListener( this );
initWorkThread();
}
private void initWorkThread() {
- mHandlerThread = new HandlerThread("mogo-handler-thread");
+ mHandlerThread = new HandlerThread( "mogo-handler-thread" );
mHandlerThread.start();
- mThreadHandler = new Handler(mHandlerThread.getLooper()) {
+ mThreadHandler = new Handler( mHandlerThread.getLooper() ) {
@Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- if (msg.what == ServiceConst.MSG_MAP_CHANGED) {
- if (msg.obj instanceof RefreshObject) {
- RefreshObject ro = ((RefreshObject) msg.obj);
- if (invokeRefreshWhenTranslationByUser(ro.mLonLat)) {
- notifyRefreshData(ro.mLonLat, ro.mRadius, ro.mCallback);
+ public void handleMessage( Message msg ) {
+ super.handleMessage( msg );
+ if ( msg.what == ServiceConst.MSG_MAP_CHANGED ) {
+ if ( msg.obj instanceof RefreshObject ) {
+ RefreshObject ro = ( ( RefreshObject ) msg.obj );
+ if ( invokeRefreshWhenTranslationByUser( ro.mLonLat ) ) {
+ notifyRefreshData( ro.mLonLat, ro.mRadius, ro.mCallback );
mLastCustomRefreshCenterLocation = ro.mLonLat;
}
}
- } else if (msg.what == ServiceConst.MSG_REQUEST_DATA) {
- if (msg.obj instanceof RefreshObject) {
- RefreshObject ro = ((RefreshObject) msg.obj);
- mRefreshModel.refreshData(ro.mLonLat, ro.mRadius, ro.mAmount, ro.mCallback);
- Logger.i(TAG, "刷新半径 = %s, 点 = %s, zoomLevel = %s, amount = %s", ro.mRadius,
- ro.mLonLat, mLastZoomLevel, ro.mAmount);
+ } else if ( msg.what == ServiceConst.MSG_REQUEST_DATA ) {
+ if ( msg.obj instanceof RefreshObject ) {
+ RefreshObject ro = ( ( RefreshObject ) msg.obj );
+ mRefreshModel.refreshData( ro.mLonLat, ro.mRadius, ro.mAmount, ro.mCallback );
+ Logger.i( TAG, "刷新半径 = %s, 点 = %s, zoomLevel = %s, amount = %s", ro.mRadius,
+ ro.mLonLat, mLastZoomLevel, ro.mAmount );
}
}
}
};
}
- private void registerMogoReceiver(Context context) {
- if (context == null) {
+ private void registerMogoReceiver( Context context ) {
+ if ( context == null ) {
return;
}
- List modules = MogoModulePaths.getModules();
- if (modules.isEmpty() || modules == null) {
+ List< MogoModule > modules = MogoModulePaths.getModules();
+ if ( modules.isEmpty() || modules == null ) {
return;
}
- mAIAssistReceiver = new MogoReceiver(context);
+ mAIAssistReceiver = new MogoReceiver( context );
IntentFilter filter = new IntentFilter();
- if (modules != null && !modules.isEmpty()) {
- for (MogoModule module : modules) {
- if (TextUtils.isEmpty(module.getBroadcastAction())) {
+ if ( modules != null && !modules.isEmpty() ) {
+ for ( MogoModule module : modules ) {
+ if ( TextUtils.isEmpty( module.getBroadcastAction() ) ) {
continue;
}
- filter.addAction(module.getBroadcastAction());
+ filter.addAction( module.getBroadcastAction() );
}
}
- filter.addAction(MogoReceiver.VOICE_ACTION);
- filter.addAction(MogoReceiver.ACTIION_ADAS);
- filter.addAction(MogoReceiver.ACTION_NWD_ACC);
+ filter.addAction( MogoReceiver.VOICE_ACTION );
+ filter.addAction( MogoReceiver.ACTIION_ADAS );
+ filter.addAction( MogoReceiver.ACTION_NWD_ACC );
// acc On
- filter.addAction(Intent.ACTION_POWER_CONNECTED);
- filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
+ filter.addAction( Intent.ACTION_POWER_CONNECTED );
+ filter.addAction( Intent.ACTION_POWER_DISCONNECTED );
// 小智语音
- filter.addAction(MogoReceiver.ACTION_VOICE_UI);
- filter.addAction(MogoReceiver.ACTION_ADAS_STATUS);
- filter.addAction(MogoReceiver.ACTION_VOICE_READY);
- filter.addAction(MogoReceiver.ACTION_MOCK);
+ filter.addAction( MogoReceiver.ACTION_VOICE_UI );
+ filter.addAction( MogoReceiver.ACTION_ADAS_STATUS );
+ filter.addAction( MogoReceiver.ACTION_VOICE_READY );
+ filter.addAction( MogoReceiver.ACTION_MOCK );
try {
- context.getApplicationContext().registerReceiver(mAIAssistReceiver, filter);
- Logger.i(TAG, "register voice receiver.");
- } catch (Exception e) {
- Logger.e(TAG, e, "error. ");
+ context.getApplicationContext().registerReceiver( mAIAssistReceiver, filter );
+ Logger.i( TAG, "register voice receiver." );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error. " );
}
}
@@ -397,16 +399,16 @@ public class MogoServices implements IMogoMapListener,
}
private void initMapStatus() {
- if (mIsMapStatusOk) {
+ if ( mIsMapStatusOk ) {
return;
}
try {
float width = getMapCameraFactWidth();
float height = getMapCameraFactHeight();
mIsVertical = width < height;
- Logger.i(TAG, "map status is vertical : " + mIsVertical);
+ Logger.i( TAG, "map status is vertical : " + mIsVertical );
mIsMapStatusOk = true;
- } catch (Exception e) {
+ } catch ( Exception e ) {
e.printStackTrace();
}
}
@@ -416,9 +418,9 @@ public class MogoServices implements IMogoMapListener,
*/
private float getMapCameraFactWidth() {
try {
- return Utils.calculateLineDistance(mCameraNorthEastPosition,
- new MogoLatLng(mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng));
- } catch (Exception e) {
+ return Utils.calculateLineDistance( mCameraNorthEastPosition,
+ new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) );
+ } catch ( Exception e ) {
return ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS;
}
}
@@ -428,57 +430,60 @@ public class MogoServices implements IMogoMapListener,
*/
private float getMapCameraFactHeight() {
try {
- return Utils.calculateLineDistance(mCameraSouthWestPosition,
- new MogoLatLng(mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng));
- } catch (Exception e) {
+ return Utils.calculateLineDistance( mCameraSouthWestPosition,
+ new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) );
+ } catch ( Exception e ) {
return ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS;
}
}
@Override
- public void onTouch(MotionEvent motionEvent) {
- switch (motionEvent.getActionMasked()) {
+ public void onTouch( MotionEvent motionEvent ) {
+ switch ( motionEvent.getActionMasked() ) {
case MotionEvent.ACTION_DOWN:
- if (mLastZoomLevel == 0) {
+ if ( mLastZoomLevel == 0 ) {
mLastZoomLevel = mUiController.getZoomLevel();
- Logger.i(TAG, "初始化缩放级别 为:%f", mLastZoomLevel);
+ Logger.i( TAG, "初始化缩放级别 为:%f", mLastZoomLevel );
}
break;
case MotionEvent.ACTION_UP:
- restartAutoRefreshAtTime(ServiceConst.DEFAULT_AUTO_REFRESH_WHEN_INTERRUPT);
+ restartAutoRefreshAtTime( ServiceConst.DEFAULT_AUTO_REFRESH_WHEN_INTERRUPT );
break;
}
}
private void stopAutoRefreshStrategy() {
- Logger.d(TAG, "stop auto refresh strategy");
- mHandler.removeMessages(ServiceConst.MSG_TYPE_REFRESH_DECREASE);
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
+ Logger.d( TAG, "stop auto refresh strategy" );
+ mHandler.removeMessages( ServiceConst.MSG_TYPE_REFRESH_DECREASE );
}
@Override
- public void onPOIClick(MogoPoi poi) {
+ public void onPOIClick( MogoPoi poi ) {
}
@Override
- public void onMapClick(MogoLatLng latLng) {
+ public void onMapClick( MogoLatLng latLng ) {
}
@Override
- public void onLockMap(boolean isLock) {
+ public void onLockMap( boolean isLock ) {
}
@Override
- public void onMapModeChanged(EnumMapUI ui) {
+ public void onMapModeChanged( EnumMapUI ui ) {
}
@Override
- public void onMapChanged(MogoLatLng latLng, float zoom, float tilt, float bearing) {
+ public void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ) {
- if (mIsCameraInited) {
+ if ( mIsCameraInited ) {
mLastZoomLevel = zoom;
mLastCustomRefreshCenterLocation = latLng;
mIsCameraInited = false;
@@ -488,117 +493,117 @@ public class MogoServices implements IMogoMapListener,
// 部分非用户操作导致地图视图变化:绘线、圈点等不触发用户刷新
// 消费状态
- if (mStatusManager.isUserInteracted()) {
+ if ( mStatusManager.isUserInteracted() ) {
mLastCustomRefreshCenterLocation = latLng;
mLastZoomLevel = zoom;
return;
}
// v2x // adas 状态下不做任何操作
- if (mStatusManager.isADASShow()) {
+ if ( mStatusManager.isADASShow() ) {
mLastCustomRefreshCenterLocation = latLng;
mLastZoomLevel = zoom;
return;
}
// 手动刷新触发
- if (mLastZoomLevel - zoom > mCustomRefreshStrategy.getZoomOutLevel()) {
+ if ( mLastZoomLevel - zoom > mCustomRefreshStrategy.getZoomOutLevel() ) {
// 缩放级别缩小
- notifyRefreshData(latLng, getQueryRadius(), mCustomRefreshCallback);
+ notifyRefreshData( latLng, getQueryRadius(), mCustomRefreshCallback );
mLastCustomRefreshCenterLocation = latLng;
mLastZoomLevel = zoom;
- } else if (mLastZoomLevel - zoom < 0) {
+ } else if ( mLastZoomLevel - zoom < 0 ) {
mLastZoomLevel = zoom;
- } else if (mLastZoomLevel == zoom) {
+ } else if ( mLastZoomLevel == zoom ) {
// 手动平移
Message msg = Message.obtain();
msg.what = ServiceConst.MSG_MAP_CHANGED;
- msg.obj = new RefreshObject(mCustomRefreshCallback, getQueryRadius(), latLng, 0);
- mThreadHandler.sendMessage(msg);
+ msg.obj = new RefreshObject( mCustomRefreshCallback, getQueryRadius(), latLng, 0 );
+ mThreadHandler.sendMessage( msg );
}
}
private int getQueryRadius() {
mCameraSouthWestPosition = mUiController.getCameraSouthWestPosition();
mCameraNorthEastPosition = mUiController.getCameraNorthEastPosition();
- if (mIsVertical) {
- return ((int) (getMapCameraFactWidth() / 2));
+ if ( mIsVertical ) {
+ return ( ( int ) ( getMapCameraFactWidth() / 2 ) );
}
- return ((int) (getMapCameraFactHeight() / 2));
+ return ( ( int ) ( getMapCameraFactHeight() / 2 ) );
}
/**
* 平移地图刷新策略
*/
- private boolean invokeRefreshWhenTranslationByUser(MogoLatLng latLng) {
+ private boolean invokeRefreshWhenTranslationByUser( MogoLatLng latLng ) {
try {
- Trace.beginSection("timer.invokeRefreshWhenTranslationByUser");
+ Trace.beginSection( "timer.invokeRefreshWhenTranslationByUser" );
float factor = 0.0f;
- if (mIsVertical) {
+ if ( mIsVertical ) {
factor = getMapCameraFactWidth();
} else {
factor = getMapCameraFactHeight();
}
- if (factor == 0.0f) {
+ if ( factor == 0.0f ) {
return false;
}
- float distance = Utils.calculateLineDistance(latLng, mLastCustomRefreshCenterLocation);
+ float distance = Utils.calculateLineDistance( latLng, mLastCustomRefreshCenterLocation );
Trace.endSection();
return distance > factor;
- } catch (Exception e) {
- Logger.e(TAG, e, "warming. ");
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "warming. " );
return false;
}
}
@Override
- public void onLocationChanged(MogoLocation location) {
+ public void onLocationChanged( MogoLocation location ) {
- if (mStatusManager.isADASShow()) {
+ if ( mStatusManager.isADASShow() ) {
return;
}
- if (mStatusManager.isSearchUIShow()) {
+ if ( mStatusManager.isSearchUIShow() ) {
return;
}
- if (location == null) {
+ if ( location == null ) {
return;
}
// 自动刷新触发
- final MogoLatLng point = new MogoLatLng(location.getLatitude(), location.getLongitude());
- if (mLastAutoRefreshLocation == null) {
+ final MogoLatLng point = new MogoLatLng( location.getLatitude(), location.getLongitude() );
+ if ( mLastAutoRefreshLocation == null ) {
mLastAutoRefreshLocation = point;
mLoopRequest = true;
- notifyRefreshData(mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback);
+ notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback );
return;
}
- float distance = Utils.calculateLineDistance(mLastAutoRefreshLocation, point);
- if (distance > mAutoRefreshStrategy.getDistance()) {
- mStatusManager.setUserInteractionStatus(ServiceConst.TYPE, true, false);
+ float distance = Utils.calculateLineDistance( mLastAutoRefreshLocation, point );
+ if ( distance > mAutoRefreshStrategy.getDistance() ) {
+ mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, false );
mUiController.recoverLockMode();
- mStatusManager.setUserInteractionStatus(TAG, true, false);
- mUiController.changeZoom(ServiceConst.DEFAULT_ZOOM_LEVEL);
+ mStatusManager.setUserInteractionStatus( TAG, true, false );
+ mUiController.changeZoom( ServiceConst.DEFAULT_ZOOM_LEVEL );
mLastAutoRefreshLocation = point;
- notifyRefreshData(mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback);
+ notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback );
}
}
/**
* 刷新数据
*/
- private void notifyRefreshData(MogoLatLng latLng, int radius, RefreshCallback callback) {
- if (mStatusManager.isSearchUIShow()) {
+ private void notifyRefreshData( MogoLatLng latLng, int radius, RefreshCallback callback ) {
+ if ( mStatusManager.isSearchUIShow() ) {
return;
}
- Logger.d(TAG, mAutoRefreshCallback == callback ? "触发自动刷新" : "触发手动刷新");
+ Logger.d( TAG, mAutoRefreshCallback == callback ? "触发自动刷新" : "触发手动刷新" );
int amount = mLastZoomLevel >= 10 ? 5 : 10;
Message msg = Message.obtain();
msg.what = ServiceConst.MSG_REQUEST_DATA;
- msg.obj = new RefreshObject(callback, radius, latLng, amount);
- mThreadHandler.sendMessage(msg);
+ msg.obj = new RefreshObject( callback, radius, latLng, amount );
+ mThreadHandler.sendMessage( msg );
}
@Override
@@ -612,7 +617,7 @@ public class MogoServices implements IMogoMapListener,
}
@Override
- public void onNaviInfoUpdate(MogoNaviInfo naviinfo) {
+ public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) {
}
@Override
@@ -624,38 +629,38 @@ public class MogoServices implements IMogoMapListener,
}
@Override
- public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
+ public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) {
//Logger.d( TAG, "状态发生改变---descriptor---" + descriptor + "----isTrue---" + isTrue );
- switch (descriptor) {
+ switch ( descriptor ) {
case USER_INTERACTED:
- if (isTrue) {
- restartAutoRefreshAtTime(ServiceConst.DEFAULT_AUTO_REFRESH_WHEN_INTERRUPT);
+ if ( isTrue ) {
+ restartAutoRefreshAtTime( ServiceConst.DEFAULT_AUTO_REFRESH_WHEN_INTERRUPT );
}
break;
case SEARCH_UI:
- if (isTrue) {
+ if ( isTrue ) {
// 搜索时,不在自动刷新打点策略
stopAutoRefreshStrategy();
} else {
// 搜索后,打开打点策略
- if (mAutoRefreshCallback != null) {
+ if ( mAutoRefreshCallback != null ) {
mAutoRefreshCallback.onSuccess();
}
}
break;
case ADAS_UI:
try {
- if (isTrue) {
+ if ( isTrue ) {
onAdasOn();
} else {
onAdasClosed();
}
- } catch (Exception e) {
+ } catch ( Exception e ) {
e.printStackTrace();
}
break;
case MAIN_PAGE_RESUME:
- if (isTrue) {
+ if ( isTrue ) {
registerInternalUnWakeupWords();
} else {
unregisterInternalUnWakeupWords();
@@ -674,31 +679,31 @@ public class MogoServices implements IMogoMapListener,
private void onAdasClosed() {
refreshStrategy();
// ADAS关闭后,打开打点策略
- if (mAutoRefreshCallback != null) {
+ if ( mAutoRefreshCallback != null ) {
mAutoRefreshCallback.onSuccess();
}
}
- public void restartAutoRefreshAtTime(int time) {
- if (time < 0) {
- Logger.w(TAG, "ignore refresh request case time < 0");
+ public void restartAutoRefreshAtTime( int time ) {
+ if ( time < 0 ) {
+ Logger.w( TAG, "ignore refresh request case time < 0" );
return;
}
stopAutoRefreshStrategy();
mRefreshRemainingTime = time;
long delay = ServiceConst.DECREASE_INTERVAL;
- if (mRefreshRemainingTime < ServiceConst.DECREASE_INTERVAL) {
+ if ( mRefreshRemainingTime < ServiceConst.DECREASE_INTERVAL ) {
delay = mRefreshRemainingTime;
}
- mHandler.sendEmptyMessageDelayed(ServiceConst.MSG_TYPE_REFRESH_DECREASE, delay);
- Logger.i(TAG, "下次刷新时间:%ss后", mRefreshRemainingTime);
+ mHandler.sendEmptyMessageDelayed( ServiceConst.MSG_TYPE_REFRESH_DECREASE, delay );
+ Logger.i( TAG, "下次刷新时间:%ss后", mRefreshRemainingTime );
}
public void refreshStrategy() {
- Logger.d(TAG, "move to center and refresh data.");
- mStatusManager.setUserInteractionStatus(ServiceConst.TYPE, true, false);
+ Logger.d( TAG, "move to center and refresh data." );
+ mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, false );
mUiController.recoverLockMode();// 锁车代替移到中心点
- notifyRefreshData(mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback);
+ notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback );
}
@Override
@@ -712,36 +717,36 @@ public class MogoServices implements IMogoMapListener,
}
@Override
- public void onUpdateTraffic(MogoTraffic traffic) {
+ public void onUpdateTraffic( MogoTraffic traffic ) {
}
@Override
- public void onUpdateTraffic2(MogoTraffic traffic) {
+ public void onUpdateTraffic2( MogoTraffic traffic ) {
- if (traffic != null) {
+ if ( traffic != null ) {
- if (traffic.getSpeedLimit() <= 0) {
+ if ( traffic.getSpeedLimit() <= 0 ) {
return;
}
- Logger.i(TAG, "speed = %d, desc = %s", traffic.getSpeedLimit(), traffic.getDesc());
+ Logger.i( TAG, "speed = %d, desc = %s", traffic.getSpeedLimit(), traffic.getDesc() );
// 发送当前限速到 adas
- Intent intent = new Intent("com.mogo.launcher.adas");
- intent.putExtra("adas_speed_limit", traffic.getSpeedLimit());
- mContext.sendBroadcast(intent);
+ Intent intent = new Intent( "com.mogo.launcher.adas" );
+ intent.putExtra( "adas_speed_limit", traffic.getSpeedLimit() );
+ mContext.sendBroadcast( intent );
}
}
@Override
- public void onUpdateCongestion(MogoCongestionInfo info) {
+ public void onUpdateCongestion( MogoCongestionInfo info ) {
}
@Override
- public void onIntentReceived(String command, Intent intent) {
- if (MogoReceiver.ACTIION_ADAS.equals(command)) {
- if (intent == null) {
+ public void onIntentReceived( String command, Intent intent ) {
+ if ( MogoReceiver.ACTIION_ADAS.equals( command ) ) {
+ if ( intent == null ) {
return;
}
int status = intent.getIntExtra( MogoReceiver.PARAM_ADAS_STATUS, 0 );
@@ -760,70 +765,73 @@ public class MogoServices implements IMogoMapListener,
} else if ( TextUtils.equals( val, MogoReceiver.VALUE_SHOW ) ) {
mStatusManager.setVoiceUIShow( TAG, true );
}
- } else if (ServiceConst.COMMAND_NEXT.equals(command)) {
- if (mStatusManager.isMainPageOnResume()) {
- mActionManager.invoke(MapMarkerManager.getInstance().getCurrentModuleName(),
- MogoAction.Next);
+ } else if ( ServiceConst.COMMAND_NEXT.equals( command ) ) {
+ if ( mStatusManager.isMainPageOnResume() ) {
+ mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(),
+ MogoAction.Next );
}
- } else if (ServiceConst.COMMAND_PREVIOUS.equals(command)) {
- if (mStatusManager.isMainPageOnResume()) {
- mActionManager.invoke(MapMarkerManager.getInstance().getCurrentModuleName(),
- MogoAction.Prev);
+ } else if ( ServiceConst.COMMAND_PREVIOUS.equals( command ) ) {
+ if ( mStatusManager.isMainPageOnResume() ) {
+ mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(),
+ MogoAction.Prev );
}
- } else if (ServiceConst.COMMAND_SWITCH_CARD.equals(command)) {
- String data = intent.getStringExtra("data");
+ } 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)) {
- 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);
+ 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) {
+ } catch ( JSONException e ) {
e.printStackTrace();
}
- } else if (MogoReceiver.ACTION_ADAS_STATUS.equals(command)) {
- String msg = intent.getStringExtra("adasMsg");
- if (TextUtils.isEmpty(msg)) {
+ } else if ( MogoReceiver.ACTION_ADAS_STATUS.equals( command ) ) {
+ String msg = intent.getStringExtra( "adasMsg" );
+ if ( TextUtils.isEmpty( msg ) ) {
return;
}
- CarStateInfo stateInfo = GsonUtil.objectFromJson(msg, CarStateInfo.class);
- if (stateInfo != null) {
- changeCarHeadstockDirection(stateInfo.getValues().getHeading());
+ CarStateInfo stateInfo = GsonUtil.objectFromJson( msg, CarStateInfo.class );
+ if ( stateInfo != null ) {
+ changeCarHeadstockDirection( stateInfo.getValues().getHeading() );
// changeMyLocation( stateInfo.getValues() );
}
- } else if (ServiceConst.COMMAND_OPERATION.equals(command)) {
+ } 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);
+ 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 );
}
}
- } catch (JSONException e) {
+ } catch ( JSONException e ) {
e.printStackTrace();
}
- } else if (MogoReceiver.ACTION_VOICE_READY.equals(command)) {
- AIAssist.getInstance(mContext).flush();
- } else if (ServiceConst.COMMAND_MY_LOCATION.equals(command)) {
- if (mStatusManager.isSearchUIShow()) {
+ } 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()) {
+ if ( mStatusManager.isMainPageOnResume() ) {
mUiController.recoverLockMode();
}
- } else if (MogoReceiver.ACTION_MOCK.equals(command)) {
- final int oper = intent.getIntExtra("oper", -1);
- switch (oper) {
+ } else if ( MogoReceiver.ACTION_MOCK.equals( command ) ) {
+ final int oper = intent.getIntExtra( "oper", -1 );
+ switch ( oper ) {
case 1:
- mUiController.showMyLocation(true);
+ mUiController.showMyLocation( true );
break;
}
}
@@ -832,154 +840,158 @@ public class MogoServices implements IMogoMapListener,
/**
* 切换卡片
*/
- private void switchCard2(String card) {
- if (isApplicationBroughtToBackground(mContext)) {
- mLauncher.backToLauncher(mContext);
- UiThreadHandler.postDelayed(() -> {
- if (mStatusManager.isADASShow()) {
+ private void switchCard2( String card ) {
+ if ( isApplicationBroughtToBackground( mContext ) ) {
+ mLauncher.backToLauncher( mContext );
+ UiThreadHandler.postDelayed( () -> {
+ if ( mStatusManager.isADASShow() ) {
mADASController.closeADAS();
}
- mCardManager.switch2(card, true);
- }, 2000L);
+ mCardManager.switch2( card, true );
+ }, 2000L );
} else {
mFragmentManager.clearAll();
- if (mStatusManager.isADASShow()) {
+ if ( mStatusManager.isADASShow() ) {
mADASController.closeADAS();
}
- mCardManager.switch2(card, true);
+ mCardManager.switch2( card, true );
}
}
- private boolean isApplicationBroughtToBackground(final Context context) {
- ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
- List tasks = am.getRunningTasks(1);
- if (!tasks.isEmpty()) {
- ComponentName topActivity = tasks.get(0).topActivity;
- if (!topActivity.getPackageName().equals(context.getPackageName())) {
+ private boolean isApplicationBroughtToBackground( final Context context ) {
+ ActivityManager am = ( ActivityManager ) context.getSystemService( Context.ACTIVITY_SERVICE );
+ List< ActivityManager.RunningTaskInfo > tasks = am.getRunningTasks( 1 );
+ if ( !tasks.isEmpty() ) {
+ ComponentName topActivity = tasks.get( 0 ).topActivity;
+ if ( !topActivity.getPackageName().equals( context.getPackageName() ) ) {
return true;
}
}
return false;
}
- private void changeCarHeadstockDirection(final double degree) {
- if (mNavi.isNaviing()) {
+ private void changeCarHeadstockDirection( final double degree ) {
+ if ( mNavi.isNaviing() ) {
return;
}
- if (mStatusManager.isSearchUIShow()) {
+ if ( mStatusManager.isSearchUIShow() ) {
return;
}
- if (!mStatusManager.isMainPageOnResume()) {
+ if ( !mStatusManager.isMainPageOnResume() ) {
return;
}
- if (mUiController.getCurrentUiMode() != EnumMapUI.NorthUP_2D) {
+ if ( mUiController.getCurrentUiMode() != EnumMapUI.NorthUP_2D ) {
return;
}
- UiThreadHandler.post(() -> {
+ UiThreadHandler.post( () -> {
- mUiController.showMyLocation(inflateCursorView(degree));
- });
+ mUiController.showMyLocation( inflateCursorView( degree ) );
+ } );
}
- private View inflateCursorView(double degree) {
- View view = View.inflate(mContext, R.layout.map_amap_cursor, null);
- view.setRotation((float) degree);
+ private View inflateCursorView( double degree ) {
+ View view = View.inflate( mContext, R.layout.map_amap_cursor, null );
+ view.setRotation( ( float ) degree );
return view;
}
- private void changeMyLocation(CarStateInfo.ValuesBean valuesBean) {
- if (valuesBean == null) {
+ private void changeMyLocation( CarStateInfo.ValuesBean valuesBean ) {
+ if ( valuesBean == null ) {
return;
}
- Location location = new Location(LocationManager.GPS_PROVIDER);
- location.setAltitude(valuesBean.getAlt());
- location.setLatitude(valuesBean.getLat());
- location.setLongitude(valuesBean.getLon());
+ Location location = new Location( LocationManager.GPS_PROVIDER );
+ location.setAltitude( valuesBean.getAlt() );
+ location.setLatitude( valuesBean.getLat() );
+ location.setLongitude( valuesBean.getLon() );
}
/**
* 注册桌面免唤醒指令
*/
private void registerInternalUnWakeupWords() {
- if (mInternalUnWakeupRegisterStatus) {
+ if ( mInternalUnWakeupRegisterStatus ) {
return;
}
mInternalUnWakeupRegisterStatus = true;
- AIAssist.getInstance(mContext)
- .registerUnWakeupCommand(ServiceConst.CMD_UN_WAKE_PREV,
- ServiceConst.CMD_UN_WAKE_PREV_UN_WAKE_WORDS, this);
- AIAssist.getInstance(mContext)
- .registerUnWakeupCommand(ServiceConst.CMD_UN_WAKE_NEXT,
- ServiceConst.CMD_UN_WAKE_NEXT_UN_WAKE_WORDS, this);
- AIAssist.getInstance(mContext)
- .registerUnWakeupCommand(ServiceConst.CMD_UN_WAKEUP_MY_LOCATION,
- ServiceConst.CMD_UN_WAKEUP_WORDS_MY_LOCATION, this);
+// AIAssist.getInstance( mContext )
+// .registerUnWakeupCommand( ServiceConst.CMD_UN_WAKE_PREV,
+// ServiceConst.CMD_UN_WAKE_PREV_UN_WAKE_WORDS, this );
+// AIAssist.getInstance( mContext )
+// .registerUnWakeupCommand( ServiceConst.CMD_UN_WAKE_NEXT,
+// ServiceConst.CMD_UN_WAKE_NEXT_UN_WAKE_WORDS, this );
+ AIAssist.getInstance( mContext )
+ .registerUnWakeupCommand( ServiceConst.CMD_UN_WAKEUP_MY_LOCATION,
+ ServiceConst.CMD_UN_WAKEUP_WORDS_MY_LOCATION, this );
}
/**
* 注销桌面免唤醒指令
*/
private void unregisterInternalUnWakeupWords() {
- if (!mInternalUnWakeupRegisterStatus) {
+ if ( !mInternalUnWakeupRegisterStatus ) {
return;
}
mInternalUnWakeupRegisterStatus = false;
- AIAssist.getInstance(mContext)
- .unregisterUnWakeupCommand(ServiceConst.CMD_UN_WAKE_PREV, this);
- AIAssist.getInstance(mContext)
- .unregisterUnWakeupCommand(ServiceConst.CMD_UN_WAKE_NEXT, this);
- AIAssist.getInstance(mContext)
- .unregisterUnWakeupCommand(ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, this);
+// AIAssist.getInstance( mContext )
+// .unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKE_PREV, this );
+// AIAssist.getInstance( mContext )
+// .unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKE_NEXT, this );
+ AIAssist.getInstance( mContext )
+ .unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, this );
}
@Override
- public void onCmdSelected(String cmd) {
- if (TextUtils.equals(ServiceConst.CMD_UN_WAKE_PREV, cmd)) {
- mActionManager.invoke(MapMarkerManager.getInstance().getCurrentModuleName(),
- MogoAction.Prev);
- } else if (TextUtils.equals(ServiceConst.CMD_UN_WAKE_NEXT, cmd)) {
- mActionManager.invoke(MapMarkerManager.getInstance().getCurrentModuleName(),
- MogoAction.Next);
- } else if (TextUtils.equals(ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, cmd)) {
- if (mStatusManager.isMainPageOnResume()) {
+ public void onCmdSelected( String cmd ) {
+ if ( TextUtils.equals( ServiceConst.CMD_UN_WAKE_PREV, cmd ) ) {
+ mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(),
+ MogoAction.Prev );
+ } else if ( TextUtils.equals( ServiceConst.CMD_UN_WAKE_NEXT, cmd ) ) {
+ mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(),
+ MogoAction.Next );
+ } else if ( TextUtils.equals( ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, cmd ) ) {
+ if ( mStatusManager.isMainPageOnResume() ) {
mUiController.recoverLockMode();
}
- } else if (TextUtils.equals(ServiceConst.CMD_BACK, cmd)) {
+ } else if ( TextUtils.equals( ServiceConst.CMD_BACK, cmd ) ) {
mFragmentManager.clearAll();
}
}
@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 onTransaction(int size) {
- if (size == 0) {
- mUiController.setPointToCenter(0.66145, 0.661094);
- mUiController.showMyLocation(!mNavi.isNaviing());
- AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ServiceConst.CMD_BACK);
+ public void onTransaction( int size ) {
+ if ( size == 0 ) {
+ if ( mNavi.isNaviing() ) {
+ mUiController.setPointToCenter( 0.675926, 0.77552 );
+ } else {
+ mUiController.setPointToCenter( 0.66145, 0.661094 );
+ }
+ mUiController.showMyLocation( !mNavi.isNaviing() );
+ AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_BACK );
} else {
- mUiController.showMyLocation(false);
- AIAssist.getInstance(mContext)
- .registerUnWakeupCommand(ServiceConst.CMD_BACK, ServiceConst.CMD_BACK_WORDS, this);
- mUiController.setPointToCenter(0.5, 0.5);
+ mUiController.showMyLocation( false );
+ AIAssist.getInstance( mContext )
+ .registerUnWakeupCommand( ServiceConst.CMD_BACK, ServiceConst.CMD_BACK_WORDS, this );
+ mUiController.setPointToCenter( 0.5, 0.5 );
}
}
}
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 6dd1001e38..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
@@ -344,6 +344,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
}
// 解析不同的Marker类型,然后对应的进行绘制
+ Logger.d( TAG, "draw marker" );
mLastDataResult = response.getResult();
UiThreadHandler.post( () -> {
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 0c4c379e3e..f749d793a6 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
@@ -77,6 +77,13 @@ public interface IMogoStatusManager extends IProvider {
*/
boolean isMainPageOnResume();
+ /**
+ * 小智语音是否准备完毕
+ *
+ * @return
+ */
+ boolean isAIAssistReady();
+
/**
* 设置小智语音UI状态
*
@@ -151,6 +158,14 @@ public interface IMogoStatusManager extends IProvider {
*/
void setMainPageResumeStatus( String tag, boolean resume );
+ /**
+ * 设置小智语音状态
+ *
+ * @param tag
+ * @param ready
+ */
+ void setAIAssistReady( String tag, boolean ready );
+
/**
* 注册监听
*
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 c1274c21a8..0f75d8d92f 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
@@ -54,5 +54,10 @@ public enum StatusDescriptor {
/**
* 主页 resume 状态
*/
- MAIN_PAGE_RESUME;
+ MAIN_PAGE_RESUME,
+
+ /**
+ * 小智语音状态
+ */
+ AI_ASSIST_READY;
}
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
index 9969338db9..f2d6092c5e 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
@@ -47,6 +47,8 @@ public class MogoADASController implements IMogoADASController {
return;
}
+ Logger.d( TAG, "open adas" );
+
Intent intent = new Intent( ACTION );
intent.putExtra( PARAM_COMMAND, VAL_COMMAND );
JSONObject object = new JSONObject();
@@ -67,6 +69,8 @@ public class MogoADASController implements IMogoADASController {
return;
}
+ Logger.d( TAG, "close adas" );
+
Intent intent = new Intent( ACTION );
intent.putExtra( PARAM_COMMAND, VAL_COMMAND );
JSONObject object = new JSONObject();
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 4802a529cb..0ac3f099db 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
@@ -94,6 +94,11 @@ public class MogoStatusManager implements IMogoStatusManager {
return get_bool_val( StatusDescriptor.MAIN_PAGE_RESUME );
}
+ @Override
+ public boolean isAIAssistReady() {
+ return get_bool_val( StatusDescriptor.AI_ASSIST_READY );
+ }
+
private boolean get_bool_val( StatusDescriptor descriptor ) {
Boolean val = mStatus.get( descriptor );
return val == null ? false : val;
@@ -165,6 +170,13 @@ public class MogoStatusManager implements IMogoStatusManager {
recordStatusModifier( tag, StatusDescriptor.MAIN_PAGE_RESUME );
}
+ @Override
+ public void setAIAssistReady( String tag, boolean ready ) {
+ mStatus.put( StatusDescriptor.AI_ASSIST_READY, ready );
+ invokeStatusChangedListener( StatusDescriptor.AI_ASSIST_READY, ready );
+ recordStatusModifier( tag, StatusDescriptor.AI_ASSIST_READY );
+ }
+
private void invokeStatusChangedListener( StatusDescriptor descriptor, boolean status ) {
if ( mListeners.containsKey( descriptor ) ) {
Iterator< IMogoStatusChangedListener > iterator = mListeners.get( descriptor ).iterator();