[Bus/Taxi driver v2.7.0]Bus:增加中途接管后开启自驾埋点

This commit is contained in:
pangfan
2022-05-26 17:10:56 +08:00
parent 66c223e352
commit 287f60e34f
5 changed files with 86 additions and 90 deletions

View File

@@ -48,6 +48,8 @@ class BusConst {
//终点UUID
const val BUS_END_MAP_MAKER = "bus_end_map_maker";
// 埋点key接管后点击'自动驾驶'按钮启动
const val EVENT_KEY_RESTART_AUTOPILOT = "event_key_och_bus_restart_autopilot"
// 埋点key开始服务开启自动驾驶成功/失败)
const val EVENT_KEY_START_SERVICE = "event_key_och_bus_start_service"
const val EVENT_PARAM_SN = "sn"

View File

@@ -1,6 +1,5 @@
package com.mogo.och.bus.model;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_STATE;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_OCH_BUS_START_AUTOPILOT;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_ADAS;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT;
@@ -49,7 +48,7 @@ import com.mogo.och.bus.constant.BusConst;
import com.mogo.och.bus.net.BusServiceManager;
import com.mogo.och.bus.net.IBusServiceCallback;
import com.mogo.och.bus.presenter.BusModelLoopManager;
import com.mogo.och.bus.util.BusAnalyticsUtil;
import com.mogo.och.bus.util.BusAnalyticsManager;
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
import com.mogo.och.common.module.utils.PinYinUtil;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
@@ -523,7 +522,7 @@ public class BusOrderModel {
+" startLatLon="+currentStation.getName()+"endLatLon="+nextStation.getName());
CallerAutoPilotManager.INSTANCE.startAutoPilot(currentAutopilot);
triggerStartServiceEvent(false);
triggerStartServiceEvent(isRestart, false);
if (mControllerStatusCallback != null) {
mControllerStatusCallback.startOpenAutopilot();
@@ -739,27 +738,6 @@ public class BusOrderModel {
}
}
/**
* 重置下一站
*
* @param lastStopStation
*/
private void resetNextStopStation( int lastStopStation ) {
CallerLogger.INSTANCE.d( M_BUS + TAG, "重置下一站");
int nextStopStation = getNextStopStation();
if ( nextStopStation < 0 ) {
return;
}
if ( lastStopStation <= nextStopStation || nextStopStation <= currentStationIndex ) {
return;
}
if ( CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()
== IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING ) {
// 自动驾驶中动态设置下一个停靠站点/
autoDriveToNextStation( true );
}
}
/**
* 根据订单状态、获取下一站靠站的的站点
*
@@ -926,13 +904,13 @@ public class BusOrderModel {
}
}
public void triggerStartServiceEvent(boolean send) {
public void triggerStartServiceEvent(boolean isRestart, boolean send) {
if (stationList == null || currentStationIndex >= stationList.size() || currentStationIndex == 0) {
return;
}
BusStationBean currentStation = stationList.get( currentStationIndex -1);
BusStationBean nextStation = stationList.get( currentStationIndex);
BusAnalyticsUtil.triggerStartServiceEvent(send,
BusAnalyticsManager.getInstance().triggerStartAutopilotEvent(isRestart, send,
currentStation.getName(), nextStation.getName(), currentLineId);
}
}

View File

@@ -200,7 +200,8 @@ public class BusPresenter extends Presenter<BusFragment>
currentAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING;
// 改变UI自动驾驶状态
runOnUIThread(() -> mView.onAutopilotStatusChanged(currentAutopilotStatus));
BusOrderModel.getInstance().triggerStartServiceEvent(true);
BusOrderModel.getInstance().triggerStartServiceEvent(
BusOrderModel.getInstance().isGoingToNextStation(), true);
}
break;
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE:

View File

@@ -0,0 +1,78 @@
package com.mogo.och.bus.util;
import android.text.TextUtils;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.data.app.AppConfigInfo;
import com.mogo.eagle.core.function.call.analytics.AnalyticsManager;
import com.mogo.eagle.core.utilcode.util.DateTimeUtils;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.och.bus.constant.BusConst;
import java.util.HashMap;
import java.util.Map;
/**
* OCH Bus埋点工具
*
* Created on 2022/3/24
*/
public class BusAnalyticsManager {
private static final class SingletonHolder {
private static final BusAnalyticsManager INSTANCE = new BusAnalyticsManager();
}
public static BusAnalyticsManager getInstance() {
return BusAnalyticsManager.SingletonHolder.INSTANCE;
}
private String mStartAutopilotKey;
private Map<String, Object> mStartAutopilotParams = new HashMap<>();
private Runnable startAutopilotRunnable = () -> {
// 15s内未开启上报失败埋点
mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_RESULT, false);
AnalyticsManager.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams);
};
/**
* 触发'开启自动驾驶'埋点流程
* 开启自动驾驶15s内成功则发送成功埋点否则发送失败埋点
* @param restart false点击'滑动出发'启动)/true接管后点击'自动驾驶'按钮启动)
* @param send 是否直接发送埋点15s内开启成功则直接发送成功埋点
*/
public void triggerStartAutopilotEvent(
boolean restart, boolean send, String startName, String endName, int lineId) {
mStartAutopilotKey = restart ?
BusConst.EVENT_KEY_RESTART_AUTOPILOT : BusConst.EVENT_KEY_START_SERVICE;
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
String plateNum = AppConfigInfo.INSTANCE.getPlateNumber();
String dateTime = DateTimeUtils.getTimeText(
System.currentTimeMillis(), DateTimeUtils.yyyy_MM_dd_HH_mm_ss);
mStartAutopilotParams.put(BusConst.EVENT_PARAM_SN, sn);
mStartAutopilotParams.put(BusConst.EVENT_PARAM_PLATE_NUM, TextUtils.isEmpty(plateNum) ? "" : plateNum);
mStartAutopilotParams.put(BusConst.EVENT_PARAM_ENV_ONLINE,
DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE ? true : false);
mStartAutopilotParams.put(BusConst.EVENT_PARAM_TIME, dateTime);
mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_NAME, startName);
mStartAutopilotParams.put(BusConst.EVENT_PARAM_END_NAME, endName);
mStartAutopilotParams.put(BusConst.EVENT_PARAM_LINE_ID, lineId);
if (send) {
// 开启成功,上报埋点
if (startAutopilotRunnable != null &&
UiThreadHandler.getsUiHandler().hasCallbacks(startAutopilotRunnable)) {
UiThreadHandler.removeCallbacks(startAutopilotRunnable);
}
mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_RESULT, true);
AnalyticsManager.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams);
} else {
UiThreadHandler.postDelayed(startAutopilotRunnable, BusConst.LOOP_PERIOD_15S);
}
}
}

