diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt index 2727f4e334..cb619918eb 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt @@ -50,6 +50,8 @@ class TaxiConst { const val DEMO_USER = "V" const val TEST_USER = "内测" + // 埋点key:接管后点击'自动驾驶'按钮启动 + const val EVENT_KEY_RESTART_AUTOPILOT = "event_key_och_taxi_restart_autopilot" // 埋点key:开始服务开启自动驾驶(成功/失败) const val EVENT_KEY_START_SERVICE = "event_key_och_taxi_start_service" const val EVENT_PARAM_SN = "sn" diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 91803d4d4e..3f468d2373 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -835,7 +835,10 @@ public class TaxiModel { return false; } - //以当前订单为基础,开启自动驾驶 + /** + * 以当前订单为基础,开启自动驾驶 + * @param isRestart 开启自动驾驶 + */ @ChainLog( linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, linkCode = CHAIN_LINK_ADAS, @@ -844,7 +847,7 @@ public class TaxiModel { paramIndexes = {0}, clientPkFileName = "sn" ) - public void startAutoPilot() { + public void startAutoPilot(boolean isRestart) { if (!checkCurrentOCHOrder()) { CallerLogger.INSTANCE.e(M_TAXI + TAG, "no order or order is empty."); TipToast.shortTip("当前订单不存在或异常!"); @@ -873,7 +876,7 @@ public class TaxiModel { CallerLogger.INSTANCE.d(M_TAXI + TAG, "start autopilot with parameter: %s", GsonUtil.jsonFromObject(parameters) + " ,startSiteName=" + mCurrentOCHOrder.startSiteAddr + " ,endSiteName=" + mCurrentOCHOrder.endSiteAddr); - TaxiAnalyticsUtil.triggerStartServiceEvent(false, + TaxiAnalyticsUtil.triggerStartAutopilotEvent(isRestart, false, mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); if (DebugConfig.isDebug()) { @@ -1061,7 +1064,7 @@ public class TaxiModel { mPrevAPStatus = state; // 每个状态单独赋值,解决无订单时已经是2的状态导致的新订单来时无法进入此逻辑更新状态 updateOCHOrderStatus(TaxiOrderStatusEnum.OnTheWayToEnd); - TaxiAnalyticsUtil.triggerStartServiceEvent(true, + TaxiAnalyticsUtil.triggerStartAutopilotEvent(false, true, mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); if (FunctionBuildConfig.isDemoMode) { @@ -1069,6 +1072,12 @@ public class TaxiModel { FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; CallerLogger.INSTANCE.d(M_TAXI + TAG, "美化模式-ignore:置为true(到达出发点且已开启自动驾驶)"); } + } else if (mCurrentOCHOrder != null + && getCurOrderStatus() == TaxiOrderStatusEnum.OnTheWayToEnd + && state != mPrevAPStatus) { + // 接管后再次启动成功埋点 + TaxiAnalyticsUtil.triggerStartAutopilotEvent(true, true, + mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); } } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { mPrevAPStatus = state; diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java index b002924cab..bb31398790 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java @@ -87,9 +87,12 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS } } - // 开启自动驾驶 - public void startAutoPilot() { - TaxiModel.getInstance().startAutoPilot(); + /** + * 开启自动驾驶 + * @param isRestart 是否是接管后重启自动驾驶 + */ + public void startAutoPilot(boolean isRestart) { + TaxiModel.getInstance().startAutoPilot(isRestart); } // 更新出车/收车状态 diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java index 56b8f488ef..9789040e7f 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java @@ -173,7 +173,8 @@ public abstract class BaseTaxiTabFragment { showNotice("自动驾驶已启动,请系好安全带"); if (!isStarting){ - mPresenter.startAutoPilot(); + mPresenter.startAutoPilot(false); startOrStopLoadingAnim(true); } TaxiModel.getInstance().setOnTheWayToEndStation(); diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/TaxiAnalyticsUtil.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/TaxiAnalyticsUtil.java index 346ad51879..248f4005e9 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/TaxiAnalyticsUtil.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/TaxiAnalyticsUtil.java @@ -21,13 +21,15 @@ import java.util.Map; public class TaxiAnalyticsUtil { /** - * 触发'开始服务'埋点流程: - * 点击开始服务(开启自动驾驶)后,15s内成功则发送成功埋点,否则发送失败埋点 + * 触发'开启自动驾驶'埋点流程 + * 开启自动驾驶,15s内成功则发送成功埋点,否则发送失败埋点 + * @param restart false(点击'开始服务'启动)/true(接管后点击'自动驾驶'按钮启动) * @param send 是否直接发送埋点(15s内开启成功则直接发送成功埋点) */ - public static void triggerStartServiceEvent( - boolean send, String startName, String endName, String orderNo) { - + public static void triggerStartAutopilotEvent( + boolean restart, boolean send, String startName, String endName, String orderNo) { + String key = restart ? + TaxiConst.EVENT_KEY_RESTART_AUTOPILOT : TaxiConst.EVENT_KEY_START_SERVICE; String sn = MoGoAiCloudClientConfig.getInstance().getSn(); String plateNum = AppConfigInfo.INSTANCE.getPlateNumber(); String dateTime = DateTimeUtils.getTimeText( @@ -46,7 +48,7 @@ public class TaxiAnalyticsUtil { Runnable runnable = () -> { // 15s内未开启,上报失败埋点 params.put(TaxiConst.EVENT_PARAM_START_RESULT, false); - AnalyticsManager.INSTANCE.track(TaxiConst.EVENT_KEY_START_SERVICE, params); + AnalyticsManager.INSTANCE.track(key, params); }; if (send) { @@ -55,7 +57,7 @@ public class TaxiAnalyticsUtil { UiThreadHandler.removeCallbacks(runnable); } params.put(TaxiConst.EVENT_PARAM_START_RESULT, true); - AnalyticsManager.INSTANCE.track(TaxiConst.EVENT_KEY_START_SERVICE, params); + AnalyticsManager.INSTANCE.track(key, params); } else { UiThreadHandler.postDelayed(runnable, TaxiConst.LOOP_PERIOD_15S); }