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 eb3be1a916..49aea0529a 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 @@ -275,6 +275,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme super.onResume(); mMogoStatusManager.setMainPageResumeStatus( TAG, true ); mMogoStatusManager.setMainPageLaunchedStatus( TAG, true ); + mMogoStatusManager.setMainPageIsBackgroundStatus( TAG, false ); if ( mCoverUpLayout.getVisibility() != View.VISIBLE ) { mServiceApis.getAdasControllerApi().showADAS(); } @@ -307,6 +308,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme @Override protected void onStop() { super.onStop(); + mMogoStatusManager.setMainPageIsBackgroundStatus( TAG, true ); } @Override @@ -353,6 +355,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme mServiceApis.getMapServiceApi().getHostListenerRegister().unregisterHostNaviListener(); mServiceApis.getMapServiceApi().getHostListenerRegister().unregisterHostMapListener(); mMogoStatusManager.setMainPageLaunchedStatus( TAG, false ); + mMogoStatusManager.setMainPageIsBackgroundStatus( TAG, false ); mMogoFragmentManager.unregisterMainFragmentStackTransactionListener(); mMogoFragmentManager = null; mServiceApis.getMapServiceApi().getMapViewInstanceHandler().destroy(); 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 a27ce3c033..a41cde3874 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 @@ -6,14 +6,11 @@ import android.content.Intent; import android.content.IntentFilter; import android.location.Location; import android.net.ConnectivityManager; -import android.net.wifi.WifiManager; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.text.TextUtils; -import android.util.Log; import android.view.MotionEvent; -import android.view.View; import androidx.annotation.NonNull; @@ -48,7 +45,6 @@ import com.mogo.module.service.launchercard.LauncherCardRefresher; import com.mogo.module.service.marker.MapMarkerManager; import com.mogo.module.service.network.RefreshCallback; import com.mogo.module.service.network.RefreshModel; -import com.mogo.module.service.network.bean.TtsConfigEntity; import com.mogo.module.service.ttsConfig.TtsConfigModleData; import com.mogo.module.service.network.bean.HomeCompanyDistanceForPushData; import com.mogo.module.service.network.bean.HomeCompanyDistanceForPushResponse; @@ -63,7 +59,6 @@ import com.mogo.service.fragmentmanager.FragmentStackTransactionListener; import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.intent.IMogoIntentManager; -import com.mogo.service.launcher.IMogoLauncher; import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoActionManager; import com.mogo.service.module.IMogoRegisterCenter; @@ -78,12 +73,12 @@ import com.mogo.utils.logger.Logger; import com.mogo.utils.network.RequestOptions; import com.mogo.utils.network.utils.GsonUtil; import com.zhidao.carchattingprovider.CallChattingProviderConstant; +import com.zhidao.carchattingprovider.ICallChatResponse; import com.zhidao.carchattingprovider.ICallProviderResponse; import com.zhidao.carchattingprovider.ICarsChattingProvider; import com.zhidao.smartv2x.common.utils.LoggerUtils; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.json.JSONObject; import java.util.List; @@ -256,13 +251,13 @@ public class MogoServices implements IMogoMapListener, /** * 手动刷新回调 */ - private RefreshCallback mCustomRefreshCallback = new RefreshCallback< MarkerResponse >() { + private RefreshCallback mCustomRefreshCallback = new RefreshCallback() { @Override - public void onSuccess( MarkerResponse o ) { - MapMarkerManager.getInstance().onSyncMarkerResponse( o ); + public void onSuccess(MarkerResponse o) { + MapMarkerManager.getInstance().onSyncMarkerResponse(o); mLoopRequest = false; // 用户手动操作地图刷新成功后,设置状态为 true,引发延时策略 - mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, true ); + mStatusManager.setUserInteractionStatus(ServiceConst.TYPE, true, true); } @Override @@ -338,12 +333,16 @@ public class MogoServices implements IMogoMapListener, } mIsMainPageFirstResume = false; LauncherCardRefresher.getInstance(mContext).stop(); - playAppTts(); - } else { unregisterInternalUnWakeupWords(); stopAutoRefreshStrategy(); + } + } + + @Override + public void onMainPageIsBackgroundStatusChanged(boolean isBackground) { + if (isBackground) { closeAllPanel(); } } @@ -402,96 +401,10 @@ public class MogoServices implements IMogoMapListener, */ private void closeAllPanel() { LoggerUtils.log("zy=======stop"); - // TODO @钟超 需要修改下kotlin的校验 - mCallProviderResponse = new ICallProviderResponse(){ + mCallProviderResponse = new ICallChatResponse() { @Override - public void mute(boolean b) { - - } - - @Override - public void matchInvokeResult(boolean b, @NotNull String s) { - - } - - @Override - public void match(@NotNull String s) { - - } - - @Override - public void invokeCallData(@NotNull String s) { - - } - - @Override - public void hangUp(boolean b) { - - } - - @Override - public void error(@NotNull String s) { - - } - - @Override - public void cancelMatch(boolean b) { - - } - - @Override - public void call(@NotNull String s) { - - } - - @Override - public void userWindowStatus(boolean b) { - - } - - @Override - public void userInfoCallBack(@Nullable String s, @Nullable String s1) { - - } - - @Override - public void isOnLine(boolean b, @Nullable String s) { - - } - - @Override - public void isFriend(boolean b) { - - } - - @Override - public void invisibleUser(boolean b) { - - } - - @Override - public void hideUserWindowError(@NotNull String s) { - - } - - @Override - public void canCall(boolean b) { - - } - - @Override - public void callInvokeError(@NotNull String s) { - - } - - @Override - public void addFriend(boolean b) { - - } - - @Override - public void callWindowStatus( boolean b ) { - + public void hideUserWindowError(@NotNull String errorMsg) { + LoggerUtils.log("zy=======errorMsg:" + errorMsg); } }; MogoApisHandler.getInstance().getApis().getShareManager().dismissShareDialog(); @@ -582,58 +495,58 @@ public class MogoServices implements IMogoMapListener, } private void initWorkThread() { - mThreadHandler = new Handler( WorkThreadHandler.getInstance().getLooper() ) { + mThreadHandler = new Handler(WorkThreadHandler.getInstance().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 ); - if ( ro.mLonLat == null ) { + } else if (msg.what == ServiceConst.MSG_REQUEST_DATA) { + if (msg.obj instanceof RefreshObject) { + RefreshObject ro = ((RefreshObject) msg.obj); + if (ro.mLonLat == null) { invokeAutoRefreshStrategy(); - Logger.w( TAG, "lonLat is null." ); + Logger.w(TAG, "lonLat is null."); return; } - mRefreshModel.refreshExplorerWayData( ro.mLonLat, ro.mRadius, ro.mAmount, ro.mCallback ); - MapMarkerManager.getInstance().getOnlineCarDataByAutoRefreshStrategy( ro.mLonLat ); + mRefreshModel.refreshExplorerWayData(ro.mLonLat, ro.mRadius, ro.mAmount, ro.mCallback); + MapMarkerManager.getInstance().getOnlineCarDataByAutoRefreshStrategy(ro.mLonLat); - Logger.i( TAG, "刷新半径 = %s, 点 = %s, zoomLevel = %s, amount = %s", ro.mRadius, ro.mLonLat, mLastZoomLevel, ro.mAmount ); + Logger.i(TAG, "刷新半径 = %s, 点 = %s, zoomLevel = %s, amount = %s", ro.mRadius, ro.mLonLat, mLastZoomLevel, ro.mAmount); } - } else if ( msg.what == ServiceConst.MSG_LOCK_CAR ) { - if ( mStatusManager.isSearchUIShow() ) { + } else if (msg.what == ServiceConst.MSG_LOCK_CAR) { + if (mStatusManager.isSearchUIShow()) { return; } - mStatusManager.setUserInteractionStatus( TAG, true, false ); + mStatusManager.setUserInteractionStatus(TAG, true, false); mUiController.recoverLockMode(); } } }; } - private void registerMogoReceiver( Context context ) { - if ( context == null ) { + private void registerMogoReceiver(Context context) { + if (context == null) { return; } - List< MogoModule > modules = MogoModulePaths.getModules(); - if ( modules.isEmpty() || modules == null ) { + List 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); @@ -717,30 +630,30 @@ public class MogoServices implements IMogoMapListener, } private void stopAutoRefreshStrategy() { - stopAutoRefreshStrategy( true ); + stopAutoRefreshStrategy(true); } - private void stopAutoRefreshStrategy( boolean stopOnlineCarRefresh ) { - mHandler.removeMessages( ServiceConst.MSG_TYPE_REFRESH_DECREASE ); - if ( stopOnlineCarRefresh ) { + private void stopAutoRefreshStrategy(boolean stopOnlineCarRefresh) { + mHandler.removeMessages(ServiceConst.MSG_TYPE_REFRESH_DECREASE); + if (stopOnlineCarRefresh) { MapMarkerManager.getInstance().stopAutoRefresh(); } } @Override - public void onLockMap( boolean isLock ) { - mThreadHandler.removeMessages( ServiceConst.MSG_LOCK_CAR ); - if ( !isLock ) { - mThreadHandler.sendEmptyMessageDelayed( ServiceConst.MSG_LOCK_CAR, ServiceConst.DEFAULT_AUTO_REFRESH_WHEN_INTERRUPT ); + public void onLockMap(boolean isLock) { + mThreadHandler.removeMessages(ServiceConst.MSG_LOCK_CAR); + if (!isLock) { + mThreadHandler.sendEmptyMessageDelayed(ServiceConst.MSG_LOCK_CAR, ServiceConst.DEFAULT_AUTO_REFRESH_WHEN_INTERRUPT); } } @Override - public void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ) { + public void onMapChanged(MogoLatLng latLng, float zoom, float tilt, float bearing) { - MapMarkerManager.getInstance().syncLocation( latLng.lon, latLng.lat ); + MapMarkerManager.getInstance().syncLocation(latLng.lon, latLng.lat); - if ( mIsCameraInited ) { + if (mIsCameraInited) { mLastZoomLevel = zoom; mLastCustomRefreshCenterLocation = latLng; mIsCameraInited = false; @@ -750,26 +663,26 @@ public class MogoServices implements IMogoMapListener, // 部分非用户操作导致地图视图变化:绘线、圈点等不触发用户刷新 // 消费状态 - if ( mStatusManager.isUserInteracted() ) { + if (mStatusManager.isUserInteracted()) { mLastCustomRefreshCenterLocation = latLng; mLastZoomLevel = zoom; - Logger.d( TAG, "user interacted" ); + Logger.d(TAG, "user interacted"); return; } // v2x // adas 状态下不做任何操作 - if ( mStatusManager.isV2XShow() ) { + if (mStatusManager.isV2XShow()) { mLastCustomRefreshCenterLocation = latLng; mLastZoomLevel = zoom; - Logger.d( TAG, "user v2x show" ); + Logger.d(TAG, "user v2x show"); return; } // 搜索页面显示时不做任何策略 - if ( mStatusManager.isSearchUIShow() ) { + if (mStatusManager.isSearchUIShow()) { mLastCustomRefreshCenterLocation = latLng; mLastZoomLevel = zoom; - Logger.d( TAG, "user search Ui show" ); + Logger.d(TAG, "user search Ui show"); return; } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java index b452702a33..8b86e558bf 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java @@ -24,6 +24,9 @@ abstract class StatusChangedAdapter implements IMogoStatusChangedListener { case MAIN_PAGE_RESUME: onMainPageResumeStatusChanged( isTrue ); break; + case MAIN_PAGE_IS_BACKGROUND: + onMainPageIsBackgroundStatusChanged( isTrue ); + break; case SEEK_HELPING: onSeekHelpingStatusChanged( isTrue ); break; @@ -42,6 +45,8 @@ abstract class StatusChangedAdapter implements IMogoStatusChangedListener { public abstract void onMainPageResumeStatusChanged( boolean resume ); + public abstract void onMainPageIsBackgroundStatusChanged( boolean isBackground ); + public abstract void onSeekHelpingStatusChanged( boolean isSeekingHelping ); public abstract void onAccStatusChanged( boolean accOn ); 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 f4655180d0..77a7055d18 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 @@ -81,6 +81,13 @@ public interface IMogoStatusManager extends IProvider { */ boolean isMainPageOnResume(); + /** + * 主页是否在后台运行 + * + * @return true-在后台,false-不在后台 + */ + boolean isMainPageIsBackground(); + /** * 小智语音是否准备完毕 * @@ -208,6 +215,14 @@ public interface IMogoStatusManager extends IProvider { */ void setMainPageResumeStatus( String tag, boolean resume ); + /** + * 主页 后台运行 状态 + * + * @param tag 控制来源 + * @param isBackground true-在后台运行,false-不在后台运行(也可能是挂了) + */ + void setMainPageIsBackgroundStatus( String tag, boolean isBackground ); + /** * 设置小智语音状态 * 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 42d71b3283..d33b78ea0c 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 @@ -55,6 +55,11 @@ public enum StatusDescriptor { */ MAIN_PAGE_RESUME, + /** + * 主页 isBackground 状态 + */ + MAIN_PAGE_IS_BACKGROUND, + /** * 小智语音状态 */ 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 62c6076ff4..3244314524 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 @@ -96,6 +96,11 @@ public class MogoStatusManager implements IMogoStatusManager { return get_bool_val( StatusDescriptor.MAIN_PAGE_RESUME ); } + @Override + public boolean isMainPageIsBackground() { + return get_bool_val( StatusDescriptor.MAIN_PAGE_IS_BACKGROUND ); + } + @Override public boolean isAIAssistReady() { return get_bool_val( StatusDescriptor.AI_ASSIST_READY ); @@ -199,6 +204,13 @@ public class MogoStatusManager implements IMogoStatusManager { Logger.i( TAG, "setMainPageResumeStatus " + resume + " cost " + ( System.currentTimeMillis() - start ) + "ms" ); } + @Override + public void setMainPageIsBackgroundStatus(String tag, boolean isBackground) { + final long start = System.currentTimeMillis(); + doSetStatus( tag, StatusDescriptor.MAIN_PAGE_IS_BACKGROUND, isBackground ); + Logger.i( TAG, "setMainPageIsBackgroundStatus " + isBackground + " cost " + ( System.currentTimeMillis() - start ) + "ms" ); + } + @Override public void setAIAssistReady( String tag, boolean ready ) { doSetStatus( tag, StatusDescriptor.AI_ASSIST_READY, ready );