修复语音小智也走主页面的生命周期,导致会关闭EventPanel的问题

This commit is contained in:
董宏宇
2020-11-23 17:10:21 +08:00
parent 6eb97f55e7
commit 673abf4fc8
6 changed files with 99 additions and 146 deletions

View File

@@ -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<MarkerResponse>() {
@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<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);
@@ -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;
}

View File

@@ -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 );