diff --git a/app/build.gradle b/app/build.gradle index fc622ba4c0..c3d4b22ae1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -396,7 +396,10 @@ dependencies { apply from: "./functions/widgets.gradle" apply from: "./functions/tts.gradle" +// implementation group: "com.tencent.matrix", name: "matrix-android-lib", version: '0.6.6', changing: true +// implementation group: "com.tencent.matrix", name: "matrix-android-commons", version: '0.6.6', changing: true // implementation group: "com.tencent.matrix", name: "matrix-trace-canary", version:'0.6.6', changing: true +// implementation group: "com.tencent.matrix", name: "matrix-io-canary", version: '0.6.6', changing: true } @@ -404,7 +407,7 @@ dependencies { //matrix { // trace { // enable = true //if you don't want to use trace canary, set false -// baseMethodMapFile = "${project.buildDir}/matrix_output/Debug.methodmap" +// baseMethodMapFile = "${project.projectDir}/matrixOutput/Debug.methodmap" // blackListFile = "${project.projectDir}/matrixTrace/blackMethodList.txt" // } //} @@ -425,3 +428,4 @@ android.applicationVariants.all { variant -> } apply from: "./regroup.gradle" + diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 1b82ce8c86..31ebc2b2a2 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -2,6 +2,7 @@ package com.mogo.launcher; import android.content.Context; import android.content.Intent; +import android.os.Process; import android.text.TextUtils; import android.util.Log; @@ -27,6 +28,7 @@ import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.service.passport.IMogoTicketCallback; import com.mogo.test.crashreport.ITestCrashReportProvider; +import com.mogo.utils.ProcessUtils; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.LogLevel; import com.mogo.utils.logger.Logger; @@ -90,7 +92,7 @@ public class MogoApplication extends AbsMogoApplication { MogoModulePaths.addBaseModule( new MogoModule( MogoServicePaths.PATH_MOGO_MONITOR, "MogoMonitor" ) ); MogoModulePaths.addModule( new MogoModule( PushUIConstants.PATH, PushUIConstants.NAME ) ); - MogoModulePaths.addBaseModule(new MogoModule(MogoServicePaths.PATH_GLOBAL_UNWAKE,"GlobalUnwake")); + MogoModulePaths.addBaseModule( new MogoModule( MogoServicePaths.PATH_GLOBAL_UNWAKE, "GlobalUnwake" ) ); if ( !DebugConfig.isLauncher() ) { PersistentManager.getInstance().initManager( this ); @@ -109,13 +111,11 @@ public class MogoApplication extends AbsMogoApplication { @Override protected boolean shouldInit() { - return !LeakCanary.isInAnalyzerProcess( this ); + Logger.w( TAG, "evaluate shouldInit() with: %s", ProcessUtils.getProcessName( Process.myPid() ) ); + return ProcessUtils.isMainProcess( this ); } private void initDebugConfig() { - if ( !shouldInit() ) { - return; - } DebugConfig.setNetMode( BuildConfig.NET_ENV ); DebugConfig.setDebug( BuildConfig.DEBUG ); DebugConfig.setLaunchLocationService( BuildConfig.LAUNCH_LOCATION_SERVICE ); @@ -186,10 +186,12 @@ public class MogoApplication extends AbsMogoApplication { 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 ); - } ); + if ( DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE ) { + apis.getLocationInfoApi().start(); + apis.getMapServiceApi().getSingletonLocationClient( getApplicationContext() ).addLocationListener( location -> { + apis.getLocationInfoApi().provideLocation( location ); + } ); + } } @Override diff --git a/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/socket/SocketManager.java b/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/socket/SocketManager.java index 22e6fb427c..f49e36068e 100644 --- a/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/socket/SocketManager.java +++ b/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/socket/SocketManager.java @@ -144,7 +144,6 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac if ( listener != null ) { listener.onAck( msgId ); } - Logger.d( TAG, "send message success: msgType = %d, appId = %s, productLine = %d", msgType, appId, productLine ); } catch ( InvalidProtocolBufferException e ) { e.printStackTrace(); } diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/ProcessUtils.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/ProcessUtils.java index 3b9d54eaae..90e57647b1 100644 --- a/foudations/mogo-utils/src/main/java/com/mogo/utils/ProcessUtils.java +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/ProcessUtils.java @@ -67,7 +67,7 @@ public class ProcessUtils { * @param pid 进程号 * @return 进程名 */ - private static String getProcessName( int pid ) { + public static String getProcessName( int pid ) { BufferedReader reader = null; try { reader = new BufferedReader( new FileReader( "/proc/" + pid + "/cmdline" ) ); diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java index f2b1e6815d..0d2d7e1117 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java @@ -874,7 +874,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, } else { if ( ( int ) location.getBearing() == 0 && mLastDriveLocationShadow != null ) { - if ( mMyLocationMarker == null ) { + if ( mMyLocationMarker == null || mMyLocationMarker.isRemoved() ) { initMyLocationMarker(); } if ( mMyLocationMarker != null ) { diff --git a/libraries/map-autonavi/src/main/java/com/mogo/map/impl/automap/navi/AutoNaviReceiver.java b/libraries/map-autonavi/src/main/java/com/mogo/map/impl/automap/navi/AutoNaviReceiver.java index c100707450..bc6d302e76 100644 --- a/libraries/map-autonavi/src/main/java/com/mogo/map/impl/automap/navi/AutoNaviReceiver.java +++ b/libraries/map-autonavi/src/main/java/com/mogo/map/impl/automap/navi/AutoNaviReceiver.java @@ -58,7 +58,6 @@ public class AutoNaviReceiver extends BroadcastReceiver { } int keyType = intent.getIntExtra( "KEY_TYPE", 0 ); - Logger.d( TAG, "receive: keyType = %d", keyType ); switch ( keyType ) { case 10001: handleAutoNaviInfo( context, intent ); diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainServiceController.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainServiceController.kt index c76b32e6df..3810928fc6 100644 --- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainServiceController.kt +++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainServiceController.kt @@ -213,8 +213,11 @@ class MainServiceController { } onSuccess { if (it.result != null) { - Log.i(TAG, "upload message success id" + it.result.id) - sendUgcStatusReceiver(it.result.id, mPoiType, mFromType) + Log.i(TAG, "upload success id = " + it.result.id) + Log.i(TAG, "upload success mFromType = $mFromType") + if (mFromType == "6") { + sendUgcStatusReceiver(it.result.id, mPoiType, mFromType) + } } trackUploadServer(1) @@ -224,7 +227,10 @@ class MainServiceController { onError { Log.i(TAG, "$it upload message ${it.message}") trackUploadServer(2) - sendUgcStatusReceiver(0, mPoiType, mFromType) + Log.i(TAG, "upload onError mFromType = $mFromType") + if (mFromType == "6") { + sendUgcStatusReceiver(0, mPoiType, mFromType) + } // CosStatusController().videoAndThumbMap.clear() customSend?.invoke(false) } @@ -232,7 +238,7 @@ class MainServiceController { } private fun sendUgcStatusReceiver(id: Long, type: String?, fromType: String?) { - Log.e(TAG, "sendUgcStatusReceiver ----> id = $id ---type = $type --fromType = $fromType ") + Log.d(TAG, "sendUgcStatusReceiver ----> id = $id ---type = $type --fromType = $fromType ") var intent = Intent() intent.action = "com.v2x.ugc.upload.status" intent.putExtra("id", id) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/CarSeries.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/CarSeries.java index b59987f50e..94703ac3a5 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/CarSeries.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/CarSeries.java @@ -14,8 +14,16 @@ import java.lang.reflect.Method; */ public class CarSeries { - public static boolean isF8xxSeries(){ - return DebugConfig.getProductFlavor().startsWith( "f8" ); + private static boolean invokeFlag = false; + private static boolean isF8xxSeries = false; + + public static boolean isF8xxSeries() { + if ( invokeFlag ) { + return isF8xxSeries; + } + isF8xxSeries = DebugConfig.getProductFlavor().startsWith( "f8" ); + invokeFlag = true; + return isF8xxSeries; } @Deprecated @@ -46,6 +54,12 @@ public class CarSeries { @Deprecated public static int CAR_SERIES = 0; + /** + * Deprecated. + * Use {@link DebugConfig#getProductFlavor()} instead. + * + * @return + */ @Deprecated public static int getSeries() { if ( CAR_SERIES != 0 ) { diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index ae5587cd0e..a01330099d 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -1,7 +1,6 @@ package com.mogo.module.extensions.entrance; import android.content.Intent; -import android.content.SharedPreferences; import android.graphics.Rect; import android.os.Bundle; import android.os.Debug; @@ -262,7 +261,7 @@ public class EntranceFragment extends MvpFragment { - mApis.getMogoMonitorApi().showLogDebugDialog(); + mApis.getMogoMonitorApi().getMogoMonitorLog().showLogDebugDialog(); return true; }); } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/BaseNaviInfoView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/BaseNaviInfoView.java index 192cdfe588..d96ea854c6 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/BaseNaviInfoView.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/BaseNaviInfoView.java @@ -34,27 +34,27 @@ public abstract class BaseNaviInfoView { protected void fillNextCrossDistance( TextView target, TextView unit, int distance ) { if ( distance >= 1000 ) { target.setText( String.format( "%.1f", distance / 1000f ) ); - unit.setText( "km" ); + unit.setText( "公里" ); } else { target.setText( distance + "" ); - unit.setText( "m" ); + unit.setText( "米" ); } } protected void fillFormatSurplusDistance( int m, StringBuilder builder ) { if ( m >= 1000 ) { - builder.append( String.format( "%.1fkm", m / 1000f ) ); + builder.append( String.format( "%.1f公里", m / 1000f ) ); } else { - builder.append( m ).append( "m" ); + builder.append( m ).append( "米" ); } } protected String getFormatSurplusDistance( int m ) { if ( m >= 1000 ) { - mFormatSurplusDistanceUnit = "km"; + mFormatSurplusDistanceUnit = "公里"; return String.format( "%.1f", m / 1000f ); } else { - mFormatSurplusDistanceUnit = "m"; + mFormatSurplusDistanceUnit = "米"; return String.format( "%d", m ); } } diff --git a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_shadow_bg.xml b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_shadow_bg.xml new file mode 100644 index 0000000000..1536ded683 --- /dev/null +++ b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_shadow_bg.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml index 006efa1169..c69b57da35 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml @@ -20,7 +20,7 @@ android:id="@+id/module_entrance_id_move2_current_location" android:layout_width="@dimen/module_ext_operation_panel_width" android:layout_height="@dimen/module_ext_operation_panel_move2_height" - android:background="@drawable/module_ext_shadow_bkg" + android:background="@drawable/module_ext_drawable_shadow_bg" android:scaleType="centerInside" android:src="@drawable/module_map_ic_move2_current_location" app:layout_constraintBottom_toBottomOf="parent" diff --git a/modules/mogo-module-extensions/src/main/res/values/dimens.xml b/modules/mogo-module-extensions/src/main/res/values/dimens.xml index 4965ed00e3..e74722cd8e 100644 --- a/modules/mogo-module-extensions/src/main/res/values/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values/dimens.xml @@ -138,7 +138,6 @@ 142px 66px 66px - 44px 10px 12px 14px diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java index 1b7de74777..fd51a216fa 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java @@ -432,7 +432,6 @@ public class EventDispatchCenter implements @Override public void onLocationChanged( MogoLocation location ) { - final long start = System.currentTimeMillis(); Iterator< IMogoLocationListener > iterator = MogoRegisterCenterHandler.getInstance().getLocationListeners(); if ( iterator == null ) { return; @@ -447,7 +446,6 @@ public class EventDispatchCenter implements } } } - Logger.i( TAG, "onLocationChanged event cost " + ( System.currentTimeMillis() - start ) + "ms" ); } @Override diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index 38f81fd1df..22692aeddb 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -187,7 +187,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme } } ); - mServiceApis.getMogoMonitorApi().resetActivityContext( this ); } private void resetMapCenterPoint() { diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/AutoNaviBroadcastIntentHandler.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/AutoNaviBroadcastIntentHandler.java index bc1fa9ac87..e4257b5efc 100644 --- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/AutoNaviBroadcastIntentHandler.java +++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/AutoNaviBroadcastIntentHandler.java @@ -52,8 +52,6 @@ class AutoNaviBroadcastIntentHandler implements IMogoIntentListener { int type = intent.getIntExtra( "EXTRA_TYPE", -1 ); int operaType = intent.getIntExtra( "EXTRA_OPERA", -1 ); - Logger.d( TAG, "action = %s, keyType=%s, type=%s, operType=%s", action, keyType, type, operaType ); - if ( !TextUtils.equals( action, AUTONAVI_STANDARD_BROADCAST_RECV ) && !TextUtils.equals( action, AUTONAVI_STANDARD_BROADCAST_SEND ) ) { return; 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 95eb70d8ab..cb0e03e1c7 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 @@ -1,6 +1,9 @@ package com.zhidao.mogo.module.monitor; -class MogoMonitorConst { +public class MogoMonitorConst { + + private MogoMonitorConst(){} + public static final String MODULE_NAME = "MogoMonitor"; public static final String MODULE_PATH = "/monitor/api"; 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 4f1c08f5aa..5e8c437531 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,28 +1,11 @@ package com.zhidao.mogo.module.monitor; -import android.content.ComponentName; import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.widget.Toast; import com.alibaba.android.arouter.facade.annotation.Route; -import com.mogo.commons.debug.DebugConfig; -import com.mogo.module.common.MogoApisHandler; -import com.mogo.service.IMogoServiceApis; -import com.mogo.service.connection.IMogoOnMessageListener; +import com.mogo.service.monitor.IMogoMonitorLog; 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.ArrayList; -import java.util.List; +import com.zhidao.mogo.module.monitor.log.MogoLogMonitor; /** * 应用监控模块provider @@ -30,153 +13,16 @@ import java.util.List; * @author tongchenfei */ @Route(path = MogoMonitorConst.MODULE_PATH) -public class MogoMonitorProvider implements IMogoMonitorProvider, - 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(); - } +public class MogoMonitorProvider implements IMogoMonitorProvider { @Override public void init(Context context) { - this.context = context; - IMogoServiceApis apis = MogoApisHandler.getInstance().getApis(); - apis.getSocketManagerApi(context).registerOnMessageListener(MogoMonitorConst.LOG_PUSH_TYPE, this); - startRemoteCtrl(); - } - - 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"); + MogoLogMonitor.getInstance().init(context); } @Override - public void resetActivityContext(Context context) { - this.context = context; - logDebugDialog = new LogDebugDialog(context); - logDebugDialog.setDialogListener(this); + public IMogoMonitorLog getMogoMonitorLog() { + return MogoLogMonitor.getInstance(); } - @Override - public Class target() { - return RemoteLogPushContent.class; - } - - @Override - public void onMsgReceived(RemoteLogPushContent obj) { - Logger.d(TAG, "收到push消息: " + obj); - switch (obj.getType()) { - case MogoMonitorConst.START_CATCH_LOG: - if(!catchingList.contains(obj.getPkgName())){ - startCatchLog(obj); - } - break; - case MogoMonitorConst.STOP_CATCH_LOG: - stopCatchLog(obj); - break; - case MogoMonitorConst.LOCAL_CONFIG_OPEN_LOG: - openLoggerLevel(); - break; - case MogoMonitorConst.LOCAL_CONFIG_CLOSE_LOG: - closeLoggerLevel(); - break; - default: - break; - } - } - - private List catchingList = new ArrayList<>(); - - @Override - public void onLogStart() { - // 这个是通过对话框点击开始的回调 - 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,"结束抓取日志===="); - 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); - } - - /** - * 放开Logger的限制 - */ - private void openLoggerLevel() { - Logger.init(LogLevel.DEBUG); - } - - /** - * 根据状态收紧Logger的限制 - */ - private void closeLoggerLevel() { - 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/log/MogoLogMonitor.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/log/MogoLogMonitor.java new file mode 100644 index 0000000000..e664f30b77 --- /dev/null +++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/log/MogoLogMonitor.java @@ -0,0 +1,200 @@ +package com.zhidao.mogo.module.monitor.log; + +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.os.Message; +import android.widget.Toast; + +import com.mogo.commons.AbsMogoApplication; +import com.mogo.commons.context.ContextHolderUtil; +import com.mogo.commons.debug.DebugConfig; +import com.mogo.module.common.MogoApisHandler; +import com.mogo.service.connection.IMogoOnMessageListener; +import com.mogo.service.monitor.IMogoMonitorLog; +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.MogoMonitorConst; +import com.zhidao.mogo.module.monitor.MogoMonitorProvider; +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.ArrayList; +import java.util.List; + +import static com.zhidao.mogo.module.monitor.MogoMonitorConst.LOG_PUSH_TYPE; +import static com.zhidao.mogo.module.monitor.MogoMonitorConst.MODULE_NAME; + +public class MogoLogMonitor implements IMogoOnMessageListener, IMogoMonitorLog, + ILogDialogListener, Handler.Callback { + + private static final String TAG = MODULE_NAME + "-Log"; + + private static volatile MogoLogMonitor mogoLogMonitor; + + private MogoLogMonitor() { + + } + + public static MogoLogMonitor getInstance() { + if (mogoLogMonitor == null) { + synchronized (MogoLogMonitor.class) { + if (mogoLogMonitor == null) { + mogoLogMonitor = new MogoLogMonitor(); + } + } + } + return mogoLogMonitor; + } + + private static final int MSG_TRY_CLOSE_LOG = 1001; + private static final String MANUAL_CATCH_PKG_NAME = "manual-catch-log"; + private LogDebugDialog logDebugDialog; + private RemoteLogPushContent manualContent = new RemoteLogPushContent(60, + MANUAL_CATCH_PKG_NAME); + + private Handler handler = new Handler(this); + + private List catchingList = new ArrayList<>(); + + public void init(Context context) { + MogoApisHandler.getInstance().getApis() + .getSocketManagerApi(AbsMogoApplication.getApp().getApplicationContext()) + .registerOnMessageListener(LOG_PUSH_TYPE, this); + startRemoteCtrl(context); + } + + private void startRemoteCtrl(Context context) { + 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 boolean handleMessage(Message msg) { + if (msg.what == MSG_TRY_CLOSE_LOG) { + closeLoggerLevel(); + return true; + } + return false; + } + + @Override + public Class target() { + return RemoteLogPushContent.class; + } + + @Override + public void onMsgReceived(RemoteLogPushContent obj) { + Logger.d(TAG, "收到push消息: " + obj); + switch (obj.getType()) { + case MogoMonitorConst.START_CATCH_LOG: + if (!catchingList.contains(obj.getPkgName())) { + startCatchLog(obj); + } + break; + case MogoMonitorConst.STOP_CATCH_LOG: + stopCatchLog(obj); + break; + case MogoMonitorConst.LOCAL_CONFIG_OPEN_LOG: + openLoggerLevel(); + break; + case MogoMonitorConst.LOCAL_CONFIG_CLOSE_LOG: + closeLoggerLevel(); + break; + default: + break; + } + } + + @Override + public void onLogStart() { + // 这个是通过对话框点击开始的回调 + if (catchingList.contains(MANUAL_CATCH_PKG_NAME)) { + Toast.makeText(ContextHolderUtil.getContext(), "已经在抓日志了", Toast.LENGTH_LONG).show(); + } else { + Logger.d(TAG, "开始抓取日志===="); + manualContent.setType(MogoMonitorConst.START_CATCH_LOG); + startCatchLog(manualContent); + } + } + + @Override + public void onLogStop() { + // 这个是通过对话框点击结束的回调 + Logger.d(TAG, "结束抓取日志===="); + manualContent.setType(MogoMonitorConst.STOP_CATCH_LOG); + stopCatchLog(manualContent); + } + + public void sendCtrlBroadcast(RemoteLogPushContent content) { + startRemoteCtrl(ContextHolderUtil.getContext()); + 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); + ContextHolderUtil.getContext().sendBroadcast(intent); + } + + /** + * 放开Logger的限制 + */ + private void openLoggerLevel() { + Logger.init(LogLevel.DEBUG); + } + + /** + * 根据状态收紧Logger的限制 + */ + private void closeLoggerLevel() { + 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 * 1000L; + } + 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 void showLogDebugDialog() { + if (logDebugDialog == null) { + logDebugDialog = new LogDebugDialog(ContextHolderUtil.getContext()); + logDebugDialog.setDialogListener(this); + } + if (logDebugDialog.isShowing()) { + return; + } + logDebugDialog.show(); + } +} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index e0e8324f3b..aec4e89506 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -34,6 +34,7 @@ import com.mogo.map.navi.IMogoNaviListener; import com.mogo.map.navi.MogoCongestionInfo; import com.mogo.map.navi.MogoTraffic; import com.mogo.map.uicontroller.IMogoMapUIController; +import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.MogoModule; import com.mogo.module.common.MogoModulePaths; import com.mogo.module.common.entity.MarkerResponse; @@ -53,6 +54,7 @@ import com.mogo.module.service.refresh.AutoRefreshStrategy; import com.mogo.module.service.refresh.CustomRefreshStrategy; import com.mogo.module.service.refresh.RefreshObject; import com.mogo.module.service.strategy.CarIconDisplayStrategy; +import com.mogo.service.IMogoServiceApis; import com.mogo.service.adas.IMogoADASController; import com.mogo.service.cardmanager.IMogoCardManager; import com.mogo.service.connection.IMogoOnMessageListener; @@ -74,6 +76,7 @@ import com.mogo.utils.WorkThreadHandler; import com.mogo.utils.logger.Logger; import com.mogo.utils.network.RequestOptions; import com.mogo.utils.network.utils.GsonUtil; +import com.zhidao.smartv2x.common.utils.LoggerUtils; import org.json.JSONObject; @@ -268,7 +271,6 @@ public class MogoServices implements IMogoMapListener, public void onSuccess( MarkerResponse o ) { MapMarkerManager.getInstance().onSyncMarkerResponse( o ); mLoopRequest = false; - Logger.d( TAG, "request Success." ); invokeAutoRefreshStrategy(); } @@ -331,6 +333,7 @@ public class MogoServices implements IMogoMapListener, } else { unregisterInternalUnWakeupWords(); stopAutoRefreshStrategy(); + closeAllPanel(); } } @@ -373,6 +376,16 @@ public class MogoServices implements IMogoMapListener, } }; + /** + * 关闭所有模块的控制面板 + */ + private void closeAllPanel() { + LoggerUtils.log("zy=======stop"); + MogoApisHandler.getInstance().getApis().getShareManager().dismissShareDialog(); + MogoApisHandler.getInstance().getApis().getOnlineCarPanelApi().hidePanel(); + MogoApisHandler.getInstance().getApis().getAdasControllerApi().closeADAS(); + } + public void init( Context context ) { mContext = context; @@ -458,7 +471,6 @@ public class MogoServices implements IMogoMapListener, @Override public void handleMessage( Message msg ) { super.handleMessage( msg ); - Logger.d( TAG, "current thread: %s, msg = %s", Thread.currentThread(), msg.what ); if ( msg.what == ServiceConst.MSG_MAP_CHANGED ) { if ( msg.obj instanceof RefreshObject ) { RefreshObject ro = ( ( RefreshObject ) msg.obj ); @@ -594,10 +606,8 @@ public class MogoServices implements IMogoMapListener, } private void stopAutoRefreshStrategy( boolean stopOnlineCarRefresh ) { - Logger.d( TAG, "stop auto refresh strategy" ); mHandler.removeMessages( ServiceConst.MSG_TYPE_REFRESH_DECREASE ); if ( stopOnlineCarRefresh ) { - Logger.d( TAG, "stop online car auto refresh" ); MapMarkerManager.getInstance().stopAutoRefresh(); } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/EmptyIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/EmptyIntentHandler.java index 270dcf35d3..51e40bf2b9 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/EmptyIntentHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/EmptyIntentHandler.java @@ -17,6 +17,5 @@ public class EmptyIntentHandler implements IntentHandler { @Override public void handle( Context context, Intent intent ) { - Logger.w( TAG, "空实现. %s", intent.getAction() ); } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index ef33efad2a..973f050324 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -288,7 +288,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } // 解析不同的Marker类型,然后对应的进行绘制 - Logger.d( TAG, "draw marker" ); mLastDataResult = response.getResult(); UiThreadHandler.post( () -> { @@ -419,7 +418,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, String sn = getPrimaryKeyFromEntity( markerExploreWay ); IMogoMarker mogoMarker = existCarMap.get( sn ); if ( mogoMarker == null || mogoMarker.isDestroyed() ) { - Logger.d( TAG, "draw road condition, sn = %s", sn ); try { if ( DebugConfig.isRoadEventAnimated() ) { post2AddAndStartAnimation( markerShowEntity, i * 100L ); @@ -472,7 +470,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, */ private Map< String, IMogoMarker > purgeMarkerData( List newList, String markerType ) { - final long start = System.currentTimeMillis(); Map< String, IMogoMarker > existMap = new HashMap<>(); List< IMogoMarker > allCarsList = MarkerServiceHandler.getMarkerManager().getMarkers( markerType ); if ( allCarsList == null || allCarsList.isEmpty() ) { @@ -501,7 +498,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } } allMap.clear(); - Logger.i( "timer", "purge data cost " + ( System.currentTimeMillis() - start ) + "ms" ); return existMap; } @@ -742,7 +738,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, if ( ignoreDrawRequest() ) { return; } - Logger.d( TAG, "接收到了地图大而全数据" ); runOnTargetThread( () -> { drawMapMarker( response ); } ); @@ -776,7 +771,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, private Runnable runnable = new Runnable() { @Override public void run() { - Logger.d( TAG, "内部 - 自动刷新在线车辆" ); getOnlineCarDataImpl( mCarLatLng, false, false, ServiceConst.ONLINE_SEARCH_LIMIT, ServiceConst.ONLINE_SEARCH_RADIUS, false ); } }; @@ -813,20 +807,15 @@ public class MapMarkerManager implements IMogoMarkerClickListener, mCarLatLng = latLng; } - Logger.d( TAG, "内部 - 请求执行" ); - if ( latLng == null ) { - Logger.d( TAG, "内部 - 定位为空" ); return; } if ( ignoreOnlineCarRequest() ) { - Logger.d( TAG, "内部 - 忽略请求" ); removeCarMarkers(); return; } - Logger.d( TAG, "内部 - 请求开始" ); mRefreshModel.queryOnLineCarWithRoute( latLng, onlyFocus, onlySameCity, radius, limit, false, new RefreshCallback() { @Override public void onSuccess( Object o ) { @@ -851,9 +840,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, ); } - Logger.d( TAG, "内部 - 请求完毕" ); runOnTargetThread( () -> { - Logger.d( TAG, "内部 - 请求完毕开始处理" ); trackData( size ); drawOnlineCarMarkers( onlineCarList, Integer.MAX_VALUE, fitBounds, fitBounds, mMarkerDisplayBounds, latLng ); UiThreadHandler.postDelayed( runnable, SMOOTH_DURATION * 1000 ); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelAdapter.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelAdapter.java index 55da33b57a..9e0681abdf 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelAdapter.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelAdapter.java @@ -107,9 +107,9 @@ class OnlineCarPanelAdapter extends RecyclerView.Adapter< OnlineCarPanelAdapter. } float distance = Utils.calculateLineDistance( location.getLon(), location.getLat(), lon, lat ); if ( distance >= 1000 ) { - return String.format( "%.1fKM", distance / 1000 ); + return String.format( "%.1f千米", distance / 1000 ); } else { - return String.format( "%.1fM", distance ); + return String.format( "%.1f米", distance ); } } } diff --git a/modules/mogo-module-service/src/main/res/layout/module_services_fragment_online_car_panel.xml b/modules/mogo-module-service/src/main/res/layout/module_services_fragment_online_car_panel.xml index 04abbaae72..2b4ceea7d2 100644 --- a/modules/mogo-module-service/src/main/res/layout/module_services_fragment_online_car_panel.xml +++ b/modules/mogo-module-service/src/main/res/layout/module_services_fragment_online_car_panel.xml @@ -74,7 +74,7 @@ android:textColor="@color/module_services_empty_tip_textColor" android:textSize="@dimen/module_services_empty_tip_textSize" android:textStyle="bold" - tools:text="很抱歉,目的地10km内未找到车友" /> + tools:text="很抱歉,目的地10公里内未找到车友" /> 你的周围有%d个%s,请点击查看,你也可以对我说打开蘑菇出行 周围有%d个%s 亲,建议您使用蘑菇出行 - 扩大到20KM半径 - 扩大到40KM半径 + 扩大到20公里半径 + 扩大到40公里半径 距离导航目的地 查看车友信息 - 很抱歉,目的地%dKM内未找到车友 + 很抱歉,目的地%d公里内未找到车友 目的地车友 加载失败,请点击重试 diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XConst.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XConst.java index 8818ec3b1c..f385c2e48f 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XConst.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XConst.java @@ -62,6 +62,8 @@ public class V2XConst { public static final String V2X_ROAD_EVET = "v2x_road_event"; public static final String V2X_ROAD_EVET_HISTORY_BUTTON = "V2X_button_click"; public static final String V2X_ROAD_PRODUCE = "v2x_road_produce"; + public static final String V2X_ASK_ALERT = "v2x_ask_alert";//UGC 提问 + public static final String V2X_ASK_RESULT = "v2x_ask_result";//UGC 提问回答或消失 public static final String LAUNCHER_ICON_CLICK = "Launcher_Icon_Click"; /** * V2X 道路事件操作类型 diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XEventPanelModuleProvider.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XEventPanelModuleProvider.java index faca717a53..1ef623aac8 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XEventPanelModuleProvider.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XEventPanelModuleProvider.java @@ -99,4 +99,14 @@ public class V2XEventPanelModuleProvider implements public void showPanelWithSelectedItem(int item) { V2XEventPanelFragment.Companion.getInstance().showPanelWithSelectedItem(item); } + + @Override + public void showPanel() { + V2XEventPanelFragment.Companion.getInstance().showPanel(); + } + + @Override + public void hidePanel() { + V2XEventPanelFragment.Companion.getInstance().hidePanel(); + } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XEventUgcVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XEventUgcVH.java index 00050ea54b..36847bf09e 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XEventUgcVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XEventUgcVH.java @@ -9,20 +9,26 @@ import android.widget.TextView; import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.IMogoVoiceCmdCallBack; +import com.mogo.map.MogoLatLng; import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.V2XEventShowEntity; import com.mogo.module.common.entity.V2XRoadEventEntity; import com.mogo.module.v2x.R; +import com.mogo.module.v2x.V2XConst; import com.mogo.module.v2x.V2XServiceManager; -import com.mogo.module.v2x.alarm.V2XEarlyWarningServer; import com.mogo.module.v2x.scenario.scene.ugc.V2XEventUgcScenario; import com.mogo.module.v2x.utils.EventTypeUtils; import com.mogo.module.v2x.utils.V2XUtils; import com.mogo.module.v2x.voice.V2XVoiceCallbackListener; import com.mogo.module.v2x.voice.V2XVoiceConstants; import com.mogo.module.v2x.voice.V2XVoiceManager; +import com.mogo.service.share.IMogoTanluProvider; +import com.mogo.service.share.TanluUploadParams; import com.mogo.utils.network.utils.GsonUtil; +import java.util.HashMap; +import java.util.Map; + import static com.mogo.module.v2x.V2XConst.MODULE_NAME; /** @@ -53,7 +59,6 @@ public class V2XEventUgcVH extends V2XBaseViewHolder { private V2XRoadEventEntity mV2XRoadEventEntity; private V2XEventShowEntity mV2XEventShowEntity; - public V2XEventUgcVH(ViewGroup viewGroup) { super(LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.item_v2x_event_ugc, viewGroup, false)); @@ -72,28 +77,31 @@ public class V2XEventUgcVH extends V2XBaseViewHolder { @Override public void onViewDetachedFromWindow(View v) { //Logger.w(MODULE_NAME, "列表View V2XPushEventDetailVH 触发 onViewDetachedFromWindow"); - // 反注册语音交互 - V2XVoiceManager.INSTANCE - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_YONG_DU_YES_UN_WAKEUP) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_YONG_DU_NO_UN_WAKEUP) - - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_FENG_LU_YES_UN_WAKEUP) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_FENG_LU_NO_UN_WAKEUP) - - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GU_YES_UN_WAKEUP) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GU_NO_UN_WAKEUP) - - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GONG_YES_UN_WAKEUP) - .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GONG_NO_UN_WAKEUP); + unRegisterVoice(); } }); } + void unRegisterVoice() { + // 反注册语音交互 + V2XVoiceManager.INSTANCE + .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_YONG_DU_YES_UN_WAKEUP) + .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_YONG_DU_NO_UN_WAKEUP) + + .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_FENG_LU_YES_UN_WAKEUP) + .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_FENG_LU_NO_UN_WAKEUP) + + .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GU_YES_UN_WAKEUP) + .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GU_NO_UN_WAKEUP) + + .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GONG_YES_UN_WAKEUP) + .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GONG_NO_UN_WAKEUP); + } + @Override public void initView(V2XEventShowEntity v2XEventShowEntity) { try { Log.w(MODULE_NAME + "_" + TAG, "v2XEventShowEntity=" + GsonUtil.jsonFromObject(v2XEventShowEntity)); - if (v2XEventShowEntity == null) { return; } @@ -121,12 +129,18 @@ public class V2XEventUgcVH extends V2XBaseViewHolder { } }); ivEventTypeIcon.setImageResource((Integer) ugcTitleStr[2]); + + // UGC 问答数据统计 + Map properties = new HashMap<>(); + properties.put("content", (String) ugcTitleStr[1]); + V2XServiceManager.getMogoAnalytics().track(V2XConst.V2X_ASK_ALERT, properties); } ivEventReportTrue.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + manualMarkingTrafficJam(1); } }); @@ -143,10 +157,36 @@ public class V2XEventUgcVH extends V2XBaseViewHolder { } } + // UGC 提问回答或消失 + private void dataStatistics(int result) { + Map properties = new HashMap<>(); + properties.put("result", result); + V2XServiceManager.getMogoAnalytics().track(V2XConst.V2X_ASK_RESULT, properties); + } + /** * 对道路事件进行反馈 */ void manualMarkingTrafficJam(int status) { + unRegisterVoice(); + + if (status == 1) { + // 上报事故 + TanluUploadParams params = + new TanluUploadParams( + mNoveltyInfo.getPoiType(), + IMogoTanluProvider.UPLOAD_FROM_STRATEGY_UGC, + mNoveltyInfo.getInfoIdInt(), + new MogoLatLng(mNoveltyInfo.getLocation().getLat(), + mNoveltyInfo.getLocation().getLon()) + ); + V2XServiceManager.getTanluManager().uploadRoadCondition(params); + + dataStatistics(1); + } else if (status == 0) { + dataStatistics(2); + } + AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("谢谢,您的反馈将帮助更多车友。", null); V2XServiceManager .getV2XRefreshModel() diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XFatigueDrivingVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XFatigueDrivingVH.java index f3d5c12454..2da020805c 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XFatigueDrivingVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XFatigueDrivingVH.java @@ -99,7 +99,7 @@ public class V2XFatigueDrivingVH extends V2XBaseViewHolder { SpanUtils.with(mTvAddressDistance) .append("" + (int) mV2XPushMessageEntity.getDistance()) .setFontSize((int) itemView.getResources().getDimension(R.dimen.module_v2x_event_distance_text)) - .append("m") + .append("米") .setFontSize((int) itemView.getResources().getDimension(R.dimen.module_v2x_event_distance_title)) .create(); } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java index 97910f7114..18aeb96303 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java @@ -181,14 +181,14 @@ public class V2XOtherSeekHelpVH extends V2XBaseViewHolder { SpanUtils.with(tvDistance) .append("" + (int) mV2XPushMessageEntity.getDistance() / 1000) .setFontSize((int) itemView.getResources().getDimension(R.dimen.module_v2x_event_distance_text)) - .append("km") + .append("公里") .setFontSize((int) itemView.getResources().getDimension(R.dimen.module_v2x_event_distance_title)) .create(); } else { SpanUtils.with(tvDistance) .append("" + (int) mV2XPushMessageEntity.getDistance()) .setFontSize((int) itemView.getResources().getDimension(R.dimen.module_v2x_event_distance_text)) - .append("m") + .append("米") .setFontSize((int) itemView.getResources().getDimension(R.dimen.module_v2x_event_distance_title)) .create(); } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java index 19376eb451..d9448a9c36 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java @@ -230,7 +230,7 @@ public class V2XRoadEventVH extends V2XBaseViewHolder { tvEventTypeTitle.setBackgroundResource(EventTypeUtils.getPoiTypeBg(mNoveltyInfo.getPoiType())); } tvEventAddress.setText(mNoveltyInfo.getAddr()); - tvEventDistance.setText("距离 " + (int) mNoveltyInfo.getDistance() + "M"); + tvEventDistance.setText("距离 " + (int) mNoveltyInfo.getDistance() + "米"); Calendar c = Calendar.getInstance(); c.setTimeInMillis(mNoveltyInfo.getGenerateTime()); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryOtherSeekHelpVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryOtherSeekHelpVH.java index a8189bcc72..15c5cae0c4 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryOtherSeekHelpVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryOtherSeekHelpVH.java @@ -90,14 +90,14 @@ public class V2XScenarioHistoryOtherSeekHelpVH extends V2XBaseViewHolder 0) { + AIAssist.getInstance(V2XUtils.getApp()). + speakTTSVoice("小智为您记录了今天的出行事件", null); + } else { + AIAssist.getInstance(V2XUtils.getApp()). + speakTTSVoice("小智在这里为您记录今天的出行事件", null); + } + + } + } + @Override public void onResume() { super.onResume(); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java index 71c86df54a..066ed9fba2 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java @@ -87,7 +87,7 @@ public class V2XShareEventsFragment extends MvpFragment 0) { + AIAssist.getInstance(V2XUtils.getApp()). + speakTTSVoice("发现周边" + poiInfosList.size() + "条交通信息", null); + } else { + } + } + } private Map getPoiTypeMap(List list) { Map mPoiTypeMarkers = new HashMap<>(); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/ugc/V2XEventUgcWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/ugc/V2XEventUgcWindow.java index 8e1c82f927..ef8b05eeeb 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/ugc/V2XEventUgcWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/ugc/V2XEventUgcWindow.java @@ -70,7 +70,7 @@ public class V2XEventUgcWindow extends RelativeLayout } public void initView(Context context) { - Logger.w(MODULE_NAME, "V2X-初始化疲劳驾驶"); + Logger.w(MODULE_NAME, "V2X-初始化UGC的Window"); LayoutInflater.from(context).inflate(R.layout.window_fault_help, this); // 详情列表 mRecyclerView = findViewById(R.id.rvRoadEventList); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/V2XUtils.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/V2XUtils.java index ff72b5b222..9c054b1159 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/V2XUtils.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/V2XUtils.java @@ -24,6 +24,7 @@ import androidx.core.content.FileProvider; import androidx.fragment.app.FragmentActivity; import com.mogo.utils.ThreadPoolService; +import com.mogo.utils.storage.SharedPrefsMgr; import java.io.BufferedReader; import java.io.File; @@ -31,11 +32,15 @@ import java.io.FileReader; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.sql.Time; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.ExecutorService; @@ -315,6 +320,21 @@ public class V2XUtils { } } + /* + * 当天第一次 + * */ + public static boolean isFirstTodayWithKey(String key) { + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd", Locale.US); + String formatString = format.format(new Date()); + String value = SharedPrefsMgr.getInstance(V2XUtils.getApp()).getString(key); + if (value.equals(formatString)) { + return true; + } else { + SharedPrefsMgr.getInstance(V2XUtils.getApp()).putString(key, formatString); + return false; + } + } + /////////////////////////////////////////////////////////////////////////// // TransActivity /////////////////////////////////////////////////////////////////////////// diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_road_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_road_event_data.json index 92470209e1..f491d85a2e 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_road_event_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_road_event_data.json @@ -30,7 +30,7 @@ "lat":39.966668, "lon":116.411211 }, - "poiType":"10006", + "poiType":"10003", "type":"CARD_TYPE_ROAD_CONDITION", "uploadType":"2", "userInfo":{ @@ -41,5 +41,5 @@ "userName":"零下的雨" } }, - "poiType":"10006" + "poiType":"10003" } \ No newline at end of file diff --git a/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java b/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java index f7fc67fe67..66d798f936 100644 --- a/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java +++ b/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java @@ -83,7 +83,6 @@ class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack { public void handle( Context context, Intent intent ) { int keyType = intent.getIntExtra( "KEY_TYPE", 0 ); - Logger.d( TAG, "KEY_TYPE = " + keyType ); switch ( keyType ) { case 10021: closeEntrance(); diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/eventpanel/IEventPanelProvider.java b/services/mogo-service-api/src/main/java/com/mogo/service/eventpanel/IEventPanelProvider.java index e02e7d0ceb..c779ab9632 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/eventpanel/IEventPanelProvider.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/eventpanel/IEventPanelProvider.java @@ -14,4 +14,14 @@ public interface IEventPanelProvider extends IMogoModuleProvider { */ void showPanelWithSelectedItem(int item); + /** + * 显示面板,默认选中第一个 + */ + void showPanel(); + + /** + * 隐藏面板 + */ + void hidePanel(); + } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/monitor/IMogoMonitorLog.java b/services/mogo-service-api/src/main/java/com/mogo/service/monitor/IMogoMonitorLog.java new file mode 100644 index 0000000000..7b302679c3 --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/monitor/IMogoMonitorLog.java @@ -0,0 +1,9 @@ +package com.mogo.service.monitor; + +public interface IMogoMonitorLog { + + /** + * 显示日志抓取窗口 + */ + void showLogDebugDialog(); +} diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/monitor/IMogoMonitorProvider.java b/services/mogo-service-api/src/main/java/com/mogo/service/monitor/IMogoMonitorProvider.java index e7b0f6d0b0..7d04148976 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/monitor/IMogoMonitorProvider.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/monitor/IMogoMonitorProvider.java @@ -9,14 +9,11 @@ import com.alibaba.android.arouter.facade.template.IProvider; * @author tongchenfei */ public interface IMogoMonitorProvider extends IProvider { - /** - * 显示日志抓取窗口 - */ - void showLogDebugDialog(); /** - * 重置context,设置成activity的context - * @param context activity的context + * 获取日志监控接口 + * @return */ - void resetActivityContext(Context context); + IMogoMonitorLog getMogoMonitorLog(); + } diff --git a/skin/mogo-skin-light/src/main/module-common-res/drawable/icon_heart_choose_light.png b/skin/mogo-skin-light/src/main/module-common-res/drawable/icon_heart_choose_light.png deleted file mode 100644 index a2d1364f83..0000000000 Binary files a/skin/mogo-skin-light/src/main/module-common-res/drawable/icon_heart_choose_light.png and /dev/null differ diff --git a/skin/mogo-skin-light/src/main/module-extensions-res/drawable/module_ext_drawable_shadow_bg_light.xml b/skin/mogo-skin-light/src/main/module-extensions-res/drawable/module_ext_drawable_shadow_bg_light.xml new file mode 100644 index 0000000000..70e133acad --- /dev/null +++ b/skin/mogo-skin-light/src/main/module-extensions-res/drawable/module_ext_drawable_shadow_bg_light.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/skin/mogo-skin-light/src/main/module-common-res/drawable-xhdpi/icon_heart_choose_light.png b/skin/mogo-skin-light/src/main/module-v2x-res/drawable-xhdpi/icon_heart_choose_light.png similarity index 100% rename from skin/mogo-skin-light/src/main/module-common-res/drawable-xhdpi/icon_heart_choose_light.png rename to skin/mogo-skin-light/src/main/module-v2x-res/drawable-xhdpi/icon_heart_choose_light.png