diff --git a/app/build.gradle b/app/build.gradle
index 402b0d8a33..c6fa98b877 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,7 +9,7 @@ android {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion
versionCode rootProject.ext.android.versionCode
- versionName rootProject.ext.android.versionName
+ versionName "${rootProject.ext.android.versionName}_${getCurrentDate()}_${getGitCommit()}"
applicationId rootProject.ext.android.applicationId
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index c97f8ce3ec..0973015c8f 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -16,7 +16,7 @@
- @null
- @color/app_window_background
- false
- - true
+ - false
- @style/Animation
diff --git a/config.gradle b/config.gradle
index 9deee6e29d..af1feb1af6 100644
--- a/config.gradle
+++ b/config.gradle
@@ -6,7 +6,7 @@ ext {
minSdkVersion : 19,
targetSdkVersion : 22,
versionCode : 2,
- versionName : "1.0.1",
+ versionName : "1.0.2",
]
dependencies = [
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 04f18a96ff..ff98cc73e5 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
@@ -1,9 +1,11 @@
package com.mogo.commons.voice;
+import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
+import com.mogo.utils.logger.Logger;
import com.zhidao.auto.platform.voice.VoiceClient;
import java.util.ArrayList;
@@ -11,6 +13,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
/**
* @author congtaowang
@@ -20,8 +23,11 @@ import java.util.Map;
*/
public class AIAssist implements VoiceClient.VoiceCmdCallBack {
+ private static final String TAG = "AIAssist";
private static volatile AIAssist sInstance;
- private String mLastQAndAspeakText;
+ private String mLastQAndASpeakText;
+
+ private boolean mHasFlush = false;
public static AIAssist getInstance( Context context ) {
if ( sInstance == null ) {
@@ -43,6 +49,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
mQAndAMap.clear();
mVoiceClient.release();
mSpeakVoiceMap.clear();
+ mCacheUnWakeupCommands.clear();
sInstance = null;
}
@@ -54,10 +61,15 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
// 单独的语音播放
private Map< String, IMogoVoiceCmdCallBack > mSpeakVoiceMap = new HashMap<>();
+ private Map< String, String[] > mCacheUnWakeupCommands = new ConcurrentHashMap<>();
+
private AIAssist( Context context ) {
// private constructor
mVoiceClient = new VoiceClient( context.getApplicationContext() );
mVoiceClient.setCallBack( this );
+ mHasFlush = isVoiceServiceReady( context );
+
+ Logger.w( TAG, "voice is ready = %s", mHasFlush );
}
@Override
@@ -65,6 +77,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
if ( !mCmdMap.containsKey( cmd ) ) {
return;
}
+ Logger.d( TAG, "received command: %s", cmd );
final List< IMogoVoiceCmdCallBack > cmdCallBacks = mCmdMap.get( cmd );
Iterator< IMogoVoiceCmdCallBack > iterator = cmdCallBacks.iterator();
while ( iterator.hasNext() ) {
@@ -77,8 +90,8 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
@Override
public void onCmdAction( String speakText ) {
- if ( !TextUtils.isEmpty( mLastQAndAspeakText ) ) {
- IMogoVoiceCmdCallBack cmdCallBack = mQAndAMap.remove( mLastQAndAspeakText );
+ if ( !TextUtils.isEmpty( mLastQAndASpeakText ) ) {
+ IMogoVoiceCmdCallBack cmdCallBack = mQAndAMap.remove( mLastQAndASpeakText );
if ( cmdCallBack != null ) {
cmdCallBack.onCmdAction( speakText );
}
@@ -87,8 +100,8 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
@Override
public void onCmdCancel( String speakText ) {
- if ( !TextUtils.isEmpty( mLastQAndAspeakText ) ) {
- IMogoVoiceCmdCallBack cmdCallBack = mQAndAMap.remove( mLastQAndAspeakText );
+ if ( !TextUtils.isEmpty( mLastQAndASpeakText ) ) {
+ IMogoVoiceCmdCallBack cmdCallBack = mQAndAMap.remove( mLastQAndASpeakText );
if ( cmdCallBack != null ) {
cmdCallBack.onCmdCancel( speakText );
}
@@ -98,7 +111,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
@Override
public void onSpeakEnd( String speakText ) {
if ( mQAndAMap.containsKey( speakText ) ) {
- mLastQAndAspeakText = speakText;
+ mLastQAndASpeakText = speakText;
IMogoVoiceCmdCallBack cmdCallBack = mQAndAMap.get( speakText );
if ( cmdCallBack != null ) {
cmdCallBack.onSpeakEnd( speakText );
@@ -114,8 +127,8 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
@Override
public void onSpeakSelectTimeOut( String speakText ) {
if ( mQAndAMap.containsKey( speakText ) ) {
- if ( TextUtils.equals( speakText, mLastQAndAspeakText ) ) {
- mLastQAndAspeakText = null;
+ if ( TextUtils.equals( speakText, mLastQAndASpeakText ) ) {
+ mLastQAndASpeakText = null;
}
IMogoVoiceCmdCallBack cmdCallBack = mQAndAMap.remove( speakText );
if ( cmdCallBack != null ) {
@@ -136,8 +149,10 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
*/
public void speakTTSVoice( String text, IMogoVoiceCmdCallBack callBack ) {
try {
- mSpeakVoiceMap.put( text, callBack );
- mVoiceClient.speakDefault( text );
+ if ( mHasFlush ) {
+ mSpeakVoiceMap.put( text, callBack );
+ mVoiceClient.speakDefault( text );
+ }
} catch ( Exception e ) {
}
}
@@ -149,7 +164,9 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
*/
public void speakTTSVoice( String text ) {
try {
- mVoiceClient.speakDefault( text );
+ if ( mHasFlush ) {
+ mVoiceClient.speakDefault( text );
+ }
} catch ( Exception e ) {
}
}
@@ -163,8 +180,10 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
*/
public void speakTTSVoice( String text, VoicePreemptType type, IMogoVoiceCmdCallBack callBack ) {
try {
- mSpeakVoiceMap.put( text, callBack );
- mVoiceClient.speakTypeText( text, type.getPreemptType() );
+ if ( mHasFlush ) {
+ mSpeakVoiceMap.put( text, callBack );
+ mVoiceClient.speakTypeText( text, type.getPreemptType() );
+ }
} catch ( Exception e ) {
}
}
@@ -175,8 +194,10 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
* @param tts 播报内容
*/
public void speakQAndACmd( String tts, IMogoVoiceCmdCallBack callBack ) {
- mQAndAMap.put( tts, callBack );
- mVoiceClient.speakTtsAndRegistCmd( tts );
+ if ( mHasFlush ) {
+ mQAndAMap.put( tts, callBack );
+ mVoiceClient.speakTtsAndRegistCmd( tts );
+ }
}
/**
@@ -187,8 +208,10 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
* @param cancelCmds 取消命令唤醒词
*/
public void speakQAndACmd( String tts, String[] okCmds, String[] cancelCmds, IMogoVoiceCmdCallBack callBack ) {
- mQAndAMap.put( tts, callBack );
- mVoiceClient.speakTtsAndRegistCmd( tts, okCmds, cancelCmds );
+ if ( mHasFlush ) {
+ mQAndAMap.put( tts, callBack );
+ mVoiceClient.speakTtsAndRegistCmd( tts, okCmds, cancelCmds );
+ }
}
/**
@@ -200,10 +223,17 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
*/
public void registerUnWakeupCommand( String cmd, String[] cmdWords, IMogoVoiceCmdCallBack callBack ) {
if ( !mCmdMap.containsKey( cmd ) ) {
- mCmdMap.put( cmd, new ArrayList< IMogoVoiceCmdCallBack >() );
+ mCmdMap.put( cmd, new ArrayList<>() );
}
mCmdMap.get( cmd ).add( callBack );
- mVoiceClient.registerCustomWakeupCmd( cmd, cmdWords );
+
+ if ( mHasFlush ) {
+ mVoiceClient.registerCustomWakeupCmd( cmd, cmdWords );
+ mCacheUnWakeupCommands.remove( cmd );
+ } else {
+ Logger.i( TAG, "cache un wakeup command2. %s", cmd );
+ mCacheUnWakeupCommands.put( cmd, cmdWords );
+ }
}
/**
@@ -213,7 +243,13 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
* @param cmdWords
*/
public void registerUnWakeupCommand( String cmd, String[] cmdWords ) {
- mVoiceClient.registerCustomWakeupCmd( cmd, cmdWords );
+ if ( mHasFlush ) {
+ mVoiceClient.registerCustomWakeupCmd( cmd, cmdWords );
+ mCacheUnWakeupCommands.remove( cmd );
+ } else {
+ Logger.i( TAG, "cache un wakeup command. %s", cmd );
+ mCacheUnWakeupCommands.put( cmd, cmdWords );
+ }
}
/**
@@ -224,7 +260,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
*/
public synchronized void registerUnWakeupCommandCallback( String cmd, IMogoVoiceCmdCallBack callBack ) {
if ( !mCmdMap.containsKey( cmd ) ) {
- mCmdMap.put( cmd, new ArrayList< IMogoVoiceCmdCallBack >() );
+ mCmdMap.put( cmd, new ArrayList<>() );
}
mCmdMap.get( cmd ).add( callBack );
}
@@ -237,6 +273,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
public synchronized void unregisterUnWakeupCommand( String cmd ) {
mCmdMap.remove( cmd );
mVoiceClient.unRegisterCustomWakeupCmd( cmd );
+ mCacheUnWakeupCommands.remove( cmd );
}
/**
@@ -245,11 +282,13 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
* @param cmd
*/
public synchronized void unregisterUnWakeupCommand( String cmd, IMogoVoiceCmdCallBack callBack ) {
- if ( !mCmdMap.containsKey( cmd ) ) {
- return;
+ mCacheUnWakeupCommands.remove( cmd );
+ if ( mCmdMap.containsKey( cmd ) ) {
+ List< IMogoVoiceCmdCallBack > callBacks = mCmdMap.get( cmd );
+ if ( callBacks != null ) {
+ callBacks.remove( callBack );
+ }
}
- List< IMogoVoiceCmdCallBack > callBacks = mCmdMap.get( cmd );
- callBacks.remove( callBack );
}
public static void startAssistant( Context context ) {
@@ -260,4 +299,35 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
intent.putExtra( "extra_switch_type", "window_start_cancel" );
context.sendBroadcast( intent );
}
+
+ public synchronized void flush() {
+ if ( mCacheUnWakeupCommands.isEmpty() ) {
+ return;
+ }
+ mHasFlush = true;
+ Logger.d( TAG, "flush cache voice command when voice service ready." );
+ for ( String cmd : mCacheUnWakeupCommands.keySet() ) {
+ registerUnWakeupCommand( cmd, mCacheUnWakeupCommands.get( cmd ) );
+ }
+ mCacheUnWakeupCommands.clear();
+ }
+
+ private boolean isVoiceServiceReady( Context context ) {
+ if ( isRunningTaskExist( context, "com.zhidao.speech" )
+ && isRunningTaskExist( context, "com.zhidao.speech.adapter" ) ) {
+ return true;
+ }
+ return false;
+ }
+
+ private boolean isRunningTaskExist( Context context, String processName ) {
+ ActivityManager am = ( ActivityManager ) context.getSystemService( Context.ACTIVITY_SERVICE );
+ List< ActivityManager.RunningAppProcessInfo > processList = am.getRunningAppProcesses();
+ for ( ActivityManager.RunningAppProcessInfo info : processList ) {
+ if ( info.processName.equals( processName ) ) {
+ return true;
+ }
+ }
+ return false;
+ }
}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/hook/BnHooker.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/hook/BnHooker.java
index 420548776c..d40ead278a 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/hook/BnHooker.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/hook/BnHooker.java
@@ -1,6 +1,7 @@
package com.mogo.map.impl.amap.hook;
import com.amap.api.maps.AMap;
+import com.autonavi.amap.mapcore.interfaces.IAMap;
import com.autonavi.base.amap.api.mapcore.IAMapDelegate;
import com.autonavi.base.amap.mapcore.interfaces.IAMapListener;
import com.mogo.utils.logger.Logger;
@@ -33,7 +34,12 @@ public class BnHooker implements InvocationHandler {
host = field.get( map );
Object object = Proxy.newProxyInstance(
BnHooker.class.getClassLoader(),
- new Class[]{com.amap.api.col.n3.ft.a.class, IAMapDelegate.class, IAMapListener.class},
+ new Class[]{
+ com.amap.api.col.n3.ft.a.class,
+ IAMapDelegate.class,
+ IAMapListener.class,
+ IAMap.class
+ },
this
);
field.set( map, object );
@@ -45,7 +51,7 @@ public class BnHooker implements InvocationHandler {
return method.invoke( host, 10 );
}
if ( method.getName().equals( "drawFrame" ) ) {
- Logger.d(TAG, "drawFrame");
+ Logger.d( TAG, "drawFrame" );
}
return method.invoke( host, args );
}
diff --git a/modules/mogo-module-back/build.gradle b/modules/mogo-module-back/build.gradle
index f0c93b2d40..8ceb777bcb 100644
--- a/modules/mogo-module-back/build.gradle
+++ b/modules/mogo-module-back/build.gradle
@@ -53,7 +53,6 @@ dependencies {
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.modulecommon
- implementation rootProject.ext.dependencies.moduleshare
} else {
implementation project(":libraries:mogo-map")
implementation project(":libraries:mogo-map-api")
@@ -61,7 +60,6 @@ dependencies {
implementation project(":foudations:mogo-commons")
implementation project(':services:mogo-service-api')
implementation project(':modules:mogo-module-common')
- implementation project(':modules:mogo-module-share')
}
}
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 d30893b844..006760a9ad 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
@@ -117,6 +117,10 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
provider = mCardModulesAdapter.getProvider( mCurrentPosition );
mMogoModuleHandler.setModuleEnable( provider.getModuleName() );
mMogoCardManager.invoke( position, mMogoModuleHandler.getCurrentModuleName() );
+
+ mMogoStatusManager.setUserInteractionStatus( TAG, true, false );
+ mMogoMapUIController.setLockZoom( 16 );
+ mMogoMapUIController.recoverLockMode();
} catch ( Exception e ) {
e.printStackTrace();
}
@@ -220,8 +224,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
public void loadModules() {
final long start = System.currentTimeMillis();
- getWindow().setBackgroundDrawable( null );
-
MogoModulePaths.addModule( new MogoModule( ServiceConst.PATH_REFRESH_STRATEGY, ServiceConst.PATH_REFRESH_STRATEGY ) );
mMogoModuleHandler = new MogoModulesManager( this );
@@ -240,11 +242,11 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
loadContainerModules();
mMogoModuleHandler.loadModules();
mPresenter.delayOperations();
+ hideCoverUpLayout();
// 显示左边遮罩
mLeftShadowFrame.setVisibility( View.VISIBLE );
mTopShadowFrame.setVisibility( View.VISIBLE );
- mCardsBkg.setVisibility( View.VISIBLE );
// 右移地图中心点
mMogoMapUIController = mMogoMapService.getMapUIController();
@@ -293,6 +295,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
@Override
public void hideCoverUpLayout() {
mCoverUpLayout.setVisibility( View.GONE );
+ mCardsBkg.setVisibility( View.VISIBLE );
+ mCardCoverUpBottomLayout.setVisibility( View.VISIBLE );
}
@Override
@@ -303,8 +307,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mCardsContainer.setOffscreenPageLimit( providers.size() );
//mCardsContainer.setPageTransformer( true, mTransformer );
mCardsContainer.setAdapter( mCardModulesAdapter );
-
- mCardCoverUpBottomLayout.setVisibility( View.VISIBLE );
}
@NonNull
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java
index e498d26f28..12db43890c 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java
@@ -116,7 +116,7 @@ public class MainPresenter extends Presenter< MainView > {
*/
public void delayOperations() {
mMsgHandler.sendEmptyMessageDelayed( MainConstants.MSG_LOAD_CARD_MODULES, 100L );
- mMsgHandler.sendEmptyMessageDelayed( MainConstants.MSG_HIDE_MAP_COVER_FRAME, 0L );
+ mMsgHandler.sendEmptyMessageDelayed( MainConstants.MSG_HIDE_MAP_COVER_FRAME, 150L );
}
public void postTrackLastCardShowEvent( IMogoModuleProvider provider ) {
diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
index 9a2834ad76..0d8eeb964d 100644
--- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
+++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
@@ -15,14 +15,14 @@
android:layout_width="match_parent"
android:layout_height="@dimen/module_main_top_shadow_height"
android:background="@drawable/module_main_dw_top_frame_bkg"
- android:visibility="invisible" />
+ android:visibility="gone" />
+ android:visibility="gone" />
diff --git a/modules/mogo-module-main/src/main/res/values/styles.xml b/modules/mogo-module-main/src/main/res/values/styles.xml
index 3a31eb4e55..cfde8a6ca8 100644
--- a/modules/mogo-module-main/src/main/res/values/styles.xml
+++ b/modules/mogo-module-main/src/main/res/values/styles.xml
@@ -11,6 +11,7 @@
- false
- @style/MainAnimation
- @style/noCheckboxStyle
+ - false
- @style/noCheckboxStyle
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 01a06696a9..2425716220 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
@@ -25,6 +25,7 @@ import com.mogo.service.module.IMogoSearchManager;
import com.mogo.service.voice.IMogoVoiceListener;
import com.mogo.service.voice.IMogoVoiceManager;
import com.mogo.utils.ResourcesHelper;
+import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.WindowUtils;
import com.mogo.utils.logger.Logger;
@@ -71,7 +72,11 @@ public class MapPresenter extends Presenter implements
mView.getUIController().setTrafficEnabled(opera_type == 0);
} else if (type == 1) {
mView.getUIController().changeZoom(opera_type == 0);
- mMogoMapService.getMapUIController().recoverLockMode();//缩放地图会导致锁车发生改变,这里强制锁车
+ UiThreadHandler.postDelayed( ()->{
+ int lockZoomLevel = opera_type == 0 ? ( ( int ) mView.getUIController().getZoomLevel() ) : ( ( int ) (mView.getUIController().getZoomLevel() + 0.5 ));
+ mView.getUIController().setLockZoom( lockZoomLevel );
+ mMogoMapService.getMapUIController().recoverLockMode();//缩放地图会导致锁车发生改变,这里强制锁车
+ }, 1_000 );
} else if (type == 2) {
if (opera_type == 0) {
mView.getUIController().changeMapMode(EnumMapUI.CarUp_2D);
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 61b4338db9..46e7b631fa 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
@@ -301,6 +301,7 @@ public class MogoServices implements IMogoMapListener,
mIntentManager.registerIntentListener( ServiceConst.COMMAND_SWITCH_CARD, this );
mIntentManager.registerIntentListener( MogoReceiver.ACTION_ADAS_STATUS, this );
mIntentManager.registerIntentListener( ServiceConst.COMMAND_OPERATION, this );
+ mIntentManager.registerIntentListener( MogoReceiver.ACTION_VOICE_READY, this );
mADASController = apis.getAdasControllerApi();
mLauncher = apis.getLauncherApi();
@@ -362,6 +363,7 @@ public class MogoServices implements IMogoMapListener,
// 小智语音
filter.addAction( MogoReceiver.ACTION_VOICE_UI );
filter.addAction( MogoReceiver.ACTION_ADAS_STATUS );
+ filter.addAction( MogoReceiver.ACTION_VOICE_READY );
try {
context.getApplicationContext().registerReceiver( mAIAssistReceiver, filter );
Logger.i( TAG, "register voice receiver." );
@@ -786,6 +788,8 @@ public class MogoServices implements IMogoMapListener,
} catch ( JSONException e ) {
e.printStackTrace();
}
+ } else if( MogoReceiver.ACTION_VOICE_READY.equals( command ) ){
+ AIAssist.getInstance( mContext ).flush();
}
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/actionmanager/MogoActionHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/actionmanager/MogoActionHandler.java
index 71d13ecbe1..ae42115283 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/actionmanager/MogoActionHandler.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/actionmanager/MogoActionHandler.java
@@ -107,7 +107,10 @@ public class MogoActionHandler implements IMogoActionManager {
@Override
public void bizInvoke( String biz, int position, Object data ) {
if ( mBizActionDoneListener != null ) {
- mBizActionDoneListener.onBizActionDone( biz, position, data );
+ try {
+ mBizActionDoneListener.onBizActionDone( biz, position, data );
+ } catch ( Exception e ) {
+ }
}
}
-}
+}
\ No newline at end of file
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 07353d8002..e3ff2c1362 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
@@ -30,6 +30,7 @@ import com.mogo.service.cardmanager.IMogoCardChangedListener;
import com.mogo.service.connection.IMogoOnMessageListener;
import com.mogo.service.module.IMogoBizActionDoneListener;
import com.mogo.utils.ThreadPoolService;
+import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.logger.Logger;
import org.json.JSONArray;
@@ -342,7 +343,9 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
// 解析不同的Marker类型,然后对应的进行绘制
mLastDataResult = response.getResult();
- dispatchDataToBiz();
+ UiThreadHandler.post( () -> {
+ dispatchDataToBiz();
+ } );
// 语音触发的在线车辆搜索,采用增量的形式绘制
if ( mIsAISearchOnlineData = isOnlineCarDataOnly( mLastDataResult ) ) {
@@ -601,9 +604,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic();
List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo();
- fillNumberTrackEventBody( array, 3, onlineCarList.size() );
- fillNumberTrackEventBody( array, 1, exploreWayList.size() );
- fillNumberTrackEventBody( array, 4, shareMusicList.size() );
+ int size = onlineCarList == null ? 0 : onlineCarList.size();
+ fillNumberTrackEventBody( array, 3, size );
+ size = exploreWayList == null ? 0 : exploreWayList.size();
+ fillNumberTrackEventBody( array, 1, size );
+ size = shareMusicList == null ? 0 : shareMusicList.size();
+ fillNumberTrackEventBody( array, 4, size );
int num_gas_station = 0;
int num_traffic_check = 0;
@@ -611,28 +617,31 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
int num_shop_discount = 0;
int num_fours_shop = 0;
- for ( MarkerNoveltyInfo markerNoveltyInfo : noveltyInfoList ) {
- if ( markerNoveltyInfo == null ) {
- continue;
- }
- switch ( markerNoveltyInfo.getPoiType() ) {
- case MarkerPoiTypeEnum.GAS_STATION:
- num_gas_station++;
- break;
- case MarkerPoiTypeEnum.TRAFFIC_CHECK:
- num_traffic_check++;
- break;
- case MarkerPoiTypeEnum.ROAD_CLOSED:
- num_road_closed++;
- break;
- case MarkerPoiTypeEnum.SHOP_DISCOUNT:
- num_shop_discount++;
- break;
- case MarkerPoiTypeEnum.FOURS_4S:
- num_fours_shop++;
- break;
+ if ( noveltyInfoList != null ) {
+ for ( MarkerNoveltyInfo markerNoveltyInfo : noveltyInfoList ) {
+ if ( markerNoveltyInfo == null ) {
+ continue;
+ }
+ switch ( markerNoveltyInfo.getPoiType() ) {
+ case MarkerPoiTypeEnum.GAS_STATION:
+ num_gas_station++;
+ break;
+ case MarkerPoiTypeEnum.TRAFFIC_CHECK:
+ num_traffic_check++;
+ break;
+ case MarkerPoiTypeEnum.ROAD_CLOSED:
+ num_road_closed++;
+ break;
+ case MarkerPoiTypeEnum.SHOP_DISCOUNT:
+ num_shop_discount++;
+ break;
+ case MarkerPoiTypeEnum.FOURS_4S:
+ num_fours_shop++;
+ break;
+ }
}
}
+
fillNumberTrackEventBody( array, 2, num_gas_station );
fillNumberTrackEventBody( array, 6, num_road_closed );
fillNumberTrackEventBody( array, 5, num_traffic_check );
@@ -793,9 +802,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
IMogoMarkerManager markerManager = MarkerServiceHandler.getMarkerManager();
List< IMogoMarker > markers = markerManager.getMarkers( biz );
if ( markers != null ) {
- IMogoMarker marker = markers.get( position );
- if ( marker != null ) {
+ try {
+ 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/receiver/MogoReceiver.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java
index b608024bbb..7fe7f86535 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java
@@ -50,6 +50,11 @@ public class MogoReceiver extends BroadcastReceiver {
*/
public static final String ACTION_ADAS_STATUS = "com.zhidao.autopilot.adas.msg";
+ /**
+ * 小智语音准备就绪
+ */
+ public static final String ACTION_VOICE_READY = "com.zhidao.auto.AIAssist.ready";
+
private IMogoIntentManager mMogoIntentManager;
public MogoReceiver( Context context ) {