add product manager

This commit is contained in:
wangcongtao
2020-05-21 14:49:30 +08:00
parent 9c7042246c
commit e1a83c6b8f
35 changed files with 360 additions and 353 deletions

View File

@@ -1,13 +1,16 @@
package com.mogo.service.impl.adas;
import android.app.ActivityManager;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.os.RemoteException;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.map.MogoOverlayManager;
import com.mogo.module.common.utils.CarSeries;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.adas.IMogoADASController;
import com.mogo.service.impl.MogoServiceApis;
@@ -20,6 +23,8 @@ import com.zhidao.autopilot.support.api.AutopilotServiceManage;
import org.json.JSONObject;
import java.util.List;
/**
* @author congtaowang
* @since 2020-03-10
@@ -61,6 +66,11 @@ public class MogoADASController implements IMogoADASController {
public void showADAS() {
Logger.d( TAG, "show adas" );
if ( !isProcessRunning( AbsMogoApplication.getApp(), getPackageUid( AbsMogoApplication.getApp(), "com.zhidiao.autopilot" ) ) ) {
init( AbsMogoApplication.getApp() );
}
int delay = CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ? 0 : 500;
UiThreadHandler.postDelayed( () -> {
try {
@@ -84,7 +94,7 @@ public class MogoADASController implements IMogoADASController {
Logger.e( TAG, e1, "error." );
}
}
}, 500 );
}, delay );
}
@Override
@@ -122,4 +132,38 @@ public class MogoADASController implements IMogoADASController {
public void init( Context context ) {
AutopilotServiceManage.getInstance().init( context );
}
//获取已安装应用的 uid-1 表示未安装此应用或程序异常
public static int getPackageUid( Context context, String packageName ) {
try {
ApplicationInfo applicationInfo = context.getPackageManager().getApplicationInfo( packageName, 0 );
if ( applicationInfo != null ) {
return applicationInfo.uid;
}
} catch ( Exception e ) {
return -1;
}
return -1;
}
/**
* 判断某一 uid 的程序是否有正在运行的进程,即是否存活
* Created by cafeting on 2017/2/4.
*
* @param context 上下文
* @param uid 已安装应用的 uid
* @return true 表示正在运行false 表示没有运行
*/
public static boolean isProcessRunning( Context context, int uid ) {
ActivityManager am = ( ActivityManager ) context.getSystemService( Context.ACTIVITY_SERVICE );
List< ActivityManager.RunningServiceInfo > runningServiceInfos = am.getRunningServices( 200 );
if ( runningServiceInfos.size() > 0 ) {
for ( ActivityManager.RunningServiceInfo appProcess : runningServiceInfos ) {
if ( uid == appProcess.uid ) {
return true;
}
}
}
return false;
}
}