View File

@@ -1,63 +0,0 @@
package com.mogo.och.bus.util;
import android.text.TextUtils;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.data.app.AppConfigInfo;
import com.mogo.eagle.core.function.call.analytics.AnalyticsManager;
import com.mogo.eagle.core.utilcode.util.DateTimeUtils;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.och.bus.constant.BusConst;
import java.util.HashMap;
import java.util.Map;
/**
* OCH Bus埋点工具
*
* Created on 2022/3/24
*/
public class BusAnalyticsUtil {
/**
* 触发'滑动出发'埋点流程:
* 滑动出发开启自动驾驶15s内成功则发送成功埋点否则发送失败埋点
* @param send 是否直接发送埋点15s内开启成功则直接发送成功埋点
*/
public static void triggerStartServiceEvent(
boolean send, String startName, String endName, int lineId) {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
String plateNum = AppConfigInfo.INSTANCE.getPlateNumber();
String dateTime = DateTimeUtils.getTimeText(
System.currentTimeMillis(), DateTimeUtils.yyyy_MM_dd_HH_mm_ss);
Map<String, Object> params = new HashMap<>();
params.put(BusConst.EVENT_PARAM_SN, sn);
params.put(BusConst.EVENT_PARAM_PLATE_NUM, TextUtils.isEmpty(plateNum) ? "" : plateNum);
params.put(BusConst.EVENT_PARAM_ENV_ONLINE,
DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE ? true : false);
params.put(BusConst.EVENT_PARAM_TIME, dateTime);
params.put(BusConst.EVENT_PARAM_START_NAME, startName);
params.put(BusConst.EVENT_PARAM_END_NAME, endName);
params.put(BusConst.EVENT_PARAM_LINE_ID, lineId);
Runnable runnable = () -> {
// 15s内未开启上报失败埋点
params.put(BusConst.EVENT_PARAM_START_RESULT, false);
AnalyticsManager.INSTANCE.track(BusConst.EVENT_KEY_START_SERVICE, params);
};
if (send) {
// 开启成功,上报埋点
if (runnable != null && UiThreadHandler.getsUiHandler().hasCallbacks(runnable)) {
UiThreadHandler.removeCallbacks(runnable);
}
params.put(BusConst.EVENT_PARAM_START_RESULT, true);
AnalyticsManager.INSTANCE.track(BusConst.EVENT_KEY_START_SERVICE, params);
} else {
UiThreadHandler.postDelayed(runnable, BusConst.LOOP_PERIOD_15S);
}
}
}