* 长链实现:基于 netty
*/
-
+@Keep
public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallback, OnSocketAckCallback {
- private static final String TAG = "SocketManager";
+ private static final String TAG = "SocketManager-apk";
public static final int MSG_PRODUCT_LINE = MogoCommon.Product.mogoBussiness_VALUE;
private static final int MSG_HEADER_TYPE = MogoConnsvr.MsgType.mogoMsgTypeDispatchSvrNoRspReq_VALUE;
@@ -47,6 +47,7 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac
mSocketConnManager.addSocketAckCallback( this );
}
+ @Keep
public static SocketManager getInstance( Context context ) {
if ( sInstance == null ) {
synchronized ( SocketManager.class ) {
@@ -86,6 +87,10 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac
}
@Override
+ public void onMessageReceived( byte[] content ) {
+ onMessageReceived( content, 0);
+ }
+
public void onMessageReceived( byte[] content, long msgId ) {
try {
MogoConnsvr.Payload payload = MogoConnsvr.Payload.parseFrom( content );
diff --git a/foudations/mogo-base-services-sdk/.gitignore b/foudations/mogo-base-services-sdk/.gitignore
new file mode 100644
index 0000000000..42afabfd2a
--- /dev/null
+++ b/foudations/mogo-base-services-sdk/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/foudations/mogo-base-services-sdk/README.md b/foudations/mogo-base-services-sdk/README.md
new file mode 100644
index 0000000000..d5fa09de5b
--- /dev/null
+++ b/foudations/mogo-base-services-sdk/README.md
@@ -0,0 +1,3 @@
+## sdk实现功能
+
+脱离基础服务apk实现对应功能:位置上报、长连接、passport
\ No newline at end of file
diff --git a/foudations/mogo-base-services-sdk/build.gradle b/foudations/mogo-base-services-sdk/build.gradle
new file mode 100644
index 0000000000..6a9ad088e4
--- /dev/null
+++ b/foudations/mogo-base-services-sdk/build.gradle
@@ -0,0 +1,53 @@
+apply plugin: 'com.android.library'
+
+android {
+ compileSdkVersion rootProject.ext.android.compileSdkVersion
+ // buildToolsVersion rootProject.ext.android.buildToolsVersion
+ defaultConfig {
+ minSdkVersion rootProject.ext.android.minSdkVersion
+ targetSdkVersion rootProject.ext.android.targetSdkVersion
+ versionCode Integer.valueOf(VERSION_CODE)
+ versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION")
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles "consumer-rules.pro"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: "libs", include: ["*.jar"])
+ implementation rootProject.ext.dependencies.arouter
+ // 上报位置
+ implementation 'com.zhidao.locupload:loc-upload-sdk:1.1.3'
+ // 长链
+ implementation 'com.zhidao.socket:built-in-socket:1.0.15'
+ // passport
+ implementation 'com.zhidao.tcloginsdk:tclogin:1.1.3'
+
+ annotationProcessor 'com.elegant.spi:compiler:1.0.3'
+
+
+ if (Boolean.valueOf(RELEASE)) {
+ implementation rootProject.ext.dependencies.mogoutils
+ implementation rootProject.ext.dependencies.mogocommons
+ implementation rootProject.ext.dependencies.mogoserviceapi
+ } else {
+ implementation project(":foudations:mogo-utils")
+ implementation project(":foudations:mogo-commons")
+ implementation project(":services:mogo-service-api")
+ }
+}
+
+apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
\ No newline at end of file
diff --git a/foudations/mogo-base-services-sdk/consumer-rules.pro b/foudations/mogo-base-services-sdk/consumer-rules.pro
new file mode 100644
index 0000000000..e4c27a022e
--- /dev/null
+++ b/foudations/mogo-base-services-sdk/consumer-rules.pro
@@ -0,0 +1,2 @@
+#-----MogoBaseServiceSdk-----
+-keep class com.mogo.base.services.locationinfo.MogoLocationSource.*{*;}
\ No newline at end of file
diff --git a/foudations/mogo-base-services-sdk/gradle.properties b/foudations/mogo-base-services-sdk/gradle.properties
new file mode 100644
index 0000000000..ce31a0de78
--- /dev/null
+++ b/foudations/mogo-base-services-sdk/gradle.properties
@@ -0,0 +1,3 @@
+GROUP=com.mogo.base
+POM_ARTIFACT_ID=services-sdk
+VERSION_CODE=1
\ No newline at end of file
diff --git a/foudations/mogo-base-services-sdk/proguard-rules.pro b/foudations/mogo-base-services-sdk/proguard-rules.pro
new file mode 100644
index 0000000000..ba8f820823
--- /dev/null
+++ b/foudations/mogo-base-services-sdk/proguard-rules.pro
@@ -0,0 +1,24 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+#-----MogoBaseServiceSdk-----
+-keep class com.mogo.base.services.locationinfo.MogoLocationSource.*{*;}
\ No newline at end of file
diff --git a/foudations/mogo-base-services-sdk/src/androidTest/java/com/mogo/base/services/ExampleInstrumentedTest.java b/foudations/mogo-base-services-sdk/src/androidTest/java/com/mogo/base/services/ExampleInstrumentedTest.java
new file mode 100644
index 0000000000..856a560f77
--- /dev/null
+++ b/foudations/mogo-base-services-sdk/src/androidTest/java/com/mogo/base/services/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.mogo.base.services;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith( AndroidJUnit4.class )
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals( "com.mogo.base.services.test", appContext.getPackageName() );
+ }
+}
\ No newline at end of file
diff --git a/foudations/mogo-connection/src/main/AndroidManifest.xml b/foudations/mogo-base-services-sdk/src/main/AndroidManifest.xml
similarity index 55%
rename from foudations/mogo-connection/src/main/AndroidManifest.xml
rename to foudations/mogo-base-services-sdk/src/main/AndroidManifest.xml
index 639efc7d99..d7ee25b198 100644
--- a/foudations/mogo-connection/src/main/AndroidManifest.xml
+++ b/foudations/mogo-base-services-sdk/src/main/AndroidManifest.xml
@@ -1,2 +1,5 @@
+ * key - msgType + */ + private Map< Integer, List< IMogoOnMessageListener > > mListeners = new ConcurrentHashMap<>(); + + /** + * 管理消息回执 + *
+ * key - msgId + */ + private Map< Long, IMogoMsgAckListener > mAckListeners = new ConcurrentHashMap<>(); + + + public static final int MAX_CAP = 64; //保证充足的容量应对非常延时的推送 + private ArrayList< Long > mReceivedMsgId = new ArrayList<>( MAX_CAP ); + private int mCurrentIndex = 0; + + @Override + public void init( Context context, String appId ) { + mAppId = appId; + SocketConfig.instance() + .setAppContext( context.getApplicationContext() ) + .setEnvironment( getEnvironment() ) + .setClient( Platform.getClient( Platform.car ) ) + .setChannelId( BaseServicesConstants.SOCKET_CHANNEL_ID ) + .setOpenAnalytics( true ) + .setSn( Utils.getSn() ) + .setDebug( DebugConfig.isDebug() ); + SocketMessageDispatcher.getInstance().start( context ); + } + + private Environment getEnvironment() { + switch ( DebugConfig.getNetMode() ) { + case 1: + return Environment.dev; + case 2: + case 4: + return Environment.qa; + case 3: + default: + return Environment.release; + } + } + + @Override + public void update( @NonNull CallbackManager manager, @NonNull byte[] content, String appId, long msgId ) { + try { + MogoConnsvr.Payload payload = MogoConnsvr.Payload.parseFrom( content ); + int msgType = payload.getMsgType(); + Logger.d( TAG, "received msg type = %d", msgType ); + List< IMogoOnMessageListener > listeners = mListeners.get( msgType ); + if ( listeners != null && !listeners.isEmpty() ) { + Iterator< IMogoOnMessageListener > iterator = listeners.iterator(); + if ( msgId != 0 ) { //兼容老版本 + if ( mReceivedMsgId.contains( msgId ) ) { // 避免消息重发 + return; + } + cacheLastReceivedMsgId( msgId ); + } + Object object = null; + while ( iterator.hasNext() ) { + IMogoOnMessageListener listener = iterator.next(); + if ( object == null ) { + object = GsonUtil.objectFromJson( payload.getPayload().toStringUtf8(), listener.target() ); + } + if ( listener != null ) { + Logger.d( TAG, "received msgId = %s, content = %s", msgId, payload.getPayload().toStringUtf8() ); + listener.onMsgReceived( object ); + } + } + } + } catch ( InvalidProtocolBufferException e ) { + Logger.e( TAG, e, "parse msg error." ); + } + } + + @Override + public void onAck( @NonNull CallbackManager manager, @NonNull byte[] headerBytes, byte[] content ) { + try { + MogoConnsvr.Header header = MogoConnsvr.Header.parseFrom( headerBytes ); + int msgType = header.getMsgType(); + String appId = header.getAppId(); + int productLine = header.getProductLine(); + long msgId = header.getMsgId(); + IMogoMsgAckListener listener = mAckListeners.remove( msgId ); + if ( listener != null ) { + listener.onAck( msgId ); + } + Logger.d( TAG, "send message success: msgType = %d, appId = %s, productLine = %d", msgType, appId, productLine ); + } catch ( InvalidProtocolBufferException e ) { + e.printStackTrace(); + } + } + + private void cacheLastReceivedMsgId( long msgId ) { + if ( msgId == 0 ) { + return; + } + synchronized ( this ) { + mReceivedMsgId.add( mCurrentIndex % MAX_CAP, msgId ); + mCurrentIndex++; + } + } + + @Override + public void registerOnMessageListener( int msgType, IMogoOnMessageListener listener ) { + if ( mListeners.containsKey( msgType ) ) { + Logger.w( TAG, "msgType %d is exist.", msgType ); + } + if ( !mListeners.containsKey( msgType ) ) { + mListeners.put( msgType, new ArrayList< IMogoOnMessageListener >() ); + } + mListeners.get( msgType ).add( listener ); + } + + @Override + public void unregisterOnMessageListener( int msgType ) { + mListeners.remove( msgType ); + } + + @Override + public void unregisterOnMessageListener( int msgType, IMogoOnMessageListener listener ) { + if ( listener == null ) { + return; + } + if ( !mListeners.containsKey( msgType ) ) { + return; + } + List< IMogoOnMessageListener > listeners = mListeners.get( msgType ); + if ( listeners != null && listeners.contains( listener ) ) { + listeners.remove( listener ); + } + } + + @Override + public void sendMsg( MsgBody body, IMogoMsgAckListener listener ) { + Logger.d( TAG, "sendMsg." ); + final byte[] pb = convertToPBBytes( body.getMsgType(), objectToBytes( body.getContent() ) ); + RequestUtil.sendPayloadData( mAppId, 2, pb, 1, true, System.currentTimeMillis() ); + } + + public byte[] objectToBytes( Object obj ) { + String jsonStr = GsonUtil.jsonFromObject( obj ); + return jsonStr.getBytes(); + } + + private byte[] convertToPBBytes( int msgType, byte[] payloadBytes ) { + MogoConnsvr.Payload payloadData = MogoConnsvr.Payload.newBuilder() + .setMsgType( msgType ) + .setPayload( ByteString.copyFrom( payloadBytes ) ).build(); + return payloadData.toByteArray(); + } + + public synchronized void release() { + mListeners.clear(); + mListeners = null; + sInstance = null; + } + + + @Override + public void init( Context context ) { + } + +} diff --git a/foudations/mogo-base-services-sdk/src/test/java/com/mogo/base/services/ExampleUnitTest.java b/foudations/mogo-base-services-sdk/src/test/java/com/mogo/base/services/ExampleUnitTest.java new file mode 100644 index 0000000000..ec74ef013f --- /dev/null +++ b/foudations/mogo-base-services-sdk/src/test/java/com/mogo/base/services/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package com.mogo.base.services; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() { + assertEquals( 4, 2 + 2 ); + } +} \ No newline at end of file diff --git a/foudations/mogo-commons/consumer-rules.pro b/foudations/mogo-commons/consumer-rules.pro index e69de29bb2..e4e113ccaf 100644 --- a/foudations/mogo-commons/consumer-rules.pro +++ b/foudations/mogo-commons/consumer-rules.pro @@ -0,0 +1,6 @@ +#-----Foundation-Commons----- +-keep class com.mogo.commons.data.BaseData.*{*;} +-keep class com.mogo.commons.voice.VoiceIntentTrack +-keep class com.mogo.commons.voice.VoiceTrack +-keep class com.mogo.commons.voice.VoicePreemptType +-keep interface * implements com.mogo.commons.mvp.IView \ No newline at end of file diff --git a/foudations/mogo-commons/proguard-rules.pro b/foudations/mogo-commons/proguard-rules.pro index f1b424510d..c47b3c8771 100644 --- a/foudations/mogo-commons/proguard-rules.pro +++ b/foudations/mogo-commons/proguard-rules.pro @@ -19,3 +19,10 @@ # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile + +#-----Foundation-Commons----- +-keep class com.mogo.commons.data.BaseData.*{*;} +-keep class com.mogo.commons.voice.VoiceIntentTrack +-keep class com.mogo.commons.voice.VoiceTrack +-keep class com.mogo.commons.voice.VoicePreemptType +-keep interface * implements com.mogo.commons.mvp.IView \ No newline at end of file diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java index 943ad1417d..360dbb622b 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java @@ -1,9 +1,7 @@ package com.mogo.commons; import android.app.Application; -import android.content.Context; import android.text.TextUtils; -import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; @@ -20,11 +18,7 @@ import com.mogo.commons.network.X509TrustManagerImpl; import com.mogo.commons.storage.SpStorage; import com.mogo.utils.ThreadPoolService; import com.mogo.utils.TipToast; -import com.mogo.utils.logger.Logger; import com.mogo.utils.network.NetConfig; -import com.zhidao.account.sdk.AccountClientManager; -import com.zhidao.account.sdk.callback.TicketInfoCallback; -import com.zhidao.account.sdk.network.NetEnvironManager; import java.io.IOException; import java.security.SecureRandom; @@ -98,7 +92,6 @@ public class AbsMogoApplication extends Application { private void asyncInit() { ThreadPoolService.execute( () -> { initNetConfig(); - initAccountSdk(); // 初始化toast // 初始化埋点 Analytics.getInstance().start( sApp ); @@ -109,36 +102,12 @@ public class AbsMogoApplication extends Application { AnalyticsConfig.getInstance( sApp ).shouldLog( DebugConfig.isDebug() ); Devices.init( getApp() ); Devices.checkBindState(); + asyncInitImpl(); } ); } - private static void initAccountSdk() { - int mode = DebugConfig.getNetMode(); - if ( mode == DebugConfig.NET_MODE_DEMO ) { - // 演示环境用 qa 的 - mode = DebugConfig.NET_MODE_QA; - } - AccountClientManager.init( sApp, mode, NetEnvironManager.OS_2C, "os2.0-launcher" ); - getTicket( new TicketInfoCallback() { - @Override - public void onSuccess( String ticket ) { - SpStorage.setTicket( ticket ); - Logger.w( TAG, "request ticket success" ); - } + protected void asyncInitImpl(){ - @Override - public void onFailure( int code, String msg ) { - Logger.w( TAG, "request ticket error code = %d, msg = %s", code, msg ); - } - } ); - } - - private static void getTicket( TicketInfoCallback callback ) { - if ( DebugConfig.isLauncher() ) { - AccountClientManager.getTicket( callback ); - } else { - AccountClientManager.getAppTicket( callback ); - } } private static void initNetConfig() { diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java index c12b9553be..882654d243 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java @@ -7,6 +7,8 @@ import com.mogo.utils.logger.Logger; * @since 2019-12-23 *
* 各个模块递调试信息控制接口 + *
+ * 注:该类已经不再是简单的调试配置,已经涉及到功能逻辑了 囧
*/
public class DebugConfig {
@@ -53,6 +55,11 @@ public class DebugConfig {
private static int sNetMode = NET_MODE_RELEASE;
+ /**
+ * 不使用语音助手
+ */
+ public static final int AI_TYPE_NOOP = 0;
+
/**
* 语音使用同行者
*/
@@ -64,6 +71,18 @@ public class DebugConfig {
private static int sAIType = AI_TYPE_TXZ;
+ /**
+ * 自研车机
+ */
+ public static final int CAR_MACHINE_TYPE_SELF_INNOVATE = 0;
+
+ /**
+ * 比亚迪的车机
+ */
+ public static final int CAR_MACHINE_TYPE_BYD = 1;
+
+ private static int sCarMachineType = CAR_MACHINE_TYPE_SELF_INNOVATE;
+
/**
* 获取网络环境类型
*
@@ -115,20 +134,39 @@ public class DebugConfig {
/**
* 设置使用哪个语音助手
- * @param aiType {@link #AI_TYPE_TXZ} {@link #AI_TYPE_SPEECH}
+ *
+ * @param aiType {@link #AI_TYPE_NOOP} {@link #AI_TYPE_TXZ} {@link #AI_TYPE_SPEECH}
*/
- public static void setAIType(int aiType){
- Logger.d("DebugConfig", "setAiType: " + aiType);
+ public static void setAIType( int aiType ) {
+ Logger.d( "DebugConfig", "setAiType: " + aiType );
sAIType = aiType;
}
/**
- * 使用哪个语音助手 {@link #AI_TYPE_TXZ} {@link #AI_TYPE_SPEECH}
+ * 使用哪个语音助手 {@link #AI_TYPE_NOOP} {@link #AI_TYPE_TXZ} {@link #AI_TYPE_SPEECH}
*/
- public static int getAIType(){
+ public static int getAIType() {
return sAIType;
}
+ /**
+ * 设置当前车机类型
+ *
+ * @param type {@link #CAR_MACHINE_TYPE_SELF_INNOVATE} {@link #CAR_MACHINE_TYPE_BYD}
+ */
+ public static void setCarMachineType( int type ) {
+ sCarMachineType = type;
+ }
+
+ /**
+ * 获取当前车机类型
+ *
+ * @return {@link #CAR_MACHINE_TYPE_SELF_INNOVATE} {@link #CAR_MACHINE_TYPE_BYD}
+ */
+ public static int getCarMachineType() {
+ return sCarMachineType;
+ }
+
/**
* 是否作为launcher运行
*/
@@ -152,20 +190,10 @@ public class DebugConfig {
DebugConfig.sRequestOnlineCarData = sRequestOnlineCarData;
}
- private static boolean useMockObuData;
-
- public static void setUseMockObuData(boolean use) {
- useMockObuData = use;
- }
-
- public static boolean isUseMockObuData() {
- return useMockObuData;
- }
-
/**
* 是否支持临时激活小智
*/
- private static boolean sActiveAIAssistFlag = true;
+ private static boolean sActiveAIAssistFlag = false;
public static boolean isActiveAIAssistFlag() {
return sActiveAIAssistFlag;
@@ -174,4 +202,52 @@ public class DebugConfig {
public static void setActiveAIAssistFlag( boolean sActiveAIAssistFlag ) {
DebugConfig.sActiveAIAssistFlag = sActiveAIAssistFlag;
}
+
+ private static boolean useMockObuData;
+
+ public static void setUseMockObuData( boolean use ) {
+ useMockObuData = use;
+ }
+
+ public static boolean isUseMockObuData() {
+ return useMockObuData;
+ }
+
+ private static String sProductFlavor;
+
+ public static String getProductFlavor() {
+ return sProductFlavor;
+ }
+
+ /**
+ * 产品线
+ *
+ * @param sProductFlavor
+ */
+ public static void setProductFlavor( String sProductFlavor ) {
+ DebugConfig.sProductFlavor = sProductFlavor;
+ }
+
+ private static String sSocketAppId;
+
+ public static void setSocketAppId( String sSocketAppId ) {
+ DebugConfig.sSocketAppId = sSocketAppId;
+ }
+
+ public static String getSocketAppId() {
+ return sSocketAppId;
+ }
+
+ /**
+ * 道路事件动画
+ */
+ private static boolean sRoadEventAnimated = false;
+
+ public static boolean isRoadEventAnimated() {
+ return sRoadEventAnimated;
+ }
+
+ public static void setRoadEventAnimated( boolean sRoadEventAnimated ) {
+ DebugConfig.sRoadEventAnimated = sRoadEventAnimated;
+ }
}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java
index 82ed20b2f0..c31eb8b869 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java
@@ -4,9 +4,14 @@ import android.content.Context;
import android.os.Bundle;
import android.view.MotionEvent;
+import android.view.Window;
+import android.view.WindowManager;
+
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
+
+import com.mogo.commons.debug.DebugConfig;
import com.mogo.utils.SoftKeyBoardJobber;
/**
@@ -23,6 +28,10 @@ public abstract class MvpActivity< V extends IView, P extends Presenter< V > >
@Override
protected void onCreate( @Nullable Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
+ if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_BYD) {
+ requestWindowFeature(Window.FEATURE_NO_TITLE);
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ }
setContentView( getLayoutId() );
initViews();
mPresenter = createPresenter();
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpFragment.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpFragment.java
index 3561592a54..0e788e140a 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpFragment.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpFragment.java
@@ -37,8 +37,9 @@ public abstract class MvpFragment
- * 描述
- */
-public class MsgBody {
-
- private int mMsgType;
-
- /**
- * 服务端分发,业务线
- */
- private int mProductLine = MogoCommon.Product.mogoBussiness_VALUE;
-
- /**
- *
- */
- private int mHeaderType = MogoConnsvr.MsgType.mogoMsgTypeDispatchSvrNoRspReq_VALUE;
-
- /**
- * 是否回执
- */
- private boolean mAck = false;
-
- /**
- * 消息ID
- */
- private final long mMsgId = System.currentTimeMillis();
-
- private Object mContent;
-
- public MsgBody msgType( int msgType ) {
- this.mMsgType = msgType;
- return this;
- }
-
- public MsgBody ack( boolean ack ) {
- this.mAck = ack;
- return this;
- }
-
- public MsgBody content( Object content ) {
- this.mContent = content;
- return this;
- }
-
- public int getMsgType() {
- return mMsgType;
- }
-
- public int getProductLine() {
- return mProductLine;
- }
-
- public int getHeaderType() {
- return mHeaderType;
- }
-
- public boolean ismAck() {
- return mAck;
- }
-
- public long getMsgId() {
- return mMsgId;
- }
-
- public Object getContent() {
- return mContent;
- }
-}
diff --git a/foudations/mogo-connection/src/main/res/values/strings.xml b/foudations/mogo-connection/src/main/res/values/strings.xml
deleted file mode 100644
index b965c02986..0000000000
--- a/foudations/mogo-connection/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
- 数据库处理工厂 添加在要操作的数据对象名上面,用来设置数据库名称 添加在要处理的数据对象的字段之上,用来设置数据表的字段名称 添加在要操作的数据对象名上面,用来设置数据表名称
* 描述
*/
-public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavigatorPresenter > implements AppNavigatorView {
+public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavigatorPresenter >
+ implements AppNavigatorView,
+ FragmentStackTransactionListener {
private static final String TAG = "AppNavigatorFragment";
@@ -72,14 +77,17 @@ public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavi
mAIAssist.performClick();
} );
- AppServiceHandler.getApis().getFragmentManagerApi().addMainFragmentStackTransactionListener( size -> {
- // 主页 fragment 栈变化的时候,改变动画状态
- if ( size == 0 ) {
- mAnim.start();
- } else {
- mAnim.stop();
- }
- } );
+ AppServiceHandler.getApis().getFragmentManagerApi().addMainFragmentStackTransactionListener( this );
+ }
+
+ @Override
+ public void onTransaction( int size ) {
+ // 主页 fragment 栈变化的时候,改变动画状态
+ if ( size == 0 ) {
+ mAnim.start();
+ } else {
+ mAnim.stop();
+ }
}
@Override
@@ -128,11 +136,19 @@ public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavi
properties.put( "appname", appLabel );
}
if ( !TextUtils.equals( "全部应用", app.getName() ) ) {
- properties.put( "appversion", CommonUtils.getVersionName( getContext(), app.getPackageName() ) );
+ if ( TextUtils.equals( "com.zhidao.music", app.getPackageName() ) ) {
+ if ( AppUtils.isAppInstalled( AbsMogoApplication.getApp(), AppEnum.KwMusic.getPkg() ) ) {
+ properties.put( "appversion", CommonUtils.getVersionName( getContext(), AppEnum.KwMusic.getPkg() ) );
+ } else if ( AppUtils.isAppInstalled( AbsMogoApplication.getApp(), AppEnum.QQMusic.getPkg() ) ) {
+ properties.put( "appversion", CommonUtils.getVersionName( getContext(), AppEnum.QQMusic.getPkg() ) );
+ }
+ } else {
+ properties.put( "appversion", CommonUtils.getVersionName( getContext(), app.getPackageName() ) );
+ }
} else {
properties.put( "appversion", CommonUtils.getVersionName( getContext() ) );
}
- AppServiceHandler.getMogoAnalytics().track( "Launcher_APP_Icon", properties );
+ AppServiceHandler.getApis().getAnalyticsApi().track( "Launcher_APP_Icon", properties );
}
@Override
@@ -141,5 +157,6 @@ public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavi
if ( mPresenter != null ) {
mPresenter.onDestroy( getViewLifecycleOwner() );
}
+ AppServiceHandler.getApis().getFragmentManagerApi().removeMainFragmentStackTransactionListener( this );
}
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java
index 7b39a6b5a3..5aaf7a9c38 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java
@@ -115,6 +115,7 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme
@Override
public void onDestroy( @NonNull LifecycleOwner owner ) {
super.onDestroy( owner );
+ AppServiceHandler.getApis().getRegisterCenterApi().unregisterMogoNaviListener( TAG );
AppServiceHandler.getApis().getIntentManagerApi().unregisterIntentListener( AppsConst.COMMAND_OPERATION, this );
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppServiceHandler.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppServiceHandler.java
index 9bf52fd3b0..4df55c25b6 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppServiceHandler.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppServiceHandler.java
@@ -1,25 +1,9 @@
package com.mogo.module.apps;
-import android.content.Context;
-
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.AbsMogoApplication;
-import com.mogo.map.location.IMogoLocationClient;
-import com.mogo.map.marker.IMogoMarkerManager;
-import com.mogo.map.navi.IMogoNavi;
-import com.mogo.map.uicontroller.IMogoMapUIController;
-import com.mogo.module.common.entity.MarkerResponse;
-import com.mogo.module.common.entity.MarkerShowEntity;
-import com.mogo.module.guideshow.provider.GuideShowProviderConstant;
-import com.mogo.module.guideshow.provider.IGuideShowProvider;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
-import com.mogo.service.analytics.IMogoAnalytics;
-import com.mogo.service.cardmanager.IMogoCardManager;
-import com.mogo.service.connection.IMogoSocketManager;
-import com.mogo.service.imageloader.IMogoImageloader;
-import com.mogo.service.map.IMogoMapService;
-import com.mogo.service.statusmanager.IMogoStatusManager;
/**
* author : zyz
@@ -33,29 +17,6 @@ public class AppServiceHandler {
private static final String TAG = "AppServiceHandler";
private static IMogoServiceApis mApis;
- private static IMogoCardManager mMogoCardManager;
- private static IMogoAnalytics mMogoAnalytics;
- private static IGuideShowProvider mMogoGuideShow;
-
- public static void init( final Context context ) {
- mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( context );
- mMogoCardManager = mApis.getCardManagerApi();
- mMogoAnalytics = mApis.getAnalyticsApi();
- mMogoGuideShow = ( IGuideShowProvider ) ARouter.getInstance().build( GuideShowProviderConstant.GUIDE_SHOW_PROVIDER ).navigation( context );
-
- }
-
- public static IMogoCardManager getMogoCardManager() {
- return mMogoCardManager;
- }
-
- public static IMogoAnalytics getMogoAnalytics() {
- return mMogoAnalytics;
- }
-
- public static IGuideShowProvider getMogoGuideShow() {
- return mMogoGuideShow;
- }
public static IMogoServiceApis getApis() {
if ( mApis == null ) {
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsAdapter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsAdapter.java
index 77f41bccd3..04b5308f85 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsAdapter.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsAdapter.java
@@ -25,7 +25,13 @@ public class AppsAdapter extends BaseAdapter {
private List< AppInfo > mAppInfos;
public AppsAdapter( List< AppInfo > appInfos ) {
- this.mAppInfos = new ArrayList<>( appInfos );
+ this.mAppInfos = new ArrayList<>();
+ for ( AppInfo appInfo : appInfos ) {
+ if ( appInfo == null ) {
+ continue;
+ }
+ mAppInfos.add( appInfo );
+ }
}
@Override
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java
index ed3de2b4a8..8da89c2c69 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java
@@ -53,8 +53,6 @@ public class AppsFragment extends MvpFragment< AppsView, AppsPresenter > impleme
getActivity().overridePendingTransition( 0, R.anim.module_apps_anim_exit);
}
} );
-// mAppsList = findViewById( R.id.module_apps_id_apps );
-// mAppsList.setLayoutManager( new GridLayoutManager( getContext(), 8 ) );
mLoadingView = findViewById( R.id.module_apps_id_loading );
mLoadingView.setVisibility( View.VISIBLE );
mIndicator = findViewById( R.id.module_apps_id_indicator );
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragmentProvider.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragmentProvider.java
index 1f0dc91f16..3773d88963 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragmentProvider.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragmentProvider.java
@@ -74,7 +74,6 @@ public class AppsFragmentProvider implements IMogoModuleProvider {
@Override
public void init( Context context ) {
- AppServiceHandler.init( context );
}
@Override
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java
index 34a738ac9e..1adc5272ea 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java
@@ -1,6 +1,7 @@
package com.mogo.module.apps;
import android.app.Activity;
+import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
@@ -30,7 +31,7 @@ public class AppsListActivity extends MvpActivity< AppsListView, AppsListPresent
private BottomSheetBehavior mBottomSheetBehavior;
private IMogoFragmentManager mMogoFragmentManager;
- public static void start( Activity context ) {
+ public static void start( Context context ) {
Intent starter = new Intent( context, AppsListActivity.class );
context.startActivity( starter );
}
@@ -46,6 +47,24 @@ public class AppsListActivity extends MvpActivity< AppsListView, AppsListPresent
AppServiceHandler.getApis().getStatusManagerApi().setAppListUIShow( TAG, true );
}
+ @Override
+ protected void onStart() {
+ super.onStart();
+ try {
+ AppServiceHandler.getApis().getAdasControllerApi().closeADAS();
+ } catch ( Exception e ) {
+ }
+ }
+
+ @Override
+ protected void onRestart() {
+ super.onRestart();
+ try {
+ AppServiceHandler.getApis().getAdasControllerApi().closeADAS();
+ } catch ( Exception e ) {
+ }
+ }
+
@Override
protected int getLayoutId() {
return R.layout.module_apps_activity_list;
@@ -110,6 +129,11 @@ public class AppsListActivity extends MvpActivity< AppsListView, AppsListPresent
overridePendingTransition( R.anim.module_apps_anim_enter, R.anim.module_apps_anim_exit );
}
+ @Override
+ public void executeFinish() {
+ finish();
+ }
+
@Override
protected void onDestroy() {
super.onDestroy();
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java
index caf44c1c72..09b8d91a2d 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java
@@ -13,6 +13,7 @@ import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.intent.IMogoIntentManager;
+import com.mogo.utils.logger.Logger;
import org.json.JSONException;
import org.json.JSONObject;
@@ -36,8 +37,9 @@ public class AppsListPresenter extends Presenter< AppsListView > implements IMog
@Override
public void onCreate( @NonNull LifecycleOwner owner ) {
super.onCreate( owner );
- mIntentManager = ( IMogoIntentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_INTENT_MANAGER ).navigation( getContext() );
+ mIntentManager = AppServiceHandler.getApis().getIntentManagerApi();
mIntentManager.registerIntentListener( AppsConst.COMMAND_OPERATION, this );
+ mIntentManager.registerIntentListener( Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this );
AIAssist.getInstance( getContext() ).registerUnWakeupCommand( AppsConst.CMD_UN_WAKE_CLOSE_APP_LIST, AppsConst.CMD_UN_WAKE_WORDS_CLOSE_APP_LIST, this );
}
@@ -56,6 +58,9 @@ public class AppsListPresenter extends Presenter< AppsListView > implements IMog
} catch ( JSONException e ) {
e.printStackTrace();
}
+ } else if ( Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals( intentStr ) ) {
+ Logger.d( TAG, "home 键导致 app 列表关闭" );
+ mView.executeFinish();
}
}
@@ -90,6 +95,7 @@ public class AppsListPresenter extends Presenter< AppsListView > implements IMog
public void onDestroy( @NonNull LifecycleOwner owner ) {
super.onDestroy( owner );
mIntentManager.unregisterIntentListener( AppsConst.COMMAND_OPERATION, this );
+ mIntentManager.unregisterIntentListener( Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this );
AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( AppsConst.CMD_UN_WAKE_CLOSE_APP_LIST );
}
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListView.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListView.java
index d3ec317ed7..ee38e7c05d 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListView.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListView.java
@@ -11,4 +11,6 @@ import com.mogo.commons.mvp.IView;
public interface AppsListView extends IView {
void closeAppsPanel();
+
+ void executeFinish();
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java
index f7e95d2ddc..d1a51e55a8 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java
@@ -1,30 +1,23 @@
package com.mogo.module.apps;
-import android.text.TextUtils;
-
import androidx.annotation.NonNull;
import androidx.lifecycle.LifecycleOwner;
-import com.alibaba.android.arouter.launcher.ARouter;
-import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.mvp.Presenter;
import com.mogo.module.apps.applaunch.AppLaunchFilter;
import com.mogo.module.apps.applaunch.AppLauncher;
import com.mogo.module.apps.applaunch.CardAppLauncher;
import com.mogo.module.apps.applaunch.GuideShowLauncher;
+import com.mogo.module.apps.applaunch.InternalFunctionLauncher;
import com.mogo.module.apps.model.AppInfo;
import com.mogo.module.apps.model.AppsModel;
import com.mogo.module.apps.model.UnScannedApps;
-import com.mogo.service.IMogoServiceApis;
-import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.cardmanager.IMogoCardManager;
-import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.utils.ThreadPoolService;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.logger.Logger;
-import java.sql.ClientInfoStatus;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -45,20 +38,18 @@ public class AppsPresenter extends Presenter< AppsView > {
private IMogoAnalytics mAnalytics;
private AppLaunchFilter mLauncher;
- private IMogoServiceApis mApis;
-
private IMogoCardManager mCardManager;
- private IMogoStatusManager mMogoStatusManager;
public AppsPresenter( AppsView view ) {
super( view );
- mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( getContext() );
- mCardManager = mApis.getCardManagerApi();
+ mCardManager = AppServiceHandler.getApis().getCardManagerApi();
+ InternalFunctionLauncher internalFunctionLauncher = new InternalFunctionLauncher( getContext() );
CardAppLauncher cardAppLauncher = new CardAppLauncher( this, mCardManager );
- GuideShowLauncher guideShowLauncher = new GuideShowLauncher( mApis.getMapServiceApi().getNavi( getContext() ) );
+ GuideShowLauncher guideShowLauncher = new GuideShowLauncher( AppServiceHandler.getApis().getMapServiceApi().getNavi( getContext() ) );
+ internalFunctionLauncher.setNext( cardAppLauncher );
cardAppLauncher.setNext( guideShowLauncher );
guideShowLauncher.setNext( new AppLauncher() );
- mLauncher = cardAppLauncher;
+ mLauncher = internalFunctionLauncher;
}
@Override
@@ -71,8 +62,7 @@ public class AppsPresenter extends Presenter< AppsView > {
}
} );
- mAnalytics = mApis.getAnalyticsApi();
- mMogoStatusManager = mApis.getStatusManagerApi();
+ mAnalytics = AppServiceHandler.getApis().getAnalyticsApi();
}
private void renderAppsList() {
@@ -130,7 +120,7 @@ public class AppsPresenter extends Presenter< AppsView > {
if ( appInfo == null ) {
continue;
}
- if ( TextUtils.equals( appInfo.getPackageName(), app.getPackageName() ) ) {
+ if ( appInfo.equals( app ) ) {
addFlag = false;
break;
}
@@ -145,14 +135,6 @@ public class AppsPresenter extends Presenter< AppsView > {
}
}
}
-// growthCapacity( result )
-// // 添加介绍入口
-// result.get( result.size() - 1 ).add( new AppInfo( GuideShowLauncher.APP_INFO_NAME_GUIDE_SHOW, getContext().getPackageName(), null, 0, null, R.drawable.module_apps_ic_guide_show ) );
- if ( DebugConfig.isDebug() ) {
- // 添加测试入口
- growthCapacity( result );
- result.get( result.size() - 1 ).add( new AppInfo( "包管理程序", "com.mogo.packages.manager", null, 0, null, -1 ) );
- }
return result;
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLaunchFilter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLaunchFilter.java
index a934c9895a..3bab4c03e6 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLaunchFilter.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLaunchFilter.java
@@ -14,5 +14,7 @@ public interface AppLaunchFilter {
void launch( Context context, AppInfo appInfo );
+ void launch( Context context, String pkg );
+
void destroy();
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java
index 73c6989b9e..f148156e82 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java
@@ -21,15 +21,7 @@ public class AppLauncher extends BaseAppLauncher {
@Override
public void launch( Context context, AppInfo appInfo ) {
- try {
- if ( LaunchUtils.getLaunchIntentForPackage( context, appInfo.getPackageName() ) != null ) {
- AppServiceHandler.getApis().getAdasControllerApi().closeADAS();
- }
- LaunchUtils.launchByPkg( context, appInfo.getPackageName() );
- } catch ( Exception e ) {
- Logger.e( TAG, e, "error." );
- TipToast.shortTip( R.string.module_apps_str_no_app );
- }
+ launch( context, appInfo.getPackageName() );
}
@Override
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/BaseAppLauncher.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/BaseAppLauncher.java
index 7b6cadd640..2b27fb3566 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/BaseAppLauncher.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/BaseAppLauncher.java
@@ -1,5 +1,13 @@
package com.mogo.module.apps.applaunch;
+import android.content.Context;
+
+import com.mogo.module.apps.AppServiceHandler;
+import com.mogo.module.apps.R;
+import com.mogo.utils.LaunchUtils;
+import com.mogo.utils.TipToast;
+import com.mogo.utils.logger.Logger;
+
/**
* @author congtaowang
* @since 2020-02-09
@@ -8,6 +16,8 @@ package com.mogo.module.apps.applaunch;
*/
public abstract class BaseAppLauncher implements AppLaunchFilter {
+ private static final String TAG = "BaseAppLauncher";
+
private AppLaunchFilter mNext;
public AppLaunchFilter getNext() {
@@ -17,4 +27,17 @@ public abstract class BaseAppLauncher implements AppLaunchFilter {
public void setNext( AppLaunchFilter next ) {
this.mNext = next;
}
+
+ @Override
+ public void launch( Context context, String pkg ) {
+ try {
+ if ( LaunchUtils.getLaunchIntentForPackage( context, pkg ) != null ) {
+ AppServiceHandler.getApis().getAdasControllerApi().closeADAS();
+ }
+ LaunchUtils.launchByPkg( context, pkg );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error." );
+ TipToast.shortTip( R.string.module_apps_str_no_app );
+ }
+ }
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java
index baee9e5b69..75af6c4455 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java
@@ -1,27 +1,34 @@
package com.mogo.module.apps.applaunch;
-import android.app.Activity;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.text.TextUtils;
+import com.mogo.commons.AbsMogoApplication;
import com.mogo.module.apps.AppServiceHandler;
import com.mogo.module.apps.AppsListActivity;
+import com.mogo.module.apps.R;
+import com.mogo.module.apps.model.AppEnum;
import com.mogo.module.apps.model.AppInfo;
import com.mogo.module.common.map.CustomNaviInterrupter;
+import com.mogo.utils.AppUtils;
import com.mogo.utils.LaunchUtils;
+import com.mogo.utils.TipToast;
+import com.mogo.utils.logger.Logger;
/**
* @author congtaowang
* @since 2020-05-14
*
- * 描述
+ * 处理一些特殊的跳转
*/
public class InternalFunctionLauncher extends BaseAppLauncher {
- private Activity mActivity;
+ private Context mContext;
- public InternalFunctionLauncher( Activity activity ) {
- this.mActivity = activity;
+ public InternalFunctionLauncher( Context activity ) {
+ this.mContext = activity;
}
@Override
@@ -30,7 +37,7 @@ public class InternalFunctionLauncher extends BaseAppLauncher {
case "com.autonavi.amapauto":
if ( CustomNaviInterrupter.getInstance().interrupt() ) {
try {
- LaunchUtils.launchByPkg( context, "com.autonavi.amapauto" );
+ launch( context, AppEnum.AUTO_NAVI.getPkg() );
} catch ( Exception e ) {
e.printStackTrace();
}
@@ -39,7 +46,31 @@ public class InternalFunctionLauncher extends BaseAppLauncher {
}
break;
case "com.mogo.launcher.applist":
- AppsListActivity.start( mActivity );
+ AppsListActivity.start( mContext );
+ break;
+ case "com.zhidao.bluetooth":
+ if ( TextUtils.equals( "蓝牙音乐", appInfo.getName() ) ) {
+ startActivity( context, appInfo, "com.zhidao.bluetooth.ui.MusicActivity" );
+ } else if ( TextUtils.equals( "蓝牙电话", appInfo.getName() ) ) {
+ startActivity( context, appInfo, "com.zhidao.bluetooth.ui.MainActivity" );
+ }
+ break;
+ case "com.zhidao.music":
+ if ( AppUtils.isAppInstalled( AbsMogoApplication.getApp(), AppEnum.KwMusic.getPkg() ) ) {
+ try {
+ launch( context, AppEnum.KwMusic.getPkg() );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ } else if ( AppUtils.isAppInstalled( AbsMogoApplication.getApp(), AppEnum.QQMusic.getPkg() ) ) {
+ try {
+ launch( context, AppEnum.QQMusic.getPkg() );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ } else {
+ TipToast.shortTip( R.string.module_apps_str_no_app );
+ }
break;
default:
if ( getNext() != null ) {
@@ -48,6 +79,26 @@ public class InternalFunctionLauncher extends BaseAppLauncher {
}
}
+ private void startActivity( Context context, AppInfo target, String page ) {
+ if ( context == null || target == null ) {
+ return;
+ }
+ if ( TextUtils.isEmpty( page ) ) {
+ if ( getNext() != null ) {
+ getNext().launch( context, target );
+ return;
+ }
+ }
+ try {
+ Intent intent = new Intent();
+ intent.setComponent( new ComponentName( target.getPackageName(), page ) );
+ intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
+ context.startActivity( intent );
+ } catch ( Exception e ) {
+ TipToast.shortTip( "APP未安装" );
+ }
+ }
+
@Override
public void destroy() {
if ( getNext() != null ) {
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java
index d17eee4a88..f6d9fa7c18 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java
@@ -86,7 +86,8 @@ public enum AppEnum {
CanBus( "车辆信息", "com.nwd.can.setting", R.drawable.module_apps_ic_canbus ),
// 蓝牙电话
- BT_PHONE( "蓝牙电话", "com.nwd.android.phone", R.drawable.module_apps_ic_bt_phone ),
+ BT_PHONE_NWD( "蓝牙电话", "com.nwd.android.phone", R.drawable.module_apps_ic_bt_phone ),
+ BT_PHONE( "蓝牙电话", "com.zhidao.bluetooth", R.drawable.module_apps_ic_bt_phone ),
// 本地音乐
LOCAL_MUSIC( "本地音乐", "com.nwd.android.music.ui", R.drawable.module_apps_ic_local_music ),
@@ -95,7 +96,8 @@ public enum AppEnum {
WEATHER( "天气", "com.zhidao.weather", R.drawable.module_apps_ic_weather ),
// 蓝牙音乐
- BT_MUSIC( "蓝牙音乐", "com.nwd.bt.music", R.drawable.module_apps_ic_bt_music ),
+ BT_MUSIC_NWD( "蓝牙音乐", "com.nwd.bt.music", R.drawable.module_apps_ic_bt_music ),
+ BT_MUSIC( "蓝牙音乐", "com.zhidao.bluetooth", R.drawable.module_apps_ic_bt_music ),
// 高德地图
AUTO_NAVI( "高德地图", "com.autonavi.amapauto", R.drawable.module_apps_ic_auto_navi ),
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppInfo.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppInfo.java
index dae51ba27d..62b2c34105 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppInfo.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppInfo.java
@@ -68,7 +68,8 @@ public class AppInfo {
if ( this == o ) return true;
if ( o == null || getClass() != o.getClass() ) return false;
AppInfo appInfo = ( AppInfo ) o;
- return TextUtils.equals( mPackageName, appInfo.mPackageName );
+ return TextUtils.equals( mPackageName, appInfo.mPackageName )
+ && TextUtils.equals( mName, appInfo.mName );
}
@Override
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java
index 61c55a981d..4463a9e69c 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java
@@ -1,10 +1,8 @@
package com.mogo.module.apps.model;
import android.content.Context;
-import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
@@ -12,6 +10,7 @@ import com.mogo.module.apps.AppFilter;
import com.mogo.module.apps.AppFilterImpl;
import com.mogo.module.apps.AppsConst;
import com.mogo.module.apps.AppsListChangedLiveData;
+import com.mogo.utils.logger.Logger;
import java.util.ArrayList;
import java.util.HashMap;
@@ -26,6 +25,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
* 加载并保存 app 列表
*/
public class AppsModel {
+
+ private static final String TAG = "AppsModel";
private static volatile AppsModel sInstance;
private Context mContext;
@@ -72,6 +73,12 @@ public class AppsModel {
if ( mAppFilter == null ) {
mAppFilter = new AppFilterImpl( mContext );
}
+ try {
+ AppFilterImpl.loadExternalFilterPackagesList();
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error." );
+ e.printStackTrace();
+ }
final PackageManager packageManager = mContext.getPackageManager();
List< PackageInfo > packages = packageManager.getInstalledPackages( 0 );
int counter = 0;
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java
index be2b7b2fc1..12c4c92d54 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java
@@ -16,7 +16,7 @@ public class NavigatorApps {
private static AppInfo app = new AppInfo( "高德地图", "com.autonavi.amapauto", "", 0, null, R.drawable.module_apps_ic_navigator_navi, 1 );
private static AppInfo app_ = new AppInfo( "高德地图", "com.autonavi.amapauto", "", 0, null, R.drawable.module_apps_ic_navigator_navi_disable, 1 );
// private static AppInfo app2 = new AppInfo( "音乐", "com.tencent.wecarflow", "", 0, null, R.drawable.module_apps_ic_navigator_media, 2 );
- private static AppInfo app2 = new AppInfo( "酷我音乐", "cn.kuwo.kwmusiccar", "", 0, null, R.drawable.module_apps_ic_navigator_media, 2 );
+ private static AppInfo app2 = new AppInfo( "音乐", "com.zhidao.music", "", 0, null, R.drawable.module_apps_ic_navigator_media, 2 );
private static AppInfo app3 = new AppInfo( "车聊聊", "com.zhidao.imdemo", "", 0, null, R.drawable.module_apps_ic_navigator_im, 6 );
private static AppInfo app4 = new AppInfo( "全部应用", "com.mogo.launcher.applist", "", 0, null, R.drawable.module_apps_ic_navigator_applist, 4 );
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/UnScannedApps.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/UnScannedApps.java
index 7028085838..b55d9adb37 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/UnScannedApps.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/UnScannedApps.java
@@ -1,5 +1,7 @@
package com.mogo.module.apps.model;
+import com.mogo.module.common.utils.CarSeries;
+
import java.util.ArrayList;
import java.util.List;
@@ -14,11 +16,17 @@ public class UnScannedApps {
private static List< AppInfo > sUnScannedApps = new ArrayList<>();
static {
- sUnScannedApps.add( new AppInfo( AppEnum.BT_PHONE.getName(), AppEnum.BT_PHONE.getPkg(), null, 0, null, AppEnum.BT_PHONE.getIconResId() ) );
- sUnScannedApps.add( new AppInfo( AppEnum.CanBus.getName(), AppEnum.CanBus.getPkg(), null, 0, null, AppEnum.CanBus.getIconResId() ) );
+ if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) {
+ sUnScannedApps.add( new AppInfo( AppEnum.BT_PHONE.getName(), AppEnum.BT_PHONE.getPkg(), null, 0, null, AppEnum.BT_PHONE.getIconResId() ) );
+ sUnScannedApps.add( new AppInfo( AppEnum.BT_MUSIC.getName(), AppEnum.BT_MUSIC.getPkg(), null, 0, null, AppEnum.BT_PHONE.getIconResId() ) );
+ } else {
+ sUnScannedApps.add( new AppInfo( AppEnum.BT_PHONE_NWD.getName(), AppEnum.BT_PHONE_NWD.getPkg(), null, 0, null, AppEnum.BT_PHONE_NWD.getIconResId() ) );
+ sUnScannedApps.add( new AppInfo( AppEnum.CanBus.getName(), AppEnum.CanBus.getPkg(), null, 0, null, AppEnum.CanBus.getIconResId() ) );
+ }
}
public static List< AppInfo > getUnScannedApps() {
return sUnScannedApps;
}
+
}
diff --git a/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_guide_show.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_guide_show.png
deleted file mode 100644
index a919bbfb36..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_guide_show.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_guide_show.png b/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_guide_show.png
deleted file mode 100644
index a919bbfb36..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_guide_show.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist.png
deleted file mode 100755
index 45e7c7fc5e..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist.webp
new file mode 100644
index 0000000000..32392f303e
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_aux.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_aux.png
deleted file mode 100755
index 662299b4f9..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_aux.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_aux.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_aux.webp
new file mode 100644
index 0000000000..80c50e4172
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_aux.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt.png
deleted file mode 100755
index 253cd8d7c5..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt.webp
new file mode 100644
index 0000000000..7007b6b849
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt_music.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt_music.png
deleted file mode 100644
index 2c73d6b637..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt_music.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt_music.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt_music.webp
new file mode 100644
index 0000000000..6778d03293
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt_music.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt_phone.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt_phone.png
deleted file mode 100644
index a40e2586d7..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt_phone.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt_phone.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt_phone.webp
new file mode 100644
index 0000000000..210f7ab524
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_bt_phone.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_canbus.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_canbus.png
deleted file mode 100644
index 38adc0866e..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_canbus.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_canbus.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_canbus.webp
new file mode 100644
index 0000000000..f7ffe16471
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_canbus.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_setting.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_setting.png
deleted file mode 100644
index 58aba30002..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_setting.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_setting.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_setting.webp
new file mode 100644
index 0000000000..104dda808f
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_setting.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_settings.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_settings.png
deleted file mode 100644
index bb7ed874fb..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_settings.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_settings.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_settings.webp
new file mode 100644
index 0000000000..64ac80ec89
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_settings.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_carcorder.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_carcorder.png
deleted file mode 100755
index c949e8c480..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_carcorder.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_carcorder.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_carcorder.webp
new file mode 100644
index 0000000000..cb9baebbac
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_carcorder.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat.png
deleted file mode 100755
index bff714a2cd..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat.webp
new file mode 100644
index 0000000000..6217103ade
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_clean_master.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_clean_master.png
deleted file mode 100755
index 359595a620..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_clean_master.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_clean_master.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_clean_master.webp
new file mode 100644
index 0000000000..ede7031fbd
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_clean_master.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fleet.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fleet.png
deleted file mode 100755
index 81a6911102..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fleet.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fleet.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fleet.webp
new file mode 100644
index 0000000000..e55dceca76
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fleet.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fresh_things.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fresh_things.png
deleted file mode 100755
index 3cbdfd1de4..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fresh_things.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fresh_things.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fresh_things.webp
new file mode 100644
index 0000000000..b9b058a124
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fresh_things.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_guide_show.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_guide_show.png
deleted file mode 100644
index c216b6ef9f..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_guide_show.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_im.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_im.png
deleted file mode 100755
index cb9eb9753d..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_im.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_im.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_im.webp
new file mode 100644
index 0000000000..5a7081f4e7
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_im.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_personal_center.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_personal_center.png
deleted file mode 100644
index cf052258e8..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_personal_center.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_personal_center.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_personal_center.webp
new file mode 100644
index 0000000000..af0a6f12ec
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_personal_center.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_road_condition.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_road_condition.png
deleted file mode 100755
index cc9c20ad21..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_road_condition.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_road_condition.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_road_condition.webp
new file mode 100644
index 0000000000..3ee10f5b5d
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_road_condition.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_weather.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_weather.png
deleted file mode 100644
index 3f610a671d..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_weather.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_weather.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_weather.webp
new file mode 100644
index 0000000000..5d534a5198
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_weather.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_wechat.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_wechat.png
deleted file mode 100755
index 413fdd812d..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_wechat.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_wechat.webp b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_wechat.webp
new file mode 100644
index 0000000000..97af1fc366
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_wechat.webp differ
diff --git a/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app.xml b/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app.xml
index 49c0dd467e..0e89455b55 100644
--- a/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app.xml
+++ b/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app.xml
@@ -10,7 +10,7 @@
android:id="@+id/module_apps_id_app_icon"
android:layout_width="@dimen/module_apps_navigation_icon_width"
android:scaleType="fitXY"
- android:src="@drawable/module_apps_ic_im"
+ android:src="@drawable/module_apps_ic_default_icon"
android:layout_height="@dimen/module_apps_navigation_icon_height" />
- * 描述
- */
-public class Back2LauncherFragment extends Fragment {
-
- private static final String TAG = "Back2LauncherFragment";
-
- @Override
- public void onCreate( @Nullable Bundle savedInstanceState ) {
- super.onCreate( savedInstanceState );
- BackToMainHomeManager.addMainHomeView();
- Logger.d( TAG, "addMainHomeView" );
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- BackToMainHomeManager.removeMainHomeView();
- Logger.d( TAG, "removeMainHomeView" );
- }
-}
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java
index a92fcecdee..c03d6944b3 100644
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java
+++ b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java
@@ -49,46 +49,11 @@ public class BackToLauncherModuleProvider implements IMogoModuleProvider {
return BackToLauncherConst.MODULE_NAME;
}
- @Override
- public IMogoModuleLifecycle getCardLifecycle() {
- return null;
- }
-
- @Override
- public IMogoMapListener getMapListener() {
- return null;
- }
-
@Override
public int getType() {
return ModuleType.TYPE_SERVICE;
}
- @Override
- public IMogoNaviListener getNaviListener() {
- return null;
- }
-
- @Override
- public IMogoLocationListener getLocationListener() {
- return null;
- }
-
- @Override
- public IMogoMarkerClickListener getMarkerClickListener() {
- return null;
- }
-
- @Override
- public String getAppPackage() {
- return null;
- }
-
- @Override
- public String getAppName() {
- return null;
- }
-
@Override
public void init( Context context ) {
if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) {
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 4ded331a36..ea748c53fe 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
@@ -1,28 +1,20 @@
package com.mogo.module.back;
-import android.content.Context;
import android.content.Intent;
-import android.graphics.PixelFormat;
-import android.os.Build;
import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
import android.view.WindowManager;
import com.mogo.commons.AbsMogoApplication;
-import com.mogo.module.back.utils.WindowManagerViewHelper;
+import com.mogo.module.common.wm.WindowManagerView;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.statusmanager.IMogoStatusManager;
-import com.mogo.utils.AppUtils;
import com.mogo.utils.logger.Logger;
public class BackToMainHomeManager {
private static final String TAG = "BackToMainHomeManager";
- private static View mBackView;
-
private static IMogoFragmentManager mFragmentManager;
private static IMogoStatusManager mStatusManager;
private static IMogoServiceApis mApis;
@@ -34,8 +26,8 @@ public class BackToMainHomeManager {
}
public static void backToLauncher() {
- if (mStatusManager == null) {
- Logger.e(TAG,"未初始化完成");
+ if ( mStatusManager == null ) {
+ Logger.e( TAG, "未初始化完成" );
return;
}
if ( mStatusManager.isMainPageOnResume() ) {
@@ -45,6 +37,10 @@ public class BackToMainHomeManager {
return;
}
+ Intent intent2 = new Intent();
+ // 是否发自系统消息
+ intent2.putExtra( "isHomeKeyDown", false );
+ mApis.getIntentManagerApi().invoke( Intent.ACTION_CLOSE_SYSTEM_DIALOGS, intent2 );
Logger.d( TAG, "返回桌面" );
Intent intent = new Intent();
@@ -54,40 +50,34 @@ public class BackToMainHomeManager {
AbsMogoApplication.getApp().startActivity( intent );
}
+ private static WindowManagerView mWindowManagerView;
+
public static void addMainHomeView() {
Logger.d( "BackToMainHomeManager", "addMainHomeView" );
- if ( mBackView != null ) WindowManagerViewHelper.removeView( mBackView );
- mBackView = LayoutInflater.from( AbsMogoApplication.getApp() ).inflate( R.layout.mogo_module_back_home_back_layout, null );
- final Context context = mBackView.getContext();
- if ( context == null || context.getApplicationContext() == null ) {
- return;
+
+ if ( mWindowManagerView == null ) {
+ mWindowManagerView = new WindowManagerView.Builder( AbsMogoApplication.getApp() )
+ .contentView( R.layout.mogo_module_back_home_back_layout )
+ .position( AbsMogoApplication.getApp().getResources().getDimensionPixelOffset( R.dimen.module_back_main_home_icon_left ),
+ AbsMogoApplication.getApp().getResources().getDimensionPixelOffset( R.dimen.module_back_main_home_icon_top ) )
+ .size( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT )
+ .gravity( Gravity.LEFT | Gravity.TOP )
+ .showInWindowManager();
+ mWindowManagerView.attachTouchEvent( view -> {
+ backToLauncher();
+ } );
}
- WindowManager windowManager = ( WindowManager ) context.getApplicationContext().getSystemService( Context.WINDOW_SERVICE );
- if ( windowManager == null ) {
- return;
+ try {
+ mWindowManagerView.show();
+ } catch ( Exception e ) {
+ e.printStackTrace();
}
- mBackView.setOnClickListener( view -> {
- backToLauncher();
- } );
- WindowManager.LayoutParams params = new WindowManager.LayoutParams();
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- params.width = WindowManager.LayoutParams.WRAP_CONTENT;
- params.x = AbsMogoApplication.getApp().getResources().getDimensionPixelOffset( R.dimen.module_back_main_home_icon_left );
- params.y = AbsMogoApplication.getApp().getResources().getDimensionPixelOffset( R.dimen.module_back_main_home_icon_top );
- params.gravity = Gravity.LEFT | Gravity.CENTER;
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- params.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
- } else {
- params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
- }
- params.format = PixelFormat.RGBA_8888;
- params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
- windowManager.addView( mBackView, params );
- WindowManagerViewHelper.attachMovementEvent( mBackView, params );
}
public static void removeMainHomeView() {
- WindowManagerViewHelper.removeView( mBackView );
+ if ( mWindowManagerView != null ) {
+ mWindowManagerView.dismiss();
+ }
}
}
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/Utils.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/Utils.java
deleted file mode 100644
index ace6e4bdae..0000000000
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/Utils.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.mogo.module.back.utils;
-
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-
-import com.mogo.commons.AbsMogoApplication;
-
-public class Utils {
- public static boolean isActivityExits( String packageName, String classStr ) {
- Intent intent = new Intent();
- intent.setClassName( packageName, classStr );
- ResolveInfo resolveInfo = AbsMogoApplication.getApp().getPackageManager().resolveActivity( intent, PackageManager.MATCH_DEFAULT_ONLY );
- if ( resolveInfo != null ) {
- return true;
- } else {
- return false;
- }
- }
-}
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowManagerViewHelper.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowManagerViewHelper.java
deleted file mode 100644
index ff03d5ab96..0000000000
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowManagerViewHelper.java
+++ /dev/null
@@ -1,213 +0,0 @@
-package com.mogo.module.back.utils;
-
-import android.content.Context;
-import android.graphics.PixelFormat;
-import android.os.Build;
-import android.view.Gravity;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.WindowManager;
-
-/**
- * @author congtaowang
- * @since 2019-04-30
- *
- * 向 window manager 添加 view
- */
-public class WindowManagerViewHelper {
-
- public static void addView( View view ) {
-
- final Context context = view.getContext();
- if ( context == null || context.getApplicationContext() == null ) {
- return;
- }
- WindowManager windowManager = ( WindowManager ) context.getApplicationContext().getSystemService( Context.WINDOW_SERVICE );
- if ( windowManager == null ) {
- return;
- }
- WindowManager.LayoutParams params = new WindowManager.LayoutParams();
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- params.width = WindowManager.LayoutParams.WRAP_CONTENT;
- params.gravity = Gravity.LEFT | Gravity.CENTER;
- params.type = getFitWindowParamsType();
- params.format = PixelFormat.RGBA_8888;
- params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
- windowManager.addView( view, params );
-
- attachMovementEvent( view, params );
- }
-
- private static int getFitWindowParamsType() {
- int type;
- if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1 ) {
- // Need request permission.
- type = WindowManager.LayoutParams.TYPE_PHONE;
- } else if ( Build.MODEL.equalsIgnoreCase( "MI 5" ) ) {
- // MI 5 phone not display crawler dot in android 7.0
- type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
- } else {
- // It's will be dismissed automatically 3s after showing in Android 25.
- type = WindowManager.LayoutParams.TYPE_TOAST;
- }
- return type;
- }
-
- public static void removeView( View view ) {
- if ( view == null || view.getContext() == null || view.getContext().getApplicationContext() == null ) {
- return;
- }
- WindowManager windowManager = ( WindowManager ) view.getContext().getApplicationContext().getSystemService( Context.WINDOW_SERVICE );
- if ( windowManager == null ) {
- return;
- }
- windowManager.removeViewImmediate( view );
- DispatchTouchEventWrapper.getInstance().release();
-
- }
-
- public static void attachMovementEvent( View view, WindowManager.LayoutParams params ) {
- if ( view == null ) {
- return;
- }
- view.setOnTouchListener( ( v, event ) -> {
- DispatchTouchEventWrapper.getInstance()
- .attach( view, params )
- .handle( event );
- return false;
- } );
- }
-
- static class DispatchTouchEventWrapper {
-
- private WindowViewHandler mWindowViewHandler;
-
- int mActionDownX = -1;
- int mActionDownY = -1;
-
- /**
- * Flag whether move after touch down.
- */
- boolean mMoveFlag = false;
-
- private static volatile DispatchTouchEventWrapper INST;
-
- private DispatchTouchEventWrapper() {
- }
-
- public static DispatchTouchEventWrapper getInstance() {
- if ( INST == null ) {
- synchronized ( DispatchTouchEventWrapper.class ) {
- if ( INST == null ) {
- INST = new DispatchTouchEventWrapper();
- }
- }
- }
- return INST;
- }
-
- public DispatchTouchEventWrapper attach( View windowView, WindowManager.LayoutParams params ) {
- if ( mWindowViewHandler == null || mWindowViewHandler.getWindowView() != windowView ) {
- mWindowViewHandler = new WindowViewHandler.DefaultHandler( windowView, params );
- }
- return this;
- }
-
- public boolean handle( MotionEvent event ) {
- switch ( event.getAction() & MotionEvent.ACTION_MASK ) {
- case MotionEvent.ACTION_DOWN:
- if ( onActionDown( event ) ) {
- return true;
- }
- break;
- case MotionEvent.ACTION_MOVE:
- if ( onActionMove( event ) ) {
- return true;
- }
- break;
- case MotionEvent.ACTION_UP:
- if ( onActionUp( event ) ) {
- return true;
- }
- break;
- }
- return false;
- }
-
- private boolean onActionDown( MotionEvent event ) {
- mActionDownX = ( ( int ) event.getRawX() );
- mActionDownY = ( ( int ) event.getRawY() );
- if ( mWindowViewHandler != null ) {
- mWindowViewHandler.recordNewPosition();
- return true;
- }
- return false;
- }
-
- private boolean onActionMove( MotionEvent event ) {
-
- if ( Math.abs( event.getRawX() - mActionDownX ) >= 20
- || Math.abs( event.getRawY() - mActionDownY ) >= 20 ) {
- mMoveFlag = true;
- }
-
- if ( isLastDownValueLegal() ) {
- moveWindowView( event );
- return true;
- }
- return false;
- }
-
- private boolean onActionUp( MotionEvent event ) {
- if ( isClickEventLike() ) {
- if ( mWindowViewHandler != null ) {
- mWindowViewHandler.performClickLike();
- }
- } else {
- if ( mWindowViewHandler != null ) {
- mWindowViewHandler.moveToEdge();
- mWindowViewHandler.recordNewPosition();
- }
- }
- mMoveFlag = false;
- clearLastDownAxisValue();
- return true;
- }
-
- private void clearLastDownAxisValue() {
- mActionDownX = mActionDownY = -1;
- }
-
- private boolean isLastDownValueLegal() {
- return mActionDownX != -1 && mActionDownY != -1;
- }
-
- private void moveWindowView( MotionEvent event ) {
- if ( mWindowViewHandler != null ) {
- mWindowViewHandler.move( event, mActionDownX, mActionDownY );
- }
- }
-
- /**
- * Simulate click event just like set {@link View.OnClickListener}
- *
- * @return
- */
- private boolean isClickEventLike() {
- System.out.println( mMoveFlag );
- return isLastDownValueLegal() && !mMoveFlag;
- }
-
- public void release() {
- if ( mWindowViewHandler != null ) {
- mWindowViewHandler.release();
- }
- mWindowViewHandler = null;
- mActionDownX = -1;
- mActionDownY = -1;
- mMoveFlag = false;
- INST = null;
- }
- }
-
-}
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowViewHandler.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowViewHandler.java
deleted file mode 100644
index bbd48717cd..0000000000
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowViewHandler.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package com.mogo.module.back.utils;
-
-import android.content.Context;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.WindowManager;
-
-import com.mogo.commons.AbsMogoApplication;
-import com.mogo.utils.WindowUtils;
-
-
-/**
- * Created by congtaowang on 2017/6/20.
- */
-
-public interface WindowViewHandler {
-
- View getWindowView();
-
- void recordNewPosition();
-
- void move(MotionEvent event, int downX, int downY);
-
- void release();
-
- void moveToEdge();
-
- void performClickLike();
-
- class DefaultHandler implements WindowViewHandler {
-
- protected View mWindowView;
-
- protected int mWindowViewLeft = -1;
- protected int mWindowViewTop = -1;
-
- private WindowManager.LayoutParams mParams;
-
- public DefaultHandler( View windowView, WindowManager.LayoutParams params ) {
- this.mWindowView = windowView;
- mParams = params;
- }
-
- @Override
- public View getWindowView() {
- return mWindowView;
- }
-
- @Override
- public void recordNewPosition() {
- mWindowViewLeft = mParams.x;
- mWindowViewTop = mParams.y;
- }
-
- @Override
- public void move( MotionEvent event, int downX, int downY ) {
- move( ( ( int ) ( event.getRawX() - downX ) ),
- ( ( int ) ( event.getRawY() - downY ) ) );
- }
-
- private void move( int distanceX, int distanceY ) {
- if ( mWindowView == null ) {
- return;
- }
- mParams.x = mWindowViewLeft + distanceX;
- mParams.y = mWindowViewTop + distanceY;
- WindowManager wm = ( ( WindowManager ) mWindowView.getContext().getSystemService( Context.WINDOW_SERVICE ) );
-
- if ( wm == null ) {
- return;
- }
-
- if ( mWindowView instanceof WindowViewUIController ) {
- if ( mParams.x > WindowUtils.getScreenWidth( AbsMogoApplication.getApp() ) / 2 ) {
- ( ( WindowViewUIController ) mWindowView ).rightMode();
- } else {
- ( ( WindowViewUIController ) mWindowView ).leftMode();
- }
- }
-
- wm.updateViewLayout( mWindowView, alignLayoutParamsBoundary( mParams ) );
- }
-
- @Override
- public void moveToEdge() {
- if ( mWindowView == null ) {
- return;
- }
- WindowManager wm = ( ( WindowManager ) mWindowView.getContext().getSystemService( Context.WINDOW_SERVICE ) );
-
- if ( mParams.x > WindowUtils.getScreenWidth( AbsMogoApplication.getApp() ) / 2 ) {
- mParams.x = WindowUtils.getScreenWidth( AbsMogoApplication.getApp() ) - mWindowView.getMeasuredWidth();
- } else {
- mParams.x = 0;
- }
-
- wm.updateViewLayout( mWindowView, alignLayoutParamsBoundary( mParams ) );
- }
-
- protected WindowManager.LayoutParams alignLayoutParamsBoundary( WindowManager.LayoutParams params ) {
- return params;
- }
-
- @Override
- public void performClickLike() {
- if ( mWindowView instanceof WindowViewUIController ) {
- ( ( WindowViewUIController ) mWindowView ).performClickLike();
- }
- }
-
- @Override
- public void release() {
- mWindowView = null;
- mWindowViewLeft = -1;
- mWindowViewTop = -1;
- }
- }
-
-}
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowViewUIController.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowViewUIController.java
deleted file mode 100644
index e329cdea68..0000000000
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/utils/WindowViewUIController.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.mogo.module.back.utils;
-
-/**
- * @author congtaowang
- * @since 2019-05-12
- *
- * 描述
- */
-public interface WindowViewUIController {
-
- void leftMode();
-
- void rightMode();
-
- void performClickLike();
-}
diff --git a/modules/mogo-module-back/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-back/src/main/res/values-xhdpi/dimens.xml
index bd57c0f8ae..e0b0d888aa 100644
--- a/modules/mogo-module-back/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-back/src/main/res/values-xhdpi/dimens.xml
@@ -1,8 +1,8 @@
* 描述
*/
-public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresenter >
+public class EntranceFragment extends MvpFragment
* 描述
*/
-public class EntrancePresenter extends Presenter
* 描述
*/
-public interface EntranceView extends IView {
+public interface EntranceView extends ExtensionsView {
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java
index 2b4f032948..17ee75ccb4 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java
@@ -1,9 +1,11 @@
package com.mogo.module.extensions.entrance;
import android.content.Context;
+import android.view.View;
import android.widget.TextView;
import com.alibaba.android.arouter.facade.annotation.Route;
+import com.mogo.module.extensions.utils.EntranceViewHolder;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.entrance.ButtonIndex;
import com.mogo.service.entrance.IMogoEntranceButtonController;
@@ -22,6 +24,21 @@ public class MogoEntranceButtonControllerImpl implements IMogoEntranceButtonCont
return MogoEntranceButtons.getButton( index );
}
+ @Override
+ public void addBottomLayerView(View view) {
+ EntranceViewHolder.getInstance().addBottomLayerView(view);
+ }
+
+ @Override
+ public void addBottomLayerView(View view, int x, int y) {
+ EntranceViewHolder.getInstance().addBottomLayerView(view, x, y);
+ }
+
+ @Override
+ public void removeBottomLayerView(View view) {
+ EntranceViewHolder.getInstance().removeBottomLayerView(view);
+ }
+
@Override
public void init( Context context ) {
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/UploadButtonAnimatorController.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/UploadButtonAnimatorController.java
new file mode 100644
index 0000000000..9e2525370c
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/UploadButtonAnimatorController.java
@@ -0,0 +1,130 @@
+package com.mogo.module.extensions.entrance;
+
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.DrawableRes;
+
+import com.mogo.module.extensions.R;
+import com.mogo.service.statusmanager.IMogoStatusManager;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/7/16
+ *
+ * 上传按钮动画
+ */
+class UploadButtonAnimatorController {
+
+ private static final String TAG = "UploadButtonAnimator";
+
+ private ImageView mUploading;
+ private TextView mUpload;
+ private IMogoStatusManager mStatusManager;
+
+ private int mCurrentUploadFrame = 0;
+ public static final int MSG_FRAME_ANIM = 307;
+ public static final int MSG_STOP_ANIM = 308;
+ public static final long TIME_FRAME_INTERVAL_TIME = 80;
+
+ private Handler mUploadFrameAnimHandler = new Handler( Looper.getMainLooper() ) {
+ @Override
+ public void handleMessage( Message msg ) {
+ super.handleMessage( msg );
+ if ( msg.what == MSG_FRAME_ANIM ) {
+ if ( mUploadingFrameRes == null || mUploadingFrameRes.length == 0 ) {
+ if ( mUploading != null ) {
+ mUploading.setVisibility( View.GONE );
+ }
+ if ( mUpload != null ) {
+ mUpload.setVisibility( View.VISIBLE );
+ }
+ return;
+ }
+ if ( !mStatusManager.isUploading() ) {
+ mCurrentUploadFrame = 0;
+ return;
+ }
+ if ( mUploading != null ) {
+ if ( mCurrentUploadFrame == mUploadingFrameRes.length ) {
+ mCurrentUploadFrame = 12;
+ }
+ mUploading.setImageResource( mUploadingFrameRes[mCurrentUploadFrame++ % mUploadingFrameRes.length] );
+ }
+ mUploadFrameAnimHandler.sendEmptyMessageDelayed( MSG_FRAME_ANIM,
+ TIME_FRAME_INTERVAL_TIME );
+ } else if ( msg.what == MSG_STOP_ANIM ) {
+ mStatusManager.setUploadingStatus( TAG, false );
+ }
+ }
+ };
+
+ @DrawableRes
+ private int[] mUploadingFrameRes = {
+ R.drawable.module_ext_ic_uploading_00000,
+ R.drawable.module_ext_ic_uploading_00001,
+ R.drawable.module_ext_ic_uploading_00002,
+ R.drawable.module_ext_ic_uploading_00003,
+ R.drawable.module_ext_ic_uploading_00004,
+ R.drawable.module_ext_ic_uploading_00005,
+ R.drawable.module_ext_ic_uploading_00006,
+ R.drawable.module_ext_ic_uploading_00007,
+ R.drawable.module_ext_ic_uploading_00008,
+ R.drawable.module_ext_ic_uploading_00009,
+ R.drawable.module_ext_ic_uploading_00010,
+ R.drawable.module_ext_ic_uploading_00011,
+ R.drawable.module_ext_ic_uploading_00012,
+ R.drawable.module_ext_ic_uploading_00013,
+ R.drawable.module_ext_ic_uploading_00014,
+ R.drawable.module_ext_ic_uploading_00015,
+ R.drawable.module_ext_ic_uploading_00016,
+ R.drawable.module_ext_ic_uploading_00017,
+ R.drawable.module_ext_ic_uploading_00018,
+ R.drawable.module_ext_ic_uploading_00019,
+ R.drawable.module_ext_ic_uploading_00020,
+ R.drawable.module_ext_ic_uploading_00021,
+ R.drawable.module_ext_ic_uploading_00022,
+ R.drawable.module_ext_ic_uploading_00023,
+ R.drawable.module_ext_ic_uploading_00024,
+ R.drawable.module_ext_ic_uploading_00025,
+ R.drawable.module_ext_ic_uploading_00026,
+ R.drawable.module_ext_ic_uploading_00027,
+ R.drawable.module_ext_ic_uploading_00028,
+ R.drawable.module_ext_ic_uploading_00029,
+ R.drawable.module_ext_ic_uploading_00030,
+ R.drawable.module_ext_ic_uploading_00031,
+ R.drawable.module_ext_ic_uploading_00032,
+ R.drawable.module_ext_ic_uploading_00033,
+ R.drawable.module_ext_ic_uploading_00034,
+ R.drawable.module_ext_ic_uploading_00035,
+ R.drawable.module_ext_ic_uploading_00036,
+ R.drawable.module_ext_ic_uploading_00037,
+ R.drawable.module_ext_ic_uploading_00038,
+ R.drawable.module_ext_ic_uploading_00039,
+ R.drawable.module_ext_ic_uploading_00040
+ };
+
+ public UploadButtonAnimatorController( ImageView mUploading, TextView mUpload, IMogoStatusManager mStatusManager ) {
+ this.mUploading = mUploading;
+ this.mUpload = mUpload;
+ this.mStatusManager = mStatusManager;
+ }
+
+ public void doFrameAnimOnUploadButton() {
+ mUploadFrameAnimHandler.removeMessages( MSG_STOP_ANIM );
+ mUploadFrameAnimHandler.removeMessages( MSG_FRAME_ANIM );
+ mUploadFrameAnimHandler.sendEmptyMessage( MSG_FRAME_ANIM );
+ // 30s 后无论成功与否,停止动画
+ mUploadFrameAnimHandler.sendEmptyMessageDelayed( MSG_STOP_ANIM, 30_000 );
+ }
+
+ public void stopAnimation() {
+ mCurrentUploadFrame = 0;
+ mUploadFrameAnimHandler.removeMessages( MSG_FRAME_ANIM );
+ }
+}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java
new file mode 100644
index 0000000000..b35687f42c
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java
@@ -0,0 +1,94 @@
+package com.mogo.module.extensions.utils;
+
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+
+import com.mogo.module.extensions.bean.BottomLayerViewWrapper;
+import com.mogo.utils.logger.Logger;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * 入口页view管理
+ * @author tongchenfei
+ */
+public class EntranceViewHolder {
+ private static final String TAG = "EntranceViewHolder";
+ private List
+ * 语音控制地图
+ */
+class MapControlCommandHandler {
+
+ private static final String TAG = "CustomVoiceCommandHandler";
+
+ private OnMapControlCallback mCallback;
+
+ public void setCallback( OnMapControlCallback mCallback ) {
+ this.mCallback = mCallback;
+ }
+
+ public void handleVoiceCommand( String cmd ) {
+ Logger.d( TAG, cmd );
+ switch ( cmd ) {
+ case VoiceConstants.CMD_MAP_TRAFFIC_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_TRAFFIC_MODE:
+ mCallback.onTrafficModeChanged( true );
+ break;
+ case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE:
+ mCallback.onTrafficModeChanged( false );
+ break;
+ case VoiceConstants.CMD_MAP_ZOOM_IN_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_ZOOM_IN:
+ mCallback.onZoomMap( true );
+ break;
+ case VoiceConstants.CMD_MAP_ZOOM_OUT_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_ZOOM_OUT:
+ mCallback.onZoomMap( false );
+ break;
+ case VoiceConstants.CMD_MAP_2D_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_2D:
+ case VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_NORTH_UP_MODE:
+ mCallback.onCameraModeChanged( EnumMapUI.NorthUP_2D );
+ break;
+ case VoiceConstants.CMD_MAP_3D_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_3D:
+ mCallback.onCameraModeChanged( EnumMapUI.CarUp_3D );
+ break;
+ case VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_DAY_TIME_MODE:
+ mCallback.onDayNightModeChanged( EnumMapUI.Type_Light );
+ break;
+ case VoiceConstants.CMD_MAP_HISTORY_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_HISTORY:
+ mCallback.onOpenNavi();
+ break;
+ case VoiceConstants.CMD_MAP_STOP_NAVI_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_STOP_NAVI_MODE:
+ break;
+ case VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_NIGHT_MODE:
+ mCallback.onDayNightModeChanged( EnumMapUI.Type_Night );
+ break;
+ case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE:
+ mCallback.onDayNightModeChanged( EnumMapUI.Type_AUTO_LIGHT_Night );
+ break;
+ case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE:
+ mCallback.onDisplayOverview();
+ break;
+ case VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE:
+ mCallback.onContinueNavi();
+ break;
+ case VoiceConstants.CMD_MAP_CAR_UP_MODE_UN_WAKEUP:
+ case VoiceConstants.CMD_MAP_CAR_UP_MODE:
+ mCallback.onCameraModeChanged( EnumMapUI.CarUp_2D );
+ break;
+ case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE:
+ case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE_UN_WAKEUP:
+ break;
+ case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE:
+ case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE_UN_WAKEUP:
+ break;
+ case VoiceConstants.CMD_MAP_SPEAK_REMAIN:
+ break;
+ default:
+ break;
+
+ }
+ }
+}
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java
index 9a51a52573..a563efc7da 100644
--- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java
@@ -39,9 +39,6 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
@Override
protected void initViews() {
- //mMogoMapView = findViewById( R.id.module_map_id_map );
- //mMogoMap = mMogoMapView.getMap();
- //mMogoMap.getUIController().showMyLocation( true );
}
@Override
@@ -63,9 +60,6 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
@Override
public void onActivityCreated( @Nullable Bundle savedInstanceState ) {
super.onActivityCreated( savedInstanceState );
- //if ( mMogoMapView != null ) {
- // mMogoMapView.onCreate( savedInstanceState );
- //}
initMapView();
}
@@ -125,7 +119,7 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
uiSettings.setZoomControlsEnabled( false );
//设置双指缩放手势是否可用。
uiSettings.setZoomGesturesEnabled( true );
- mMogoMap.getUIController().changeMapMode(EnumMapUI.NorthUP_2D);
+ mMogoMap.getUIController().changeMapMode( EnumMapUI.NorthUP_2D );
}
}
}
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 3c3774398d..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
@@ -1,16 +1,12 @@
package com.mogo.module.map;
import android.app.ActivityManager;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
-import android.content.IntentFilter;
import android.graphics.Rect;
import android.text.TextUtils;
import androidx.annotation.NonNull;
-import androidx.annotation.UiThread;
import androidx.lifecycle.LifecycleOwner;
import com.alibaba.android.arouter.launcher.ARouter;
@@ -34,7 +30,6 @@ import com.mogo.service.launcher.IMogoLauncher;
import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.module.IMogoSearchManager;
-import com.mogo.service.module.IMogoSettingManager;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.strategy.IMogoRefreshStrategyController;
import com.mogo.utils.AppUtils;
@@ -54,10 +49,10 @@ import java.util.Map;
public class MapPresenter extends Presenter< MapView > implements
IMogoIntentListener,
IMogoVoiceCmdCallBack,
- IMogoNaviListener2 {
+ IMogoNaviListener2,
+ OnMapControlCallback {
private static final String TAG = "MapPresenter";
- private static final String AUTONAVI_STANDARD_BROADCAST_RECV = "AUTONAVI_STANDARD_BROADCAST_RECV";
private IMogoMapService mMogoMapService;
private IMogoIntentManager mMogoIntentManager;
private IMogoSearchManager mSearchManager;
@@ -66,7 +61,6 @@ public class MapPresenter extends Presenter< MapView > implements
private IMogoRegisterCenter mRegisterCenter;
private IMogoLauncher mLauncher;
private IMogoSearchManager mMogoSearchManager;
- private IMogoSettingManager mSettingManager;
private Rect mDisplayOverviewBounds;
@@ -80,201 +74,33 @@ public class MapPresenter extends Presenter< MapView > implements
mView.getUIController().recoverLockMode();
}
};
+ private AutoNaviBroadcastIntentHandler mAutoNaviReceiver;
+ private MapControlCommandHandler mCustomVoiceCommandHandler;
public MapPresenter( MapView view ) {
super( view );
- initBroadcast();
}
- private BroadcastReceiver broadcastReceiver;
-
- /**
- * opera type为0:0 实时路况开;1实时路况关 type为1:0 放大地图; 1缩小地图 type为2:0切换2d车上; 1切换2d北上;2切换3d车上支持
- */
- private void initBroadcast() {
- // 高德地图免唤醒
- broadcastReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive( Context context, Intent intent ) {
- String action = intent.getAction();
- Logger.d( TAG, "action = %s", action );
-
- if ( !TextUtils.equals( action, AUTONAVI_STANDARD_BROADCAST_RECV ) ) {
- return;
- }
- int key_type = intent.getIntExtra( "KEY_TYPE", 0 );
- int type = intent.getIntExtra( "EXTRA_TYPE", -1 );
- int opera_type = intent.getIntExtra( "EXTRA_OPERA", -1 );
- Logger.d( TAG, "key_type" + key_type );
- if ( key_type == 10027 ) {
- if ( type == 0 ) {
- onChangeTrafficMode( opera_type );
- } else if ( type == 1 ) {
- zoomMap( opera_type == 0 );
- } else if ( type == 2 ) {
-// mMogoIntentManager.invoke( AUTONAVI_STANDARD_BROADCAST_RECV, intent );
- onChangeCameraMode( opera_type );
- }
- } else if ( key_type == 10048 ) {
- //0:自动; 1:白天; 2:黑夜;
- int day_night_mode = intent.getIntExtra( "EXTRA_DAY_NIGHT_MODE", -1 );
- onChangeDayNightMode( day_night_mode );
- //继续导航
- } else if ( key_type == 10049 ) {
- if ( CustomNaviInterrupter.getInstance().interrupt() ) {
- return;
- }
- boolean extra_endurance_data = intent.getBooleanExtra( "EXTRA_ENDURANCE_DATA", false );
- if ( extra_endurance_data ) {
- onContinueNavigation();
- }
- } else if ( key_type == 10006 ) {
- // 避免冲突,会同时发送两个广播,这里不操作。
- //int extra_is_show = intent.getIntExtra( "EXTRA_IS_SHOW", 0 );
- //if ( extra_is_show == 0 ) {
- // onDisplayOverview();
- //} else {
- // onContinueNavigation();
- //}
- } else if ( key_type == 10005 ) {
- int navi_route_prefer = intent.getIntExtra( "NAVI_ROUTE_PREFER", type );
- } else if ( key_type == 20009 ) {
- if ( CustomNaviInterrupter.getInstance().interrupt() ) {
- return;
- }
- onOpenNavi();
- } else if ( key_type == 10038 || key_type == 10007 ) {
- if ( CustomNaviInterrupter.getInstance().interrupt() ) {
- return;
- }
- mLauncher.backToLauncher( getContext() );
- onChoosePath( intent, key_type );
- } else if ( key_type == 10021 ) {
- if ( CustomNaviInterrupter.getInstance().interrupt() ) {
- UiThreadHandler.postDelayed( () -> {
- if ( isForeground( getContext() ) && !hasOthersActivity() && !mStatusManager.isMainPageOnResume() ) {
- mLauncher.backToLauncher( getContext() );
- }
- }, 500L );
- return;
- }
- onStopNaviInternal();
- } else if ( key_type == 10005 ) {
- // 仅在导航场景下,⽀持第三⽅进⾏路线偏好的重新选择。
- // 避免收费 | 1
- // 多策略算路 | 2
- // 不走高速 | 3
- // 躲避拥堵 | 4
- // 不走高速且避免收费 | 5
- // 不走高速且躲避拥堵 | 6
- // 躲避收费和拥堵 | 7
- // 不走高速躲避收费和拥堵 | 8
- // 高速优先 | 20
- // 躲避拥堵且高速优先 | 24
- if ( CustomNaviInterrupter.getInstance().interrupt() ) {
- return;
- }
- int prefer = intent.getIntExtra( "NAVI_ROUTE_PREFER", 0 );
- MogoNaviConfig config = new MogoNaviConfig().congestion( prefer == 4 )
- .cost( prefer == 1 || prefer == 7 )
- .highSpeed( prefer == 20 )
- .avoidSpeed( prefer == 3 );
- mMogoMapService.getNavi( getContext() ).reCalculateRoute( config );
-
- }
- }
- };
-
- IntentFilter inputFilter = new IntentFilter();
- inputFilter.addAction( AUTONAVI_STANDARD_BROADCAST_RECV );
- getContext().registerReceiver( broadcastReceiver, inputFilter );
+ @Override
+ public void onTrafficModeChanged( boolean open ) {
+ mView.getUIController().setTrafficEnabled( open );
}
- 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;
- }
- }
- }
+ @Override
+ public void onCameraModeChanged( EnumMapUI mode ) {
+ mView.getUIController().changeMapMode( mode );
+ }
+
+ @Override
+ public void onDayNightModeChanged( EnumMapUI mode ) {
+ mView.getUIController().changeMapMode( mode );
+ }
+
+ @Override
+ public void onContinueNavi() {
+ if ( CustomNaviInterrupter.getInstance().interrupt() ) {
+ return;
}
- return false;
- }
-
- private boolean hasOthersActivity() {
- ActivityManager am = ( ActivityManager ) getContext().getSystemService( Context.ACTIVITY_SERVICE );
- List< ActivityManager.RunningTaskInfo > list = am.getRunningTasks( 2 );
- return list != null && list.size() > 1;
- }
-
- /**
- * 切换交通态势模式
- *
- * @param mode
- */
- private void onChangeTrafficMode( int mode ) {
- mView.getUIController().setTrafficEnabled( mode == 0 );
- }
-
- /**
- * 切换地图视图朝向模式
- */
- private void onChangeCameraMode( int mode ) {
- if ( mode == 0 ) {
- mView.getUIController().changeMapMode( EnumMapUI.CarUp_2D );
- } else if ( mode == 1 ) {
- mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D );
- } else if ( mode == 2 ) {
- mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D );
- }
- }
-
- /**
- * 切换白天黑夜模式
- *
- * @param mode
- */
- private void onChangeDayNightMode( int mode ) {
- if ( mode == 0 ) {
- mView.getUIController().changeMapMode( EnumMapUI.Type_AUTO_LIGHT_Night );
- } else if ( mode == 1 ) {
- mView.getUIController().changeMapMode( EnumMapUI.Type_Light );
- } else if ( mode == 2 ) {
- mView.getUIController().changeMapMode( EnumMapUI.Type_Night );
- }
- }
-
- private void onStopNaviInternal() {
- mMogoMapService.getNavi( getContext() ).stopNavi();
- }
-
-
- /**
- * 唤醒指令导航去哪里
- */
- private void onChoosePath( Intent intent, int type ) {
- double lat;
- double lon;
-
- if ( type == 10007 ) {
- lat = intent.getDoubleExtra( "ENTRY_LAT", 0.0 );
- lon = intent.getDoubleExtra( "ENTRY_LON", 0.0 );
- } else {
- lat = intent.getDoubleExtra( "LAT", 0.0 );
- lon = intent.getDoubleExtra( "LON", 0.0 );
- }
- mMogoSearchManager.calculatePath( new MogoLatLng( lat, lon ) );
- }
-
- /**
- * 继续导航
- */
- private void onContinueNavigation() {
-
if ( mStatusManager.isMainPageOnResume() ) {
mStatusManager.setDisplayOverview( TAG, false );
mView.getUIController().recoverLockMode();
@@ -295,7 +121,64 @@ public class MapPresenter extends Presenter< MapView > implements
}
}
- private void onDisplayOverview() {
+ @Override
+ public void onOpenNavi() {
+ if ( CustomNaviInterrupter.getInstance().interrupt() ) {
+ return;
+ }
+ mLauncher.backToLauncher( getContext() );
+ if ( !mMogoMapService.getNavi( getContext() ).isNaviing() && !mStatusManager.isSearchUIShow() ) {
+ mSearchManager.showSearch();
+ }
+ AIAssist.getInstance( getContext() ).speakTTSVoice( "已打开" );
+ }
+
+ @Override
+ public void onCalculatePath( double lon, double lat ) {
+ if ( CustomNaviInterrupter.getInstance().interrupt() ) {
+ return;
+ }
+ mLauncher.backToLauncher( getContext() );
+ mMogoSearchManager.calculatePath( new MogoLatLng( lat, lon ) );
+ }
+
+ @Override
+ public void onStopNaviInternal( Intent intent ) {
+ if ( CustomNaviInterrupter.getInstance().interrupt() ) {
+ // 导航过程中语音指令退出导航,会出现 activity 不走 onResume 的情况
+ UiThreadHandler.postDelayed( () -> {
+ if ( AppUtils.isAppForeground( getContext() ) && !hasOthersActivity() && !mStatusManager.isMainPageOnResume() ) {
+ mLauncher.backToLauncher( getContext() );
+ }
+ }, 500L );
+ return;
+ }
+ mMogoMapService.getNavi( getContext() ).stopNavi();
+ }
+
+ @Override
+ public void onReCalculatePath( MogoNaviConfig config ) {
+ if ( CustomNaviInterrupter.getInstance().interrupt() ) {
+ return;
+ }
+ mMogoMapService.getNavi( getContext() ).reCalculateRoute( config );
+ }
+
+ private boolean hasOthersActivity() {
+ ActivityManager am = ( ActivityManager ) getContext().getSystemService( Context.ACTIVITY_SERVICE );
+ List< ActivityManager.RunningTaskInfo > list = am.getRunningTasks( 1 );
+ if ( list != null && !list.isEmpty() ) {
+ for ( ActivityManager.RunningTaskInfo runningTaskInfo : list ) {
+ if ( TextUtils.equals( runningTaskInfo.topActivity.getPackageName(), getContext().getPackageName() ) ) {
+ return runningTaskInfo.numActivities > 1;
+ }
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public void onDisplayOverview() {
if ( !mMogoMapService.getNavi( getContext() ).isNaviing() ) {
Logger.d( TAG, "未开始导航." );
return;
@@ -322,7 +205,8 @@ public class MapPresenter extends Presenter< MapView > implements
UiThreadHandler.postDelayed( mLockCarRunnable, 20_000 );
}
- private void zoomMap( boolean zoomIn ) {
+ @Override
+ public void onZoomMap( boolean zoomIn ) {
boolean isLocked = mMogoMapService.getMapUIController().isCarLocked();
MapControlResult result = mView.getUIController().changeZoom( zoomIn );
if ( !CustomNaviInterrupter.getInstance().interrupt() ) {
@@ -349,14 +233,6 @@ public class MapPresenter extends Presenter< MapView > implements
}
}
- private void onOpenNavi() {
- mLauncher.backToLauncher( getContext() );
- if ( !mMogoMapService.getNavi( getContext() ).isNaviing() && !mStatusManager.isSearchUIShow() ) {
- mSearchManager.showSearch();
- }
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已打开" );
- }
-
@Override
public void onCreate( @NonNull LifecycleOwner owner ) {
super.onCreate( owner );
@@ -371,7 +247,6 @@ public class MapPresenter extends Presenter< MapView > implements
mRegisterCenter.registerMogoNaviListener( TAG, this );
mLauncher = apis.getLauncherApi();
mMogoSearchManager = apis.getSearchManagerApi();
- mSettingManager = apis.getSettingManagerApi();
IMogoNavi mogoNavi = mMogoMapService.getNavi( getContext() );
mogoNavi.setCalculatePathDisplayBounds( new Rect(
@@ -391,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
@@ -402,15 +287,14 @@ public class MapPresenter extends Presenter< MapView > implements
@Override
public void onPause( @NonNull LifecycleOwner owner ) {
super.onPause( owner );
-
unregisterVoiceCmd();
}
@Override
public void onDestroy( @NonNull LifecycleOwner owner ) {
super.onDestroy( owner );
- if ( broadcastReceiver != null ) {
- getContext().unregisterReceiver( broadcastReceiver );
+ if ( mAutoNaviReceiver != null ) {
+ mAutoNaviReceiver.unregister( mMogoIntentManager );
}
}
@@ -447,82 +331,7 @@ public class MapPresenter extends Presenter< MapView > implements
@Override
public void onCmdSelected( String cmd ) {
Logger.d( TAG, cmd );
- switch ( cmd ) {
- case VoiceConstants.CMD_MAP_TRAFFIC_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_TRAFFIC_MODE:
- mView.getUIController().setTrafficEnabled( true );
- break;
- case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE:
- mView.getUIController().setTrafficEnabled( false );
- break;
- case VoiceConstants.CMD_MAP_ZOOM_IN_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_ZOOM_IN:
- zoomMap( true );
- break;
- case VoiceConstants.CMD_MAP_ZOOM_OUT_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_ZOOM_OUT:
- zoomMap( false );
- break;
- case VoiceConstants.CMD_MAP_2D_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_2D:
- case VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_NORTH_UP_MODE:
- mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D );
- break;
- case VoiceConstants.CMD_MAP_3D_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_3D:
- mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D );
- break;
- case VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_DAY_TIME_MODE:
- mView.getUIController().changeMapMode( EnumMapUI.Type_Light );
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
- break;
- case VoiceConstants.CMD_MAP_HISTORY_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_HISTORY:
- onOpenNavi();
- break;
- case VoiceConstants.CMD_MAP_STOP_NAVI_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_STOP_NAVI_MODE:
- mLauncher.backToLauncher( getContext() );
- break;
- case VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_NIGHT_MODE:
- mView.getUIController().changeMapMode( EnumMapUI.Type_Night );
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
- break;
- case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE:
- mView.getUIController().changeMapMode( EnumMapUI.Type_AUTO_LIGHT_Night );
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
- break;
- case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE:
- onDisplayOverview();
- break;
- case VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE:
- onContinueNavigation();
- break;
- case VoiceConstants.CMD_MAP_CAR_UP_MODE_UN_WAKEUP:
- case VoiceConstants.CMD_MAP_CAR_UP_MODE:
- mView.getUIController().changeMapMode( EnumMapUI.CarUp_2D );
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
- break;
- case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE:
- case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE_UN_WAKEUP:
- mSettingManager.speakDraft();
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
- break;
- case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE:
- case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE_UN_WAKEUP:
- mSettingManager.speakDetail();
- AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
- break;
- case VoiceConstants.CMD_MAP_SPEAK_REMAIN:
- break;
- default:
- break;
- }
+ mCustomVoiceCommandHandler.handleVoiceCommand( cmd );
}
@Override
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
new file mode 100644
index 0000000000..cd6263370d
--- /dev/null
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/OnMapControlCallback.java
@@ -0,0 +1,39 @@
+package com.mogo.module.map;
+
+import android.content.Intent;
+
+import com.mogo.map.navi.MogoNaviConfig;
+import com.mogo.map.uicontroller.EnumMapUI;
+
+public interface OnMapControlCallback {
+
+ // 交通态势
+ void onTrafficModeChanged( boolean open );
+
+ // 2d、3d模式切换、正北、车头
+ void onCameraModeChanged( EnumMapUI mode);
+
+ // 白天、黑夜模式切换
+ void onDayNightModeChanged( EnumMapUI mode );
+
+ // 继续导航
+ void onContinueNavi();
+
+ // 打开导航
+ void onOpenNavi();
+
+ // 开始路径规划
+ void onCalculatePath( double lon, double lat );
+
+ // 调用停止导航方法
+ void onStopNaviInternal( Intent intent );
+
+ // 重新规划路线
+ void onReCalculatePath( MogoNaviConfig config );
+
+ // 查看全程
+ void onDisplayOverview();
+
+ // 缩放地图
+ void onZoomMap( boolean zoomIn );
+}
\ No newline at end of file
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/VoiceConstants.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/VoiceConstants.java
index 84b2d61b22..aff22c0b1c 100644
--- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/VoiceConstants.java
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/VoiceConstants.java
@@ -135,7 +135,7 @@ public class VoiceConstants {
*/
public static final String CMD_MAP_NORTH_UP_MODE = "com.ileja.traffic.north.up";
public static final String CMD_MAP_NORTH_UP_MODE_UN_WAKEUP = "CMD_MAP_NORTH_UP_MODE_UN_WAKEUP";
- public static final String[] CMD_MAP_NORTH_UP_MODE_TRIGGER_WORDS = {"北朝上"};
+ public static final String[] CMD_MAP_NORTH_UP_MODE_TRIGGER_WORDS = {"正北朝上","北朝上"};
/**
* 简洁模式
*/
@@ -164,19 +164,19 @@ public class VoiceConstants {
static {
// 免唤醒
-// sVoiceCmds.put( VoiceConstants.CMD_MAP_ZOOM_IN_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_IN_TRIGGER_WORDS );
-// sVoiceCmds.put( VoiceConstants.CMD_MAP_ZOOM_OUT_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_OUT_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_ZOOM_IN_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_IN_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_ZOOM_OUT_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_OUT_TRIGGER_WORDS );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_2D_UN_WAKEUP, VoiceConstants.CMD_MAP_2D_TRIGGER_WORDS );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_3D_UN_WAKEUP, VoiceConstants.CMD_MAP_3D_TRIGGER_WORDS );
- //sVoiceCmds.put( VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_DAY_TIME_MODE_TRIGGER_WORDS );
- //sVoiceCmds.put( VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_NIGHT_MODE_TRIGGER_WORDS );
- //sVoiceCmds.put( VoiceConstants.CMD_MAP_TRAFFIC_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_TRAFFIC_MODE_TRIGGER_WORDS );
- //sVoiceCmds.put( VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_TRIGGER_WORDS );
- //sVoiceCmds.put( VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_DAY_TIME_MODE_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_NIGHT_MODE_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_TRAFFIC_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_TRAFFIC_MODE_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_TRIGGER_WORDS );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE_TRIGGER_WORDS );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE_MODE_TRIGGER_WORDS );
- //sVoiceCmds.put( VoiceConstants.CMD_MAP_CAR_UP_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_CAR_UP_MODE_TRIGGER_WORDS );
- //sVoiceCmds.put( VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_NORTH_UP_MODE_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_CAR_UP_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_CAR_UP_MODE_TRIGGER_WORDS );
+ sVoiceCmds.put( VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_NORTH_UP_MODE_TRIGGER_WORDS );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_GO_HOME_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_IN_GO_HOME );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_GO_COMPANY_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_IN_GO_COMPANY );
sVoiceCmds.put( VoiceConstants.CMD_MAP_HISTORY_UN_WAKEUP, VoiceConstants.CMD_MAP_HISTORY_TRIGGER_WORDS );
diff --git a/modules/mogo-module-media/build.gradle b/modules/mogo-module-media/build.gradle
index d734d287e0..0ddfae0634 100644
--- a/modules/mogo-module-media/build.gradle
+++ b/modules/mogo-module-media/build.gradle
@@ -40,7 +40,6 @@ dependencies {
annotationProcessor rootProject.ext.dependencies.aroutercompiler
implementation rootProject.ext.dependencies.arouter
implementation rootProject.ext.dependencies.rxandroid
- implementation rootProject.ext.dependencies.guideshowprovider
implementation rootProject.ext.dependencies.androidxappcompat
implementation rootProject.ext.dependencies.androidxconstraintlayout
diff --git a/modules/mogo-module-media/consumer-rules.pro b/modules/mogo-module-media/consumer-rules.pro
index e69de29bb2..4e16a57537 100644
--- a/modules/mogo-module-media/consumer-rules.pro
+++ b/modules/mogo-module-media/consumer-rules.pro
@@ -0,0 +1,13 @@
+#-----MediaModule-----
+-dontwarn com.mogo.module.media.**
+-keep class com.mogo.module.media.listener.** { *; }
+-keep class com.mogo.module.media.model.** { *; }
+-keep class com.mogo.module.media.view.** { *; }
+-keep class com.mogo.module.media.widget.** { *; }
+-keep class com.mogo.module.media.api.** { *; }
+-keep class com.mogo.module.media.constants.** { *; }
+-keep class com.mogo.module.media.presenter.** { *; }
+-keep class com.mogo.module.media.receiver.** { *; }
+-keep class com.mogo.module.media.utils.OnBitmapToLocalListener
+-keep class com.mogo.module.media.utils.OnCompressListener
+-keep class com.mogo.module.media.MediaConstants
\ No newline at end of file
diff --git a/modules/mogo-module-media/proguard-rules.pro b/modules/mogo-module-media/proguard-rules.pro
index 82dae0c3b9..0d676ccbbf 100644
--- a/modules/mogo-module-media/proguard-rules.pro
+++ b/modules/mogo-module-media/proguard-rules.pro
@@ -19,6 +19,8 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
+
+#-----MediaModule-----
-dontwarn com.mogo.module.media.**
-keep class com.mogo.module.media.listener.** { *; }
-keep class com.mogo.module.media.model.** { *; }
@@ -27,4 +29,7 @@
-keep class com.mogo.module.media.api.** { *; }
-keep class com.mogo.module.media.constants.** { *; }
-keep class com.mogo.module.media.presenter.** { *; }
--keep class com.mogo.module.media.receiver.** { *; }
\ No newline at end of file
+-keep class com.mogo.module.media.receiver.** { *; }
+-keep class com.mogo.module.media.utils.OnBitmapToLocalListener
+-keep class com.mogo.module.media.utils.OnCompressListener
+-keep class com.mogo.module.media.MediaConstants
\ No newline at end of file
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaCardViewFragment.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaCardViewFragment.java
index 7708d29202..52651147a6 100644
--- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaCardViewFragment.java
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaCardViewFragment.java
@@ -16,9 +16,6 @@ import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.SimpleTarget;
@@ -74,9 +71,6 @@ import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.glide.GlideApp;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
-
-import org.jetbrains.annotations.NotNull;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -180,7 +174,7 @@ public class MediaCardViewFragment extends MvpFragment