Merge remote-tracking branch 'origin/dev_MogoAP_eagle-930_210926_8.0.12' into dev_MogoAP_eagle-930_210926_8.0.12
# Conflicts: # core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.java
This commit is contained in:
@@ -39,11 +39,13 @@ import com.mogo.utils.ProcessUtils;
|
||||
import com.mogo.utils.logger.LogLevel;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
import com.mogo.utils.storage.SharedPrefsMgr;
|
||||
import com.squareup.leakcanary.LeakCanary;
|
||||
import com.squareup.leakcanary.RefWatcher;
|
||||
//import com.squareup.leakcanary.LeakCanary;
|
||||
//import com.squareup.leakcanary.RefWatcher;
|
||||
import com.zhidao.boot.persistent.lib.PersistentManager;
|
||||
import com.zhidao.mogo.module.left.panel.LeftPanelConst;
|
||||
|
||||
import leakcanary.LeakCanary;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
* @since 2019-12-18
|
||||
@@ -55,7 +57,7 @@ public class MogoApplication extends AbsMogoApplication {
|
||||
private static final String TAG = "MogoApplication";
|
||||
|
||||
private long start;
|
||||
private volatile static RefWatcher refWatcher;
|
||||
// private volatile static RefWatcher refWatcher;
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
@@ -313,9 +315,9 @@ public class MogoApplication extends AbsMogoApplication {
|
||||
startService(intent);
|
||||
}
|
||||
|
||||
if (refWatcher == null) {
|
||||
refWatcher = LeakCanary.install(this);
|
||||
}
|
||||
// if (refWatcher == null) {
|
||||
// refWatcher = LeakCanary.install(this);
|
||||
// }
|
||||
|
||||
// 初始化 bugly 升级
|
||||
ARouter.getInstance().navigation(UpgradeReportProvider.class);
|
||||
|
||||
@@ -43,9 +43,9 @@ ext {
|
||||
// json 转换
|
||||
gson : "com.google.code.gson:gson:2.8.4",
|
||||
// 内存泄漏检测
|
||||
debugleakcanary : "com.squareup.leakcanary:leakcanary-android:1.6.1",
|
||||
releaseleakcanary : "com.squareup.leakcanary:leakcanary-android-no-op:1.6.1",
|
||||
testleakcanary : "com.squareup.leakcanary:leakcanary-android-no-op:1.6.1",
|
||||
debugleakcanary : "com.squareup.leakcanary:leakcanary-android:2.7",
|
||||
releaseleakcanary : "com.squareup.leakcanary:leakcanary-android-no-op:2.7",
|
||||
testleakcanary : "com.squareup.leakcanary:leakcanary-android-no-op:2.7",
|
||||
//rxJava
|
||||
rxjava : "io.reactivex.rxjava2:rxjava:2.2.2",
|
||||
rxandroid : "io.reactivex.rxjava2:rxandroid:2.1.1",
|
||||
|
||||
@@ -0,0 +1,176 @@
|
||||
package com.mogo.eagle.core.function.check;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.util.Log;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.elegant.network.ParamsBuilder;
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
|
||||
import com.mogo.commons.network.SubscribeImpl;
|
||||
import com.mogo.eagle.core.function.call.check.CallerCheckManager;
|
||||
import com.mogo.eagle.core.function.check.api.ICheckResultCallBack;
|
||||
import com.mogo.eagle.core.function.check.net.CheckApiServiceFactory;
|
||||
import com.mogo.eagle.core.function.check.net.CheckResultData;
|
||||
import com.mogo.eagle.core.function.check.view.CheckDialog;
|
||||
import com.mogo.eagle.core.utilcode.util.ActivityUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.AppUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.LogUtils;
|
||||
import com.mogo.eagle.core.function.api.check.IMogoCheckListener;
|
||||
import com.mogo.eagle.core.function.check.view.CheckActivity;
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.module.service.MogoServiceProvider;
|
||||
import com.mogo.module.service.MogoServices;
|
||||
import com.mogo.module.service.receiver.MogoReceiver;
|
||||
import com.mogo.service.MogoServicePaths;
|
||||
import com.mogo.eagle.core.function.api.check.ICheckProvider;
|
||||
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
|
||||
import com.mogo.service.statusmanager.StatusDescriptor;
|
||||
import com.mogo.utils.ActivityLifecycleManager;
|
||||
import com.mogo.utils.UiThreadHandler;
|
||||
import com.mogo.utils.network.RequestOptions;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
|
||||
/**
|
||||
* 鹰眼系统、自动驾驶系统 检测模块
|
||||
*
|
||||
* @date 4/21/21 3:39 PM
|
||||
* 需求地址
|
||||
* wiki:http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=58204952
|
||||
*/
|
||||
@Route(path = MogoServicePaths.PATH_CHECK)
|
||||
public class VehicleMonitoringManager implements ICheckProvider , IMogoStatusChangedListener {
|
||||
private static final String TAG = "VehicleMonitoringManager";
|
||||
private Context mContext;
|
||||
private final Map<String, CopyOnWriteArrayList> mListeners = new ConcurrentHashMap<>();
|
||||
private boolean hasTipShow = false;//是否已经弹框提示
|
||||
CheckDialog dialog;
|
||||
|
||||
@Override
|
||||
public void init(Context context) {
|
||||
LogUtils.dTag(TAG, "初始化 CheckProvider 模块");
|
||||
mContext = context;
|
||||
MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener(TAG,StatusDescriptor.MAIN_PAGE_RESUME,this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerVehicleMonitoringListener(String module, IMogoCheckListener listener) {
|
||||
if (listener == null || module == null) {
|
||||
LogUtils.dTag(TAG, "listener == null || intent == null");
|
||||
return;
|
||||
}
|
||||
if (!mListeners.containsKey(module)) {
|
||||
LogUtils.dTag(TAG, "intent==" + module + "listener" + listener);
|
||||
mListeners.put(module, new CopyOnWriteArrayList<>());
|
||||
}
|
||||
mListeners.get(module).add(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregisterListener(String module, IMogoCheckListener listener) {
|
||||
if (mListeners.containsKey(module)) {
|
||||
mListeners.get(module).remove(listener);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startCheckActivity(Context context) {
|
||||
Intent starter = new Intent(context, CheckActivity.class);
|
||||
starter.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
context.startActivity(starter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showCheckDialog(Context context) {
|
||||
showDialog(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkMonitor(Context context) {
|
||||
if (context != null) {
|
||||
CheckActivity.checkMonitor(context, new ICheckResultCallBack() {
|
||||
@Override
|
||||
public void callBackWithErrorState(Integer state) {
|
||||
updateMonitoringStatus(MogoReceiver.ACTION_CHECK_VEHICLE_MONITORING, state);
|
||||
if (state == 1) {
|
||||
hasTipShow = false;
|
||||
} else {
|
||||
if (hasTipShow == false) {
|
||||
showDialog(context);
|
||||
hasTipShow = true;//已弹框
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 指标异常弹框
|
||||
*/
|
||||
public void showDialog(Context context) {
|
||||
try {
|
||||
if (ActivityLifecycleManager.getInstance().isAppActive() == true &&
|
||||
AppUtils.isAppRunning(getPackageName(context)) &&
|
||||
ActivityUtils.getTopActivity() instanceof CheckActivity == false) {
|
||||
if (dialog != null) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
dialog = new CheckDialog(context, true);
|
||||
dialog.show();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param context
|
||||
* @return 当前应用的版本名称
|
||||
*/
|
||||
public static synchronized String getPackageName(Context context) {
|
||||
try {
|
||||
PackageManager packageManager = context.getPackageManager();
|
||||
PackageInfo packageInfo = packageManager.getPackageInfo(
|
||||
context.getPackageName(), 0);
|
||||
return packageInfo.packageName;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "com.mogo.launcher.f";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateMonitoringStatus(String module, Integer state) {
|
||||
List<IMogoCheckListener> listeners = mListeners.get(module);
|
||||
if (listeners != null && !listeners.isEmpty()) {
|
||||
for (IMogoCheckListener listener : listeners) {
|
||||
if (listener != null) {
|
||||
listener.updateMonitoringStatus(state);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
|
||||
if (descriptor == StatusDescriptor.MAIN_PAGE_RESUME) {
|
||||
if (!isTrue){
|
||||
if (dialog != null && dialog.isShowing()){
|
||||
dialog.dismiss();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,7 @@ import io.reactivex.schedulers.Schedulers;
|
||||
public class CheckActivity extends AppCompatActivity {
|
||||
|
||||
private static final String TAG = "CheckActivity";
|
||||
private static RecyclerView mRecyclerView;
|
||||
private RecyclerView mRecyclerView;
|
||||
private static CheckResultData sCheckResultData;
|
||||
// private static Context mContext;
|
||||
private static NetworkStatusUtil.NetWorkStatus sNetWorkStatus;
|
||||
@@ -102,7 +102,7 @@ public class CheckActivity extends AppCompatActivity {
|
||||
new CheckLinearLayout(this, CheckLinearLayout.VERTICAL, false);
|
||||
mRecyclerView.addItemDecoration(new SpacesItemDecoration((int) getResources().getDimension(R.dimen.check_item_space_vr)));
|
||||
mRecyclerView.setLayoutManager(linearLayoutManager);
|
||||
mCheckAdapter = new CheckAdapter(this, sCheckResultData);
|
||||
mCheckAdapter = new CheckAdapter(CheckActivity.this, sCheckResultData);
|
||||
mRecyclerView.setAdapter(mCheckAdapter);
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ public class CheckActivity extends AppCompatActivity {
|
||||
public static void checkMonitor(Context context, ICheckResultCallBack checkResultCallBack) {
|
||||
Log.d(TAG, "checkMonitor");
|
||||
// mContext = context;
|
||||
loadDetail(context.getApplicationContext(), checkResultCallBack);
|
||||
loadDetail(context, checkResultCallBack);
|
||||
}
|
||||
|
||||
//网络请求,获取自车检测结果(工控机上报云端)
|
||||
@@ -242,6 +242,9 @@ public class CheckActivity extends AppCompatActivity {
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
if (mCheckAdapter!=null){
|
||||
mCheckAdapter.dismissDialog();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -257,7 +260,8 @@ public class CheckActivity extends AppCompatActivity {
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
isFront = false;
|
||||
// isFront = false;
|
||||
mCheckAdapter.ondestry();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ public class CheckAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
||||
public CheckAdapter(@NonNull Context context, @NonNull CheckResultData checkResult) {
|
||||
mContext = context;
|
||||
mCheckResultData = checkResult;
|
||||
mLayoutInflater = LayoutInflater.from(context);
|
||||
mLayoutInflater = LayoutInflater.from(mContext);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -59,6 +59,17 @@ public class CheckAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
||||
return holder;
|
||||
}
|
||||
|
||||
public void dismissDialog() {
|
||||
if (mCheckInfoListDialog!=null && mCheckInfoListDialog.isShowing()){
|
||||
mCheckInfoListDialog.dismiss();
|
||||
}
|
||||
}
|
||||
|
||||
public void ondestry() {
|
||||
mContext = null;
|
||||
mCheckInfoListDialog = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 顶部view列表
|
||||
*/
|
||||
|
||||
@@ -6,13 +6,16 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.eagle.core.data.autopilot.AdasOCHData
|
||||
import com.mogo.eagle.core.data.autopilot.RemoteControlAutoPilotParameters
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.util.LogUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.module.common.MogoApisHandler
|
||||
import com.mogo.service.adas.IMogoAdasOCHCallback
|
||||
import com.mogo.utils.logger.Logger
|
||||
import kotlinx.android.synthetic.main.view_autopilot_status.view.*
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
* @author xiaoyuzhou
|
||||
@@ -20,8 +23,8 @@ import kotlinx.android.synthetic.main.view_autopilot_status.view.*
|
||||
* 自动驾驶状态按钮
|
||||
*/
|
||||
class AutoPilotStatusView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet
|
||||
context: Context,
|
||||
attrs: AttributeSet
|
||||
) : ConstraintLayout(context, attrs), View.OnClickListener, IMogoAdasOCHCallback {
|
||||
|
||||
private val TAG = "AutopilotStatusView"
|
||||
@@ -53,7 +56,7 @@ class AutoPilotStatusView @JvmOverloads constructor(
|
||||
when (mAutopilotStatus) {
|
||||
0 -> {// 不可自动驾驶,adas与工控机没有链接,或工控机异常
|
||||
LogUtils.eTag(TAG, "不可自动驾驶,adas与工控机没有链接,或工控机异常,请检查")
|
||||
ToastUtils.showShort("不可自动驾驶,adas与工控机没有链接,或工控机异常,请检查")
|
||||
// ToastUtils.showShort("不可自动驾驶,adas与工控机没有链接,或工控机异常,请检查")
|
||||
// TODO 这里临时触发自动驾驶能力,测试功过这里删除
|
||||
CallerHmiListenerManager.invokeCheckAutoPilotBtnListener(true)
|
||||
}
|
||||
@@ -64,6 +67,15 @@ class AutoPilotStatusView @JvmOverloads constructor(
|
||||
CallerHmiListenerManager.invokeCheckAutoPilotBtnListener(false)
|
||||
}
|
||||
}
|
||||
// startAutoPilot();
|
||||
}
|
||||
private fun startAutoPilot() {
|
||||
val currentAutopilot = RemoteControlAutoPilotParameters()
|
||||
currentAutopilot.isSpeakVoice = false
|
||||
currentAutopilot.startLatLon = RemoteControlAutoPilotParameters.AutoPilotLonLat(40.194795425,116.724476409);
|
||||
currentAutopilot.endLatLon = RemoteControlAutoPilotParameters.AutoPilotLonLat(40.199730,116.735687);
|
||||
currentAutopilot.vehicleType = 10
|
||||
MogoApisHandler.getInstance().apis.adasControllerApi.aiCloudToAdasData(currentAutopilot)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,16 +17,16 @@ public class MogoLauncher implements IMogoLauncher {
|
||||
|
||||
@Override
|
||||
public void backToLauncher( Context context ) {
|
||||
BackToMainHomeManager.backToLauncher();
|
||||
// BackToMainHomeManager.backToLauncher();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFloatButtonVisible( boolean visible ) {
|
||||
if ( visible ) {
|
||||
BackToMainHomeManager.showFloatButton();
|
||||
} else {
|
||||
BackToMainHomeManager.hideFloatButton();
|
||||
}
|
||||
// if ( visible ) {
|
||||
// BackToMainHomeManager.showFloatButton();
|
||||
// } else {
|
||||
// BackToMainHomeManager.hideFloatButton();
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user