diff --git a/.idea/misc.xml b/.idea/misc.xml
index 21e99e2dc0..cd77a1f062 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,7 +4,7 @@
-
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 6f8ca1f9fe..c0b0f1adff 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -25,7 +25,7 @@ android {
externalNativeBuild {
ndk {
// 设置支持的SO库架构
- abiFilters "armeabi", "armeabi-v7a"
+ abiFilters "armeabi-v7a"
}
}
}
@@ -87,6 +87,7 @@ android {
buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'true'
// 是否作为 launcher 运行
buildConfigField 'boolean', 'IS_LAUNCHER', 'false'
+ buildConfigField 'String', 'SOCKET_APP_ID', '\"com.mogo.launcher\"'
}
// launcher app
launcher{
@@ -98,6 +99,7 @@ android {
buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'true'
// 是否作为 launcher 运行
buildConfigField 'boolean', 'IS_LAUNCHER', 'true'
+ buildConfigField 'String', 'SOCKET_APP_ID', '\"com.mogo.launcher\"'
}
// f系列-分体机全系列,未细分
f8xx{
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index a72d1b4092..fc5ea40cf1 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -177,30 +177,34 @@
-keep @kotlin.Metadata class *
-keepclasseswithmembers @kotlin.Metadata class * { *; }
+-dontwarn android.telephony.TelephonyManager.**
+-keep class android.telephony.TelephonyManager.**{*;}
+
#----------------------------------------第三方库----------------------------------------------
#-----高德地图-----
+
+#内置语音 V5.6.0之后
+-keep class com.alibaba.idst.nls.**{*;}
+-keep class com.google.**{*;}
+-keep class com.nlspeech.nlscodec.** {*;}
+-keep public class com.alibaba.mit.alitts.*{*;}
+-keep class com.alibaba.mit.alitts.** {*;}
+-dontwarn com.alibaba.mit.alitts.ICallback
+
#3D 地图 V5.0.0之后:
--keep class com.amap.api.maps.**{*;}
--keep class com.autonavi.**{*;}
--keep class com.amap.api.trace.**{*;}
+-keep class com.amap.api.maps.**{*;}
+-keep class com.autonavi.**{*;}
+-keep class com.amap.api.trace.**{*;}
#定位
+-keep class com.loc.** {*;}
-keep class com.amap.api.location.**{*;}
-keep class com.amap.api.fence.**{*;}
--keep class com.loc.**{*;}
-keep class com.autonavi.aps.amapapi.model.**{*;}
#搜索
-keep class com.amap.api.services.**{*;}
#导航
-keep class com.amap.api.navi.**{*;}
-#内置语音 V5.6.0之后
--keep class com.alibaba.idst.nls.**{*;}
--keep class com.google.**{*;}
--keep class com.nlspeech.nlscodec.** {*;}
--keep class com.alibaba.mit.alitts.** {*;}
-
--dontwarn android.telephony.**
--keep class android.telephony.TelephonyManager$CellInfoCallback
#-----Gson-----
-dontwarn sun.misc.**
@@ -340,6 +344,7 @@
-keep class com.zhidao.autopilot.support.**{*;}
-keep class com.zhidao.voice.library.**{*;}
-keep class com.zhidao.voicesdk.**{*;}
+-dontwarn com.elegant.network.**
diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java
index 47503f78aa..7359d43664 100644
--- a/app/src/main/java/com/mogo/launcher/MogoApplication.java
+++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java
@@ -2,7 +2,7 @@ package com.mogo.launcher;
import android.content.Context;
import android.content.Intent;
-import android.os.Build;
+import android.text.TextUtils;
import android.util.Log;
import com.alibaba.android.arouter.launcher.ARouter;
@@ -10,6 +10,8 @@ import com.auto.zhidao.logsdk.CrashSystem;
import com.bytedance.boost_multidex.BoostMultiDex;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
+import com.mogo.commons.network.Utils;
+import com.mogo.commons.storage.SpStorage;
import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant;
import com.mogo.module.carchatting.card.CallChatConstant;
import com.mogo.module.common.MogoModule;
@@ -53,7 +55,7 @@ public class MogoApplication extends AbsMogoApplication {
Logger.init( BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF );
// MogoModulePaths.addModule(new MogoModule(PATH_GUIDE_FRAGMENT, PATH_GUIDE_MODULE_NAME));
- MogoModulePaths.addModule( new MogoModule( AuthorizeConstant.PATH_AGREEMENT_FRAGMENT, AuthorizeConstant.PATH_AGREEMENT_MODULE_NAME ) );
+ MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_AGREEMENT, AuthorizeConstant.PATH_AGREEMENT_MODULE_NAME ) );
//运营位卡片,需要默认显示,放在第一个加载
if ( DebugConfig.isLauncher() ) {
@@ -91,30 +93,60 @@ public class MogoApplication extends AbsMogoApplication {
DebugConfig.setActiveAIAssistFlag( BuildConfig.AI_ASSIST_ACTIVE_STAUTS );
DebugConfig.setCarMachineType( BuildConfig.CAR_MACHINE_TYPE );
DebugConfig.setProductFlavor( BuildConfig.FLAVOR_product );
+ DebugConfig.setSocketAppId( BuildConfig.SOCKET_APP_ID );
}
@Override
protected void init() {
super.init();
+ prepareBaseService(2_000L);
+ }
+
+ /**
+ * 基础服务:passport、location、socket
+ */
+ private void prepareBaseService(long delay) {
UiThreadHandler.postDelayed( () -> {
final IMogoServiceApis apis = ARouter.getInstance().navigation( IMogoServiceApis.class );
- apis.getSocketManagerApi( getApplicationContext() ).init( getApplicationContext(), "com.mogo.launcher" );
- apis.getPassportManagerApi().requestTicket( new IMogoTicketCallback() {
- @Override
- public void onSuccess( String ticket ) {
- Logger.d( TAG, "ticket = %s", ticket );
- }
+ // 第三方平台的sn是服务端生成的,所以必须在返回后才能开启
+ if ( TextUtils.isEmpty( Utils.getSn() ) ) {
+ preparePassportEnvironment( apis, () -> {
+ prepareSocketAndLocationServices( apis );
+ } );
+ } else {
+ preparePassportEnvironment( apis, null );
+ prepareSocketAndLocationServices( apis );
+ }
+ }, delay );
+ }
- @Override
- public void onError( int code, String msg ) {
- Logger.w( TAG, "code = %s, msg = %s", code, msg );
+ private void preparePassportEnvironment( IMogoServiceApis apis, Runnable after ) {
+ apis.getPassportManagerApi().requestTicket( new IMogoTicketCallback() {
+ @Override
+ public void onTicketGot( String ticket ) {
+ Logger.d( TAG, "ticket = %s", ticket );
+ }
+
+ @Override
+ public void onError( int code, String msg ) {
+ Logger.w( TAG, "code = %s, msg = %s", code, msg );
+ }
+
+ @Override
+ public void onLoginSuccess( String token, String sn ) {
+ if ( after != null ) {
+ after.run();
}
- } );
- apis.getLocationInfoApi().start();
- apis.getMapServiceApi().getSingletonLocationClient( getApplicationContext() ).addLocationListener( location -> {
- apis.getLocationInfoApi().provideLocation( location );
- } );
- }, 2_000L );
+ }
+ } );
+ }
+
+ private void prepareSocketAndLocationServices( IMogoServiceApis apis ) {
+ apis.getSocketManagerApi( getApplicationContext() ).init( getApplicationContext(), DebugConfig.getSocketAppId() );
+ apis.getLocationInfoApi().start();
+ apis.getMapServiceApi().getSingletonLocationClient( getApplicationContext() ).addLocationListener( location -> {
+ apis.getLocationInfoApi().provideLocation( location );
+ } );
}
@Override
diff --git a/app/src/main/res/values-xhdpi-1920x1000/strings.xml b/app/src/main/res/values-xhdpi-1920x1000/strings.xml
new file mode 100644
index 0000000000..4b537bbf4c
--- /dev/null
+++ b/app/src/main/res/values-xhdpi-1920x1000/strings.xml
@@ -0,0 +1,3 @@
+
+ 蘑菇知途
+
diff --git a/config.gradle b/config.gradle
index 75fb40c878..f0a58756c4 100644
--- a/config.gradle
+++ b/config.gradle
@@ -101,8 +101,8 @@ targetSdkVersion : 22,
moduleextensions : "com.mogo.module:module-extensions:${MOGO_MODULE_EXTENSIONS_VERSION}",
carcall : "com.mogo.module.carchatting:module-carchatting:${CARCHATTING_VERSION}",
carcallprovider : "com.mogo.module.carchatting:module-carchatting-provider:${CARCHATTINGPROVIDER_VERSION}",
- guideshow : "com.mogo.module.guideshow:module-guideshow:${MOGO_MODULE_GUIDESHOW_VERSION}",
- guideshowprovider : "com.mogo.module.guideshow:module-guideshow-provider:${MOGO_MODULE_GUIDESHOW_PROVIDER_VERSION}",
+// guideshow : "com.mogo.module.guideshow:module-guideshow:${MOGO_MODULE_GUIDESHOW_VERSION}",
+// guideshowprovider : "com.mogo.module.guideshow:module-guideshow-provider:${MOGO_MODULE_GUIDESHOW_PROVIDER_VERSION}",
// 在线车辆
moduleonlinecar : "com.mogo.module:module-onlinecar:${MOGO_MODULE_ONLINECAR_VERSION}",
// V2X
@@ -120,7 +120,7 @@ targetSdkVersion : 22,
mogomoduleauth : "com.mogo.module:module-authorize:${MOGO_MODULE_AUTHORIZE_VERSION}",
mogomoduleguide : "com.mogo.module:module-guide:${MOGO_MODULE_GUIDE_VERSION}",
// 长链
- socketsdk : 'com.zhidao.socketsdk:socketsdk:2.1.1',
+ socketsdk : 'com.zhidao.socketsdk:socketsdk:2.1.4',
socketsdkconnsvrprotoco : 'com.zhidao.ptech:connsvr-protoco:0.1.23',
socketsdkprotobufjava : 'com.google.protobuf:protobuf-java:3.5.1',
// OBU
diff --git a/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/passport/PassportManager.java b/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/passport/PassportManager.java
index 5090b53910..2a23051695 100644
--- a/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/passport/PassportManager.java
+++ b/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/passport/PassportManager.java
@@ -53,7 +53,7 @@ class PassportManager implements IMogoPassportManager {
Logger.d( TAG, "success" );
SpStorage.setTicket( ticket );
if ( callback != null ) {
- callback.onSuccess( ticket );
+ callback.onTicketGot( ticket );
}
}
diff --git a/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/socket/SocketManager.java b/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/socket/SocketManager.java
index f2db841a0a..22e6fb427c 100644
--- a/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/socket/SocketManager.java
+++ b/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/socket/SocketManager.java
@@ -87,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/build.gradle b/foudations/mogo-base-services-sdk/build.gradle
index 31f35d96b5..f2bd559880 100644
--- a/foudations/mogo-base-services-sdk/build.gradle
+++ b/foudations/mogo-base-services-sdk/build.gradle
@@ -30,11 +30,11 @@ dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation rootProject.ext.dependencies.arouter
// 上报位置
- implementation 'com.zhidao.locupload:loc-upload-sdk:1.0.9'
+ implementation 'com.zhidao.locupload:loc-upload-sdk:1.1.2'
// 长链
- implementation 'com.zhidao.socket:built-in-socket:1.0.13'
+ implementation 'com.zhidao.socket:built-in-socket:1.0.15'
// passport
- implementation 'com.zhidao.loginsdk:external:1.0.0'
+ implementation 'com.zhidao.tcloginsdk:tclogin:1.1.0'
annotationProcessor 'com.elegant.spi:compiler:1.0.3'
diff --git a/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/BaseServicesConstants.java b/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/BaseServicesConstants.java
new file mode 100644
index 0000000000..5d4c38a17a
--- /dev/null
+++ b/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/BaseServicesConstants.java
@@ -0,0 +1,16 @@
+package com.mogo.base.services;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/7/23
+ *
+ * 描述
+ */
+interface BaseServicesConstants {
+
+ /**
+ * 建立长链的通道ID
+ */
+ String SOCKET_CHANNEL_ID = "dataCrawler";
+}
diff --git a/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/locationinfo/MogoLocationInfoServices.java b/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/locationinfo/MogoLocationInfoServices.java
index 754ab1cbfa..8ecd0cb034 100644
--- a/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/locationinfo/MogoLocationInfoServices.java
+++ b/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/locationinfo/MogoLocationInfoServices.java
@@ -4,7 +4,6 @@ import android.content.Context;
import androidx.annotation.Keep;
-import com.elegant.spi.annotations.Service;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.map.location.MogoLocation;
import com.mogo.service.locationinfo.IMogoLocationInfoService;
@@ -12,8 +11,6 @@ import com.mogo.utils.logger.Logger;
import com.zhidao.locupload.LocEnvironment;
import com.zhidao.locupload.LocUploadConfig;
import com.zhidao.locupload.LocUploadManager;
-import com.zhidao.locupload.Platform;
-import com.zhidao.locupload.location.LocationServiceProvider;
public
/**
@@ -52,7 +49,7 @@ class MogoLocationInfoServices implements IMogoLocationInfoService {
@Override
public void provideLocation( MogoLocation location ) {
mLocation = location;
- Logger.d(TAG, "sdk - provideLocation");
+ Logger.d( TAG, "sdk - provideLocation" );
}
public MogoLocation getLocation() {
@@ -62,37 +59,22 @@ class MogoLocationInfoServices implements IMogoLocationInfoService {
@Override
public void start() {
LocUploadManager.getInstance().startUpload();
- Logger.d(TAG, "sdk - start");
+ Logger.d( TAG, "sdk - start" );
}
@Override
public void stop() {
LocUploadManager.getInstance().stopUpload();
- Logger.d(TAG, "sdk - stop");
+ Logger.d( TAG, "sdk - stop" );
}
@Override
public void init( Context context ) {
LocUploadConfig.instance().
- setAppId( "dataCrawler" ).
+ setAppId( DebugConfig.getSocketAppId() ).
setContext( context.getApplicationContext() ).
- setLocEnvironment( getEnvironment() ).
setLoggable( DebugConfig.isDebug() ).
- setPlatform( Platform.car ).
setLocInterval( 2000L );
- Logger.d(TAG, "sdk - init");
- }
-
- private LocEnvironment getEnvironment() {
- switch ( DebugConfig.getNetMode() ) {
- case 1:
- return LocEnvironment.dev;
- case 2:
- case 4:
- return LocEnvironment.qa;
- case 3:
- default:
- return LocEnvironment.release;
- }
+ Logger.d( TAG, "sdk - init" );
}
}
diff --git a/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/passport/PassportManager.java b/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/passport/PassportManager.java
index 38c1f2b4be..8f77ef1ecb 100644
--- a/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/passport/PassportManager.java
+++ b/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/passport/PassportManager.java
@@ -11,9 +11,9 @@ import com.mogo.service.passport.IMogoTicketCallback;
import com.mogo.utils.logger.Logger;
import com.zhidao.accountsdk.manager.CarPadClientManagerImpl;
import com.zhidao.accountsdk.manager.TicketInfoCallback;
-import com.zhidao.accountsdk.network.NetEnvironManager;
-import com.zhidao.tcloginsdk.LoginManagerImpl;
-import com.zhidao.tcloginsdk.ToCLoginManagerImpl;
+import com.zhidao.tcloginsdk.LoginManager;
+import com.zhidao.tcloginsdk.model.TokenData;
+import com.zhidao.tcloginsdk.network.LoginCallback;
public
/**
@@ -30,13 +30,14 @@ class PassportManager implements IMogoPassportManager {
private static volatile PassportManager sInstance;
- private PassportManager(){}
+ private PassportManager() {
+ }
@Keep
- public static PassportManager getInstance(){
- if( sInstance == null ){
- synchronized( PassportManager.class ) {
- if( sInstance == null ){
+ public static PassportManager getInstance() {
+ if ( sInstance == null ) {
+ synchronized ( PassportManager.class ) {
+ if ( sInstance == null ) {
sInstance = new PassportManager();
}
}
@@ -44,30 +45,46 @@ class PassportManager implements IMogoPassportManager {
return sInstance;
}
- public synchronized void release(){
+ public synchronized void release() {
sInstance = null;
}
@Override
public void requestTicket( final IMogoTicketCallback callback ) {
- getTicket( new TicketInfoCallback() {
+ LoginManager.getInstance( mContext ).login( DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE, DebugConfig.getProductFlavor(), new LoginCallback() {
@Override
- public void onSuccess( String ticket ) {
- Logger.d( TAG, "success" );
- SpStorage.setTicket( ticket );
+ public void onSuccess( TokenData.TokenResult result ) {
if ( callback != null ) {
- callback.onSuccess( ticket );
+ callback.onLoginSuccess( result.token, result.sn );
}
+ getTicket( new TicketInfoCallback() {
+ @Override
+ public void onSuccess( String ticket ) {
+ Logger.d( TAG, "success" );
+ SpStorage.setTicket( ticket );
+ if ( callback != null ) {
+ callback.onTicketGot( ticket );
+ }
+ }
+
+ @Override
+ public void onFailure( int code ) {
+ Logger.d( TAG, "fail" );
+ if ( callback != null ) {
+ callback.onError( code, "getTicket error." );
+ }
+ }
+ } );
}
@Override
- public void onFailure( int code ) {
- Logger.d( TAG, "fail" );
+ public void onFailure( int code, String msg ) {
if ( callback != null ) {
- callback.onError( code, "error." );
+ callback.onError( code, "login: " + msg );
}
}
} );
+
}
private void getTicket( TicketInfoCallback callback ) {
@@ -96,8 +113,6 @@ class PassportManager implements IMogoPassportManager {
// 演示环境用 qa 的
mode = DebugConfig.NET_MODE_QA;
}
- LoginManagerImpl.getInstance(mContext).setClientType(DebugConfig.getProductFlavor());
- LoginManagerImpl.getInstance( context ).setNetEnviron( mode );
- LoginManagerImpl.getInstance( context ).showLoginView();
+ LoginManager.getInstance( context ).setNetEnviron( mode );
}
}
diff --git a/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/socket/SocketManager.java b/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/socket/SocketManager.java
index cd588b0434..f9520decf1 100644
--- a/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/socket/SocketManager.java
+++ b/foudations/mogo-base-services-sdk/src/main/java/com/mogo/base/services/socket/SocketManager.java
@@ -7,7 +7,9 @@ import androidx.annotation.NonNull;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
+import com.mogo.base.services.BaseServicesConstants;
import com.mogo.commons.debug.DebugConfig;
+import com.mogo.commons.network.Utils;
import com.mogo.service.connection.IMogoMsgAckListener;
import com.mogo.service.connection.IMogoOnMessageListener;
import com.mogo.service.connection.IMogoSocketManager;
@@ -86,8 +88,9 @@ class SocketManager implements IMogoSocketManager, Callback {
.setAppContext( context.getApplicationContext() )
.setEnvironment( getEnvironment() )
.setClient( Platform.getClient( Platform.car ) )
- .setAppId( appId )
+ .setChannelId( BaseServicesConstants.SOCKET_CHANNEL_ID )
.setOpenAnalytics( true )
+ .setSn( Utils.getSn() )
.setDebug( DebugConfig.isDebug() );
SocketMessageDispatcher.getInstance().start( context );
}
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 c38e5425c7..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
@@ -110,35 +110,6 @@ public class AbsMogoApplication extends Application {
}
-// 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" );
-// }
-//
-// @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() {
try {
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 4ef12b6383..fff915fbb3 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
@@ -227,4 +227,14 @@ public class DebugConfig {
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;
+ }
}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Utils.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Utils.java
index f4040a23c5..90bc9e507d 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Utils.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Utils.java
@@ -2,6 +2,7 @@ package com.mogo.commons.network;
import android.Manifest;
import android.content.Context;
+import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.telephony.CellLocation;
import android.telephony.TelephonyManager;
@@ -9,6 +10,10 @@ import android.telephony.cdma.CdmaCellLocation;
import android.telephony.gsm.GsmCellLocation;
import android.text.TextUtils;
+import com.mogo.commons.AbsMogoApplication;
+import com.mogo.commons.debug.DebugConfig;
+import com.mogo.utils.storage.SharedPrefsMgr;
+
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -61,11 +66,11 @@ public class Utils {
public static final String PROPERTIES = "android.os.SystemProperties";
public static String getSn() {
- String sn = getSystemProperties( GSM_SERIAL );
- if ( TextUtils.isEmpty( sn ) ) {
- sn = getSystemProperties( BYD_SERIAL );
+
+ if ( DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE ) {
+ return SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).getString( "allocated_sn" );
}
- return sn;
+ return getSystemProperties( GSM_SERIAL );
}
public static String getFotaVersion() {
diff --git a/gradle.properties b/gradle.properties
index 860ef10b92..4809a406b2 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -60,7 +60,7 @@ MOGO_MODULE_V2X_VERSION=1.2.1.20
## 工程外部模块
# 探路
-MOGO_MODULE_TANLU_VERSION=1.3.1.1
+MOGO_MODULE_TANLU_VERSION=1.3.1.6
# 车聊聊
CARCHATTING_VERSION=1.4.6
# 车聊聊接口
@@ -78,7 +78,7 @@ MOGO_MODULE_PUSH_NOOP_VERSION=1.1.5.6
# 广告资源位
MOGO_MODULE_AD_CARD_VERSION=1.0.1
# 探路上报和分享模块
-TANLULIB_VERSION=1.3.1.1
+TANLULIB_VERSION=1.3.1.6
MOGO_MODULE_EVENT_PANEL_VERSION = 1.0.0-SNAPSHOT
MOGO_MODULE_EVENT_PANEL_NOOP_VERSION = 1.0.0-SNAPSHOT
#左侧面板模块
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt
index 055f1ee6ed..5e2ad53c7d 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt
@@ -131,6 +131,7 @@ open class IMogoAuthorizeController {
}
}
onError {
+ //todo
Logger.d(TAG, it.message ?: "checkIfNeedAuthorize onError, message is null")
setAuthorizeStatus(agreementType, true)
}
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt
index 1d28760113..76b7977927 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt
@@ -9,22 +9,24 @@ import com.mogo.map.listener.IMogoMapListener
import com.mogo.map.location.IMogoLocationListener
import com.mogo.map.marker.IMogoMarkerClickListener
import com.mogo.map.navi.IMogoNaviListener
-import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant.Companion.PATH_AGREEMENT_FRAGMENT
import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant.Companion.PATH_AGREEMENT_MODULE_NAME
import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Companion.AUTHORIZE_TYPE_LAUNCHER_MAIN
import com.mogo.module.authorize.authprovider.launcher.MogoMainAuthorize.Companion.mogoAuthShow
+import com.mogo.service.MogoServicePaths
+import com.mogo.service.auth.IMogoAuthManager
import com.mogo.service.module.IMogoModuleLifecycle
-import com.mogo.service.module.IMogoModuleProvider
import com.mogo.service.module.ModuleType
import com.mogo.utils.logger.Logger
-@Route(path = PATH_AGREEMENT_FRAGMENT)
-class MogoAuthorizeProvider : IMogoModuleProvider {
+@Route(path = MogoServicePaths.PATH_AGREEMENT)
+class MogoAuthorizeProvider : IMogoAuthManager {
companion object {
const val TAG = "MogoAuthorizeProvider"
}
+ private var mContext:Context? = null
+
override fun createFragment(context: Context?, data: Bundle?): Fragment? {
return null
}
@@ -46,7 +48,7 @@ class MogoAuthorizeProvider : IMogoModuleProvider {
}
override fun getType(): Int {
- return ModuleType.TYPE_SERVICE
+ return 0
}
override fun getNaviListener(): IMogoNaviListener? {
@@ -61,12 +63,10 @@ class MogoAuthorizeProvider : IMogoModuleProvider {
return null
}
- override fun init(context: Context) {
- //todo 引导判断暂时去掉 后续引导流程更改完再放开
-// todo if (isDeviceOfD() && hasGuide() && mogoAuthShow.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_MAIN)) {
- // todo F系列暂时没有授权功能 1.1需求中添加 全量上
+ override fun resetContext(context: Context?) {
+ mContext = context
if (mogoAuthShow.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_MAIN)) {
- mogoAuthShow.invokeAuthorizeForShow(context)
+ mogoAuthShow.invokeAuthorizeForShow(mContext!!)
} else {
//首次进入Launcher同步一下授权状态,防止由于用户清除数据造成首次加载还会出现授权状态不同步问题
mogoAuthShow.updateAuthorizeStatus(AUTHORIZE_TYPE_LAUNCHER_MAIN)
@@ -74,6 +74,13 @@ class MogoAuthorizeProvider : IMogoModuleProvider {
}
}
+ override fun init(context: Context) {
+ //todo 引导判断暂时去掉 后续引导流程更改完再放开
+// todo if (isDeviceOfD() && hasGuide() && mogoAuthShow.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_MAIN)) {
+ // todo F系列暂时没有授权功能 1.1需求中添加 全量上
+
+ }
+
override fun getAppPackage(): String? {
return null
}
@@ -81,4 +88,5 @@ class MogoAuthorizeProvider : IMogoModuleProvider {
override fun getAppName(): String? {
return null
}
+
}
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/AuthorizeConstant.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/AuthorizeConstant.kt
index d41c4df56e..3da6930843 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/AuthorizeConstant.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/AuthorizeConstant.kt
@@ -6,11 +6,6 @@ class AuthorizeConstant {
const val PROVIDER_MODULE = "/authorize/biz"
const val PROVIDER_LAUNCHER = "/authorize/showbiz"
- /**
- * 展示用户协议模块地址
- */
- const val PATH_AGREEMENT_FRAGMENT = "/agreement/showFragment"
-
/**
* provider模块实例名称(暂时仅有卡片用到)
*/
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt
index 933e83abcf..cec3e22d62 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt
@@ -2,15 +2,12 @@ package com.mogo.module.authorize.authprovider.launcher
import android.content.Context
import android.os.Looper
-import com.mogo.commons.AbsMogoApplication
import com.mogo.module.authorize.authprovider.biz.MogoAuthorizeManagerImpl
import com.mogo.module.authorize.authprovider.biz.MogoAuthorizeRegisterHandler
-import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant
import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Companion.AUTHORIZE_TYPE_LAUNCHER_MAIN
-import com.mogo.module.authorize.layout.AuthorizeLayout
+import com.mogo.module.authorize.layout.AuthorizeDialog
import com.mogo.module.authorize.model.proxy.toAuthorizeType
import com.mogo.module.authorize.util.SharedPreferenceUtil.hasAuth
-import com.mogo.module.common.wm.WindowManagerView
import com.mogo.utils.logger.Logger
class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMogoAuthorizeMainProvider {
@@ -24,7 +21,9 @@ class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMog
}
}
- private var windowManagerView: WindowManagerView? = null
+ private var mContext: Context? = null
+
+ private var authorizeDialog: AuthorizeDialog? = null
override fun hasRegister(tag: String): Boolean {
if (tag.isNullOrBlank()) return false
@@ -41,7 +40,8 @@ class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMog
}
fun invokeAuthorizeForShow(context: Context) {
- pushLayoutToMainWindow(context, AUTHORIZE_TYPE_LAUNCHER_MAIN)
+ mContext = context
+ pushLayoutToMainWindow(AUTHORIZE_TYPE_LAUNCHER_MAIN)
}
fun showAuthorizeView(tag: String, forbiddenVoice: (() -> Unit), onError: ((String) -> Unit)) {
@@ -64,25 +64,26 @@ class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMog
Logger.d(TAG, "ready to forbidden voice")
forbiddenVoice.invoke()
Logger.d(TAG, "ready to push fragment")
- pushLayoutToMainWindow(AbsMogoApplication.getApp().applicationContext,tag)
+ pushLayoutToMainWindow(tag)
}
fun hideAuthorizeView() {
- windowManagerView?.dismiss()
+ authorizeDialog?.dismiss()
}
- private fun pushLayoutToMainWindow(context: Context,tag: String) {
- if (windowManagerView == null) {
- val authorizeLayout = AuthorizeLayout(tag)
- val view = authorizeLayout.getLayoutView()
- windowManagerView = WindowManagerView.Builder(context).contentView(view).build()
+ private fun pushLayoutToMainWindow(tag: String) {
+ if (authorizeDialog == null) {
+ authorizeDialog = AuthorizeDialog(tag, mContext!!)
+ authorizeDialog!!.setOnDismissListener {
+ authorizeDialog = null
+ }
}
- if (windowManagerView!!.isShowing) {
+ if (authorizeDialog!!.isShowing) {
Logger.d(TAG, "User is operation authorization, do not repeat invoke")
return
} else {
Logger.d(TAG, "pushLayoutToMainWindow")
- windowManagerView!!.show()
+ authorizeDialog!!.show()
}
}
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/layout/AuthorizeDialog.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/layout/AuthorizeDialog.kt
new file mode 100644
index 0000000000..5d74894005
--- /dev/null
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/layout/AuthorizeDialog.kt
@@ -0,0 +1,203 @@
+package com.mogo.module.authorize.layout
+
+import android.content.Context
+import android.text.Html
+import android.view.View
+import android.widget.Button
+import android.widget.TextView
+import androidx.constraintlayout.widget.ConstraintLayout
+import com.mogo.commons.AbsMogoApplication
+import com.mogo.commons.debug.DebugConfig
+import com.mogo.module.authorize.R
+import com.mogo.module.authorize.util.AnalyticsUtil
+import com.mogo.module.authorize.voice.IVoiceAuthorizeIntentListener
+import com.mogo.module.authorize.voice.IVoiceCommandListener
+import com.mogo.module.authorize.voice.VoiceUtil
+import com.mogo.module.common.dialog.BaseFloatDialog
+import com.mogo.utils.TipToast
+import com.mogo.utils.logger.Logger
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.async
+import kotlinx.coroutines.withContext
+
+class AuthorizeDialog : BaseFloatDialog, View.OnClickListener, IVoiceCommandListener, IVoiceAuthorizeIntentListener {
+
+ companion object {
+ const val TAG = "AuthorizeDialog"
+ }
+
+ private var mContext: Context? = null
+ private var invokeTag: String? = null
+
+ private var agreementId: Long = 0L
+
+ private var clTopParent: ConstraintLayout? = null
+ private var clErrorContainer: ConstraintLayout? = null
+ private var clLoadAuthorizeContainer: ConstraintLayout? = null
+ private var clContainer: ConstraintLayout? = null
+ private var clAuthorizeLoading: ConstraintLayout? = null
+ private var btnAgree: Button? = null
+ private var btnDisAgree: Button? = null
+ private var btnLoadingError: Button? = null
+ private var tvTitle: TextView? = null
+ private var tvContent: TextView? = null
+ private var tvButtonContent: TextView? = null
+ private var tvLastContent: TextView? = null
+
+ private var authorizeController: AuthorizeController? = null
+
+ constructor(invokeTag: String, context: Context) : super(context) {
+ mContext = context
+ this.invokeTag = invokeTag
+ initView()
+ }
+
+ private fun initView() {
+ setContentView(R.layout.module_authorize_fragment)
+ setWrapContent()
+ initViews()
+ }
+
+ private fun setWrapContent() {
+ val mWindow = window
+ if(DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_BYD){
+ if (mWindow != null) {
+ val lp = mWindow.attributes
+ lp.width = 1024
+ lp.height = 600
+ mWindow.attributes = lp
+ }
+ }else{
+ if (mWindow != null) {
+ val lp = mWindow.attributes
+ lp.width = 1920
+ lp.height = 1000
+ mWindow.attributes = lp
+ }
+ }
+ }
+
+ fun initViews() {
+ Logger.d(TAG, "initView ")
+ AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_AUTHORIZE_SHOW)
+ init()
+ Logger.d(TAG, "invokeTag :$invokeTag")
+ authorizeController = AuthorizeController(invokeTag!!)
+ invokeAuthorizationContent()
+ VoiceUtil.registerAll(this, this)
+ }
+
+ private fun init() {
+ clTopParent = findViewById(R.id.clAuthorizeTopParent)
+ clErrorContainer = findViewById(R.id.clLoadingErrorContainer)
+ clLoadAuthorizeContainer = findViewById(R.id.clLoadingAuthorizeContainer)
+ clContainer = findViewById(R.id.clAuthorizeContainer)
+ clAuthorizeLoading = findViewById(R.id.clAuthorizeLoading)
+ btnAgree = findViewById(R.id.btnAuthorizeAgree)
+ btnDisAgree = findViewById(R.id.btnAuthorizeDisAgree)
+ btnLoadingError = findViewById(R.id.btnAuthorizeLoadingError)
+ tvTitle = findViewById(R.id.tvAuthorizeTitle)
+ tvContent = findViewById(R.id.tvAuthorizeContent)
+ tvButtonContent = findViewById(R.id.tvAuthorizeButtonContent)
+ tvLastContent = findViewById(R.id.tvAuthorizeLastContent)
+ btnAgree?.setOnClickListener(this)
+ btnDisAgree?.setOnClickListener(this)
+ btnLoadingError?.setOnClickListener(this)
+ clTopParent?.setOnClickListener(this)
+ clContainer?.setOnClickListener(this)
+ clErrorContainer?.setOnClickListener(this)
+ clLoadAuthorizeContainer?.setOnClickListener(this)
+ clAuthorizeLoading?.setOnClickListener(this)
+ }
+
+ private fun readyToAuthorize() {
+ clErrorContainer?.visibility = View.GONE
+ clLoadAuthorizeContainer?.visibility = View.VISIBLE
+ }
+
+ private fun showAuthorizationAgreementContent(
+ agreementId: Long,
+ agreementContent: String,
+ agreementTitle: String,
+ agreementBottom: String,
+ agreementLast: String) {
+ VoiceUtil.speak(AbsMogoApplication.getApp().applicationContext.resources.getString(R.string.module_authorize_agreement_tip), AbsMogoApplication.getApp().applicationContext, this)
+ this.agreementId = agreementId
+ clLoadAuthorizeContainer?.visibility = View.GONE
+ clContainer?.visibility = View.VISIBLE
+ tvTitle?.text = Html.fromHtml(agreementTitle)
+ GlobalScope.async(Dispatchers.IO) {
+ val spannable = Html.fromHtml(agreementContent)
+ withContext(Dispatchers.Main) {
+ tvContent?.text = spannable
+ }
+ }
+ tvButtonContent?.text = Html.fromHtml(agreementBottom)
+ tvLastContent?.text = Html.fromHtml(agreementLast)
+ }
+
+ private fun showAuthorizationError() {
+ clLoadAuthorizeContainer?.visibility = View.GONE
+ clErrorContainer?.visibility = View.VISIBLE
+ }
+
+ private fun voiceAuthorizeError() {
+ TipToast.shortTip("授权失败,请稍后重试")
+ VoiceUtil.speak(AbsMogoApplication.getApp().applicationContext.getString(R.string.module_authorize_failed), AbsMogoApplication.getApp().applicationContext, this)
+ Logger.d(TAG, "onDestroy")
+ VoiceUtil.unregisterAll(AbsMogoApplication.getApp().applicationContext, this)
+ }
+
+ override fun onClick(v: View) {
+ when (v.id) {
+ R.id.btnAuthorizeAgree -> {
+ AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_AUTHORIZE_CLICK, hashMapOf("operation_type" to 1, "operation_result" to 1))
+ agreeAuthorize()
+ }
+ R.id.btnAuthorizeDisAgree -> {
+ AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_AUTHORIZE_CLICK, hashMapOf("operation_type" to 1, "operation_result" to 2))
+ disAgreeAuthorize()
+ }
+ R.id.clLoadingErrorContainer, R.id.btnAuthorizeLoadingError -> {
+ invokeAuthorizationContent()
+ }
+ R.id.clAuthorizeTopParent -> {
+ Logger.i(TAG, "dismiss authorizeView")
+ authorizeController?.onDestroy()
+ }
+ }
+ }
+
+ override fun onVoiceCmdAgree() {
+ AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_AUTHORIZE_CLICK, hashMapOf("operation_type" to 2, "operation_result" to 1))
+ agreeAuthorize()
+ }
+
+ override fun onVoiceCmdDisAgree() {
+ AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_AUTHORIZE_CLICK, hashMapOf("operation_type" to 2, "operation_result" to 2))
+ disAgreeAuthorize()
+ }
+
+ private fun agreeAuthorize() {
+ authorizeController?.agreeAuthorize(invokeTag!!, agreementId) {
+ voiceAuthorizeError()
+ }
+ }
+
+ private fun disAgreeAuthorize() {
+ authorizeController?.disAgreeAuthorize(invokeTag!!, agreementId) {
+ voiceAuthorizeError()
+ }
+ }
+
+ private fun invokeAuthorizationContent() {
+ authorizeController?.invokeAuthorizationContent(invokeTag!!, {
+ readyToAuthorize()
+ }, { id: Long, content: String, title: String, bottomContent: String, lastContent: String ->
+ showAuthorizationAgreementContent(id, content, title, bottomContent, lastContent)
+ }, {
+ showAuthorizationError()
+ })
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/layout/AuthorizeLayout.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/layout/AuthorizeLayout.kt
index 37248c1cb1..adc6968eb1 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/layout/AuthorizeLayout.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/layout/AuthorizeLayout.kt
@@ -50,11 +50,11 @@ class AuthorizeLayout(private val invokeTag: String) : View.OnClickListener, IVo
return layoutInflater
}
- private fun getLayoutId(): Int {
+ fun getLayoutId(): Int {
return R.layout.module_authorize_fragment
}
- private fun initViews(mRootView: View) {
+ fun initViews(mRootView: View) {
Logger.d(TAG, "initView ")
AnalyticsUtil.track(INVOKE_TRACK_AUTHORIZE_SHOW)
init(mRootView)
diff --git a/modules/mogo-module-authorize/src/main/res/layout-xhdpi-1920x1000/module_authorize_fragment.xml b/modules/mogo-module-authorize/src/main/res/layout-xhdpi-1920x1000/module_authorize_fragment.xml
index 43b33aa0c5..3365c3c4d6 100644
--- a/modules/mogo-module-authorize/src/main/res/layout-xhdpi-1920x1000/module_authorize_fragment.xml
+++ b/modules/mogo-module-authorize/src/main/res/layout-xhdpi-1920x1000/module_authorize_fragment.xml
@@ -151,7 +151,7 @@
android:layout_height="0px"
android:layout_marginBottom="@dimen/dp_139"
android:scrollbarSize="@dimen/dp_442"
- android:layout_marginTop="@dimen/dp_139"
+ android:layout_marginTop="@dimen/dp_35"
android:scrollbarTrackHorizontal="@drawable/module_authorize_scrollbar"
android:scrollbarThumbVertical="@drawable/module_authorize_scrollbar"
app:layout_constraintBottom_toBottomOf="parent"
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java
new file mode 100644
index 0000000000..72c5960fd4
--- /dev/null
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java
@@ -0,0 +1,47 @@
+package com.mogo.module.common.wm;
+
+
+import android.app.Dialog;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.mogo.module.common.dialog.BaseFloatDialog;
+import com.mogo.utils.logger.Logger;
+
+/**
+ * 采用Dialog实现接口
+ */
+class DialogImpl implements IWindowManagerView {
+ private Dialog dialog;
+ private View contentView;
+
+ @Override
+ public void init(WindowManagerView.WMViewParams params) {
+ Logger.d("DialogImpl", "init====");
+ dialog = new BaseFloatDialog(params.mContext);
+ contentView = params.mContentView;
+ Logger.d("DialogImpl", "params view : " + contentView);
+ dialog.setContentView(contentView);
+ }
+
+ @Override
+ public boolean isShowing() {
+ return dialog.isShowing();
+ }
+
+ @Override
+ public void show() {
+ dialog.show();
+ }
+
+ @Override
+ public void hide() {
+ /*
+ * 取得view的父组件,然后移除view
+ */
+ if (contentView != null) {
+ ((ViewGroup) contentView.getParent()).removeView(contentView);
+ }
+ dialog.dismiss();
+ }
+}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java
new file mode 100644
index 0000000000..d610cea67a
--- /dev/null
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java
@@ -0,0 +1,25 @@
+package com.mogo.module.common.wm;
+
+interface IWindowManagerView {
+ /**
+ * 初始化
+ * @param params contentView包装类
+ */
+ void init(WindowManagerView.WMViewParams params);
+
+ /**
+ * 是否显示
+ * @return true - 显示中
+ */
+ boolean isShowing();
+
+ /**
+ * 显示
+ */
+ void show();
+
+ /**
+ * 隐藏
+ */
+ void hide();
+}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java
new file mode 100644
index 0000000000..4821f6b0a2
--- /dev/null
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java
@@ -0,0 +1,67 @@
+package com.mogo.module.common.wm;
+
+import android.content.Context;
+import android.graphics.PixelFormat;
+import android.os.Build;
+import android.view.Gravity;
+import android.view.WindowManager;
+
+import com.mogo.module.common.utils.CarSeries;
+import com.mogo.utils.WindowUtils;
+
+/**
+ * 采用windowManager实现接口
+ */
+class WindowManagerImpl implements IWindowManagerView {
+ private WindowManager mWindowManager;
+ private WindowManager.LayoutParams mLayoutParams;
+ private WindowManagerView.WMViewParams mParams;
+ private boolean isShowing;
+ @Override
+ public void init(WindowManagerView.WMViewParams params) {
+ mParams = params;
+ mWindowManager = (WindowManager) mParams.mContext.getApplicationContext().getSystemService( Context.WINDOW_SERVICE );
+ mLayoutParams = new WindowManager.LayoutParams();
+ if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ) {
+ mLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+ } else {
+ mLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
+ }
+ mLayoutParams.format = PixelFormat.TRANSLUCENT;
+ mLayoutParams.gravity = Gravity.CENTER;
+ mLayoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
+
+ if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) {
+ mLayoutParams.width = 1920;
+ mLayoutParams.height = 1080;
+ } else {
+ mLayoutParams.width = WindowUtils.getScreenWidth( mParams.mContext );
+ mLayoutParams.height = WindowUtils.getScreenHeight( mParams.mContext );
+ }
+ mLayoutParams.dimAmount = 0.5f;
+ mLayoutParams.x = 0;
+ mLayoutParams.y = 0;
+ }
+
+ @Override
+ public boolean isShowing() {
+ return isShowing;
+ }
+
+ @Override
+ public void show() {
+ if(!isShowing){
+ isShowing = true;
+ mWindowManager.addView(mParams.mContentView,mLayoutParams);
+ }
+ }
+
+ @Override
+ public void hide() {
+ if (isShowing && mParams != null) {
+ mWindowManager.removeView(mParams.mContentView);
+ isShowing = false;
+ }
+
+ }
+}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java
index 4c60022b5d..d3c054a2ca 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java
@@ -11,6 +11,7 @@ import android.view.WindowManager;
import androidx.annotation.IdRes;
import androidx.annotation.LayoutRes;
+import com.mogo.commons.debug.DebugConfig;
import com.mogo.module.common.utils.CarSeries;
import com.mogo.utils.WindowUtils;
@@ -23,89 +24,57 @@ import com.mogo.utils.WindowUtils;
public class WindowManagerView {
private WMViewParams mParams;
- private boolean mIsShowing;
- private WindowManager mWindowManager;
- private WindowManager.LayoutParams mLayoutParams;
- private WindowManagerView( WMViewParams params ) {
+ private IWindowManagerView managerView;
+
+ private WindowManagerView(WMViewParams params) {
this.mParams = params;
- init();
- }
-
- private void init() {
- mWindowManager = ( WindowManager ) mParams.mContext.getApplicationContext().getSystemService( Context.WINDOW_SERVICE );
- mLayoutParams = new WindowManager.LayoutParams();
- if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ) {
- mLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
- } else {
- mLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
- }
- mLayoutParams.format = PixelFormat.TRANSLUCENT;
- mLayoutParams.gravity = Gravity.CENTER;
- mLayoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
-
- if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) {
- mLayoutParams.width = 1920;
- mLayoutParams.height = 1080;
- } else {
- mLayoutParams.width = WindowUtils.getScreenWidth( mParams.mContext );
- mLayoutParams.height = WindowUtils.getScreenHeight( mParams.mContext );
- }
- mLayoutParams.dimAmount = 0.5f;
- mLayoutParams.x = 0;
- mLayoutParams.y = 0;
+ managerView = new DialogImpl();
+ managerView.init(params);
+// init();
}
public boolean isShowing() {
- return mIsShowing;
+ return managerView.isShowing();
}
- public < T extends View > T findViewById( @IdRes int id ) {
- return mParams.mContentView.findViewById( id );
+ public T findViewById(@IdRes int id) {
+ return mParams.mContentView.findViewById(id);
}
public void show() {
- if ( mIsShowing ) {
- return;
- }
- mIsShowing = true;
- mWindowManager.addView( mParams.mContentView, mLayoutParams );
+ managerView.show();
}
public void dismiss() {
- if ( !mIsShowing ) {
- return;
- }
- if ( mParams != null ) {
- mWindowManager.removeViewImmediate( mParams.mContentView );
- }
- mIsShowing = false;
+ managerView.hide();
}
public static class Builder {
private WMViewParams mParams = null;
- public Builder( Context context ) {
+ public Builder(Context context) {
mParams = new WMViewParams();
mParams.mContext = context;
}
- public Builder contentView( View contentView ) {
+ public Builder contentView(View contentView) {
mParams.mContentView = contentView;
return this;
}
- public Builder contentView( @LayoutRes int contentViewId ) {
- mParams.mContentView = LayoutInflater.from( mParams.mContext ).inflate( contentViewId, null );
+ public Builder contentView(@LayoutRes int contentViewId) {
+ mParams.mContentView = LayoutInflater.from(mParams.mContext).inflate(contentViewId,
+ null);
return this;
}
public WindowManagerView build() {
- if ( mParams.mContentView == null ) {
- throw new NullPointerException( "WMViewParams#mContentView must not be null." );
+ if (mParams.mContentView == null) {
+ throw new NullPointerException("WMViewParams#mContentView must not be null.");
}
- return new WindowManagerView( mParams );
+ return new WindowManagerView(mParams);
}
}
diff --git a/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml
index d56caf71d6..17412b24d7 100644
--- a/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml
@@ -1016,7 +1016,9 @@
997px
998px
999px
+ 1000px
1300px
+ 1920px
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java
index cef726c5b2..11aa6dee90 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java
@@ -7,6 +7,7 @@ import androidx.lifecycle.LifecycleOwner;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.mvp.Presenter;
+import com.mogo.commons.network.Utils;
import com.mogo.module.extensions.net.UserInfoNetApiServices;
import com.mogo.module.extensions.userinfo.UserInfo;
import com.mogo.module.extensions.userinfo.UserInfoConstant;
@@ -23,7 +24,6 @@ import com.mogo.service.statusmanager.IMogoMsgCenter;
import com.mogo.service.statusmanager.IMogoMsgCenterListener;
import com.mogo.utils.digest.DigestUtils;
import com.mogo.utils.logger.Logger;
-import com.zhidao.auto.platform.util.DeviceUtil;
import java.util.Map;
@@ -113,7 +113,7 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
private UserInfo userInfo;
public void requestUserInfo() {
Map params = new ArrayMap<>();
- params.put("sn", DeviceUtil.getSn());
+ params.put("sn", Utils.getSn());
params.put("source", "2");
String sign = createSign(params, "JGqZw9");
params.put("sig", sign);
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java
index e638517410..c4ca90cd05 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java
@@ -8,6 +8,7 @@ import androidx.lifecycle.LifecycleOwner;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.mvp.Presenter;
+import com.mogo.commons.network.Utils;
import com.mogo.module.extensions.R;
import com.mogo.module.extensions.net.UserInfoNetApiServices;
import com.mogo.module.extensions.userinfo.UserInfo;
@@ -25,7 +26,6 @@ import com.mogo.service.statusmanager.IMogoMsgCenter;
import com.mogo.service.statusmanager.IMogoMsgCenterListener;
import com.mogo.utils.digest.DigestUtils;
import com.mogo.utils.logger.Logger;
-import com.zhidao.auto.platform.util.DeviceUtil;
import java.util.Map;
@@ -113,7 +113,7 @@ public class EntrancePresenter extends Presenter implements Weathe
private UserInfo userInfo;
public void requestUserInfo() {
Map params = new ArrayMap<>();
- params.put("sn", DeviceUtil.getSn());
+ params.put("sn", Utils.getSn());
params.put("source", "2");
String sign = createSign(params, "JGqZw9");
params.put("sig", sign);
diff --git a/modules/mogo-module-gps-simulator-debug/src/main/java/com/mogo/module/gps/simulator/Utils.java b/modules/mogo-module-gps-simulator-debug/src/main/java/com/mogo/module/gps/simulator/Utils.java
index 4978caa21e..660015b14a 100644
--- a/modules/mogo-module-gps-simulator-debug/src/main/java/com/mogo/module/gps/simulator/Utils.java
+++ b/modules/mogo-module-gps-simulator-debug/src/main/java/com/mogo/module/gps/simulator/Utils.java
@@ -1,5 +1,9 @@
package com.mogo.module.gps.simulator;
+import com.mogo.commons.AbsMogoApplication;
+import com.mogo.commons.debug.DebugConfig;
+import com.mogo.utils.storage.SharedPrefsMgr;
+
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -15,6 +19,9 @@ class Utils {
public static final String PROPERTIES = "android.os.SystemProperties";
public static String getSn() {
+ if ( DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE ) {
+ return SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).getString( "allocated_sn" );
+ }
return getSystemProperties( GSM_SERIAL );
}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java
index 0110f42f1f..61c20a0d37 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java
@@ -152,7 +152,7 @@ public class EventDispatchCenter implements
*
* @param callback
*/
- void setMapLoadedCallback( Runnable callback ){
+ void setMapLoadedCallback( Runnable callback ) {
this.mMapLoadedCallback = callback;
}
@@ -162,6 +162,21 @@ public class EventDispatchCenter implements
mMapLoadedCallback.run();
mMapLoadedCallback = null;
}
+
+ Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
+ if ( iterator == null ) {
+ return;
+ }
+ while ( iterator.hasNext() ) {
+ IMogoMapListener listener = iterator.next();
+ if ( listener != null ) {
+ try {
+ listener.onMapLoaded();
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error." );
+ }
+ }
+ }
}
@Override
@@ -466,46 +481,46 @@ public class EventDispatchCenter implements
}
@Override
- public void showCarLocationInfo(CarLocationInfo info) {
+ public void showCarLocationInfo( CarLocationInfo info ) {
Iterator< IMogoObuDataChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getObuDataChangedListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
- iterator.next().showCarLocationInfo(info);
+ iterator.next().showCarLocationInfo( info );
}
}
@Override
- public void showOtherInfo(String info) {
+ public void showOtherInfo( String info ) {
Iterator< IMogoObuDataChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getObuDataChangedListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
- iterator.next().showOtherInfo(info);
+ iterator.next().showOtherInfo( info );
}
}
@Override
- public void showTrafficLightInfo(TrafficLightInfo info) {
+ public void showTrafficLightInfo( TrafficLightInfo info ) {
Iterator< IMogoObuDataChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getObuDataChangedListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
- iterator.next().showTrafficLightInfo(info);
+ iterator.next().showTrafficLightInfo( info );
}
}
@Override
- public void showCarEventInfo(CarEventInfo info) {
+ public void showCarEventInfo( CarEventInfo info ) {
Iterator< IMogoObuDataChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getObuDataChangedListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
- iterator.next().showCarEventInfo(info);
+ iterator.next().showCarEventInfo( info );
}
}
}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java
index 7df43712f8..5384a5c664 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java
@@ -21,6 +21,7 @@ import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.map.MapCenterPointStrategy;
import com.mogo.module.common.map.Scene;
+import com.mogo.module.common.utils.CarSeries;
import com.mogo.module.main.cards.MogoModulesManager;
import com.mogo.module.main.service.MogoMainService;
import com.mogo.module.main.windowview.FloatingViewHandler;
@@ -30,7 +31,6 @@ import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoModuleProvider;
-import com.mogo.service.obu.IMogoObuManager;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.utils.logger.Logger;
import com.zhidao.autopilot.support.api.AutopilotServiceManage;
@@ -115,6 +115,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mServiceApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation();
}
mServiceApis.getShareManager().resetContext(this);
+ mServiceApis.getAuthManagerApi().resetContext(this);
mMogoStatusManager = mServiceApis.getStatusManagerApi();
mMogoStatusManager.setMainPageLaunchedStatus( TAG, true );
AutopilotServiceManage.getInstance().init( getContext() );
@@ -244,12 +245,21 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
super.onPause();
mMogoStatusManager.setMainPageResumeStatus( TAG, false );
mMogoStatusManager.setMainPageLaunchedStatus( TAG, false );
- if ( !mIsHomeKeyDown || !DebugConfig.isLauncher() ) {
+ if ( shouldCloseADASPanel() ) {
mServiceApis.getAdasControllerApi().closeADAS();
}
mIsHomeKeyDown = false;
}
+ private boolean shouldCloseADASPanel(){
+ // m4 系列因为按home键会造成页面pause后resume,造成adas panel 闪烁
+ // f 系列加上上滑返回桌面后会走 mIsHomeKeyDown = true,但是不会造成页面pause
+ // 独立 app 任何情况下都需要隐藏 adas
+ return !mIsHomeKeyDown
+ || CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X
+ || !DebugConfig.isLauncher();
+ }
+
@Override
protected void onStop() {
super.onStop();
diff --git a/modules/mogo-module-main/src/main/res/drawable-ldpi/module_apps_bg_card.png b/modules/mogo-module-main/src/main/res/drawable-ldpi/module_apps_bg_card.png
deleted file mode 100644
index de1e81e0d9..0000000000
Binary files a/modules/mogo-module-main/src/main/res/drawable-ldpi/module_apps_bg_card.png and /dev/null differ
diff --git a/modules/mogo-module-main/src/main/res/drawable-mdpi/module_apps_bg_card.png b/modules/mogo-module-main/src/main/res/drawable-mdpi/module_apps_bg_card.png
deleted file mode 100644
index de1e81e0d9..0000000000
Binary files a/modules/mogo-module-main/src/main/res/drawable-mdpi/module_apps_bg_card.png and /dev/null differ
diff --git a/modules/mogo-module-main/src/main/res/drawable-xhdpi-1920x1000/module_main_launcher_bg.png b/modules/mogo-module-main/src/main/res/drawable-xhdpi-1920x1000/module_main_launcher_bg.png
new file mode 100644
index 0000000000..e322c3ccb2
Binary files /dev/null and b/modules/mogo-module-main/src/main/res/drawable-xhdpi-1920x1000/module_main_launcher_bg.png differ
diff --git a/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_apps_bg_card.png b/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_apps_bg_card.png
deleted file mode 100644
index a82b29541a..0000000000
Binary files a/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_apps_bg_card.png and /dev/null differ
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/KwPresenter.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/KwPresenter.java
index a45a42bb6d..60810062c4 100644
--- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/KwPresenter.java
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/KwPresenter.java
@@ -14,7 +14,6 @@ import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
-import com.mogo.utils.logger.Logger;
import cn.kuwo.autosdk.api.KWAPI;
import cn.kuwo.autosdk.api.OnGetSongImgUrlListener;
@@ -43,14 +42,14 @@ public class KwPresenter extends BaseMediaPresenter {
kwapi = KWAPI.createKWAPI(context, "auto");
kwapi.registerConnectedListener(b -> {
- Logger.d(TAG, "onConnected: " + b);
+ Log.d(TAG, "onConnected: " + b);
Log.d(TAG, "onConnected: " + b);
isBind = b;
if (!isBind) {
mView.onMusicStopped();
}else{
PlayerStatus currentState = kwapi.getPlayerStatus();
- Logger.d(TAG, "check current status: " + currentState);
+ Log.d(TAG, "check current status: " + currentState);
Log.d(TAG, "check current status: " + currentState);
if(currentState == PlayerStatus.BUFFERING||currentState == PlayerStatus.PLAYING){
currentMedia.setPlayState(MusicConstant.PLAY_STATE_PLAYING);
@@ -62,13 +61,16 @@ public class KwPresenter extends BaseMediaPresenter {
});
kwapi.registerExitListener(() -> {
- Logger.d(TAG, "onExit===");
+ Log.d(TAG, "onExit===");
Log.d(TAG, "onExit===");
mView.onAppExit();
});
kwapi.registerPlayerStatusListener((playerStatus, music) -> {
- Logger.d(TAG, "onPlayerStatusListener: " + playerStatus + " music: " + music.name);
+ if ( music == null ) {
+ return;
+ }
+ Log.d(TAG, "onPlayerStatusListener: " + playerStatus + " music: " + music.name);
switch (playerStatus) {
case BUFFERING:
if (currentMedia.getMediaName() == null || !currentMedia.getMediaName().equals(music.name)) {
@@ -113,7 +115,7 @@ public class KwPresenter extends BaseMediaPresenter {
@Override
public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
if (isTrue) {
- Logger.d(TAG, "onResume, isBind: " + isBind);
+ Log.d(TAG, "onResume, isBind: " + isBind);
Log.d(TAG, "onResume, isBind: " + isBind);
// 需要在resume时候判断绑定关系是否正常
if (!isBind) {
@@ -125,14 +127,14 @@ public class KwPresenter extends BaseMediaPresenter {
// 当前处于绑定状态,且有音乐信息,需判断是否正在播放,进行界面刷新
Log.d(TAG, "step1==" + currentMusic.name);
if (kwapi.getPlayerStatus() == PlayerStatus.BUFFERING || kwapi.getPlayerStatus() == PlayerStatus.PLAYING) {
- Logger.d(TAG, "当前可能正在播放音乐,需要更新=1=" + currentMusic.name);
+ Log.d(TAG, "当前可能正在播放音乐,需要更新=1=" + currentMusic.name);
currentMedia.setMediaName(currentMusic.name);
currentMedia.setPlayState(MusicConstant.PLAY_STATE_PLAYING);
mView.onMediaInfoChanged(currentMedia);
mView.onMusicPlaying();
kwapi.getSongPicUrl(currentMusic, onGetSongImgUrlListener);
} else if (kwapi.getPlayerStatus() == PlayerStatus.INIT) {
- Logger.d(TAG, "当前可能正在播放音乐,需要更新=3=" + currentMusic.name);
+ Log.d(TAG, "当前可能正在播放音乐,需要更新=3=" + currentMusic.name);
currentMedia.setMediaName(currentMusic.name);
currentMedia.setPlayState(MusicConstant.PLAY_STATE_PAUSE_OR_STOP);
mView.onMediaInfoChanged(currentMedia);
@@ -142,14 +144,14 @@ public class KwPresenter extends BaseMediaPresenter {
Log.d(TAG, "step2==media: " + currentMedia.getMediaName() + " " +
"musicName: " + currentMusic.name + " status: " + kwapi.getPlayerStatus());
if (kwapi.getPlayerStatus() == PlayerStatus.BUFFERING || kwapi.getPlayerStatus() == PlayerStatus.PLAYING) {
- Logger.d(TAG, "当前可能正在播放音乐,需要更新=2=" + currentMusic.name);
+ Log.d(TAG, "当前可能正在播放音乐,需要更新=2=" + currentMusic.name);
currentMedia.setMediaName(currentMusic.name);
currentMedia.setPlayState(MusicConstant.PLAY_STATE_PLAYING);
mView.onMediaInfoChanged(currentMedia);
mView.onMusicPlaying();
kwapi.getSongPicUrl(currentMusic, onGetSongImgUrlListener);
}else if (kwapi.getPlayerStatus() == PlayerStatus.INIT) {
- Logger.d(TAG, "当前可能正在播放音乐,需要更新=4=" + currentMusic.name);
+ Log.d(TAG, "当前可能正在播放音乐,需要更新=4=" + currentMusic.name);
currentMedia.setMediaName(currentMusic.name);
currentMedia.setPlayState(MusicConstant.PLAY_STATE_PAUSE_OR_STOP);
mView.onMediaInfoChanged(currentMedia);
@@ -237,16 +239,18 @@ public class KwPresenter extends BaseMediaPresenter {
private OnGetSongImgUrlListener onGetSongImgUrlListener = new OnGetSongImgUrlListener() {
@Override
public void onGetSongImgUrlSucessed(Music music, String s) {
- currentMedia.setMediaName(music.name);
- currentMedia.setMediaImg(s);
- Logger.d(TAG,
- "onGetSongImgUrlSucessed: " + currentMedia);
- handler.post(() -> mView.onMediaInfoChanged(currentMedia));
+ if(currentMedia.getPlayState() == MusicConstant.PLAY_STATE_PLAYING) {
+ currentMedia.setMediaName(music.name);
+ currentMedia.setMediaImg(s);
+ Log.d(TAG,
+ "onGetSongImgUrlSucessed: " + currentMedia);
+ handler.post(() -> mView.onMediaInfoChanged(currentMedia));
+ }
}
@Override
public void onGetSongImgUrlFailed(Music music, int i) {
- Logger.e(TAG, "onGetSongImgUrlFailed: " + i);
+ Log.e(TAG, "onGetSongImgUrlFailed: " + i);
}
};
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java
index 75a89e1734..1b8ab10d33 100644
--- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java
@@ -1,6 +1,7 @@
package com.mogo.module.media.window;
import android.content.Context;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
@@ -101,6 +102,7 @@ public class MediaWindow2 implements IMusicView {
int statusBarHeight = WindowUtils.getStatusBarHeight(mContext);
Logger.d(TAG,
"yPos: " + yPos + " xPos: " + xPos + " statusBarHeight: " + statusBarHeight);
+ Log.d(TAG, "addMediaWindoView");
FrameLayout.LayoutParams params =
new FrameLayout.LayoutParams((int) mContext.getResources().getDimension(R.dimen.module_media_pop_window_width), (int) mContext.getResources().getDimension(R.dimen.module_media_pop_window_height));
params.leftMargin = xPos;
@@ -204,6 +206,7 @@ public class MediaWindow2 implements IMusicView {
@Override
public void onMusicPlaying() {
Logger.d(TAG, "onMusicPlaying===" + mMediaInfoData);
+ Log.d(TAG, "onMusicPlaying===" + mMediaInfoData);
isFirstPlay = false;
updateWindowUI(false);
if (mWindowPlayPause != null) {
@@ -218,6 +221,7 @@ public class MediaWindow2 implements IMusicView {
@Override
public void onMusicPause() {
Logger.d(TAG, "onMusicPause: ===" + mMediaInfoData);
+ Log.d(TAG, "onMusicPause: ===" + mMediaInfoData);
if (mWindowPlayPause != null) {
mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_pause);
}
@@ -230,6 +234,7 @@ public class MediaWindow2 implements IMusicView {
@Override
public void onMusicStopped() {
Logger.d(TAG, "onMusicStopped===" + mMediaInfoData);
+ Log.d(TAG, "onMusicStopped===" + mMediaInfoData);
if (mWindowPlayPause != null) {
mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_pause);
}
@@ -244,6 +249,7 @@ public class MediaWindow2 implements IMusicView {
@Override
public void onMediaInfoChanged(MediaInfoData mediaInfoData) {
Logger.d(TAG, "onMediaInfoChanged: " + mediaInfoData);
+ Log.d(TAG, "onMediaInfoChanged:" + mediaInfoData);
mMediaInfoData = mediaInfoData;
addWindowView();
updateWindowUI();
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
index 2994dcbc77..84cb300af5 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
@@ -1,6 +1,7 @@
package com.mogo.module.share;
import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
@@ -111,6 +112,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
@Override
public void dismissShareDialog() {
if (mShareDialog != null) {
+ Logger.d(TAG,"dismissShareDialog");
mShareDialog.dismiss();
}
}
@@ -122,7 +124,14 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
private void realShowDialog() {
if (mShareDialog == null) {
+ Logger.d(TAG,"realShowDialog context : " + mContext);
mShareDialog = new LaucherShareDialog(mContext);
+ mShareDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ mShareDialog = null;
+ }
+ });
}
mShareDialog.show();
}
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt
index 9a9c1d949f..83282b97f4 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt
@@ -5,6 +5,7 @@ import android.content.Context
import android.os.SystemClock
import com.mogo.commons.data.BaseData
import com.mogo.commons.network.SubscribeImpl
+import com.mogo.commons.network.Utils
import com.mogo.commons.voice.AIAssist
import com.mogo.commons.voice.IMogoVoiceCmdCallBack
import com.mogo.module.share.bean.SeekRecord
@@ -16,7 +17,6 @@ import com.mogo.utils.TipToast
import com.mogo.utils.logger.Logger
import com.mogo.utils.network.RequestOptions
import com.mogo.utils.storage.SharedPrefsMgr
-import com.zhidao.auto.platform.util.DeviceUtil
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
@@ -152,7 +152,7 @@ object SeekHelpManager {
private fun realSeekHelp() {
Logger.d(TAG, "realSeekHelp")
// 请求故障求助接口
- val seekRequest = SeekRequest(DeviceUtil.getSn())
+ val seekRequest = SeekRequest(Utils.getSn())
val param = mutableMapOf("data" to seekRequest.getJson())
ServiceApisManager.serviceApis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendHelpSignal(param).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(object : SubscribeImpl(RequestOptions.create(context)) {
@@ -209,7 +209,7 @@ object SeekHelpManager {
}
fun debugCancelSeek() {
- val seekRequest = SeekRequest(DeviceUtil.getSn(), 0)
+ val seekRequest = SeekRequest(Utils.getSn(), 0)
val param = mutableMapOf("data" to seekRequest.getJson())
ServiceApisManager.serviceApis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendHelpSignal(param).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(object : SubscribeImpl(RequestOptions.create(context)) {
override fun onSuccess(o: BaseData?) {
diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi-1920x1000/share_real_time_traffic.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi-1920x1000/share_real_time_traffic.png
index 709879f3e4..9504c2bc87 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi-1920x1000/share_real_time_traffic.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi-1920x1000/share_real_time_traffic.png differ
diff --git a/modules/mogo-module-splash/src/main/res/drawable-xhdpi-1920x1000/module_byd_splash.png b/modules/mogo-module-splash/src/main/res/drawable-xhdpi-1920x1000/module_byd_splash.png
index c58571da17..e322c3ccb2 100644
Binary files a/modules/mogo-module-splash/src/main/res/drawable-xhdpi-1920x1000/module_byd_splash.png and b/modules/mogo-module-splash/src/main/res/drawable-xhdpi-1920x1000/module_byd_splash.png differ
diff --git a/modules/mogo-module-splash/src/main/res/drawable/module_byd_splash.png b/modules/mogo-module-splash/src/main/res/drawable/module_byd_splash.png
index c58571da17..e322c3ccb2 100644
Binary files a/modules/mogo-module-splash/src/main/res/drawable/module_byd_splash.png and b/modules/mogo-module-splash/src/main/res/drawable/module_byd_splash.png differ
diff --git a/modules/mogo-module-v2x/build.gradle b/modules/mogo-module-v2x/build.gradle
index 707f339a23..bafd090ea7 100644
--- a/modules/mogo-module-v2x/build.gradle
+++ b/modules/mogo-module-v2x/build.gradle
@@ -42,7 +42,7 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation 'com.tencent.liteavsdk:LiteAVSDK_Smart:7.2.8927'
+ implementation 'com.tencent.liteavsdk:LiteAVSDK_Smart:7.4.9211'
implementation 'ch.hsr:geohash:1.4.0'
implementation rootProject.ext.dependencies.flexbox
implementation rootProject.ext.dependencies.rxandroid
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java
index c8816bf2ca..05fa325662 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java
@@ -4,6 +4,7 @@ import android.content.Context;
import android.content.IntentFilter;
import android.os.Bundle;
import android.provider.Settings;
+import android.view.MotionEvent;
import android.view.View;
import androidx.annotation.NonNull;
@@ -11,11 +12,14 @@ import androidx.fragment.app.Fragment;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.alibaba.android.arouter.facade.annotation.Route;
+import com.mogo.map.MogoLatLng;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerClickListener;
+import com.mogo.map.model.MogoPoi;
import com.mogo.map.navi.IMogoNaviListener;
+import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.common.entity.V2XMessageEntity;
@@ -53,7 +57,8 @@ import static com.mogo.module.v2x.V2XConst.MODULE_NAME;
@Route(path = V2XConst.PATH_V2X_UI)
public class V2XModuleProvider implements
IMogoModuleProvider,
- IMogoStatusChangedListener {
+ IMogoStatusChangedListener,
+ IMogoMapListener {
private final String TAG = "V2XMocduleProvider";
private Context mContext;
@@ -125,6 +130,9 @@ public class V2XModuleProvider implements
handleAdas();
initData();
+
+ V2XServiceManager.getMogoRegisterCenter().registerMogoMapListener(V2XConst.MODULE_NAME, this);
+
// 注册广播接收场景弹窗使用的
SceneBroadcastReceiver localReceiver = new SceneBroadcastReceiver();
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context);
@@ -145,16 +153,12 @@ public class V2XModuleProvider implements
}
private void initData() {
- //初始化获得自车求助状态
- initCarForHelpStatus();
-
try {
// 查询ACC状态
SharedPrefsMgr.getInstance(V2XUtils.getApp()).putBoolean("descriptor_ACC_STATUS", isAccOn());
if (isAccOn()) {
// 记录开机时间
FatigueDrivingUtils.refreshAccOnTime();
- initCarForHelpStatus();
// 刷新配置文件
refreshStrategyConfig();
} else {
@@ -293,4 +297,40 @@ public class V2XModuleProvider implements
}
});
}
+
+ @Override
+ public void onMapLoaded() {
+ //初始化获得自车求助状态
+ initCarForHelpStatus();
+ }
+
+ @Override
+ public void onTouch(MotionEvent motionEvent) {
+
+ }
+
+ @Override
+ public void onPOIClick(MogoPoi poi) {
+
+ }
+
+ @Override
+ public void onMapClick(MogoLatLng latLng) {
+
+ }
+
+ @Override
+ public void onLockMap(boolean isLock) {
+
+ }
+
+ @Override
+ public void onMapModeChanged(EnumMapUI ui) {
+
+ }
+
+ @Override
+ public void onMapChanged(MogoLatLng latLng, float zoom, float tilt, float bearing) {
+
+ }
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java
index 72aac3e4d9..bfb35e2cbc 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java
@@ -64,6 +64,8 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
V2XServiceManager.getMoGoV2XPolylineManager().clearLine();
clearAlarmPOI();
clearSpecialCarPOI();
+ // 锁车
+ V2XServiceManager.getMapUIController().recoverLockMode();
// 开启主Launcher刷新
V2XServiceManager.getIMogoRefreshStrategyController().restartAutoRefreshAtTime(500);
}
@@ -220,7 +222,6 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
@Override
public void drawableSpecialCarPOI(Context context, V2XMarkerEntity v2XMarkerEntity, IMogoMarkerClickListener clickListener) {
try {
- MarkerUtils.resetMapZoom(15);
V2XServiceManager.getMapUIController().changeMapMode(EnumMapUI.NorthUP_2D);
V2XServiceManager.getMoGoV2XStatusManager().setOtherSeekHelpPOIShow(TAG, true);
@@ -256,11 +257,13 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple);
// 当前Marker设置为最上面
mAlarmInfoMarker.setToTop();
-// if (clickListener != null) {
-// mAlarmInfoMarker.setOnMarkerClickListener(clickListener);
-// }
// 绘制连接线
V2XServiceManager.getMoGoV2XPolylineManager().drawablePolyline(context, roadEventEntity);
+ // 缩放地图
+ MarkerUtils.zoomMap(
+ new MogoLatLng(roadEventEntity.getLocation().getLat(),
+ roadEventEntity.getLocation().getLon()
+ ), context);
} else {
Logger.e(MODULE_NAME, "Location 必须进行初始化!!!!!");
}
@@ -512,7 +515,6 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
@Override
public void drawableAlarmPOI(Context context, V2XRoadEventEntity roadEventEntity, IMogoMarkerClickListener clickListener) {
try {
- MarkerUtils.resetMapZoom(15);
V2XServiceManager.getMapUIController().changeMapMode(EnumMapUI.NorthUP_2D);
V2XServiceManager.getMoGoV2XStatusManager().setRoadEventPOIShow(TAG, true);
//Logger.i(MODULE_NAME, "绘制道路事件====drawableAlarmPOI:");
@@ -532,11 +534,13 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple);
// 当前Marker设置为最上面
mAlarmInfoMarker.setToTop();
-// if (clickListener != null) {
-// mAlarmInfoMarker.setOnMarkerClickListener(clickListener);
-// }
// 绘制连接线
V2XServiceManager.getMoGoV2XPolylineManager().drawablePolyline(context, roadEventEntity);
+ // 缩放地图
+ MarkerUtils.zoomMap(
+ new MogoLatLng(roadEventEntity.getLocation().getLat(),
+ roadEventEntity.getLocation().getLon()
+ ), context);
} else {
Logger.e(MODULE_NAME, "Location 必须进行初始化!!!!!");
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XRoadLiveCarWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XRoadLiveCarWindow.java
index 857146eb14..90936e2281 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XRoadLiveCarWindow.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XRoadLiveCarWindow.java
@@ -218,7 +218,6 @@ public class V2XRoadLiveCarWindow extends RelativeLayout
// 倒计时
if (runnableV2XEvent == null) {
runnableV2XEvent = () -> {
- Logger.d(MODULE_NAME, "V2X=== Window 30秒倒计时结束。。。");
// 移出Window详细信息
mTvEventStubClose.setText((countDownTime--) + "s");
handlerV2XEvent.postDelayed(runnableV2XEvent, 1000);
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/park/V2XIllegalParkMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/park/V2XIllegalParkMarker.java
index 2f30437784..801ee51a9f 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/park/V2XIllegalParkMarker.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/park/V2XIllegalParkMarker.java
@@ -8,8 +8,6 @@ import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.anim.OnMarkerAnimationListener;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerShowEntity;
-import com.mogo.module.common.map.MapCenterPointStrategy;
-import com.mogo.module.common.map.Scene;
import com.mogo.module.service.ServiceConst;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.view.IV2XMarker;
@@ -83,16 +81,12 @@ public class V2XIllegalParkMarker implements IV2XMarker>
countDownV2XEvent();
} catch (Exception e) {
- // 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随
- MarkerUtils.resetMapZoom(16);
e.printStackTrace();
}
}
@Override
public void clearPOI() {
- // 移动回原来的中心点
- MapCenterPointStrategy.setMapCenterPointByScene(V2XServiceManager.getMapUIController(), Scene.AIMLESS);
// 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随
MarkerUtils.resetMapZoom(16);
// 移除违章停车点
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/push/V2XPushEventMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/push/V2XPushEventMarker.java
index 10e6fa9ac1..2504007fe6 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/push/V2XPushEventMarker.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/push/V2XPushEventMarker.java
@@ -3,12 +3,10 @@ package com.mogo.module.v2x.scenario.scene.push;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerExploreWayItem;
import com.mogo.module.common.entity.MarkerLocation;
-import com.mogo.module.common.map.MapCenterPointStrategy;
-import com.mogo.module.common.map.Scene;
-import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.common.entity.V2XPoiTypeEnum;
import com.mogo.module.common.entity.V2XPushMessageEntity;
import com.mogo.module.common.entity.V2XRoadEventEntity;
+import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.listener.V2XMarkerClickListener;
import com.mogo.module.v2x.scenario.view.IV2XMarker;
import com.mogo.module.v2x.utils.MarkerUtils;
@@ -62,16 +60,12 @@ public class V2XPushEventMarker implements IV2XMarker {
V2XMarkerClickListener.getInstance());
} catch (Exception e) {
- // 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随
- MarkerUtils.resetMapZoom(16);
e.printStackTrace();
}
}
@Override
public void clearPOI() {
- // 移动回原来的中心点
- MapCenterPointStrategy.setMapCenterPointByScene(V2XServiceManager.getMapUIController(), Scene.AIMLESS);
// 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随
MarkerUtils.resetMapZoom(16);
// 移除线
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventMarker.java
index b3da065410..b92946c2f9 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventMarker.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventMarker.java
@@ -1,9 +1,7 @@
package com.mogo.module.v2x.scenario.scene.road;
-import com.mogo.module.common.map.MapCenterPointStrategy;
-import com.mogo.module.common.map.Scene;
-import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.common.entity.V2XRoadEventEntity;
+import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.view.IV2XMarker;
import com.mogo.module.v2x.utils.MarkerUtils;
@@ -31,16 +29,12 @@ public class V2XRoadEventMarker implements IV2XMarker {
.drawableAlarmPOI(V2XServiceManager.getContext(), entity, null);
}
} catch (Exception e) {
- // 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随
- MarkerUtils.resetMapZoom(16);
e.printStackTrace();
}
}
@Override
public void clearPOI() {
- // 移动回原来的中心点
- MapCenterPointStrategy.setMapCenterPointByScene(V2XServiceManager.getMapUIController(), Scene.AIMLESS);
// 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随
MarkerUtils.resetMapZoom(16);
// 移除线
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventScenario.java
index e711b26643..b0ff686349 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventScenario.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventScenario.java
@@ -86,7 +86,6 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp
V2XServiceManager.getContext(),
mV2XMessageEntity.getContent());
if (V2XServiceManager.getMoGoStatusManager().isMainPageLaunched()) {
- drawPOI();
showWindow();
}
}
@@ -183,6 +182,9 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp
@Override
public void onViewAdded(View view) {
Logger.d(MODULE_NAME, "展示 Window 动画结束");
+ if (V2XServiceManager.getMoGoStatusManager().isMainPageLaunched()) {
+ drawPOI();
+ }
}
@Override
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpButton.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpButton.java
index 84d9191d17..5adcb00886 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpButton.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpButton.java
@@ -50,15 +50,19 @@ public class V2XSeekHelpButton implements IV2XButton {
@Override
public void show() {
registerVoice();
- tv = V2XServiceManager.getMogoEntranceButtonController().getButton(ButtonIndex.BUTTON2);
- tv.setText("取消\n求助");
- tv.setVisibility(View.VISIBLE);
- tv.setBackgroundResource(R.drawable.bg_v2x_event_live_show);
- tv.setOnClickListener(v -> {
- //调用取消求助接口
- // TODO: 2020/5/18 回调,显示对话框
- doAction();
- });
+ try {
+ tv = V2XServiceManager.getMogoEntranceButtonController().getButton(ButtonIndex.BUTTON2);
+ tv.setText("取消\n求助");
+ tv.setVisibility(View.VISIBLE);
+ tv.setBackgroundResource(R.drawable.bg_v2x_event_live_show);
+ tv.setOnClickListener(v -> {
+ //调用取消求助接口
+ // TODO: 2020/5/18 回调,显示对话框
+ doAction();
+ });
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
@Override
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpDialog.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpDialog.java
index d1ae3f2d22..ccab292a65 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpDialog.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpDialog.java
@@ -2,24 +2,22 @@ package com.mogo.module.v2x.scenario.scene.seek;
import android.content.Context;
import android.content.Intent;
-import android.graphics.PixelFormat;
-import android.os.Build;
import android.util.AttributeSet;
-import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.WindowManager;
import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.mogo.commons.voice.AIAssist;
+import com.mogo.module.common.wm.WindowManagerView;
import com.mogo.module.v2x.R;
+import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
import com.mogo.module.v2x.voice.V2XVoiceManager;
-import com.mogo.utils.WindowUtils;
+import com.mogo.service.entrance.ButtonIndex;
import com.mogo.utils.logger.Logger;
/**
@@ -81,35 +79,24 @@ public class V2XSeekHelpDialog extends ConstraintLayout implements View.OnClickL
void onClickRight();
}
- boolean isShown;
- WindowManager windowManager;
+ private boolean isShown;
+ private WindowManagerView windowManager;
public void show() {
- Logger.d(TAG, "使用windowManager实现");
- if (!isShown) {
- windowManager = (WindowManager) mContext.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
- WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
- } else {
- layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
+ try {
+ Logger.d(TAG, "使用windowManager实现");
+ if (!isShown) {
+ windowManager = new WindowManagerView.Builder(
+ V2XServiceManager.getMogoEntranceButtonController().getButton(ButtonIndex.BUTTON2).getContext()
+ ).contentView(this).build();
+ windowManager.show();
+ isShown = true;
+ AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("确定要解除求助状态吗");
+ unRegisterVoiceCmd();
+ registerVoiceCmd();
}
- layoutParams.format = PixelFormat.TRANSLUCENT;
- layoutParams.gravity = Gravity.START | Gravity.TOP;
-// mWindowLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
- // FLAG_LAYOUT_IN_SCREEN:将window放置在整个屏幕之内,无视其他的装饰(比如状态栏); FLAG_NOT_TOUCH_MODAL:不阻塞事件传递到后面的窗口
- layoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
- layoutParams.width = WindowUtils.getScreenWidth(mContext);
- layoutParams.height = WindowUtils.getScreenHeight(mContext);
- //后面变暗区域透明...
- layoutParams.dimAmount = 0;
- layoutParams.x = 0;
- layoutParams.y = 0;
- windowManager.addView(this, layoutParams);
- isShown = true;
- AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("确定要解除求助状态吗");
- unRegisterVoiceCmd();
- registerVoiceCmd();
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
@@ -125,19 +112,16 @@ public class V2XSeekHelpDialog extends ConstraintLayout implements View.OnClickL
public void dismiss() {
if (isShown && windowManager != null) {
- windowManager.removeViewImmediate(this);
- windowManager = null;
+ windowManager.dismiss();
isShown = false;
}
}
-
//放弃求助
private void handleLeft() {
if (mListener != null) {
mListener.onClickLeft();
}
-
unRegisterVoiceCmd();
}
@@ -147,7 +131,6 @@ public class V2XSeekHelpDialog extends ConstraintLayout implements View.OnClickL
mListener.onClickRight();
}
unRegisterVoiceCmd();
-
}
private void registerVoiceCmd() {
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java
index a014a47eac..ffdc49dcba 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java
@@ -7,12 +7,12 @@ import android.view.ViewGroup;
import androidx.annotation.Nullable;
import com.mogo.commons.voice.AIAssist;
-import com.mogo.module.v2x.R;
-import com.mogo.module.v2x.V2XServiceManager;
-import com.mogo.module.v2x.entity.net.V2XSpecialCarRes.V2XMarkerEntity;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XPoiTypeEnum;
import com.mogo.module.common.entity.V2XRoadEventEntity;
+import com.mogo.module.v2x.R;
+import com.mogo.module.v2x.V2XServiceManager;
+import com.mogo.module.v2x.entity.net.V2XSpecialCarRes.V2XMarkerEntity;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.utils.ADASUtils;
import com.mogo.module.v2x.utils.V2XUtils;
@@ -79,7 +79,6 @@ public class V2XSeekHelpScenario extends AbsV2XScenario> i
@Override
public void show() {
showWindow();
- drawPOI();
}
@Override
@@ -145,7 +144,7 @@ public class V2XSeekHelpScenario extends AbsV2XScenario> i
(int) V2XUtils.getApp().getResources().getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground));
V2XServiceManager
.getMogoTopViewManager()
- .addView(mV2XWindow.getView(), layoutParams,this);
+ .addView(mV2XWindow.getView(), layoutParams, this);
mV2XWindow.show(mMarkerEntity);
} else {
blockingQueue.offer(mMarkerEntity);
@@ -197,6 +196,7 @@ public class V2XSeekHelpScenario extends AbsV2XScenario> i
@Override
public void onViewAdded(View view) {
Logger.d(MODULE_NAME, "展示 Window 动画结束");
+ drawPOI();
}
@Override
@@ -213,5 +213,8 @@ public class V2XSeekHelpScenario extends AbsV2XScenario> i
@Override
public void beforeViewRemoveAnim(View view) {
Logger.d(MODULE_NAME, "关闭 Window 开始");
+ // 重置场景提示的消息
+ setV2XMessageEntity(null);
+ clearPOI();
}
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/MarkerUtils.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/MarkerUtils.java
index f31fb111d0..e87f24e788 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/MarkerUtils.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/MarkerUtils.java
@@ -7,14 +7,13 @@ import com.mogo.map.MogoLatLng;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.module.common.entity.MarkerLocation;
import com.mogo.module.common.entity.MarkerShowEntity;
+import com.mogo.module.common.entity.V2XPoiTypeEnum;
import com.mogo.module.common.utils.CarSeries;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
-import com.mogo.module.v2x.entity.net.V2XSpecialCarRes.V2XMarkerEntity;
import com.mogo.module.v2x.entity.net.V2XSpecialCarRes;
-import com.mogo.module.common.entity.V2XPoiTypeEnum;
+import com.mogo.module.v2x.entity.net.V2XSpecialCarRes.V2XMarkerEntity;
import com.mogo.utils.WindowUtils;
-import com.mogo.utils.logger.Logger;
import java.util.Collections;
@@ -75,12 +74,12 @@ public class MarkerUtils {
final int paddingRight;
final int paddingLeft;
if (CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X) {
- paddingTop = WindowUtils.dip2px(context, 150);
+ paddingTop = WindowUtils.dip2px(context, 250);
paddingBottom = WindowUtils.dip2px(context, 100);
paddingRight = WindowUtils.dip2px(context, 100);
paddingLeft = WindowUtils.dip2px(context, 475);
} else {
- paddingTop = WindowUtils.dip2px(context, 170);
+ paddingTop = WindowUtils.dip2px(context, 370);
paddingBottom = WindowUtils.dip2px(context, 100);
paddingRight = WindowUtils.dip2px(context, 100);
paddingLeft = WindowUtils.dip2px(context, 575);
@@ -110,32 +109,10 @@ public class MarkerUtils {
* @param zoomScale 缩放级别
*/
public static void resetMapZoom(float zoomScale) {
- V2XServiceManager.getMapUIController().changeZoom(zoomScale);
- // 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随
- V2XServiceManager.getMapUIController().setLockZoom((int) zoomScale);
- V2XServiceManager.getMapUIController().recoverLockMode();
- }
-
- /**
- * 根据距离调整地图的缩放比例
- *
- * @param distance 距离
- */
- public static void changeMapZoomWithDistance(double distance) {
- Logger.d(V2XConst.MODULE_NAME, "根据距离调整地图的缩放比例:" + distance);
- if (distance <= 500 && distance > 400) {
- resetMapZoom(15);
- } else if (distance <= 400 && distance > 300) {
- resetMapZoom(16);
- } else if (distance <= 300 && distance > 200) {
- resetMapZoom(16.5f);
- } else if (distance <= 200 && distance > 100) {
- resetMapZoom(17f);
- } else if (distance <= 100 && distance >= 0) {
- resetMapZoom(17.5f);
- } else if (distance >= 500) {
- resetMapZoom(12);
- }
+// V2XServiceManager.getMapUIController().changeZoom(zoomScale);
+// // 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随
+// V2XServiceManager.getMapUIController().setLockZoom((int) zoomScale);
+ V2XServiceManager.getMapUIController().loseLockMode();
}
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java
index d5d4801e0e..cf25fe1b0d 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java
@@ -25,8 +25,10 @@ import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
import com.mogo.module.v2x.voice.V2XVoiceManager;
import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.utils.GsonUtil;
import com.tencent.rtmp.ITXLivePlayListener;
import com.tencent.rtmp.TXLiveConstants;
+import com.tencent.rtmp.TXLivePlayConfig;
import com.tencent.rtmp.TXLivePlayer;
import com.tencent.rtmp.ui.TXCloudVideoView;
@@ -53,6 +55,7 @@ public class V2XLiveGSYVideoView extends RoundLayout {
private V2XVoiceCallbackListener v2XVoiceCallbackRefreshListener = new V2XVoiceCallbackListener() {
@Override
public void onCallback(String command, Intent intent) {
+ //startHeartLive(mCarLiveInfo);
mLoading.setVisibility(VISIBLE);
mClLoadError.setVisibility(GONE);
if (mCarLiveInfo != null) {
@@ -84,6 +87,12 @@ public class V2XLiveGSYVideoView extends RoundLayout {
//关键 player 对象与界面 view
mLivePlayer.setPlayerView(mTxcVideoView);
mLivePlayer.setMute(true);
+
+ TXLivePlayConfig txLivePlayConfig = new TXLivePlayConfig();
+ // 增加重试次数
+ txLivePlayConfig.setConnectRetryCount(30);
+ mLivePlayer.setConfig(txLivePlayConfig);
+
mLivePlayer.enableHardwareDecode(true);
mLoading = findViewById(R.id.loading);
@@ -130,6 +139,7 @@ public class V2XLiveGSYVideoView extends RoundLayout {
.livePush(new V2XRefreshCallback() {
@Override
public void onSuccess(V2XLivePushVoRes result) {
+ Logger.e(MODULE_NAME, "从服务端获取最新直播信息:" + GsonUtil.jsonFromObject(result));
mClLoadError.setVisibility(GONE);
mClLoadError.setVisibility(GONE);
try {
@@ -159,45 +169,58 @@ public class V2XLiveGSYVideoView extends RoundLayout {
* 播放直播流,且开始心跳
*/
private void playLiveVideo(MarkerCarInfo.CarLiveInfo carLiveInfo) {
- startHeartLive(carLiveInfo);
- if (mLivePlayer != null) {
- mLivePlayer.startPlay(carLiveInfo.getVideoUrl(), TXLivePlayer.PLAY_TYPE_LIVE_RTMP);
- mLivePlayer.setPlayListener(new ITXLivePlayListener() {
- @Override
- public void onPlayEvent(int event, Bundle bundle) {
- Logger.w(MODULE_NAME, "播放器:onPlayEvent==" + event + "===bundle===" + bundle);
- if (event == TXLiveConstants.PLAY_EVT_PLAY_LOADING) {
- mLoading.setVisibility(VISIBLE);
- mClLoadError.setVisibility(GONE);
- } else if (event == TXLiveConstants.PLAY_EVT_PLAY_BEGIN) {
- mLoading.setVisibility(GONE);
- mClLoadError.setVisibility(GONE);
- } else if (event < 0) {
- AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("直播获取识别,可以对我说重试", null);
- stopLive(mCarLiveInfo);
- mLoading.setVisibility(GONE);
- mClLoadError.setVisibility(VISIBLE);
- // 注册语音交互
- V2XVoiceManager.INSTANCE
- .registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_REFRESH_CAR_LIVE,
- v2XVoiceCallbackRefreshListener)
- .registerUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_REFRESH_LIVE_UN_WAKEUP,
- v2XVoiceCallbackRefreshListener);
+ try {
+ if (mLivePlayer != null) {
+ mLivePlayer.startPlay(carLiveInfo.getVideoUrl(), TXLivePlayer.PLAY_TYPE_LIVE_RTMP);
+ mLivePlayer.setPlayListener(new ITXLivePlayListener() {
+ @Override
+ public void onPlayEvent(int event, Bundle bundle) {
+ Logger.w(MODULE_NAME,
+ "直播信息= " + GsonUtil.jsonFromObject(carLiveInfo) +
+ "\n播放器:onPlayEvent==" + event +
+ "\nbundle===" + bundle);
+ if (event == TXLiveConstants.PLAY_EVT_PLAY_LOADING) {
+ mLoading.setVisibility(VISIBLE);
+ mClLoadError.setVisibility(GONE);
+ } else if (event == TXLiveConstants.PLAY_EVT_PLAY_BEGIN) {
+ mLoading.setVisibility(GONE);
+ mClLoadError.setVisibility(GONE);
+ } else if (event < 0) {
+ AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("直播获取失败,可以对我说重试", null);
+ stopLive(mCarLiveInfo);
+ mLoading.setVisibility(GONE);
+ mClLoadError.setVisibility(VISIBLE);
+ // 注册语音交互
+ V2XVoiceManager.INSTANCE
+ .registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_REFRESH_CAR_LIVE,
+ v2XVoiceCallbackRefreshListener)
+ .registerUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_REFRESH_LIVE_UN_WAKEUP,
+ v2XVoiceCallbackRefreshListener);
+ }
}
- }
- @Override
- public void onNetStatus(Bundle bundle) {
- //Logger.w(MODULE_NAME, "播放器:onNetStatus===bundle===" + bundle);
- }
- });
+ @Override
+ public void onNetStatus(Bundle bundle) {
+ Logger.w(MODULE_NAME, "播放器:onNetStatus===bundle===" + bundle);
+ }
+ });
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ mLoading.setVisibility(GONE);
+ mClLoadError.setVisibility(VISIBLE);
+ Logger.e(MODULE_NAME, "直播发生异常:carLiveInfo= " + GsonUtil.jsonFromObject(carLiveInfo));
}
}
- // 刷新直播心跳
+ /**
+ * 刷新直播心跳
+ *
+ * @param carLiveInfo
+ */
private void startHeartLive(MarkerCarInfo.CarLiveInfo carLiveInfo) {
try {
- if (!TextUtils.isEmpty(carLiveInfo.getVideoSn())
+ if (carLiveInfo != null && !TextUtils.isEmpty(carLiveInfo.getVideoSn())
&& !TextUtils.isEmpty(carLiveInfo.getVideoChannel())) {
V2XServiceManager
.getV2XRefreshModel()
diff --git a/modules/mogo-module-v2x/src/main/res/layout/dialog_v2x_common.xml b/modules/mogo-module-v2x/src/main/res/layout/dialog_v2x_common.xml
index cf29b7fb6b..d82d598dd3 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/dialog_v2x_common.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/dialog_v2x_common.xml
@@ -22,7 +22,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_75"
android:gravity="center"
- android:textColor="@color/white"
+ android:textColor="#FFF"
android:textSize="@dimen/dp_40"
app:layout_constraintEnd_toEndOf="@id/ivDialogBg"
app:layout_constraintStart_toStartOf="@id/ivDialogBg"
@@ -35,7 +35,7 @@
android:layout_height="@dimen/dp_130"
android:background="@drawable/v2x_dialog_left_bg"
android:gravity="center"
- android:textColor="@color/white"
+ android:textColor="#FFF"
android:textSize="@dimen/dp_40"
app:layout_constraintBottom_toBottomOf="@id/ivDialogBg"
app:layout_constraintEnd_toStartOf="@id/tvDialogRight"
@@ -48,7 +48,7 @@
android:layout_height="@dimen/dp_130"
android:background="@drawable/v2x_dialog_right_bg"
android:gravity="center"
- android:textColor="@color/white"
+ android:textColor="#FFF"
android:textSize="@dimen/dp_40"
app:layout_constraintBottom_toBottomOf="@id/ivDialogBg"
app:layout_constraintEnd_toEndOf="@id/ivDialogBg"
diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml b/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml
index d835db36f1..9f0cc0016a 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml
@@ -14,6 +14,7 @@
app:alignContent="flex_start"
app:alignItems="center"
app:flexDirection="row"
+ android:paddingStart="@dimen/dp_150"
app:flexWrap="wrap"
app:justifyContent="flex_start">
diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_fatigue_driving_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_fatigue_driving_data.json
index 56f808085a..afd2eec4c8 100644
--- a/modules/mogo-module-v2x/src/main/res/raw/scenario_fatigue_driving_data.json
+++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_fatigue_driving_data.json
@@ -14,7 +14,7 @@
"zoom": true,
"zoomScale": 15,
"location": {
- "lat": 39.9754100000,
+ "lat": 39.9554100000,
"lon": 116.4178276100
},
"userHead": "https://yycp-static-1255510688.cos.ap-beijing.myqcloud.com/defaultUserHeadImg/5.png",
diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_event_data.json
index 38a9ff9693..9c2a4b5e2a 100644
--- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_event_data.json
+++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_event_data.json
@@ -13,8 +13,8 @@
"zoom": true,
"zoomScale": 15,
"location": {
- "lat": 39.9754100000,
- "lon": 116.4178276100
+ "lat": 39.971417,
+ "lon": 116.415853
},
"userHead": "https://yycp-static-1255510688.cos.ap-beijing.myqcloud.com/defaultUserHeadImg/5.png",
"msgImgUrl": "https://upload.jianshu.io/users/upload_avatars/7663825/7c28763e-002b-4e89-8dea-5b8da210ef2c.jpg"
diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_road_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_road_event_data.json
index 395ffb1f11..f4a9966c64 100644
--- a/modules/mogo-module-v2x/src/main/res/raw/scenario_road_event_data.json
+++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_road_event_data.json
@@ -5,7 +5,7 @@
"location":{
"address":"北五环(测试位置不准确)",
"angle":270,
- "lat":39.96155,
+ "lat":39.971417,
"lon":116.415853
},
"noveltyInfo":{
@@ -27,7 +27,7 @@
"location":{
"address":"北五环(测试位置不准确)",
"angle":270,
- "lat":39.968155,
+ "lat":39.971417,
"lon":116.415853
},
"poiType":"10002",
diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_seek_help.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_seek_help.json
index 9a43486407..7b6d29ab3f 100644
--- a/modules/mogo-module-v2x/src/main/res/raw/scenario_seek_help.json
+++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_seek_help.json
@@ -3,8 +3,8 @@
{
"createTime":1593678359872,
"distance":100,
- "lat":39.96911187,
- "lon":116.41777396,
+ "lat":39.968678,
+ "lon":116.405467,
"sn":"E841CC2018PZD20466",
"targetId":20007,
"targetName":"故障车",
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java
index 4580f14cf6..b43d44aa72 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java
@@ -5,6 +5,7 @@ import android.content.Context;
import com.alibaba.android.arouter.facade.template.IProvider;
import com.mogo.service.adas.IMogoADASController;
import com.mogo.service.analytics.IMogoAnalytics;
+import com.mogo.service.auth.IMogoAuthManager;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.service.datamanager.IMogoDataManager;
@@ -236,4 +237,10 @@ public interface IMogoServiceApis extends IProvider {
* @return
*/
IMogoPassportManager getPassportManagerApi();
+
+ /**
+ * 获取授权服务
+ * @return
+ */
+ IMogoAuthManager getAuthManagerApi();
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
index c9090a0edd..6f90c84d79 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
@@ -220,4 +220,10 @@ public class MogoServicePaths {
*/
@Deprecated
public static final String PATH_PASSPORT = "/passport/api";
+
+ /**
+ * 授权服务
+ */
+ @Deprecated
+ public static final String PATH_AGREEMENT = "/agreement/showFragment";
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/auth/IMogoAuthManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/auth/IMogoAuthManager.java
new file mode 100644
index 0000000000..a8d2bac05d
--- /dev/null
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/auth/IMogoAuthManager.java
@@ -0,0 +1,13 @@
+package com.mogo.service.auth;
+
+import android.content.Context;
+
+import com.mogo.service.module.IMogoModuleProvider;
+
+public interface IMogoAuthManager extends IMogoModuleProvider {
+
+ /**
+ * 重置授权页面弹起时展示View Context
+ */
+ void resetContext(Context context);
+}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/connection/IMogoSocketManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/connection/IMogoSocketManager.java
index 0aa36308bd..def9af01f0 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/connection/IMogoSocketManager.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/connection/IMogoSocketManager.java
@@ -16,7 +16,7 @@ public interface IMogoSocketManager extends IProvider {
* 初始化,各模块不用关心
*
* @param context 上下文
- * @param appId 一般为包名
+ * @param appId 一般为包名,不参与通道的建立,一般用于发消息
*/
void init( Context context, String appId );
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleProvider.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleProvider.java
index d53d29693b..59dad0341e 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleProvider.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleProvider.java
@@ -59,6 +59,7 @@ public interface IMogoModuleProvider extends IProvider {
*
* @return
*/
+ @Deprecated
IMogoMapListener getMapListener();
/**
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/passport/IMogoTicketCallback.java b/services/mogo-service-api/src/main/java/com/mogo/service/passport/IMogoTicketCallback.java
index 306e71c3bd..ace2fc6b05 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/passport/IMogoTicketCallback.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/passport/IMogoTicketCallback.java
@@ -9,7 +9,9 @@ public
*/
interface IMogoTicketCallback {
- void onSuccess( String ticket );
+ void onTicketGot( String ticket );
void onError( int code, String msg );
+
+ void onLoginSuccess(String token, String sn);
}
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java
index 7881bc7374..a623abbb69 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java
@@ -9,6 +9,7 @@ import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.adas.IMogoADASController;
import com.mogo.service.analytics.IMogoAnalytics;
+import com.mogo.service.auth.IMogoAuthManager;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.service.datamanager.IMogoDataManager;
@@ -200,6 +201,11 @@ public class MogoServiceApis implements IMogoServiceApis {
return getApiInstance( IMogoPassportManager.class, MogoServicePaths.PATH_PASSPORT );
}
+ @Override
+ public IMogoAuthManager getAuthManagerApi() {
+ return getApiInstance( IMogoAuthManager.class, MogoServicePaths.PATH_AGREEMENT );
+ }
+
private static < T extends IProvider > T getApiInstance( Class< T > clazz, String path ) {
T inst = SingletonsHolder.get( clazz );
if ( inst == null ) {
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
index f877ac186b..6709acfc16 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
@@ -21,6 +21,7 @@ import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.logger.Logger;
import com.zhidao.autopilot.support.api.AutopilotServiceManage;
+import com.zhidao.autopilot.support.api.IAutopilotServiceStatusListener;
import org.json.JSONObject;
@@ -69,11 +70,23 @@ public class MogoADASController implements IMogoADASController {
public void showADAS() {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
- if ( !isProcessRunning( AbsMogoApplication.getApp(), getPackageUid( AbsMogoApplication.getApp(), "com.zhidiao.autopilot" ) )
- || mIsReleased ) {
- init( AbsMogoApplication.getApp() );
- }
+ init( AbsMogoApplication.getApp() );
+ AutopilotServiceManage.getInstance().registerAutopilotServiceStatusListener( new IAutopilotServiceStatusListener() {
+ @Override
+ public void onServiceConnected() {
+ invokeShowADASOperation();
+ }
+ @Override
+ public void onServiceDisconnected() {
+
+ }
+ } );
+ invokeShowADASOperation();
+
+ }
+
+ private void invokeShowADASOperation() {
int delay = CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ? 0 : 100;
UiThreadHandler.postDelayed( () -> {