159 lines
6.5 KiB
Java
159 lines
6.5 KiB
Java
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;
|
||
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;
|
||
import com.mogo.module.common.MogoModulePaths;
|
||
import com.mogo.module.main.service.MogoMainService;
|
||
import com.mogo.module.media.MediaConstants;
|
||
import com.mogo.module.push.base.PushUIConstants;
|
||
import com.mogo.module.service.ServiceConst;
|
||
import com.mogo.module.tanlu.constant.TanluConstants;
|
||
import com.mogo.module.v2x.V2XConst;
|
||
import com.mogo.service.IMogoServiceApis;
|
||
import com.mogo.service.MogoServicePaths;
|
||
import com.mogo.service.passport.IMogoTicketCallback;
|
||
import com.mogo.utils.UiThreadHandler;
|
||
import com.mogo.utils.logger.LogLevel;
|
||
import com.mogo.utils.logger.Logger;
|
||
import com.zhidao.boot.persistent.lib.PersistentManager;
|
||
import com.zhidao.mogo.module.event.panel.EventPanelConstants;
|
||
import com.zhidao.mogo.module.left.panel.LeftPanelConst;
|
||
|
||
/**
|
||
* @author congtaowang
|
||
* @since 2019-12-18
|
||
* <p>
|
||
* Launcher application
|
||
*/
|
||
public class MogoApplication extends AbsMogoApplication {
|
||
|
||
private static final String TAG = "MogoApplication";
|
||
|
||
@Override
|
||
public void onCreate() {
|
||
initDebugConfig();
|
||
super.onCreate();
|
||
// Crash 日志收集
|
||
final long start = System.currentTimeMillis();
|
||
CrashSystem crashSystem = CrashSystem.getInstance( this );
|
||
crashSystem.init();
|
||
//设置debug模式,日志不上传
|
||
crashSystem.setDebug( BuildConfig.DEBUG );
|
||
Logger.init( BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF );
|
||
|
||
// MogoModulePaths.addModule(new MogoModule(PATH_GUIDE_FRAGMENT, PATH_GUIDE_MODULE_NAME));
|
||
MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_AGREEMENT, AuthorizeConstant.PATH_AGREEMENT_MODULE_NAME ) );
|
||
|
||
//运营位卡片,需要默认显示,放在第一个加载
|
||
if (DebugConfig.isLauncher() ) {
|
||
MogoModulePaths.addModule( new MogoModule( MediaConstants.TAG, MediaConstants.MODULE_TYPE ) );
|
||
}
|
||
if(DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_BYD){
|
||
MogoModulePaths.addModule( new MogoModule( CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME ) );
|
||
}
|
||
MogoModulePaths.addModule( new MogoModule( TanluConstants.TAG, TanluConstants.MODEL_NAME ) );
|
||
MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_SHARE, "ShareControl" ) );
|
||
|
||
MogoModulePaths.addModule( new MogoModule( EventPanelConstants.PATH_NAME,
|
||
EventPanelConstants.MODULE_NAME ) );
|
||
MogoModulePaths.addModule( new MogoModule( LeftPanelConst.PATH_NAME,
|
||
LeftPanelConst.MODULE_NAME ) );
|
||
|
||
MogoModulePaths.addBaseModule( new MogoModule( ServiceConst.PATH_REFRESH_STRATEGY, ServiceConst.PATH_REFRESH_STRATEGY ) );
|
||
MogoModulePaths.addBaseModule( new MogoModule( V2XConst.PATH_V2X_UI, V2XConst.PATH_V2X_UI ) );
|
||
MogoModulePaths.addModule( new MogoModule( PushUIConstants.PATH, PushUIConstants.NAME ) );
|
||
|
||
if ( !DebugConfig.isLauncher() ) {
|
||
PersistentManager.getInstance().initManager( this );
|
||
Intent intent = new Intent( this, MogoMainService.class );
|
||
startService( intent );
|
||
}
|
||
Log.i( "timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" );
|
||
}
|
||
|
||
private void initDebugConfig() {
|
||
DebugConfig.setNetMode( BuildConfig.NET_ENV );
|
||
DebugConfig.setDebug( BuildConfig.DEBUG );
|
||
DebugConfig.setAIType( BuildConfig.AIType );
|
||
DebugConfig.setLaunchLocationService( BuildConfig.LAUNCH_LOCATION_SERVICE );
|
||
DebugConfig.setUseCustomNavi( BuildConfig.USE_CUSTOM_NAVI );
|
||
DebugConfig.setLauncher( BuildConfig.IS_LAUNCHER );
|
||
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 );
|
||
// 第三方平台的sn是服务端生成的,所以必须在返回后才能开启
|
||
if ( TextUtils.isEmpty( Utils.getSn() ) ) {
|
||
preparePassportEnvironment( apis, () -> {
|
||
prepareSocketAndLocationServices( apis );
|
||
} );
|
||
} else {
|
||
preparePassportEnvironment( apis, null );
|
||
prepareSocketAndLocationServices( apis );
|
||
}
|
||
}, delay );
|
||
}
|
||
|
||
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();
|
||
}
|
||
}
|
||
} );
|
||
}
|
||
|
||
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
|
||
protected void attachBaseContext( Context base ) {
|
||
super.attachBaseContext( base );
|
||
BoostMultiDex.install( base );
|
||
}
|
||
}
|