diff --git a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorConst.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorConst.java index 8c8bfc2a33..95eb70d8ab 100644 --- a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorConst.java +++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorConst.java @@ -23,9 +23,5 @@ class MogoMonitorConst { */ public static final int LOCAL_CONFIG_CLOSE_LOG = 4; - - public static final String BROADCAST_START_CATCH_LOG = "com.mogo.controller.action" + - ".START_CATCH_LOG"; - public static final String BROADCAST_STOP_CATCH_LOG = "com.mogo.controller.action" + - ".STOP_CATCH_LOG"; + public static final String BROADCAST_LOG_CTRL = "com.mogo.control.action.LOG_CTRL"; } diff --git a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java index 83e03c85bb..b61b845b08 100644 --- a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java +++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java @@ -1,8 +1,11 @@ package com.zhidao.mogo.module.monitor; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.util.ArrayMap; +import android.os.Handler; +import android.os.Message; +import android.widget.Toast; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; @@ -14,11 +17,13 @@ import com.mogo.service.monitor.IMogoMonitorProvider; import com.mogo.utils.logger.LogLevel; import com.mogo.utils.logger.Logger; import com.mogo.utils.network.NetConfig; +import com.mogo.utils.network.utils.GsonUtil; import com.zhidao.mogo.module.monitor.bean.RemoteLogPushContent; import com.zhidao.mogo.module.monitor.dialog.ILogDialogListener; import com.zhidao.mogo.module.monitor.dialog.LogDebugDialog; -import java.util.Map; +import java.util.ArrayList; +import java.util.List; /** * 应用监控模块provider @@ -27,10 +32,15 @@ import java.util.Map; */ @Route(path = MogoMonitorConst.MODULE_PATH) public class MogoMonitorProvider implements IMogoMonitorProvider, - IMogoOnMessageListener, ILogDialogListener { + IMogoOnMessageListener, ILogDialogListener, Handler.Callback { private static final String TAG = MogoMonitorConst.MODULE_NAME; + private static final int MSG_TRY_CLOSE_LOG = 1001; + private static final String MANUAL_CATCH_PKG_NAME = "manual-catch-log"; private Context context; private LogDebugDialog logDebugDialog; + private RemoteLogPushContent manualContent = new RemoteLogPushContent(60, + MANUAL_CATCH_PKG_NAME); + private Handler handler = new Handler(this); @Override public void showLogDebugDialog() { logDebugDialog.show(); @@ -43,11 +53,22 @@ public class MogoMonitorProvider implements IMogoMonitorProvider, apis.getSocketManagerApi(context).registerOnMessageListener(MogoMonitorConst.LOG_PUSH_TYPE, this); } + private void startRemoteCtrl(){ + Intent intent = new Intent("com.mogo.remotecontrol.action"); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + ComponentName comp = new ComponentName("com.mogo.remotecontrol", + "com.mogo.remotecontrol.RemoteCtrlService"); + intent.setComponent(comp); + context.startService(intent); + Logger.d(TAG, "startRemoteCtrl"); + } + @Override public void resetActivityContext(Context context) { this.context = context; logDebugDialog = new LogDebugDialog(context); logDebugDialog.setDialogListener(this); + startRemoteCtrl(); } @Override @@ -60,10 +81,12 @@ public class MogoMonitorProvider implements IMogoMonitorProvider, Logger.d(TAG, "收到push消息: " + obj); switch (obj.getType()) { case MogoMonitorConst.START_CATCH_LOG: - onLogStart(); + if(!catchingList.contains(obj.getPkgName())){ + startCatchLog(obj); + } break; case MogoMonitorConst.STOP_CATCH_LOG: - onLogStop(); + stopCatchLog(obj); break; case MogoMonitorConst.LOCAL_CONFIG_OPEN_LOG: openLoggerLevel(); @@ -76,20 +99,37 @@ public class MogoMonitorProvider implements IMogoMonitorProvider, } } + private List catchingList = new ArrayList<>(); + @Override public void onLogStart() { // 这个是通过对话框点击开始的回调 - Logger.d(TAG,"开始抓取日志===="); - context.sendBroadcast(new Intent(MogoMonitorConst.BROADCAST_START_CATCH_LOG)); - openLoggerLevel(); + if(catchingList.contains(MANUAL_CATCH_PKG_NAME)){ + Toast.makeText(context, "已经在抓日志了", Toast.LENGTH_LONG).show(); + }else { + Logger.d(TAG, "开始抓取日志===="); + manualContent.setType(MogoMonitorConst.START_CATCH_LOG); + startCatchLog(manualContent); + } } - @Override public void onLogStop() { // 这个是通过对话框点击结束的回调 Logger.d(TAG,"结束抓取日志===="); - context.sendBroadcast(new Intent(MogoMonitorConst.BROADCAST_STOP_CATCH_LOG)); - closeLoggerLevel(); + manualContent.setType(MogoMonitorConst.STOP_CATCH_LOG); + stopCatchLog(manualContent); + } + + public void sendCtrlBroadcast(RemoteLogPushContent content) { + startRemoteCtrl(); + + Intent intent = new Intent(MogoMonitorConst.BROADCAST_LOG_CTRL); + intent.putExtra("content", GsonUtil.jsonFromObject(content)); + intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); + intent.addFlags(Intent.FLAG_EXCLUDE_STOPPED_PACKAGES); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + Logger.d(TAG, "sendCtrlBroadcast: " + content); + context.sendBroadcast(intent); } /** @@ -103,7 +143,41 @@ public class MogoMonitorProvider implements IMogoMonitorProvider, * 根据状态收紧Logger的限制 */ private void closeLoggerLevel() { - Logger.init(DebugConfig.isDebug() ? LogLevel.DEBUG : LogLevel.OFF); - NetConfig.instance().setLoggable(DebugConfig.isDebug()); + if(!catchingList.isEmpty()) { + Logger.init(DebugConfig.isDebug() ? LogLevel.DEBUG : LogLevel.OFF); + NetConfig.instance().setLoggable(DebugConfig.isDebug()); + } + } + + private void startCatchLog(RemoteLogPushContent content){ + catchingList.add(content.getPkgName()); + + long delay = content.getDuration() * 60 * 1000; + handler.removeMessages(MSG_TRY_CLOSE_LOG); + if (delay <= 0) { + // 如果push 下来的delay小于等于0,那就给个默认最大值一小时 + delay = 60 * 60 * 1000; + } + handler.sendEmptyMessageDelayed(MSG_TRY_CLOSE_LOG, delay); + openLoggerLevel(); + sendCtrlBroadcast(content); + } + + private void stopCatchLog(RemoteLogPushContent content) { + catchingList.remove(content.getPkgName()); + if (catchingList.isEmpty()) { + handler.removeMessages(MSG_TRY_CLOSE_LOG); + } + sendCtrlBroadcast(content); + closeLoggerLevel(); + } + + @Override + public boolean handleMessage(Message msg) { + if (msg.what == MSG_TRY_CLOSE_LOG) { + closeLoggerLevel(); + return true; + } + return false; } } diff --git a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/bean/RemoteLogPushContent.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/bean/RemoteLogPushContent.java index 29bcbacc1a..0a6da6e2b3 100644 --- a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/bean/RemoteLogPushContent.java +++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/bean/RemoteLogPushContent.java @@ -9,6 +9,15 @@ public class RemoteLogPushContent { private String cmd; private String pkgName; + public RemoteLogPushContent(){ + + } + + public RemoteLogPushContent(int duration, String pkgName) { + this.duration = duration; + this.pkgName = pkgName; + } + public int getType() { return type; } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XShareEventAdapter.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XShareEventAdapter.java index 3a84438115..d13325056c 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XShareEventAdapter.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XShareEventAdapter.java @@ -48,6 +48,7 @@ public class V2XShareEventAdapter extends RecyclerView.Adapter{ - public ShareEventsPresenter(IView view) { - super((V2XShareEventsFragment) view); + + public ShareEventsPresenter(IView view) { super((V2XShareEventsFragment) view); } + + public void loadShareEventList() { + WorkThreadHandler.getInstance().post(() -> { + mView.getShareEventResponse(); + }); } + } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/fatigue/V2XFatigueDrivingScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/fatigue/V2XFatigueDrivingScenario.java index aee983ba03..9a3ad242f3 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/fatigue/V2XFatigueDrivingScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/fatigue/V2XFatigueDrivingScenario.java @@ -65,7 +65,7 @@ public class V2XFatigueDrivingScenario extends AbsV2XScenario i @Override public void onViewRemoved(View view) { Logger.d(MODULE_NAME, "关闭 Window 动画结束"); - V2XServiceManager.getMoGoV2XStatusManager().setPushWindowShow(TAG, false); } @Override @@ -142,6 +141,7 @@ public class V2XPushEventScenario extends AbsV2XScenario i @Override public void beforeViewRemoveAnim(View view) { Logger.d(MODULE_NAME, "关闭 Window 开始"); + V2XServiceManager.getMoGoV2XStatusManager().setPushWindowShow(TAG, false); // 重置场景提示的消息 setV2XMessageEntity(null); clearPOI(); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventScenario.java index a2d89e3cba..f2565bbf67 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventScenario.java @@ -211,7 +211,6 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp @Override public void onViewRemoved(View view) { Logger.d(MODULE_NAME, "关闭 Window 动画结束"); - V2XServiceManager.getMoGoV2XStatusManager().setRoadEventWindowShow(TAG, false); } @Override @@ -222,6 +221,7 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp @Override public void beforeViewRemoveAnim(View view) { Logger.d(MODULE_NAME, "关闭 Window 开始"); + V2XServiceManager.getMoGoV2XStatusManager().setRoadEventWindowShow(TAG, false); // 重置场景提示的消息 setV2XMessageEntity(null); clearPOI(); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java index 79bcc6420b..10da5513fe 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java @@ -160,7 +160,6 @@ public class V2XSeekHelpScenario extends AbsV2XScenario> i @Override public void onViewRemoved(View view) { Logger.d(MODULE_NAME, "关闭 Window 动画结束"); - V2XServiceManager.getMoGoV2XStatusManager().setOtherSeekHelpWindowShow(TAG, false); } @Override @@ -171,6 +170,7 @@ public class V2XSeekHelpScenario extends AbsV2XScenario> i @Override public void beforeViewRemoveAnim(View view) { Logger.d(MODULE_NAME, "关闭 Window 开始"); + V2XServiceManager.getMoGoV2XStatusManager().setOtherSeekHelpWindowShow(TAG, false); // 重置场景提示的消息 setV2XMessageEntity(null); clearPOI(); diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_choose.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_choose.png index 132ee06da9..48218a14a8 100644 Binary files a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_choose.png and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_choose.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_second.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_second.png index 0eb58cb3e0..1f42366be2 100644 Binary files a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_second.png and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_second.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_unchoose.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_unchoose.png index c3aaede08e..932cb60d44 100644 Binary files a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_unchoose.png and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_unchoose.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_description.xml b/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_description.xml index e36175ddc9..10fe9e7433 100644 --- a/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_description.xml +++ b/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_description.xml @@ -7,4 +7,5 @@ android:endColor="#3F4057" android:type="linear" android:angle="180"/> + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_refresh.xml b/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_refresh.xml index 7656a1a428..d45ca08f1b 100644 --- a/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_refresh.xml +++ b/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_refresh.xml @@ -1,7 +1,7 @@ - + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/layout/module_event_panel_fragment_surrounding.xml b/modules/mogo-module-v2x/src/main/res/layout/module_event_panel_fragment_surrounding.xml index 2a28732b3a..58553bf763 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/module_event_panel_fragment_surrounding.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/module_event_panel_fragment_surrounding.xml @@ -84,7 +84,7 @@ android:layout_marginTop="@dimen/module_v2x_surrounding_empty_tv_margin_top" android:gravity="center_horizontal" android:text="周边5公里,暂无交通事件" - android:textColor="@color/white" + android:textColor="@color/transparent_white_30" android:textSize="@dimen/module_v2x_surrounding_top_textsize" android:textStyle="bold" /> @@ -97,7 +97,7 @@ android:layout_marginTop="1px" android:gravity="center_horizontal" android:text="你可以试着分享一个事件给其他车主" - android:textColor="@color/white" + android:textColor="@color/transparent_white_30" android:textSize="@dimen/module_v2x_surrounding_top_textsize" android:textStyle="bold" /> diff --git a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_panel_fragment_event_panel.xml b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_panel_fragment_event_panel.xml index 17d32282fe..cd11ceacab 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_panel_fragment_event_panel.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_panel_fragment_event_panel.xml @@ -91,4 +91,10 @@ app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="@+id/rgTabSelect" /> + + diff --git a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_description.xml b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_description.xml index cfe8dcfd4b..e9d00092d3 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_description.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_description.xml @@ -60,7 +60,7 @@ android:layout_width="0.5px" android:layout_height="46px" android:layout_marginTop="20px" - android:alpha="0.5" + android:alpha="0.3" android:background="#FFFFFF" /> + android:layout_marginTop="20px">