- com.mogo.launcher
+ - com.mogo.launcher.f
- com.mogo.launcher.app
- com.zhidao.launcher
- com.nwd.android.toolsmanager
diff --git a/modules/mogo-module-authorize/src/androidTest/java/com/mogo/module/authorize/ExampleInstrumentedTest.kt b/modules/mogo-module-authorize/src/androidTest/java/com/mogo/module/authorize/ExampleInstrumentedTest.kt
deleted file mode 100644
index d5b381bd09..0000000000
--- a/modules/mogo-module-authorize/src/androidTest/java/com/mogo/module/authorize/ExampleInstrumentedTest.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.mogo.module.authorize
-
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.ext.junit.runners.AndroidJUnit4
-
-import org.junit.Test
-import org.junit.runner.RunWith
-
-import org.junit.Assert.*
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-@RunWith(AndroidJUnit4::class)
-class ExampleInstrumentedTest {
- @Test
- fun useAppContext() {
- // Context of the app under test.
- val appContext = InstrumentationRegistry.getInstrumentation().targetContext
- assertEquals("com.mogo.module.authorize.test", appContext.packageName)
- }
-}
diff --git a/modules/mogo-module-authorize/src/test/java/com/mogo/module/authorize/ExampleUnitTest.kt b/modules/mogo-module-authorize/src/test/java/com/mogo/module/authorize/ExampleUnitTest.kt
deleted file mode 100644
index f2b7332da6..0000000000
--- a/modules/mogo-module-authorize/src/test/java/com/mogo/module/authorize/ExampleUnitTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.mogo.module.authorize
-
-import org.junit.Test
-
-import org.junit.Assert.*
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-class ExampleUnitTest {
- @Test
- fun addition_isCorrect() {
- assertEquals(4, 2 + 2)
- }
-}
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java
index e92e84e107..db17ed40fc 100644
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java
+++ b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java
@@ -45,8 +45,10 @@ public class BackToMainHomeManager {
return;
}
- mApis.getIntentManagerApi().invoke( Intent.ACTION_CLOSE_SYSTEM_DIALOGS, new Intent() );
-
+ Intent intent2 = new Intent( );
+ // 是否发自系统消息
+ intent2.putExtra( "isHomeKeyDown", false );
+ mApis.getIntentManagerApi().invoke( Intent.ACTION_CLOSE_SYSTEM_DIALOGS, intent2 );
Logger.d( TAG, "返回桌面" );
Intent intent = new Intent();
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java
index 72c5960fd4..a7bcb305c1 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java
@@ -29,6 +29,11 @@ class DialogImpl implements IWindowManagerView {
return dialog.isShowing();
}
+ @Override
+ public void handleTouchEvent(OnViewClickListener listener) {
+ // do nothings.
+ }
+
@Override
public void show() {
dialog.show();
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java
index d610cea67a..14891ed7d6 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java
@@ -1,18 +1,27 @@
package com.mogo.module.common.wm;
+import android.view.View;
+
interface IWindowManagerView {
/**
* 初始化
+ *
* @param params contentView包装类
*/
- void init(WindowManagerView.WMViewParams params);
+ void init( WindowManagerView.WMViewParams params );
/**
* 是否显示
+ *
* @return true - 显示中
*/
boolean isShowing();
+ /**
+ * 支持手势拖动,该操作只支持触发点击操作
+ */
+ void handleTouchEvent(OnViewClickListener listener);
+
/**
* 显示
*/
@@ -22,4 +31,8 @@ interface IWindowManagerView {
* 隐藏
*/
void hide();
+
+ interface OnViewClickListener {
+ void onClick( View view );
+ }
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java
index f9b34a59be..d4314d4106 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java
@@ -3,12 +3,9 @@ package com.mogo.module.common.wm;
import android.content.Context;
import android.graphics.PixelFormat;
import android.os.Build;
-import android.view.Gravity;
+import android.view.MotionEvent;
import android.view.WindowManager;
-import com.mogo.module.common.utils.CarSeries;
-import com.mogo.utils.WindowUtils;
-
/**
* 采用windowManager实现接口
*/
@@ -19,10 +16,13 @@ class WindowManagerImpl implements IWindowManagerView {
private WindowManagerView.WMViewParams mParams;
private boolean isShowing;
+ private float mLastX, mLastY;
+ private int mOldOffsetX, mOldOffsetY;
+
@Override
- public void init(WindowManagerView.WMViewParams params) {
+ public void init( WindowManagerView.WMViewParams params ) {
mParams = params;
- mWindowManager = (WindowManager) mParams.mContext.getApplicationContext().getSystemService( Context.WINDOW_SERVICE );
+ mWindowManager = ( WindowManager ) mParams.mContext.getApplicationContext().getSystemService( Context.WINDOW_SERVICE );
mLayoutParams = new WindowManager.LayoutParams();
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ) {
mLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
@@ -30,13 +30,13 @@ class WindowManagerImpl implements IWindowManagerView {
mLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
}
mLayoutParams.format = PixelFormat.TRANSLUCENT;
- mLayoutParams.gravity = Gravity.CENTER;
+ mLayoutParams.gravity = mParams.mGravity;
mLayoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mLayoutParams.width = mParams.mWidth;
mLayoutParams.height = mParams.mHeight;
- mLayoutParams.x = mParams.mX;
- mLayoutParams.y = mParams.mY;
+ mOldOffsetX = mLayoutParams.x = mParams.mX;
+ mOldOffsetY = mLayoutParams.y = mParams.mY;
mLayoutParams.dimAmount = 0.5f;
}
@@ -45,20 +45,47 @@ class WindowManagerImpl implements IWindowManagerView {
return isShowing;
}
+ @Override
+ public void handleTouchEvent(OnViewClickListener listener) {
+ mParams.mContentView.setOnTouchListener( ( v, event ) -> {
+ final int action = event.getAction();
+ float x = event.getX();
+ float y = event.getY();
+ if ( action == MotionEvent.ACTION_DOWN ) {
+ mLastX = x;
+ mLastY = y;
+ } else if ( action == MotionEvent.ACTION_MOVE ) {
+ mLayoutParams.x += ( int ) ( x - mLastX ) / 3; // 减小偏移量,防止过度抖动
+ mLayoutParams.y += ( int ) ( y - mLastY ) / 3; // 减小偏移量,防止过度抖动
+ mWindowManager.updateViewLayout( mParams.mContentView, mLayoutParams );
+ } else if ( action == MotionEvent.ACTION_UP ) {
+ int newOffsetX = mLayoutParams.x;
+ int newOffsetY = mLayoutParams.y;
+ // 只要按钮一动位置不是很大,就认为是点击事件
+ if ( Math.abs( mOldOffsetX - newOffsetX ) <= 20
+ && Math.abs( mOldOffsetY - newOffsetY ) <= 20 ) {
+ listener.onClick( mParams.mContentView );
+ }
+ mOldOffsetX = newOffsetX;
+ mOldOffsetY = newOffsetY;
+ }
+ return true;
+ } );
+ }
+
@Override
public void show() {
- if(!isShowing){
+ if ( !isShowing ) {
isShowing = true;
- mWindowManager.addView(mParams.mContentView,mLayoutParams);
+ mWindowManager.addView( mParams.mContentView, mLayoutParams );
}
}
@Override
public void hide() {
- if (isShowing && mParams != null) {
- mWindowManager.removeView(mParams.mContentView);
+ if ( isShowing && mParams != null ) {
+ mWindowManager.removeView( mParams.mContentView );
isShowing = false;
}
-
}
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java
index d0d2cfa4d4..db2b244273 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java
@@ -33,6 +33,10 @@ public class WindowManagerView {
return mParams.mContentView.findViewById( id );
}
+ public void attachTouchEvent( IWindowManagerView.OnViewClickListener listener ) {
+ mManagerView.handleTouchEvent(listener);
+ }
+
public void show() {
mManagerView.show();
}
@@ -72,6 +76,11 @@ public class WindowManagerView {
return this;
}
+ public Builder gravity( int gravity ) {
+ mParams.mGravity = gravity;
+ return this;
+ }
+
/**
* 默认dialog实现
*
@@ -105,5 +114,6 @@ public class WindowManagerView {
public int mHeight;
public int mX;
public int mY;
+ public int mGravity;
}
}
diff --git a/modules/mogo-module-left-panel/src/androidTest/java/com/zhidao/mogo/module/left/panel/ExampleInstrumentedTest.kt b/modules/mogo-module-left-panel/src/androidTest/java/com/zhidao/mogo/module/left/panel/ExampleInstrumentedTest.kt
deleted file mode 100644
index dc1ab9fba3..0000000000
--- a/modules/mogo-module-left-panel/src/androidTest/java/com/zhidao/mogo/module/left/panel/ExampleInstrumentedTest.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.zhidao.mogo.module.left.panel
-
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.ext.junit.runners.AndroidJUnit4
-
-import org.junit.Test
-import org.junit.runner.RunWith
-
-import org.junit.Assert.*
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-@RunWith(AndroidJUnit4::class)
-class ExampleInstrumentedTest {
- @Test
- fun useAppContext() {
- // Context of the app under test.
- val appContext = InstrumentationRegistry.getInstrumentation().targetContext
- assertEquals("com.zhidao.mogo.module.left.panel.test", appContext.packageName)
- }
-}
\ No newline at end of file
diff --git a/modules/mogo-module-left-panel/src/test/java/com/zhidao/mogo/module/left/panel/ExampleUnitTest.kt b/modules/mogo-module-left-panel/src/test/java/com/zhidao/mogo/module/left/panel/ExampleUnitTest.kt
deleted file mode 100644
index fa3e2c384a..0000000000
--- a/modules/mogo-module-left-panel/src/test/java/com/zhidao/mogo/module/left/panel/ExampleUnitTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.zhidao.mogo.module.left.panel
-
-import org.junit.Test
-
-import org.junit.Assert.*
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-class ExampleUnitTest {
- @Test
- fun addition_isCorrect() {
- assertEquals(4, 2 + 2)
- }
-}
\ 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 a0952f38de..e0af518958 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
@@ -308,7 +308,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
@Override
public void onIntentReceived( String intentStr, Intent intent ) {
if ( TextUtils.equals( Intent.ACTION_CLOSE_SYSTEM_DIALOGS, intentStr ) ) {
- mIsHomeKeyDown = true;
+ mIsHomeKeyDown = intent.getBooleanExtra( "isHomeKeyDown", true );
}
}
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/AutoNaviBroadcastReceiver.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/AutoNaviBroadcastIntentHandler.java
similarity index 86%
rename from modules/mogo-module-map/src/main/java/com/mogo/module/map/AutoNaviBroadcastReceiver.java
rename to modules/mogo-module-map/src/main/java/com/mogo/module/map/AutoNaviBroadcastIntentHandler.java
index 242bbbce63..4ddc0f947f 100644
--- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/AutoNaviBroadcastReceiver.java
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/AutoNaviBroadcastIntentHandler.java
@@ -1,14 +1,12 @@
package com.mogo.module.map;
-import android.content.BroadcastReceiver;
-import android.content.Context;
import android.content.Intent;
-import android.content.IntentFilter;
import android.text.TextUtils;
-import com.mogo.commons.AbsMogoApplication;
import com.mogo.map.navi.MogoNaviConfig;
import com.mogo.map.uicontroller.EnumMapUI;
+import com.mogo.service.intent.IMogoIntentListener;
+import com.mogo.service.intent.IMogoIntentManager;
import com.mogo.utils.logger.Logger;
public
@@ -18,21 +16,19 @@ public
*
* 接收高德地图车机版广播
*/
-class AutoNaviBroadcastReceiver extends BroadcastReceiver {
+class AutoNaviBroadcastIntentHandler implements IMogoIntentListener {
public static final String TAG = "AutoNaviBroadcastReceiver";
public static final String AUTONAVI_STANDARD_BROADCAST_RECV = "AUTONAVI_STANDARD_BROADCAST_RECV";
- public void register() {
- IntentFilter inputFilter = new IntentFilter();
- inputFilter.addAction( AUTONAVI_STANDARD_BROADCAST_RECV );
- AbsMogoApplication.getApp().registerReceiver( this, inputFilter );
+ public void register( IMogoIntentManager manager ) {
+ manager.registerIntentListener( AUTONAVI_STANDARD_BROADCAST_RECV, this );
}
- public void unregister() {
+ public void unregister(IMogoIntentManager manager ) {
mCallback = null;
- AbsMogoApplication.getApp().unregisterReceiver( this );
+ manager.unregisterIntentListener( AUTONAVI_STANDARD_BROADCAST_RECV, this );
}
private OnMapControlCallback mCallback;
@@ -42,7 +38,7 @@ class AutoNaviBroadcastReceiver extends BroadcastReceiver {
}
@Override
- public void onReceive( Context context, Intent intent ) {
+ public void onIntentReceived( String intentStr, Intent intent ) {
String action = intent.getAction();
int keyType = intent.getIntExtra( "KEY_TYPE", 0 );
@@ -122,6 +118,5 @@ class AutoNaviBroadcastReceiver extends BroadcastReceiver {
.avoidSpeed( prefer == 3 );
mCallback.onReCalculatePath( config );
}
- mCallback.onEnd( intent );
}
}
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 f72c5dea25..a45306c822 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
@@ -32,6 +32,7 @@ import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.module.IMogoSearchManager;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.strategy.IMogoRefreshStrategyController;
+import com.mogo.utils.AppUtils;
import com.mogo.utils.ResourcesHelper;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.logger.Logger;
@@ -73,23 +74,11 @@ public class MapPresenter extends Presenter< MapView > implements
mView.getUIController().recoverLockMode();
}
};
- private AutoNaviBroadcastReceiver mAutoNaviReceiver;
+ private AutoNaviBroadcastIntentHandler mAutoNaviReceiver;
private MapControlCommandHandler mCustomVoiceCommandHandler;
public MapPresenter( MapView view ) {
super( view );
- initBroadcast();
- mCustomVoiceCommandHandler = new MapControlCommandHandler();
- mCustomVoiceCommandHandler.setCallback( this );
- }
-
- /**
- * opera type为0:0 实时路况开;1实时路况关 type为1:0 放大地图; 1缩小地图 type为2:0切换2d车上; 1切换2d北上;2切换3d车上支持
- */
- private void initBroadcast() {
- mAutoNaviReceiver = new AutoNaviBroadcastReceiver();
- mAutoNaviReceiver.setCallback( this );
- mAutoNaviReceiver.register();
}
@Override
@@ -158,11 +147,10 @@ public class MapPresenter extends Presenter< MapView > implements
if ( CustomNaviInterrupter.getInstance().interrupt() ) {
// 导航过程中语音指令退出导航,会出现 activity 不走 onResume 的情况
UiThreadHandler.postDelayed( () -> {
- if ( isForeground( getContext() ) && !hasOthersActivity() && !mStatusManager.isMainPageOnResume() ) {
+ if ( AppUtils.isAppForeground( getContext() ) && !hasOthersActivity() && !mStatusManager.isMainPageOnResume() ) {
mLauncher.backToLauncher( getContext() );
}
}, 500L );
- onEnd( intent );
return;
}
mMogoMapService.getNavi( getContext() ).stopNavi();
@@ -176,26 +164,6 @@ public class MapPresenter extends Presenter< MapView > implements
mMogoMapService.getNavi( getContext() ).reCalculateRoute( config );
}
- @Override
- public void onEnd( Intent intent ) {
- mMogoIntentManager.invoke( AutoNaviBroadcastReceiver.AUTONAVI_STANDARD_BROADCAST_RECV, intent );
- }
-
- private boolean isForeground( Context context ) {
- if ( context != null ) {
- ActivityManager activityManager = ( ActivityManager ) context.getSystemService( Context.ACTIVITY_SERVICE );
- List< ActivityManager.RunningAppProcessInfo > processes = activityManager.getRunningAppProcesses();
- for ( ActivityManager.RunningAppProcessInfo processInfo : processes ) {
- if ( processInfo.processName.equals( context.getPackageName() ) ) {
- if ( processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND ) {
- return true;
- }
- }
- }
- }
- return false;
- }
-
private boolean hasOthersActivity() {
ActivityManager am = ( ActivityManager ) getContext().getSystemService( Context.ACTIVITY_SERVICE );
List< ActivityManager.RunningTaskInfo > list = am.getRunningTasks( 1 );
@@ -298,6 +266,16 @@ public class MapPresenter extends Presenter< MapView > implements
for ( String cmd : VoiceConstants.sUnUnRegisterCmds ) {
mMogoIntentManager.registerIntentListener( cmd, this );
}
+
+ initBroadcast();
+ mCustomVoiceCommandHandler = new MapControlCommandHandler();
+ mCustomVoiceCommandHandler.setCallback( this );
+ }
+
+ private void initBroadcast() {
+ mAutoNaviReceiver = new AutoNaviBroadcastIntentHandler();
+ mAutoNaviReceiver.setCallback( this );
+ mAutoNaviReceiver.register( mMogoIntentManager );
}
@Override
@@ -309,7 +287,6 @@ public class MapPresenter extends Presenter< MapView > implements
@Override
public void onPause( @NonNull LifecycleOwner owner ) {
super.onPause( owner );
-
unregisterVoiceCmd();
}
@@ -317,7 +294,7 @@ public class MapPresenter extends Presenter< MapView > implements
public void onDestroy( @NonNull LifecycleOwner owner ) {
super.onDestroy( owner );
if ( mAutoNaviReceiver != null ) {
- mAutoNaviReceiver.unregister();
+ mAutoNaviReceiver.unregister( mMogoIntentManager );
}
}
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/OnMapControlCallback.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/OnMapControlCallback.java
index d0d074da5e..cd6263370d 100644
--- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/OnMapControlCallback.java
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/OnMapControlCallback.java
@@ -31,9 +31,6 @@ public interface OnMapControlCallback {
// 重新规划路线
void onReCalculatePath( MogoNaviConfig config );
- // 结束
- void onEnd( Intent intent );
-
// 查看全程
void onDisplayOverview();
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 ed58cdd98f..1eb74077a3 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
@@ -32,6 +32,7 @@ import com.mogo.module.common.MogoModule;
import com.mogo.module.common.MogoModulePaths;
import com.mogo.module.common.map.MapCenterPointStrategy;
import com.mogo.module.common.map.Scene;
+import com.mogo.module.service.intent.AutoNaviIntentHandler;
import com.mogo.module.service.intent.IntentHandlerFactory;
import com.mogo.module.service.marker.MapMarkerManager;
import com.mogo.module.service.network.RefreshCallback;
@@ -274,7 +275,7 @@ public class MogoServices implements IMogoMapListener,
private boolean mIsFirstAccOn = true;
- private IMogoStatusChangedListener statusChangedListener = new StatusChangedAdapter(){
+ private IMogoStatusChangedListener statusChangedListener = new StatusChangedAdapter() {
@Override
public void onUserInteracted( boolean userInteracted ) {
if ( userInteracted ) {
@@ -303,9 +304,11 @@ public class MogoServices implements IMogoMapListener,
restartAutoRefreshAtTime( 2_000L );
}
mIsMainPageFirstResume = false;
+ AutoNaviIntentHandler.getInstance().closeEntrance();
} else {
unregisterInternalUnWakeupWords();
stopAutoRefreshStrategy();
+ AutoNaviIntentHandler.getInstance().syncAutoNaviForgroundStatus( mContext );
}
}
@@ -382,6 +385,8 @@ public class MogoServices implements IMogoMapListener,
mIntentManager.registerIntentListener( ServiceConst.COMMAND_ZHIDAO_NEARBY_USER_ONLINE, this );
mIntentManager.registerIntentListener( ServiceConst.COMMAND_ZHIDAO_NEARBY_FRIEND_BYLOCATION, this );
mIntentManager.registerIntentListener( ServiceConst.COMMAND_BACK, this );
+ mIntentManager.registerIntentListener( MogoReceiver.ACTION_AUTO_NAVI_RECEIVER, this );
+ mIntentManager.registerIntentListener( MogoReceiver.ACTION_AUTO_NAVI_SEND, this );
mADASController = MarkerServiceHandler.getADASController();
mLauncher = MarkerServiceHandler.getLauncher();
@@ -395,6 +400,9 @@ public class MogoServices implements IMogoMapListener,
if ( DebugConfig.isLaunchLocationService() ) {
initLocationServiceProcess( context );
}
+
+ AutoNaviIntentHandler.getInstance().syncAutoNaviForgroundStatus( mContext );
+
}
private void initLocationServiceProcess( Context context ) {
@@ -473,6 +481,8 @@ public class MogoServices implements IMogoMapListener,
filter.addAction( MogoReceiver.ACTION_VOICE_READY );
filter.addAction( MogoReceiver.ACTION_MOCK );
filter.addAction( Intent.ACTION_CLOSE_SYSTEM_DIALOGS );
+ filter.addAction( MogoReceiver.ACTION_AUTO_NAVI_RECEIVER );
+ filter.addAction( MogoReceiver.ACTION_AUTO_NAVI_SEND );
try {
context.getApplicationContext().registerReceiver( mAIAssistReceiver, filter );
Logger.i( TAG, "register voice receiver." );
@@ -914,4 +924,14 @@ public class MogoServices implements IMogoMapListener,
AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_BACK, ServiceConst.CMD_BACK_WORDS, this );
}
}
+
+ @Override
+ public void onStartNavi() {
+ AutoNaviIntentHandler.getInstance().preShowEntrance( mContext );
+ }
+
+ @Override
+ public void onStopNavi() {
+ AutoNaviIntentHandler.getInstance().closeEntrance();
+ }
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/AutoNaviIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/AutoNaviIntentHandler.java
new file mode 100644
index 0000000000..67be36f424
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/AutoNaviIntentHandler.java
@@ -0,0 +1,144 @@
+package com.mogo.module.service.intent;
+
+import android.content.Context;
+import android.content.Intent;
+import android.view.Gravity;
+import android.view.WindowManager;
+
+import com.mogo.commons.AbsMogoApplication;
+import com.mogo.commons.debug.DebugConfig;
+import com.mogo.module.common.wm.WindowManagerView;
+import com.mogo.module.service.MarkerServiceHandler;
+import com.mogo.module.service.R;
+import com.mogo.utils.LaunchUtils;
+import com.mogo.utils.ResourcesHelper;
+import com.mogo.utils.logger.Logger;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/6/5
+ *
+ * 描述
+ */
+class AutoNaviIntentHandler implements IntentHandler {
+
+ private static final String TAG = "AutoNaviIntentHandler";
+
+ private static volatile AutoNaviIntentHandler sInstance;
+
+ private AutoNaviIntentHandler() {
+ }
+
+ public static AutoNaviIntentHandler getInstance() {
+ if ( sInstance == null ) {
+ synchronized ( AutoNaviIntentHandler.class ) {
+ if ( sInstance == null ) {
+ sInstance = new AutoNaviIntentHandler();
+ }
+ }
+ }
+ return sInstance;
+ }
+
+ private WindowManagerView mWindowManagerView;
+
+ public synchronized void release() {
+ sInstance = null;
+ }
+
+ @Override
+ public void handle( Context context, Intent intent ) {
+ int keyType = intent.getIntExtra( "KEY_TYPE", 0 );
+ switch ( keyType ) {
+ case 10021:
+ closeEntrance();
+ MarkerServiceHandler.getADASController().showADAS();
+ break;
+ case 20009:
+ MarkerServiceHandler.getADASController().closeADAS();
+ break;
+ case 10019:
+ int extraState = intent.getIntExtra( "EXTRA_STATE", -1 );
+ switch ( extraState ) {
+ case 3:
+ syncAutoNaviNavingStatus( context );
+ break;
+ case 4:
+ closeEntrance();
+ break;
+ case 8:
+ showEntrance( context );
+ break;
+ case 9:
+ closeEntrance();
+ break;
+ }
+ break;
+ }
+ }
+
+ /**
+ * 通过查询高德地图状态后再显示
+ *
+ * @param context
+ */
+ public void preShowEntrance( Context context ) {
+ syncAutoNaviForgroundStatus( context );
+ }
+
+ private void showEntrance( Context context ) {
+ if ( mWindowManagerView == null ) {
+ mWindowManagerView = new WindowManagerView.Builder( AbsMogoApplication.getApp() )
+ .contentView( R.layout.module_service_app_entrance )
+ .size( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT )
+ .gravity( Gravity.LEFT | Gravity.TOP )
+ .position( ResourcesHelper.getDimensionPixelSize( context, R.dimen.module_services_app_entrance_x ), ResourcesHelper.getDimensionPixelSize( AbsMogoApplication.getApp(), R.dimen.module_services_app_entrance_y ) )
+ .showInWindowManager();
+ mWindowManagerView.attachTouchEvent( view -> {
+ try {
+ if ( DebugConfig.isLauncher() ) {
+ MarkerServiceHandler.getLauncher().backToLauncher( context );
+ } else {
+ LaunchUtils.launchByPkg( context, "com.mogo.launcher.app" );
+ }
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error." );
+ }
+ } );
+ }
+ try {
+ mWindowManagerView.show();
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error." );
+ }
+ }
+
+ public void closeEntrance() {
+ if ( mWindowManagerView == null ) {
+ return;
+ }
+ try {
+ mWindowManagerView.dismiss();
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error." );
+ }
+ }
+
+ public void syncAutoNaviForgroundStatus( Context context ) {
+ Intent intent = new Intent();
+ intent.setAction( "AUTONAVI_STANDARD_BROADCAST_RECV" );
+ intent.putExtra( "KEY_TYPE", 12404 );
+ intent.putExtra( "EXTRA_REQUEST_AUTO_STATE", 0 );
+ context.sendBroadcast( intent );
+ }
+
+ public void syncAutoNaviNavingStatus( Context context ) {
+ Intent intent = new Intent();
+ intent.setAction( "AUTONAVI_STANDARD_BROADCAST_RECV" );
+ intent.putExtra( "KEY_TYPE", 12404 );
+ intent.putExtra( "EXTRA_REQUEST_AUTO_STATE", 1 );
+ context.sendBroadcast( intent );
+ }
+}
+
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandlerFactory.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandlerFactory.java
index ea84b182e2..c9887ac462 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandlerFactory.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandlerFactory.java
@@ -37,6 +37,8 @@ public class IntentHandlerFactory {
mHandlers.put( MogoReceiver.ACTIION_ADAS, ADASStatusIntentHandler.getInstance() );
mHandlers.put( MogoReceiver.ACTION_VOICE_READY, new AIAssistIntentHandler() );
mHandlers.put( ServiceConst.COMMAND_BACK, WholeVoiceCommandIntentHandler.getInstance() );
+ mHandlers.put( MogoReceiver.ACTION_AUTO_NAVI_RECEIVER, AutoNaviIntentHandler.getInstance() );
+ mHandlers.put( MogoReceiver.ACTION_AUTO_NAVI_SEND, AutoNaviIntentHandler.getInstance() );
}
private static final class InstanceHolder {
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 42f9bef659..411d36b927 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
@@ -53,6 +53,11 @@ public class MogoReceiver extends BroadcastReceiver {
public static final String ACTION_MOCK = "com.mogo.mock";
+ // 接受其他app发给高德的广播
+ public static final String ACTION_AUTO_NAVI_RECEIVER = "AUTONAVI_STANDARD_BROADCAST_RECV";
+ // 接受高德发过来的广播
+ public static final String ACTION_AUTO_NAVI_SEND = "AUTONAVI_STANDARD_BROADCAST_SEND";
+
private IMogoIntentManager mMogoIntentManager;
public MogoReceiver(Context context) {
diff --git a/modules/mogo-module-service/src/main/res/drawable/module_services_app_entrance_bkg.xml b/modules/mogo-module-service/src/main/res/drawable/module_services_app_entrance_bkg.xml
new file mode 100644
index 0000000000..31b2c574f5
--- /dev/null
+++ b/modules/mogo-module-service/src/main/res/drawable/module_services_app_entrance_bkg.xml
@@ -0,0 +1,9 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-service/src/main/res/layout/module_service_app_entrance.xml b/modules/mogo-module-service/src/main/res/layout/module_service_app_entrance.xml
new file mode 100644
index 0000000000..0c8bb8cadd
--- /dev/null
+++ b/modules/mogo-module-service/src/main/res/layout/module_service_app_entrance.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-service/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-service/src/main/res/values-ldpi/dimens.xml
new file mode 100644
index 0000000000..871507f1ab
--- /dev/null
+++ b/modules/mogo-module-service/src/main/res/values-ldpi/dimens.xml
@@ -0,0 +1,33 @@
+
+
+ 16dp
+ 2dp
+ 56px
+ 65px
+ 35px
+ 35px
+ 4px
+
+ 550px
+ 208px
+ 100px
+ 100px
+ 100px
+ 10px
+ 54px
+ 44px
+ 44px
+ 14px
+ 12px
+ 64px
+ 6.5px
+ 10px
+ 20px
+ 15px
+ 2px
+ 112px
+ 929px
+ 10px
+ 15px
+ 71px
+
\ No newline at end of file
diff --git a/modules/mogo-module-service/src/main/res/values-mdpi/dimens.xml b/modules/mogo-module-service/src/main/res/values-mdpi/dimens.xml
new file mode 100644
index 0000000000..871507f1ab
--- /dev/null
+++ b/modules/mogo-module-service/src/main/res/values-mdpi/dimens.xml
@@ -0,0 +1,33 @@
+
+
+ 16dp
+ 2dp
+ 56px
+ 65px
+ 35px
+ 35px
+ 4px
+
+ 550px
+ 208px
+ 100px
+ 100px
+ 100px
+ 10px
+ 54px
+ 44px
+ 44px
+ 14px
+ 12px
+ 64px
+ 6.5px
+ 10px
+ 20px
+ 15px
+ 2px
+ 112px
+ 929px
+ 10px
+ 15px
+ 71px
+
\ No newline at end of file
diff --git a/modules/mogo-module-service/src/main/res/values-xhdpi-1920x1000/dimens.xml b/modules/mogo-module-service/src/main/res/values-xhdpi-1920x1000/dimens.xml
new file mode 100644
index 0000000000..1e58e34c84
--- /dev/null
+++ b/modules/mogo-module-service/src/main/res/values-xhdpi-1920x1000/dimens.xml
@@ -0,0 +1,33 @@
+
+
+ 20dp
+ 4dp
+ 100px
+ 117px
+ 60px
+ 60px
+ 8px
+
+
+ 1000px
+ 390px
+ 200px
+ 200px
+ 10px
+ 10px
+ 100px
+ 80px
+ 80px
+ 24px
+ 20px
+ 120px
+ 20px
+ 40px
+ 30px
+ 4px
+ 48px
+ 1000px
+ 10px
+ 15px
+ 71px
+
\ No newline at end of file
diff --git a/modules/mogo-module-service/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-service/src/main/res/values-xhdpi/dimens.xml
index 341706179d..1e58e34c84 100644
--- a/modules/mogo-module-service/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-service/src/main/res/values-xhdpi/dimens.xml
@@ -22,4 +22,12 @@
20px
120px
20px
+ 40px
+ 30px
+ 4px
+ 48px
+ 1000px
+ 10px
+ 15px
+ 71px
\ No newline at end of file
diff --git a/modules/mogo-module-service/src/main/res/values/dimens.xml b/modules/mogo-module-service/src/main/res/values/dimens.xml
index fd1066746d..1e58e34c84 100644
--- a/modules/mogo-module-service/src/main/res/values/dimens.xml
+++ b/modules/mogo-module-service/src/main/res/values/dimens.xml
@@ -1,25 +1,33 @@
- 16dp
- 2dp
- 56px
- 65px
- 35px
- 35px
- 4px
+ 20dp
+ 4dp
+ 100px
+ 117px
+ 60px
+ 60px
+ 8px
- 550px
- 208px
- 100px
- 100px
- 100px
+
+ 1000px
+ 390px
+ 200px
+ 200px
+ 10px
10px
- 54px
- 44px
- 44px
- 14px
- 12px
- 64px
- 6.5px
- 10px
+ 100px
+ 80px
+ 80px
+ 24px
+ 20px
+ 120px
+ 20px
+ 40px
+ 30px
+ 4px
+ 48px
+ 1000px
+ 10px
+ 15px
+ 71px
\ No newline at end of file
diff --git a/modules/mogo-module-service/src/main/res/values/strings.xml b/modules/mogo-module-service/src/main/res/values/strings.xml
index 27efab9b88..e25a4adb00 100644
--- a/modules/mogo-module-service/src/main/res/values/strings.xml
+++ b/modules/mogo-module-service/src/main/res/values/strings.xml
@@ -1,3 +1,4 @@
mogo-module-service
+ 辅助\n驾驶
diff --git a/modules/mogo-module-splash-noop/src/androidTest/java/com/zhidao/mogo/module/splash/ExampleInstrumentedTest.kt b/modules/mogo-module-splash-noop/src/androidTest/java/com/zhidao/mogo/module/splash/ExampleInstrumentedTest.kt
deleted file mode 100644
index b0d35cfd07..0000000000
--- a/modules/mogo-module-splash-noop/src/androidTest/java/com/zhidao/mogo/module/splash/ExampleInstrumentedTest.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.zhidao.mogo.module.splash
-
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.ext.junit.runners.AndroidJUnit4
-
-import org.junit.Test
-import org.junit.runner.RunWith
-
-import org.junit.Assert.*
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-@RunWith(AndroidJUnit4::class)
-class ExampleInstrumentedTest {
- @Test
- fun useAppContext() {
- // Context of the app under test.
- val appContext = InstrumentationRegistry.getInstrumentation().targetContext
- assertEquals("com.zhidao.mogo.module.byd.test", appContext.packageName)
- }
-}
\ No newline at end of file
diff --git a/modules/mogo-module-splash-noop/src/test/java/com/zhidao/mogo/module/splash/ExampleUnitTest.kt b/modules/mogo-module-splash-noop/src/test/java/com/zhidao/mogo/module/splash/ExampleUnitTest.kt
deleted file mode 100644
index 35aae2dff8..0000000000
--- a/modules/mogo-module-splash-noop/src/test/java/com/zhidao/mogo/module/splash/ExampleUnitTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.zhidao.mogo.module.splash
-
-import org.junit.Test
-
-import org.junit.Assert.*
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-class ExampleUnitTest {
- @Test
- fun addition_isCorrect() {
- assertEquals(4, 2 + 2)
- }
-}
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_second.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_second.png
index 93388e1ef0..0eb58cb3e0 100644
Binary files a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_second.png and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_second.png differ