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/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java
index 14972303d6..3a95ccb761 100644
--- a/app/src/main/java/com/mogo/launcher/MogoApplication.java
+++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java
@@ -2,6 +2,7 @@ package com.mogo.launcher;
import android.content.Context;
import android.content.Intent;
+import android.text.TextUtils;
import android.util.Log;
import com.alibaba.android.arouter.launcher.ARouter;
@@ -9,6 +10,7 @@ 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;
@@ -97,26 +99,58 @@ public class MogoApplication extends AbsMogoApplication {
@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(), DebugConfig.getSocketAppId() );
- apis.getPassportManagerApi().requestTicket( new IMogoTicketCallback() {
- @Override
- public void onSuccess( String ticket ) {
- Logger.d( TAG, "ticket = %s", ticket );
- SpStorage.setTicket( 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 onSuccess( String ticket ) {
+ Logger.d( TAG, "ticket = %s", ticket );
+ SpStorage.setTicket( ticket );
+ if ( after != null ) {
+ after.run();
}
- } );
- apis.getLocationInfoApi().start();
- apis.getMapServiceApi().getSingletonLocationClient( getApplicationContext() ).addLocationListener( location -> {
- apis.getLocationInfoApi().provideLocation( location );
- } );
- }, 2_000L );
+ }
+
+ @Override
+ public void onError( int code, String msg ) {
+ Logger.w( TAG, "code = %s, msg = %s", code, msg );
+ if ( !TextUtils.isEmpty( Utils.getSn() ) ) {
+ if ( after != null ) {
+ after.run();
+ }
+ } else {
+ prepareBaseService(1_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/foudations/mogo-base-services-sdk/build.gradle b/foudations/mogo-base-services-sdk/build.gradle
index df02926d16..8b6cd89281 100644
--- a/foudations/mogo-base-services-sdk/build.gradle
+++ b/foudations/mogo-base-services-sdk/build.gradle
@@ -30,9 +30,9 @@ 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.tcloginsdk:tclogin:1.0.9'
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 35fcc26723..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,13 +59,13 @@ 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
@@ -76,23 +73,8 @@ class MogoLocationInfoServices implements IMogoLocationInfoService {
LocUploadConfig.instance().
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/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/gradle.properties b/gradle.properties
index 90669c17d7..5c9f866ed9 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.2
+MOGO_MODULE_TANLU_VERSION=1.3.1.5
# 车聊聊
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.2
+TANLULIB_VERSION=1.3.1.5
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/MogoAuthorizeManagerImpl.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt
index 7fe63c7fdb..6c91ab12fc 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt
@@ -18,7 +18,7 @@ open abstract class MogoAuthorizeManagerImpl : IMogoAuthorizeInvoke {
override fun needAuthorize(tag: String): Boolean {
Logger.d(TAG, "===== needAuthorize update agreement in background")
-// baseController.checkIfNeedAuthorize(tag.toAuthorizeType())
+ baseController.checkIfNeedAuthorize(tag.toAuthorizeType())
return needAuthorization(tag.toAuthorizeType())
}
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 13c2da0e65..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
@@ -21,7 +21,7 @@ class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMog
}
}
- private var mContext:Context? = null
+ private var mContext: Context? = null
private var authorizeDialog: AuthorizeDialog? = null
@@ -41,7 +41,7 @@ class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMog
fun invokeAuthorizeForShow(context: Context) {
mContext = context
-// pushLayoutToMainWindow(AUTHORIZE_TYPE_LAUNCHER_MAIN)
+ pushLayoutToMainWindow(AUTHORIZE_TYPE_LAUNCHER_MAIN)
}
fun showAuthorizeView(tag: String, forbiddenVoice: (() -> Unit), onError: ((String) -> Unit)) {
@@ -64,7 +64,7 @@ class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMog
Logger.d(TAG, "ready to forbidden voice")
forbiddenVoice.invoke()
Logger.d(TAG, "ready to push fragment")
-// pushLayoutToMainWindow(tag)
+ pushLayoutToMainWindow(tag)
}
fun hideAuthorizeView() {
@@ -73,7 +73,10 @@ class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMog
private fun pushLayoutToMainWindow(tag: String) {
if (authorizeDialog == null) {
- authorizeDialog = AuthorizeDialog(tag,mContext!!)
+ authorizeDialog = AuthorizeDialog(tag, mContext!!)
+ authorizeDialog!!.setOnDismissListener {
+ authorizeDialog = null
+ }
}
if (authorizeDialog!!.isShowing) {
Logger.d(TAG, "User is operation authorization, do not repeat invoke")
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
index 4dc7287746..1f482de0bb 100644
--- 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
@@ -7,12 +7,14 @@ 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
@@ -21,6 +23,10 @@ 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
@@ -49,14 +55,34 @@ class AuthorizeDialog : BaseFloatDialog, View.OnClickListener, IVoiceCommandList
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 = 1280
+ 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(AuthorizeLayout.TAG, "initView ")
+ Logger.d(TAG, "initView ")
AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_AUTHORIZE_SHOW)
init()
- Logger.d(AuthorizeLayout.TAG, "invokeTag :$invokeTag")
+ Logger.d(TAG, "invokeTag :$invokeTag")
authorizeController = AuthorizeController(invokeTag!!)
invokeAuthorizationContent()
VoiceUtil.registerAll(this, this)
@@ -117,8 +143,9 @@ class AuthorizeDialog : BaseFloatDialog, View.OnClickListener, IVoiceCommandList
}
private fun voiceAuthorizeError() {
+ TipToast.shortTip("授权失败,请稍后重试")
VoiceUtil.speak(AbsMogoApplication.getApp().applicationContext.getString(R.string.module_authorize_failed), AbsMogoApplication.getApp().applicationContext, this)
- Logger.d(AuthorizeLayout.TAG, "onDestroy")
+ Logger.d(TAG, "onDestroy")
VoiceUtil.unregisterAll(AbsMogoApplication.getApp().applicationContext, this)
}
@@ -136,7 +163,7 @@ class AuthorizeDialog : BaseFloatDialog, View.OnClickListener, IVoiceCommandList
invokeAuthorizationContent()
}
R.id.clAuthorizeTopParent -> {
- Logger.i(AuthorizeLayout.TAG, "dismiss authorizeView")
+ Logger.i(TAG, "dismiss authorizeView")
authorizeController?.onDestroy()
}
}
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/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java
index 56f3d8aa44..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
@@ -115,7 +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);
+ mServiceApis.getAuthManagerApi().resetContext(this);
mMogoStatusManager = mServiceApis.getStatusManagerApi();
mMogoStatusManager.setMainPageLaunchedStatus( TAG, true );
AutopilotServiceManage.getInstance().init( getContext() );
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-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-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..22ddf0dfd5 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,26 @@ 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) {
+ if (windowManager == null) {
+ 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 +114,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 +133,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/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/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 );