From dcc4191f125c11d19582b6fcdad6a509adee3e91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Thu, 23 Jul 2020 17:18:47 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E6=B1=82=E5=8A=A9=E7=9A=84=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scene/seek/V2XSeekHelpDialog.java | 31 +++---------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpDialog.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpDialog.java index d1ae3f2d22..9144976b43 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpDialog.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpDialog.java @@ -2,24 +2,20 @@ package com.mogo.module.v2x.scenario.scene.seek; import android.content.Context; import android.content.Intent; -import android.graphics.PixelFormat; -import android.os.Build; import android.util.AttributeSet; -import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; -import android.view.WindowManager; import android.widget.TextView; import androidx.constraintlayout.widget.ConstraintLayout; import com.mogo.commons.voice.AIAssist; +import com.mogo.module.common.wm.WindowManagerView; import com.mogo.module.v2x.R; import com.mogo.module.v2x.utils.V2XUtils; import com.mogo.module.v2x.voice.V2XVoiceCallbackListener; import com.mogo.module.v2x.voice.V2XVoiceConstants; import com.mogo.module.v2x.voice.V2XVoiceManager; -import com.mogo.utils.WindowUtils; import com.mogo.utils.logger.Logger; /** @@ -82,30 +78,13 @@ public class V2XSeekHelpDialog extends ConstraintLayout implements View.OnClickL } boolean isShown; - WindowManager windowManager; + WindowManagerView windowManager; public void show() { Logger.d(TAG, "使用windowManager实现"); if (!isShown) { - windowManager = (WindowManager) mContext.getApplicationContext().getSystemService(Context.WINDOW_SERVICE); - WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; - } else { - layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; - } - layoutParams.format = PixelFormat.TRANSLUCENT; - layoutParams.gravity = Gravity.START | Gravity.TOP; -// mWindowLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; - // FLAG_LAYOUT_IN_SCREEN:将window放置在整个屏幕之内,无视其他的装饰(比如状态栏); FLAG_NOT_TOUCH_MODAL:不阻塞事件传递到后面的窗口 - layoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; - layoutParams.width = WindowUtils.getScreenWidth(mContext); - layoutParams.height = WindowUtils.getScreenHeight(mContext); - //后面变暗区域透明... - layoutParams.dimAmount = 0; - layoutParams.x = 0; - layoutParams.y = 0; - windowManager.addView(this, layoutParams); + windowManager = new WindowManagerView.Builder(getContext()).contentView(R.layout.module_commons_layout_wm_dialog).build(); + windowManager.show(); isShown = true; AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("确定要解除求助状态吗"); unRegisterVoiceCmd(); @@ -125,7 +104,7 @@ public class V2XSeekHelpDialog extends ConstraintLayout implements View.OnClickL public void dismiss() { if (isShown && windowManager != null) { - windowManager.removeViewImmediate(this); + windowManager.dismiss(); windowManager = null; isShown = false; } From 76bfac2b84fe6f3c6b4d66f7315a4a85c73d8912 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Thu, 23 Jul 2020 17:53:20 +0800 Subject: [PATCH 2/2] opt --- .../java/com/mogo/launcher/MogoApplication.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 26ebe45ea4..3a95ccb761 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -99,25 +99,25 @@ public class MogoApplication extends AbsMogoApplication { @Override protected void init() { super.init(); - prepareBaseService(); + prepareBaseService(2_000L); } /** * 基础服务:passport、location、socket */ - private void prepareBaseService(){ - UiThreadHandler.postDelayed( ()->{ + private void prepareBaseService(long delay) { + UiThreadHandler.postDelayed( () -> { final IMogoServiceApis apis = ARouter.getInstance().navigation( IMogoServiceApis.class ); // 第三方平台的sn是服务端生成的,所以必须在返回后才能开启 if ( TextUtils.isEmpty( Utils.getSn() ) ) { - preparePassportEnvironment( apis, ()->{ + preparePassportEnvironment( apis, () -> { prepareSocketAndLocationServices( apis ); } ); } else { preparePassportEnvironment( apis, null ); prepareSocketAndLocationServices( apis ); } - }, 2_000L ); + }, delay ); } private void preparePassportEnvironment( IMogoServiceApis apis, Runnable after ) { @@ -138,12 +138,14 @@ public class MogoApplication extends AbsMogoApplication { if ( after != null ) { after.run(); } + } else { + prepareBaseService(1_000L); } } } ); } - private void prepareSocketAndLocationServices(IMogoServiceApis apis){ + private void prepareSocketAndLocationServices( IMogoServiceApis apis ) { apis.getSocketManagerApi( getApplicationContext() ).init( getApplicationContext(), DebugConfig.getSocketAppId() ); apis.getLocationInfoApi().start(); apis.getMapServiceApi().getSingletonLocationClient( getApplicationContext() ).addLocationListener( location -> {