diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index d329ae6946..315321a1bc 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -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); diff --git a/config.gradle b/config.gradle index 0bbc715145..a62f80e527 100644 --- a/config.gradle +++ b/config.gradle @@ -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", diff --git a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.java b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.java new file mode 100644 index 0000000000..627f9221a7 --- /dev/null +++ b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.java @@ -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 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 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(); + } + } + } + } +} diff --git a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/view/CheckActivity.java b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/view/CheckActivity.java index 2e24a47803..aa4b557e6d 100644 --- a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/view/CheckActivity.java +++ b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/view/CheckActivity.java @@ -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(); } } diff --git a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/view/CheckAdapter.java b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/view/CheckAdapter.java index a88e53d215..cb6589f6ae 100644 --- a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/view/CheckAdapter.java +++ b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/view/CheckAdapter.java @@ -32,7 +32,7 @@ public class CheckAdapter extends RecyclerView.Adapter 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 return holder; } + public void dismissDialog() { + if (mCheckInfoListDialog!=null && mCheckInfoListDialog.isShowing()){ + mCheckInfoListDialog.dismiss(); + } + } + + public void ondestry() { + mContext = null; + mCheckInfoListDialog = null; + } + /** * 顶部view列表 */ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt index a64f9d92a8..b4e2be73a1 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt @@ -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) } /** diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/MogoLauncher.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/MogoLauncher.java index 293ad08a3e..669a63f78a 100644 --- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/MogoLauncher.java +++ b/modules/mogo-module-back/src/main/java/com/mogo/module/back/MogoLauncher.java @@ -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