This commit is contained in:
zhongchao
2022-03-09 18:20:37 +08:00
parent 06f3cfdd8b
commit 288500fbb0
351 changed files with 697 additions and 42194 deletions

View File

@@ -1,18 +1,15 @@
package com.mogo.eagle.core.function.autopilot.adapter;
import static com.mogo.eagle.core.data.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_ARRIVE;
import static com.mogo.eagle.core.data.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_GUARDIAN;
import static com.mogo.eagle.core.data.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_RECORD;
import static com.mogo.eagle.core.data.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_ROUTE;
import static com.mogo.eagle.core.data.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_STATUS;
import static com.mogo.eagle.core.data.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_TRAJECTORY;
import static com.mogo.eagle.core.data.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_WARN;
import static com.mogo.eagle.core.data.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_STATE;
import static com.mogo.eagle.core.data.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA;
import static com.mogo.eagle.core.data.chain.ChainConstant.CHAIN_LINK_ADAS;
import static com.mogo.eagle.core.data.chain.ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA;
import android.util.Log;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_ARRIVE;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_GUARDIAN;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_RECORD;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_ROUTE;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_STATUS;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_WARN;
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_ADAS_MESSAGE_RECT_DATA;
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_DATA;
import androidx.annotation.Nullable;
@@ -36,7 +33,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.datacenter.SnapshotLocationDataCenter;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.timedelay.TimeDelayUploadManager;
import com.zhidao.support.adas.high.AdasManager;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.bean.AutopilotRoute;
@@ -53,7 +49,6 @@ import com.zhidao.support.adas.high.bean.TrajectoryInfo;
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
import com.zhidao.support.adas.high.bean.guardian.AutopilotGuardianInfo;
import com.zhidao.support.adas.high.bean.record.AutopilotRecordResult;
import com.zhidao.support.obu.ami.AmiClientManager;
import com.zhjt.service.chain.ChainLog;
import com.zhjt.service.chain.TracingConstants;
@@ -106,11 +101,6 @@ public class MoGoAdasListenerImpl implements OnAdasListener {
public void adasCarDataCallback(@Nullable AutopilotCarStateInfo stateInfo) {
//模拟数据时,不更新由工控机传输的自车位置
if (TimeDelayUploadManager.getInstance().isMock()) {
return;
}
if (stateInfo != null && stateInfo.getValues() != null) {
//Logger.d(TAG,"同步自车数据给地图……");

View File

@@ -4,8 +4,8 @@ import android.annotation.SuppressLint
import android.content.Context
import android.view.View
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.deva.chain.ChainLogParam
import com.mogo.eagle.core.data.autopilot.AutoPilotRecordResult
import com.mogo.eagle.core.data.chain.ChainLogParam
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager

View File

@@ -193,6 +193,7 @@ object MogoLogCatchManager : IMogoOnMessageListener<RemoteLogPushContent>, Handl
override fun onClose(pkgName: String?) {
ThreadUtils.runOnUiThread {
closeLoggerLevel()
SharedPrefsMgr.getInstance(mContext!!).putBoolean(MoGoConfig.CATCH_LOG, false)
SharedPrefsMgr.getInstance(mContext!!).putLong(MoGoConfig.CATCH_LOG_TIME, 0)

View File

@@ -0,0 +1,14 @@
package com.zhjt.mogo_core_function_devatools.scene
class SceneManager {
companion object {
val sceneManager: SceneManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
SceneManager()
}
}
fun init(){
}
}

View File

@@ -2,8 +2,8 @@ package com.zhjt.mogo_core_function_devatools.trace
import android.content.Context
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.chain.ChainConstant
import com.mogo.eagle.core.data.chain.ChainLogParam
import com.mogo.eagle.core.data.deva.chain.ChainConstant
import com.mogo.eagle.core.data.deva.chain.ChainLogParam
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.util.DeviceUtils
import com.mogo.eagle.core.utilcode.util.Utils

View File

@@ -0,0 +1 @@
/build

View File

@@ -0,0 +1,75 @@
plugins {
id 'com.android.library'
id 'kotlin-android'
id 'kotlin-android-extensions'
id 'kotlin-kapt'
id 'com.alibaba.arouter'
}
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion
versionCode Integer.valueOf(VERSION_CODE)
versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION")
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
//ARouter apt 参数
kapt {
useBuildCache = false
arguments {
arg("AROUTER_MODULE_NAME", project.getName())
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation rootProject.ext.dependencies.kotlinstdlibjdk7
implementation rootProject.ext.dependencies.androidxconstraintlayout
implementation rootProject.ext.dependencies.androidxccorektx
implementation rootProject.ext.dependencies.coroutinesandroid
implementation rootProject.ext.dependencies.coroutinescore
implementation rootProject.ext.dependencies.rxjava
implementation rootProject.ext.dependencies.rxandroid
implementation rootProject.ext.dependencies.arouter
kapt rootProject.ext.dependencies.aroutercompiler
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.modulecommon
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_network
implementation rootProject.ext.dependencies.mogo_core_function_call
}else{
implementation project(':modules:mogo-module-common')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-network')
implementation project(':core:mogo-core-function-call')
}
}
apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()

View File

@@ -0,0 +1,3 @@
GROUP=com.mogo.eagle.core.function.impl
POM_ARTIFACT_ID=dispatch
VERSION_CODE=1

View File

@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zhjt.dispatch">
<application>
<receiver android:name=".DispatchTestPanelBroadCastReceiver">
<intent-filter>
<action android:name="com.dispatch.test_panel_control" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
</application>
</manifest>

View File

@@ -0,0 +1,76 @@
package com.zhjt.dispatch;
import android.content.Context;
import android.text.TextUtils;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
public class DispatchAirportDialog extends DispatchBaseDialog {
private static final String TAG = "DispatchAirportDialog";
private IDispatchRemindClickListener mListener;
private final TextView tvStartLoc;
private final TextView tvEndLoc;
private final TextView tvTaskTime;
private final TextView tvFlightInfo;
private final TextView tvTaskContent;
public DispatchAirportDialog(@NonNull Context context) {
super(context);
setContentView(R.layout.module_dialog_adas_dispatch_airport);
setCanceledOnTouchOutside(false);
tvStartLoc = findViewById(R.id.module_services_dispatch_dialog_start_content);
tvEndLoc = findViewById(R.id.module_services_dispatch_dialog_end_content);
tvTaskTime = findViewById(R.id.module_services_dispatch_dialog_task_time);
tvFlightInfo = findViewById(R.id.module_services_dispatch_dialog_flight_time);
tvTaskContent = findViewById(R.id.module_services_dispatch_dialog_task_content);
Button btnAffirm = findViewById(R.id.module_services_dispatch_dialog_confirm);
btnAffirm.setOnClickListener(v -> {
if (mListener != null) {
mListener.affirm();
dismissDialog();
}
});
}
@Override
public void showDialog(DispatchAdasAutoPilotLocReceiverBean dispatchContent) {
show();
if (!TextUtils.isEmpty(dispatchContent.getStartLocAddress())) {
tvStartLoc.setText(dispatchContent.getStartLocAddress());
}
if (!TextUtils.isEmpty(dispatchContent.getEndLocAddress())) {
tvEndLoc.setText(dispatchContent.getEndLocAddress());
}
if (!TextUtils.isEmpty(dispatchContent.getTaskTime())) {
tvTaskTime.setText(dispatchContent.getTaskTime());
}
if (!TextUtils.isEmpty(dispatchContent.getFlightInfo())) {
tvFlightInfo.setText(dispatchContent.getFlightInfo());
}
if (!TextUtils.isEmpty(dispatchContent.getTaskInfo())) {
tvTaskContent.setText(dispatchContent.getTaskInfo());
}
}
private void dismissDialog() {
dismiss();
}
@Override
public void addIDispatchRemindListener(IDispatchRemindClickListener listener) {
if (listener == null) {
Logger.d(TAG, "addIDispatchRemindListener listener is null");
return;
}
this.mListener = listener;
}
}

View File

@@ -0,0 +1,329 @@
package com.zhjt.dispatch;
import android.content.Context;
import android.location.Location;
import android.os.Handler;
import android.os.Message;
import com.mogo.cloud.commons.utils.CoordinateUtils;
import com.mogo.eagle.core.data.autopilot.ADASTrajectoryInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
import com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningListener;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.api.hmi.autopilot.IMoGoCheckAutoPilotBtnListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager;
import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.module.common.MogoApisHandler;
import com.zhjt.dispatch.model.DispatchServiceModel;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.cloud.socket.IMogoOnMessageListener;
import com.zhjt.dispatch.model.IDispatch;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
import static com.zhjt.dispatch.model.DispatchServiceModel.DISPATCH_RESULT_AFFIRM;
import static com.zhjt.dispatch.model.DispatchServiceModel.DISPATCH_RESULT_MANUAL_CANCEL;
import static com.zhjt.dispatch.model.DispatchServiceModel.DISPATCH_RESULT_TIMER_CANCEL;
//负责监听自动驾驶状态并进行状态上报,自动驾驶路线上报,接收调度指令展示指令弹窗
public class DispatchAutoPilotManager implements IMogoOnMessageListener<DispatchAdasAutoPilotLocReceiverBean>
, IDispatchRemindClickListener, IMogoCarLocationChangedListener2,
IMoGoCheckAutoPilotBtnListener, IMoGoAutopilotPlanningListener, IMoGoAutopilotStatusListener {
private static final String TAG = "DispatchAutoPilotManager";
private static volatile DispatchAutoPilotManager instance;
private static final byte[] obj = new byte[0];
private Context mContext;
private static final int MSG_SOCKET_TYPE = 501000;
private static final int MSG_TYPE_SHOW_DIALOG = 0;
private static final int MSG_TYPE_UPLOAD_AUTOPILOT_STATUS = 1;
private DispatchDialogManager dispatchDialogManager;
private MogoLocation mogoLocation;
private DispatchAdasAutoPilotLocReceiverBean receiverBean;
private int autoPilotStatus = 0;
private String reason = null;
private boolean isDispatch = false;
private boolean isArriveEnd = false;
private IMogoServiceApis mApis;
private DispatchAutoPilotManager() {
}
public static DispatchAutoPilotManager getInstance() {
if (instance == null) {
synchronized (obj) {
if (instance == null) {
instance = new DispatchAutoPilotManager();
}
}
}
return instance;
}
private final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == MSG_TYPE_SHOW_DIALOG) {
if (dispatchDialogManager.isShowing()) {
Logger.d(TAG, "此时已经有调度,又收到调度信息");
return;
}
isDispatch = true;
isArriveEnd = false;
DispatchAdasAutoPilotLocReceiverBean msgData = (DispatchAdasAutoPilotLocReceiverBean) msg.obj;
dispatchDialogManager.showDialog(msgData);
} else if (msg.what == MSG_TYPE_UPLOAD_AUTOPILOT_STATUS) {
DispatchServiceModel.getInstance().uploadAutopilotStatus(autoPilotStatus, reason);
handler.sendEmptyMessageDelayed(MSG_TYPE_UPLOAD_AUTOPILOT_STATUS, 1000L);
}
}
};
public void initSocket(Context context) {
mContext = context;
mApis = MogoApisHandler.getInstance().getApis();
mApis.getSocketManagerApi(context).registerOnMessageListener(MSG_SOCKET_TYPE, this);
mApis.getRegisterCenterApi()
.registerCarLocationChangedListener(TAG, this);
// 添加自动驾驶按钮选中监听
CallerHmiListenerManager.INSTANCE.addCheckAutoPilotBtnListener(TAG, this);
// 添加 规划路径相关回调 监听
CallerAutopilotPlanningListenerManager.INSTANCE.addListener(TAG, this);
// 添加 ADAS状态 监听
CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, this);
dispatchDialogManager = DispatchDialogManager.getInstance(context);
dispatchDialogManager.addIDispatchRemindListener(this);
handler.sendEmptyMessageDelayed(MSG_TYPE_UPLOAD_AUTOPILOT_STATUS, 1000L);
}
public void release() {
// 添加自动驾驶按钮选中监听
CallerHmiListenerManager.INSTANCE.removeCheckAutoPilotBtnListener(TAG);
// 添加 规划路径相关回调 监听
CallerAutopilotPlanningListenerManager.INSTANCE.removeListener(TAG);
// 添加 ADAS状态 监听
CallerAutoPilotStatusListenerManager.INSTANCE.removeListener(TAG);
}
@Override
public Class<DispatchAdasAutoPilotLocReceiverBean> target() {
return DispatchAdasAutoPilotLocReceiverBean.class;
}
@Override
public void onMsgReceived(DispatchAdasAutoPilotLocReceiverBean adasAutoPilotLocReceiverBean) {
if (adasAutoPilotLocReceiverBean != null
&& adasAutoPilotLocReceiverBean.getStartLat() != 0.0
&& adasAutoPilotLocReceiverBean.getStartLon() != 0.0) {
this.receiverBean = adasAutoPilotLocReceiverBean;
Message message = new Message();
message.what = MSG_TYPE_SHOW_DIALOG;
message.obj = adasAutoPilotLocReceiverBean;
handler.sendMessage(message);
}
}
@Override
public void affirm() {
dispatchDialogManager.releaseDialog();
DispatchServiceModel.getInstance().dispatchResultUpload(DISPATCH_RESULT_AFFIRM, new IDispatch() {
@Override
public void onSuccess() {
startAutoPilot();
}
@Override
public void onError(String msg) {
}
});
}
private void startAutoPilot() {
AutopilotControlParameters currentAutopilot = new AutopilotControlParameters();
currentAutopilot.isSpeakVoice = false;
List<AutopilotControlParameters.AutoPilotLonLat> wayLatLon = new ArrayList<>();
if (receiverBean != null && receiverBean.getStopsList() != null) {
for (MogoLatLng mogoLatLng : receiverBean.getStopsList()) {
wayLatLon.add(new AutopilotControlParameters.AutoPilotLonLat(mogoLatLng.lat, mogoLatLng.lon));
}
}
currentAutopilot.wayLatLons = wayLatLon;
currentAutopilot.startLatLon = new AutopilotControlParameters.AutoPilotLonLat(receiverBean.getStartLat(), receiverBean.getStartLon());
currentAutopilot.endLatLon = new AutopilotControlParameters.AutoPilotLonLat(receiverBean.getEndLat(), receiverBean.getEndLon());
currentAutopilot.vehicleType = 10;
Logger.d(TAG, "开启自动驾驶====" + currentAutopilot);
CallerAutoPilotManager.INSTANCE.startAutoPilot(currentAutopilot);
}
@Override
public void cancel(boolean manualTrigger) {
dispatchDialogManager.releaseDialog();
DispatchServiceModel.getInstance().dispatchResultUpload(manualTrigger ? DISPATCH_RESULT_MANUAL_CANCEL
: DISPATCH_RESULT_TIMER_CANCEL, new IDispatch() {
@Override
public void onSuccess() {
}
@Override
public void onError(String msg) {
}
});
}
@Override
public void onCarLocationChanged2(Location location) {
//坐标转换
MogoLocation loc = new MogoLocation();
loc.setTime(loc.getTime());
loc.setAccuracy(location.getAccuracy());
loc.setSpeed(location.getSpeed());
loc.setLongitude(location.getLongitude());
loc.setLatitude(location.getLatitude());
loc.setAltitude(location.getAltitude());
loc.setBearing(location.getBearing());
loc.setProvider(location.getProvider());
mogoLocation = loc;
}
@Override
public void onCheck(boolean isChecked) {
if (isChecked) {
// 确保到达终点后,再次点击,不会有回馈,并且在下次调开始时,才会重置
if (isArriveEnd) {
return;
}
//todo 确认是否要根据停靠时自动驾驶状态,再次开启自动驾驶
// 确保处于调度中并且返回的自动驾驶状态为1才开启自动驾驶
// 上述等待鄂州项目复盘后,产品输出完成方案后再进操作!!!
if (isDispatch) {
startAutoPilot();
}
}
}
public void testAutopilotStatus() {
autoPilotStatus = 2;
}
public void testEZhouStart() {
Logger.d(TAG, "test to trigger mock testEZhouStart");
DispatchAdasAutoPilotLocReceiverBean adasAutoPilotLocReceiverBean = new DispatchAdasAutoPilotLocReceiverBean(
DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_EZHOU, DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_START, "1",
26.825571122, 112.5762410415, "起点---5号跑道",
26.825571122, 112.5762410415, "终点---鄂州机场",
"5分钟", "AR453航班", "你车需执行编号ca1098次航班的引导任务从A区A1到B区B1", System.currentTimeMillis(), new ArrayList<>());
this.receiverBean = adasAutoPilotLocReceiverBean;
DispatchDialogManager.getInstance(mContext).showDialog(adasAutoPilotLocReceiverBean);
}
public void testEZhouStop() {
Logger.d(TAG, "test to trigger mock testEZhouStop");
DispatchAdasAutoPilotLocReceiverBean adasAutoPilotLocReceiverBean = new DispatchAdasAutoPilotLocReceiverBean(
DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_EZHOU, DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_STOP, "1",
0.0, 0.0, "",
0.0, 0.0, "",
"", "", "", System.currentTimeMillis(), new ArrayList<>());
this.receiverBean = adasAutoPilotLocReceiverBean;
DispatchDialogManager.getInstance(mContext).showDialog(adasAutoPilotLocReceiverBean);
}
public void testHengYangStart() {
Logger.d(TAG, "test to trigger mock testHengYangStart");
DispatchAdasAutoPilotLocReceiverBean adasAutoPilotLocReceiverBean = new DispatchAdasAutoPilotLocReceiverBean(
DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_HENGYANG, DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_START, "2",
26.825571122, 112.5762410415, "衡阳科学城",
26.825571122, 112.5762410415, "衡阳首钢集团",
"", "", "", System.currentTimeMillis(), new ArrayList<>());
this.receiverBean = adasAutoPilotLocReceiverBean;
DispatchDialogManager.getInstance(mContext).showDialog(adasAutoPilotLocReceiverBean);
}
public void testDispatchResultUpload() {
DispatchServiceModel.getInstance().dispatchResultUpload(DISPATCH_RESULT_AFFIRM, new IDispatch() {
@Override
public void onSuccess() {
}
@Override
public void onError(String msg) {
}
});
}
@Override
public void onAutopilotTrajectory(ArrayList<ADASTrajectoryInfo> trajectoryInfos) {
}
@Override
public void onAutopilotRotting(AutopilotRouteInfo autopilotRoute) {
if (autopilotRoute == null || autopilotRoute.getModels() == null || autopilotRoute.getModels().size() == 0) {
return;
}
DispatchServiceModel.getInstance().uploadAutopilotRoute(autopilotRoute.getModels());
}
@Override
public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autoPilotStatusInfo) {
autoPilotStatus = autoPilotStatusInfo.getState();
this.reason = autoPilotStatusInfo.getReason();
}
@Override
public void onAutopilotArriveAtStation(@Nullable AutopilotStationInfo autopilotWayArrive) {
if (!isDispatch) {
return;
}
if (autopilotWayArrive == null) {
return;
}
Logger.d(TAG, "onArriveAt data : " + autopilotWayArrive.toString());
double endLat = autopilotWayArrive.getLat();
double endLon = autopilotWayArrive.getLon();
// 计算是不是到了终点
float distanceFromSelf = CoordinateUtils.calculateLineDistance(receiverBean.getEndLon(), receiverBean.getEndLat()
, endLon, endLat);
Logger.d(TAG, "onArriveAt cal distance : " + distanceFromSelf);
if (distanceFromSelf < 10) {
Logger.d(TAG, "onArriveAt end location");
isDispatch = false;
isArriveEnd = true;
}
}
@Override
public void onAutopilotSNRequest() {
}
@Override
public void onAutopilotGuardian(@Nullable AutopilotGuardianStatusInfo guardianInfo) {
}
}

View File

@@ -0,0 +1,20 @@
package com.zhjt.dispatch;
import android.content.Context;
import androidx.annotation.NonNull;
import com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.module.common.dialog.BaseFloatDialog;
public abstract class DispatchBaseDialog extends BaseFloatDialog {
public DispatchBaseDialog(@NonNull Context context) {
super(context);
}
public abstract void addIDispatchRemindListener(IDispatchRemindClickListener listener);
public abstract void showDialog(DispatchAdasAutoPilotLocReceiverBean dispatchContent);
}

View File

@@ -0,0 +1,97 @@
package com.zhjt.dispatch;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
public class DispatchCarsDialog extends DispatchBaseDialog{
private static final String TAG = "DispatchCarsDialog";
private static final int MSG_TYPE_TIMER = 0;
private static int TIMER = 10;
private IDispatchRemindClickListener mListener;
private final TextView tvTimer;
private final TextView tvLoc;
private final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == MSG_TYPE_TIMER) {
if (TIMER > 0) {
TIMER--;
Logger.d(TAG,"timer : " + TIMER);
tvTimer.setText(String.valueOf(TIMER));
handler.sendEmptyMessageDelayed(MSG_TYPE_TIMER,1000L);
} else {
hideDialog();
}
}
}
};
public DispatchCarsDialog(@NonNull Context context) {
super(context);
setContentView(R.layout.module_dialog_adas_dispatch_cars);
setCanceledOnTouchOutside(false);
tvTimer = findViewById(R.id.module_adas_dispatch_remind_timer);
tvLoc = findViewById(R.id.module_adas_dispatch_remind_loc);
Button btnAffirm = (Button) findViewById(R.id.module_adas_dispatch_remind_affirm);
Button btnCancel = (Button) findViewById(R.id.module_adas_dispatch_remind_cancel);
tvTimer.setText(String.valueOf(TIMER));
btnAffirm.setOnClickListener(v -> {
if (mListener != null) {
mListener.affirm();
dismissDialog();
}
});
btnCancel.setOnClickListener(v -> {
if (mListener != null) {
mListener.cancel(true);
dismissDialog();
}
});
}
private void hideDialog() {
if (mListener != null) {
mListener.cancel(false);
}
dismissDialog();
}
private void dismissDialog(){
handler.removeMessages(MSG_TYPE_TIMER);
TIMER = 10;
dismiss();
}
@Override
public void addIDispatchRemindListener(IDispatchRemindClickListener listener) {
if (listener == null) {
Logger.d(TAG, "addIDispatchRemindListener listener is null");
return;
}
this.mListener = listener;
}
@Override
public void showDialog(DispatchAdasAutoPilotLocReceiverBean dispatchContent) {
if(TextUtils.isEmpty(dispatchContent.getEndLocAddress())){
return;
}
show();
handler.sendEmptyMessage(MSG_TYPE_TIMER);
tvLoc.setText(dispatchContent.getEndLocAddress());
}
}

View File

@@ -0,0 +1,110 @@
package com.zhjt.dispatch;
import static com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_EZHOU;
import static com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_HENGYANG;
import static com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_START;
import static com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_STOP;
import android.content.Context;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
public class DispatchDialogManager {
private static final String TAG = "DispatchDialogManager";
private static volatile DispatchDialogManager manager;
private static final byte[] obj = new byte[0];
private final Context mContext;
private IDispatchRemindClickListener mListener;
private DispatchBaseDialog dialog;
private DispatchDialogManager(Context context) {
mContext = context;
}
public static DispatchDialogManager getInstance(Context context) {
if (manager == null) {
synchronized (obj) {
if (manager == null) {
manager = new DispatchDialogManager(context);
}
}
}
return manager;
}
public void addIDispatchRemindListener(IDispatchRemindClickListener listener) {
if (listener == null) {
Logger.d(TAG, "addIDispatchRemindListener listener is null");
return;
}
this.mListener = listener;
}
public boolean isShowing() {
return dialog != null && dialog.isShowing();
}
public void showDialog(DispatchAdasAutoPilotLocReceiverBean msgData) {
if (msgData == null) {
return;
}
switch (msgData.getSource()) {
case DISPATCH_SOURCE_HENGYANG:
dispatchHengYang(msgData);
break;
case DISPATCH_SOURCE_EZHOU:
dispatchEZhou(msgData);
break;
}
}
private void dispatchHengYang(DispatchAdasAutoPilotLocReceiverBean msgData) {
if (msgData.getType() == DISPATCH_TYPE_START) { //衡阳只有开始调度
if (dialog != null && dialog.isShowing()) { //避免下发两次
return;
}
if (dialog == null) {
dialog = new DispatchCarsDialog(mContext);
}
dialog.addIDispatchRemindListener(mListener);
dialog.showDialog(msgData);
}
}
private void dispatchEZhou(DispatchAdasAutoPilotLocReceiverBean msgData) {
switch (msgData.getType()) {
case DISPATCH_TYPE_START:
if (dialog != null && dialog.isShowing()) { //避免下发两次
return;
}
if (dialog == null) {
dialog = new DispatchAirportDialog(mContext);
}
dialog.addIDispatchRemindListener(mListener);
dialog.showDialog(msgData);
break;
case DISPATCH_TYPE_STOP:
//语音播报
voice();
break;
}
}
private void voice() {
AIAssist.getInstance(mContext).speakTTSVoice("请立即停车!请立即停车!");
}
public void releaseDialog() {
if (dialog != null) {
if (dialog.isShowing()) {
dialog.dismiss();
}
dialog = null;
}
}
}

View File

@@ -0,0 +1,50 @@
package com.zhjt.dispatch;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
public class DispatchTestPanelBroadCastReceiver extends BroadcastReceiver {
private static final String TAG = "DispatchTestPanelBroadCastReceiver";
/**
* Adas测试控制面板广播Action
*/
public static final String BROADCAST_TEST_PANEL_CONTROL_TYPE_EXTRA_KEY = "sceneType";
@Override
public void onReceive(Context context, Intent intent) {
try {
int sceneType = intent.getIntExtra(BROADCAST_TEST_PANEL_CONTROL_TYPE_EXTRA_KEY, 0);
Logger.d(TAG, "textPanelOpenType:" + sceneType);
// 分发场景
dispatchSceneTest(sceneType);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 分发处理场景
*
* @param sceneType 场景类型
*/
private void dispatchSceneTest(int sceneType) {
Logger.d(TAG, "sceneType=" + sceneType);
if (sceneType == 0) {
DispatchAutoPilotManager.getInstance().testEZhouStart();
} else if (sceneType == 1) {
DispatchAutoPilotManager.getInstance().testEZhouStop();
} else if (sceneType == 2) {
DispatchAutoPilotManager.getInstance().testHengYangStart();
} else if (sceneType == 3) { //验证自动驾驶调度上报接口
DispatchAutoPilotManager.getInstance().testDispatchResultUpload();
} else if (sceneType == 4) { //更改自动驾驶状态上报
DispatchAutoPilotManager.getInstance().testAutopilotStatus();
}
}
}

View File

@@ -0,0 +1,8 @@
package com.zhjt.dispatch;
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider;
public interface IDispatchProvider extends IMoGoFunctionServerProvider {
}

View File

@@ -0,0 +1,8 @@
package com.zhjt.dispatch;
public interface IDispatchRemindClickListener {
void affirm();
void cancel(boolean manualTrigger);
}

View File

@@ -0,0 +1,29 @@
package com.zhjt.dispatch;
import android.content.Context;
import androidx.annotation.NonNull;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
@Route(path = MogoServicePaths.PATH_AI_DISPATCH)
public class MoGoDispatchProvider implements IDispatchProvider{
@NonNull
@Override
public String getFunctionName() {
return "MoGoDispatchProvider";
}
@Override
public void init(Context context) {
DispatchAutoPilotManager.getInstance().initSocket(context);
}
@Override
public void onDestroy() {
}
}

View File

@@ -0,0 +1,162 @@
package com.zhjt.dispatch.model;
import static com.mogo.commons.context.ContextHolderUtil.getContext;
import static com.mogo.module.common.constants.HostConst.DATA_SERVICE_HOST;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStatus;
import com.mogo.eagle.core.data.dispatch.ReportDispatchResult;
import com.mogo.eagle.core.data.dispatch.ReportedRoute;
import com.mogo.eagle.core.network.RequestOptions;
import com.mogo.eagle.core.network.SubscribeImpl;
import com.mogo.eagle.core.network.utils.GsonUtil;
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
import com.mogo.module.common.MogoApisHandler;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
public class DispatchServiceModel {
private static final String TAG = "DispatchServiceModel";
private static volatile DispatchServiceModel instance;
private static final byte[] obj = new byte[0];
public static final int DISPATCH_RESULT_AFFIRM = 0;
public static final int DISPATCH_RESULT_MANUAL_CANCEL = 1;
public static final int DISPATCH_RESULT_TIMER_CANCEL = 2;
private final IDispatchAdasApiService mAdasApiService;
private DispatchServiceModel() {
mAdasApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create(IDispatchAdasApiService.class, DATA_SERVICE_HOST);
}
public static DispatchServiceModel getInstance() {
if (instance == null) {
synchronized (obj) {
if (instance == null) {
instance = new DispatchServiceModel();
}
}
}
return instance;
}
/**
* 上报自动驾驶状态
*/
public void uploadAutopilotStatus(int state, String reason) {
AutopilotStatus autopilotStatus = new AutopilotStatus();
autopilotStatus.setAction("autopilotstate");
AutopilotStatus.ValuesBean valuesBean = new AutopilotStatus.ValuesBean();
valuesBean.setState(state);
valuesBean.setReason(reason);
autopilotStatus.setValues(valuesBean);
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
ReportedRoute reportedRoute = new ReportedRoute(sn, autopilotStatus.getValues());
Map<String, Object> map = new HashMap<>();
map.put("sn", sn);
map.put("data", GsonUtil.jsonFromObject(reportedRoute));
mAdasApiService.uploadAutopilotState(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(getContext())) {
@Override
public void onNext(BaseData o) {
super.onNext(o);
//Logger.d(TAG, "uploadAutopilotStatus success");
}
@Override
public void onError(Throwable e) {
super.onError(e);
Logger.d(TAG, "uploadAutopilotStatus error : " + e.getMessage());
}
@Override
public void onSuccess(BaseData o) {
super.onSuccess(o);
}
});
}
/**
* 上报自动驾驶路线
*
* @param list 路线集合
*/
public void uploadAutopilotRoute(List<AutopilotRouteInfo.RouteModels> list) {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
ReportedRoute reportedRoute = new ReportedRoute(sn, GsonUtil.jsonFromObject(list));
Map<String, Object> map = new HashMap<>();
map.put("sn", sn);
map.put("data", GsonUtil.jsonFromObject(reportedRoute));
mAdasApiService.uploadAutopilotRoute(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(getContext())) {
@Override
public void onNext(BaseData o) {
super.onNext(o);
Logger.d(TAG, "uploadAutopilotRoute success");
}
@Override
public void onError(Throwable e) {
super.onError(e);
Logger.d(TAG, "uploadAutopilotRoute error : " + e.getMessage());
}
@Override
public void onSuccess(BaseData o) {
super.onSuccess(o);
}
});
}
/**
* 上报调度处理结果
*
* @param dispatchResultType int
*/
public void dispatchResultUpload(int dispatchResultType, IDispatch dispatch) {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
ReportDispatchResult reportDispatchResult = new ReportDispatchResult(sn, dispatchResultType);
Map<String, Object> map = new HashMap<>();
map.put("sn", sn);
map.put("data", GsonUtil.jsonFromObject(reportDispatchResult));
mAdasApiService.uploadDispatchResult(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(getContext())) {
@Override
public void onNext(BaseData o) {
super.onNext(o);
Logger.d(TAG, "dispatchResultUpload success");
dispatch.onSuccess();
}
@Override
public void onError(Throwable e) {
super.onError(e);
Logger.d(TAG, "dispatchResultUpload error : " + e.getMessage());
dispatch.onError(e.getMessage());
}
@Override
public void onSuccess(BaseData o) {
super.onSuccess(o);
}
});
}
}

View File

@@ -0,0 +1,8 @@
package com.zhjt.dispatch.model;
public interface IDispatch {
void onSuccess();
void onError(String msg);
}

View File

@@ -0,0 +1,43 @@
package com.zhjt.dispatch.model;
import com.mogo.eagle.core.data.BaseData;
import java.util.Map;
import io.reactivex.Observable;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
public interface IDispatchAdasApiService {
/**
* 上报自动驾驶路径 服务于业务调度
*
* @param parameters map
* @return {@link BaseData}
*/
@FormUrlEncoded
@POST("/dataService/autoDriver/receiveCarPreSetPath")
Observable<BaseData> uploadAutopilotRoute(@FieldMap Map<String, Object> parameters);
/**
* 上报自动驾驶调度处理结果 服务于业务调度
*
* @param parameters map
* @return {@link BaseData}
*/
@FormUrlEncoded
@POST("/dataService/autoDriver/receiverDestSiteResult")
Observable<BaseData> uploadDispatchResult(@FieldMap Map<String, Object> parameters);
/**
* 上报自动驾驶状态 服务于业务调度
*
* @param parameters map
* @return {@link BaseData}
*/
@FormUrlEncoded
@POST("/dataService/autoDriver/receiveAutopilotState")
Observable<BaseData> uploadAutopilotState(@FieldMap Map<String, Object> parameters);
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/module_services_dispatch_bg" />
<corners android:radius="@dimen/module_services_dispatch_airport_dialog_corner" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/module_services_dispatch_affirm_bg" />
<corners android:radius="@dimen/module_services_dispatch_airport_dialog_affirm_corner" />
</shape>

View File

@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:bottomLeftRadius="@dimen/module_services_dispatch_cars_dialog_corner"/>
<solid android:color="@color/module_services_dispatch_cars_background"/>
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/module_services_dispatch_cars_dialog_corner"/>
<solid android:color="@color/module_services_dispatch_cars_background"/>
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:bottomRightRadius="@dimen/module_services_dispatch_cars_dialog_corner"/>
<solid android:color="@color/module_services_dispatch_cars_background"/>
</shape>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="@color/module_services_dispatch_cars_count_down_bg"/>
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/module_services_remind_background" />
<corners android:bottomLeftRadius="@dimen/module_services_dispatch_cars_dialog_corner" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/module_services_remind_background" />
<corners android:bottomRightRadius="@dimen/module_services_dispatch_cars_dialog_corner" />
</shape>

View File

@@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/module_services_dispatch_airport_dialog_width"
android:layout_height="wrap_content"
android:background="@drawable/bg_adas_dispatch">
<TextView
android:id="@+id/module_services_dispatch_dialog_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_title_margin_top"
android:text="@string/module_services_dispatch_dialog_title"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_title_size"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_first_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_startloc_margin_top"
android:text="@string/module_services_dispatch_dialog_start_loc"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
android:id="@+id/module_services_dispatch_dialog_start_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_first_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_startloc_content_margin_top"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_title_size"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_first_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_endloc_margin_top"
android:text="@string/module_services_dispatch_dialog_end_loc"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
android:id="@+id/module_services_dispatch_dialog_end_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_first_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_endloc_content_margin_top"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_title_size"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_first_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_task_margin_top"
android:text="@string/module_services_dispatch_dialog_task_info"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
android:id="@+id/module_services_dispatch_dialog_task_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_first_column_margin_left"
android:layout_marginEnd="@dimen/module_services_dispatch_airport_dialog_first_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_task_content_margin_top"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_task_content_size" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_last_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_startloc_margin_top"
android:text="@string/module_services_dispatch_dialog_task_time"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
android:id="@+id/module_services_dispatch_dialog_task_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_last_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_startloc_content_margin_top"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_title_size"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_last_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_endloc_margin_top"
android:text="@string/module_services_dispatch_dialog_flight_info"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
android:id="@+id/module_services_dispatch_dialog_flight_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_last_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_endloc_content_margin_top"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_title_size"
android:textStyle="bold" />
<Button
android:id="@+id/module_services_dispatch_dialog_confirm"
android:layout_width="@dimen/module_services_dispatch_airport_dialog_affirm_width"
android:layout_height="@dimen/module_services_dispatch_airport_dialog_affirm_height"
android:layout_below="@+id/module_services_dispatch_dialog_task_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_margin_top"
android:layout_marginBottom="@dimen/module_services_dispatch_airport_dialog_margin_bottom"
android:background="@drawable/bg_adas_dispatch_affirm"
android:gravity="center"
android:text="@string/module_services_dispatch_dialog_affirm"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_title_size"
android:textStyle="bold" />
</RelativeLayout>

View File

@@ -0,0 +1,96 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/module_services_dispatch_cars_dialog_width"
android:layout_height="@dimen/module_services_dispatch_cars_dialog_height"
android:background="@drawable/module_service_dispatch_cars_bg">
<TextView
android:id="@+id/module_adas_dispatch_remind_timer"
android:layout_width="@dimen/module_services_dispatch_cars_dialog_timer_size"
android:layout_height="@dimen/module_services_dispatch_cars_dialog_timer_size"
android:layout_margin="@dimen/module_services_dispatch_cars_dialog_timer_margin"
android:background="@drawable/module_service_dispatch_timer_bg"
android:gravity="center"
android:text="10"
android:textColor="@color/module_services_dispatch_cars_count_down_txt"
android:textSize="@dimen/module_services_dispatch_cars_dialog_timer_txt_size"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/module_services_dispatch_cars_dialog_title_margin_top"
android:text="@string/module_services_dispatch_cars_remind_title"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_cars_dialog_title_size"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/module_services_dispatch_cars_dialog_content_margin_top"
android:text="@string/module_services_dispatch_cars_remind_content"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_cars_dialog_content_size"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/module_adas_dispatch_remind_loc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/module_services_dispatch_cars_dialog_loc_margin_top"
android:maxLines="1"
android:textColor="@color/module_services_dispatch_cars_text_loc"
android:textSize="@dimen/module_services_dispatch_cars_dialog_loc_size"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/module_services_dispatch_cars_line"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toTopOf="@+id/module_adas_dispatch_remind_affirm"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<Button
android:id="@+id/module_adas_dispatch_remind_affirm"
android:layout_width="@dimen/module_services_dispatch_cars_dialog_btn_width"
android:layout_height="@dimen/module_services_dispatch_cars_dialog_line_margin_bottom"
android:gravity="center"
android:background="@drawable/module_service_left_corner_bg"
android:text="@string/module_services_dispatch_cars_affirm"
android:textColor="@color/module_services_dispatch_cars_text_loc"
android:textSize="@dimen/module_services_dispatch_cars_dialog_title_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />
<View
android:layout_width="2px"
android:layout_height="@dimen/module_services_dispatch_cars_dialog_line_margin_bottom"
android:layout_marginStart="@dimen/module_services_dispatch_cars_dialog_btn_width"
android:background="@color/module_services_dispatch_cars_line"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />
<Button
android:id="@+id/module_adas_dispatch_remind_cancel"
android:layout_width="@dimen/module_services_dispatch_cars_dialog_btn_width"
android:layout_height="@dimen/module_services_dispatch_cars_dialog_line_margin_bottom"
android:gravity="center"
android:text="@string/module_services_dispatch_cars_cancel"
android:textColor="@color/module_services_dispatch_cars_cancel"
android:background="@drawable/module_service_right_corner_bg"
android:textSize="@dimen/module_services_dispatch_cars_dialog_title_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--鄂州机场调度Dialog-->
<dimen name="module_services_dispatch_airport_dialog_width">1263px</dimen>
<dimen name="module_services_dispatch_airport_dialog_height">1173px</dimen>
<dimen name="module_services_dispatch_airport_dialog_corner">32px</dimen>
<dimen name="module_services_dispatch_airport_dialog_next_level_title_size">38px</dimen>
<dimen name="module_services_dispatch_airport_dialog_title_size">48px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_content_size">42px</dimen>
<dimen name="module_services_dispatch_airport_dialog_title_margin_top">55px</dimen>
<dimen name="module_services_dispatch_airport_dialog_startloc_margin_top">219px</dimen>
<dimen name="module_services_dispatch_airport_dialog_startloc_content_margin_top">288px</dimen>
<dimen name="module_services_dispatch_airport_dialog_endloc_margin_top">415px</dimen>
<dimen name="module_services_dispatch_airport_dialog_endloc_content_margin_top">484px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_margin_top">621px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_content_margin_top">690px</dimen>
<dimen name="module_services_dispatch_airport_dialog_first_column_margin_left">100px</dimen>
<dimen name="module_services_dispatch_airport_dialog_last_column_margin_left">852px</dimen>
<dimen name="module_services_dispatch_airport_dialog_margin_top">86px</dimen>
<dimen name="module_services_dispatch_airport_dialog_margin_bottom">80px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_width">700px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_height">140px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_corner">70px</dimen>
<!--衡阳小巴调度Dialog-->
<dimen name="module_services_dispatch_cars_dialog_width">950px</dimen>
<dimen name="module_services_dispatch_cars_dialog_height">540px</dimen>
<dimen name="module_services_dispatch_cars_dialog_corner">32px</dimen>
<dimen name="module_services_dispatch_cars_dialog_title_size">48px</dimen>
<dimen name="module_services_dispatch_cars_dialog_title_margin_top">55px</dimen>
<dimen name="module_services_dispatch_cars_dialog_content_size">38px</dimen>
<dimen name="module_services_dispatch_cars_dialog_content_margin_top">179px</dimen>
<dimen name="module_services_dispatch_cars_dialog_loc_size">54px</dimen>
<dimen name="module_services_dispatch_cars_dialog_loc_margin_top">251px</dimen>
<dimen name="module_services_dispatch_cars_dialog_line_margin_bottom">152px</dimen>
<dimen name="module_services_dispatch_cars_dialog_btn_width">474px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_margin">20px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_size">46px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_txt_size">24px</dimen>
</resources>

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--鄂州机场调度Dialog-->
<dimen name="module_services_dispatch_airport_dialog_width">947px</dimen>
<dimen name="module_services_dispatch_airport_dialog_height">880px</dimen>
<dimen name="module_services_dispatch_airport_dialog_corner">24px</dimen>
<dimen name="module_services_dispatch_airport_dialog_next_level_title_size">28px</dimen>
<dimen name="module_services_dispatch_airport_dialog_title_size">36px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_content_size">30px</dimen>
<dimen name="module_services_dispatch_airport_dialog_title_margin_top">41px</dimen>
<dimen name="module_services_dispatch_airport_dialog_startloc_margin_top">164px</dimen>
<dimen name="module_services_dispatch_airport_dialog_startloc_content_margin_top">216px</dimen>
<dimen name="module_services_dispatch_airport_dialog_endloc_margin_top">311px</dimen>
<dimen name="module_services_dispatch_airport_dialog_endloc_content_margin_top">363px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_margin_top">466px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_content_margin_top">519px</dimen>
<dimen name="module_services_dispatch_airport_dialog_first_column_margin_left">125px</dimen>
<dimen name="module_services_dispatch_airport_dialog_last_column_margin_left">639px</dimen>
<dimen name="module_services_dispatch_airport_dialog_margin_top">100px</dimen>
<dimen name="module_services_dispatch_airport_dialog_margin_bottom">60px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_width">525px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_height">105px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_corner">52px</dimen>
<!--衡阳小巴调度Dialog-->
<dimen name="module_services_dispatch_cars_dialog_width">712px</dimen>
<dimen name="module_services_dispatch_cars_dialog_height">405px</dimen>
<dimen name="module_services_dispatch_cars_dialog_corner">24px</dimen>
<dimen name="module_services_dispatch_cars_dialog_title_size">36px</dimen>
<dimen name="module_services_dispatch_cars_dialog_title_margin_top">41px</dimen>
<dimen name="module_services_dispatch_cars_dialog_content_size">28px</dimen>
<dimen name="module_services_dispatch_cars_dialog_content_margin_top">134px</dimen>
<dimen name="module_services_dispatch_cars_dialog_loc_size">40px</dimen>
<dimen name="module_services_dispatch_cars_dialog_loc_margin_top">188px</dimen>
<dimen name="module_services_dispatch_cars_dialog_line_margin_bottom">114px</dimen>
<dimen name="module_services_dispatch_cars_dialog_btn_width">355px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_margin">15px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_size">35px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_txt_size">18px</dimen>
</resources>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="module_services_dispatch_bg">#E63B4577</color>
<color name="module_services_dispatch_affirm_bg">#3E7BFE</color>
<color name="module_services_dispatch_cars_text_loc">#1F9BFE</color>
<color name="module_services_dispatch_cars_background">#E63B4577</color>
<color name="module_services_dispatch_cars_count_down_txt">#8E9DD4</color>
<color name="module_services_dispatch_cars_count_down_bg">#4D000000</color>
<color name="module_services_dispatch_cars_line">#66B8BFE8</color>
<color name="module_services_dispatch_cars_cancel">#AFB3C7</color>
<color name="module_services_remind_background">#E63B4577</color>
</resources>

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_services_dispatch_airport_dialog_width">1263px</dimen>
<dimen name="module_services_dispatch_airport_dialog_height">1173px</dimen>
<dimen name="module_services_dispatch_airport_dialog_corner">32px</dimen>
<dimen name="module_services_dispatch_airport_dialog_next_level_title_size">38px</dimen>
<dimen name="module_services_dispatch_airport_dialog_title_size">48px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_content_size">42px</dimen>
<dimen name="module_services_dispatch_airport_dialog_title_margin_top">55px</dimen>
<dimen name="module_services_dispatch_airport_dialog_startloc_margin_top">219px</dimen>
<dimen name="module_services_dispatch_airport_dialog_startloc_content_margin_top">288px</dimen>
<dimen name="module_services_dispatch_airport_dialog_endloc_margin_top">415px</dimen>
<dimen name="module_services_dispatch_airport_dialog_endloc_content_margin_top">484px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_margin_top">621px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_content_margin_top">690px</dimen>
<dimen name="module_services_dispatch_airport_dialog_first_column_margin_left">100px</dimen>
<dimen name="module_services_dispatch_airport_dialog_last_column_margin_left">852px</dimen>
<dimen name="module_services_dispatch_airport_dialog_margin_top">86px</dimen>
<dimen name="module_services_dispatch_airport_dialog_margin_bottom">80px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_width">700px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_height">140px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_corner">70px</dimen>
<dimen name="module_services_dispatch_cars_dialog_width">950px</dimen>
<dimen name="module_services_dispatch_cars_dialog_height">540px</dimen>
<dimen name="module_services_dispatch_cars_dialog_corner">32px</dimen>
<dimen name="module_services_dispatch_cars_dialog_title_size">48px</dimen>
<dimen name="module_services_dispatch_cars_dialog_title_margin_top">55px</dimen>
<dimen name="module_services_dispatch_cars_dialog_content_size">38px</dimen>
<dimen name="module_services_dispatch_cars_dialog_content_margin_top">179px</dimen>
<dimen name="module_services_dispatch_cars_dialog_loc_size">54px</dimen>
<dimen name="module_services_dispatch_cars_dialog_loc_margin_top">251px</dimen>
<dimen name="module_services_dispatch_cars_dialog_line_margin_bottom">152px</dimen>
<dimen name="module_services_dispatch_cars_dialog_btn_width">474.5px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_margin">20px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_size">46px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_txt_size">24px</dimen>
</resources>

View File

@@ -0,0 +1,14 @@
<resources>
<string name="module_services_dispatch_dialog_title">您有新的工作任务</string>
<string name="module_services_dispatch_dialog_start_loc">开始地点:</string>
<string name="module_services_dispatch_dialog_end_loc">结束地点:</string>
<string name="module_services_dispatch_dialog_task_time">任务时间:</string>
<string name="module_services_dispatch_dialog_task_info">任务内容:</string>
<string name="module_services_dispatch_dialog_flight_info">航班信息:</string>
<string name="module_services_dispatch_dialog_affirm">接受任务</string>
<string name="module_services_dispatch_cars_remind_title">调度确认</string>
<string name="module_services_dispatch_cars_remind_content">车辆将开启自动驾驶,并行驶至:</string>
<string name="module_services_dispatch_cars_affirm">确认</string>
<string name="module_services_dispatch_cars_cancel">取消</string>
</resources>

View File

@@ -11,7 +11,7 @@ import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.autopilot.*
import com.mogo.eagle.core.data.chain.ChainConstant
import com.mogo.eagle.core.data.deva.chain.ChainConstant
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.constants.MoGoConfig
import com.mogo.eagle.core.data.enums.TrafficTypeEnum

View File

@@ -321,6 +321,8 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_AI_MONITORING, "IMoGoMonitoringProvider"));
// 云公告发布
MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_AI_NOTICE, "IMoGoNoticeProvider"));
// 调度
MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_AI_DISPATCH, "IDispatchProvider"));
// V2X 模块
MogoModulePaths.addBaseModule(new MogoModule(MogoServicePaths.PATH_V2X_MODULE, "V2XProvider"));
// 自动驾驶系统检测模块

View File

@@ -1,18 +0,0 @@
/**
* Automatically generated file. DO NOT MODIFY
*/
package com.mogo.eagle.core.function.smp;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String LIBRARY_PACKAGE_NAME = "com.mogo.eagle.core.function.smp";
/**
* @deprecated APPLICATION_ID is misleading in libraries. For the library package name use LIBRARY_PACKAGE_NAME
*/
@Deprecated
public static final String APPLICATION_ID = "com.mogo.eagle.core.function.smp";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "0.0.58.10";
}

View File

@@ -1,18 +0,0 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.enums.RouteType;
import com.alibaba.android.arouter.facade.model.RouteMeta;
import com.alibaba.android.arouter.facade.template.IRouteGroup;
import com.mogo.eagle.core.function.smp.SmallMapFragment;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Group$$smp_ui implements IRouteGroup {
@Override
public void loadInto(Map<String, RouteMeta> atlas) {
atlas.put("/smp_ui/", RouteMeta.build(RouteType.FRAGMENT, SmallMapFragment.class, "/smp_ui/", "smp_ui", null, -1, -2147483648));
}
}

View File

@@ -1,15 +0,0 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.model.RouteMeta;
import com.alibaba.android.arouter.facade.template.IProviderGroup;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Providers$$mogocorefunctionsmp implements IProviderGroup {
@Override
public void loadInto(Map<String, RouteMeta> providers) {
}
}

View File

@@ -1,17 +0,0 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.template.IRouteGroup;
import com.alibaba.android.arouter.facade.template.IRouteRoot;
import java.lang.Class;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Root$$mogocorefunctionsmp implements IRouteRoot {
@Override
public void loadInto(Map<String, Class<? extends IRouteGroup>> routes) {
routes.put("smp_ui", ARouter$$Group$$smp_ui.class);
}
}

View File

@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.eagle.core.function.smp"
android:versionCode="1"
android:versionName="0.0.58.10" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" />
</manifest>

View File

@@ -1 +0,0 @@
[{"outputType":{"type":"AAPT_FRIENDLY_MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"0.0.58.10","enabled":true,"outputFile":"mogo-core-function-smp-debug.aar","fullName":"debug","baseName":"debug"},"path":"AndroidManifest.xml","properties":{"packageId":"com.mogo.eagle.core.function.smp","split":""}}]

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arrowem/Documents/androidProject/Launcher/core/mogo-core-data/src/main/jniLibs"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arrowem/Documents/androidProject/Launcher/core/mogo-core-data/src/debug/jniLibs"/></dataSet></merger>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arrowem/Documents/androidProject/Launcher/core/mogo-core-function-call/src/main/shaders"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arrowem/Documents/androidProject/Launcher/core/mogo-core-function-call/src/debug/shaders"/></dataSet></merger>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/assets"><file name="small_map_style_extra.data" path="/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/assets/small_map_style_extra.data"/><file name="small_map_style.data" path="/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/assets/small_map_style.data"/></source><source path="/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/build/intermediates/shader_assets/debug/compileDebugShaders/out"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/debug/assets"/></dataSet></merger>

View File

@@ -1,13 +0,0 @@
#Wed Mar 02 20:38:36 CST 2022
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/res/layout/module_small_map_fragment.xml=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/build/intermediates/packaged_res/debug/layout/module_small_map_fragment.xml
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/res/drawable-xhdpi-2560x1440/module_small_map_view_dir_end.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/build/intermediates/packaged_res/debug/drawable-xhdpi-2560x1440-v4/module_small_map_view_dir_end.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/res/drawable-xhdpi-2560x1440/module_small_map_view_end.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/build/intermediates/packaged_res/debug/drawable-xhdpi-2560x1440-v4/module_small_map_view_end.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/res/layout/module_small_map_view.xml=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/build/intermediates/packaged_res/debug/layout/module_small_map_view.xml
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/res/drawable-xhdpi-2560x1440/module_small_map_view_my_location_logo.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/build/intermediates/packaged_res/debug/drawable-xhdpi-2560x1440-v4/module_small_map_view_my_location_logo.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/res/drawable/bg_module_small_map_view_border.xml=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/build/intermediates/packaged_res/debug/drawable/bg_module_small_map_view_border.xml
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/res/drawable-xhdpi/module_small_map_view_my_location_logo.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/module_small_map_view_my_location_logo.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/res/drawable-xhdpi/module_small_map_view_border.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/module_small_map_view_border.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/res/drawable-xhdpi-2560x1440/module_small_map_view_dir_start.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/build/intermediates/packaged_res/debug/drawable-xhdpi-2560x1440-v4/module_small_map_view_dir_start.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/res/drawable-xhdpi/module_small_map_view_border_north.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/module_small_map_view_border_north.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/res/drawable-xhdpi-2560x1440/module_small_map_view_start.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/build/intermediates/packaged_res/debug/drawable-xhdpi-2560x1440-v4/module_small_map_view_start.png
/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/res/drawable-xhdpi/icon_module_small_map_four_corners.png=/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_module_small_map_four_corners.png

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_small_map_border_view_width">550px</dimen>
<dimen name="module_small_map_padding">40px</dimen>
<dimen name="module_small_map_view_border_width">400px</dimen>
<dimen name="module_small_map_view_width">360px</dimen>
</resources>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_small_map_border_view_width">450px</dimen>
<dimen name="module_small_map_padding">30px</dimen>
<dimen name="module_small_map_view_border_width">288px</dimen>
<dimen name="module_small_map_view_width">260px</dimen>
</resources>

View File

@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.eagle.core.function.smp"
android:versionCode="1"
android:versionName="0.0.58.10" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" />
</manifest>

View File

@@ -1,21 +0,0 @@
R_DEF: Internal format may change without notice
local
dimen module_small_map_border_view_width
dimen module_small_map_padding
dimen module_small_map_view_border_width
dimen module_small_map_view_width
drawable bg_module_small_map_view_border
drawable icon_module_small_map_four_corners
drawable module_small_map_view_border
drawable module_small_map_view_border_north
drawable module_small_map_view_dir_end
drawable module_small_map_view_dir_start
drawable module_small_map_view_end
drawable module_small_map_view_my_location_logo
drawable module_small_map_view_start
id aMapNaviView
id ivMapBorder
id rlSmallMapBorder
id smallMapDirectionView
layout module_small_map_fragment
layout module_small_map_view

View File

@@ -1,13 +0,0 @@
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="com.mogo.eagle.core.function.smp"
4 android:versionCode="1"
5 android:versionName="0.0.58.10" >
6
7 <uses-sdk
8 android:minSdkVersion="19"
8-->/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
9 android:targetSdkVersion="19" />
9-->/Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
10
11</manifest>

View File

@@ -1 +0,0 @@
[{"outputType":{"type":"MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"0.0.58.10","enabled":true,"outputFile":"mogo-core-function-smp-debug.aar","fullName":"debug","baseName":"debug"},"path":"../../library_manifest/debug/AndroidManifest.xml","properties":{"packageId":"com.mogo.eagle.core.function.smp","split":""}}]

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!---->
<item>
<shape android:shape="oval">
<padding
android:bottom="2dp"
android:left="2dp"
android:right="2dp"
android:top="2dp" />
<gradient
android:angle="315"
android:endColor="#151D45"
android:startColor="#151D45"
android:type="linear" />
</shape>
</item>
<!-- 中心背景 -->
<item>
<shape android:shape="oval">
<solid android:color="#323C6F" />
<corners android:radius="720px" />
</shape>
</item>
</layer-list>

View File

@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.mogo.eagle.core.function.smp.SmallMapDirectionView
android:id="@+id/smallMapDirectionView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,42 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:parentTag="RelativeLayout">
<View
android:layout_width="@dimen/module_small_map_view_border_width"
android:layout_height="@dimen/module_small_map_view_border_width"
android:layout_centerInParent="true"
android:background="@drawable/module_small_map_view_border" />
<com.mogo.eagle.core.widget.RoundLayout
android:id="@+id/rlSmallMapBorder"
android:layout_width="@dimen/module_small_map_view_width"
android:layout_height="@dimen/module_small_map_view_width"
android:layout_centerInParent="true"
app:roundLayoutRadius="360dp">
<!--TODO Hook方案在Pad上有问题,优先 效果,后面在看如何解决-->
<!-- <com.amap.api.navi.AMapNaviView-->
<!-- android:id="@+id/aMapNaviView"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent" />-->
<com.amap.api.maps.TextureMapView
android:id="@+id/aMapNaviView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.mogo.eagle.core.widget.RoundLayout>
<ImageView
android:id="@+id/ivMapBorder"
android:layout_width="@dimen/module_small_map_border_view_width"
android:layout_height="@dimen/module_small_map_border_view_width"
android:layout_centerInParent="true"
android:visibility="gone"
android:src="@drawable/module_small_map_view_border_north" />
</merge>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_small_map_border_view_width">550px</dimen>
<dimen name="module_small_map_padding">40px</dimen>
<dimen name="module_small_map_view_border_width">400px</dimen>
<dimen name="module_small_map_view_width">360px</dimen>
</resources>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_small_map_border_view_width">450px</dimen>
<dimen name="module_small_map_padding">30px</dimen>
<dimen name="module_small_map_view_border_width">288px</dimen>
<dimen name="module_small_map_view_width">260px</dimen>
</resources>

View File

@@ -1,37 +0,0 @@
-- Merging decision tree log ---
manifest
ADDED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml:2:1-5:12
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml:2:1-5:12
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml:2:1-5:12
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml:2:1-5:12
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml:2:1-5:12
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml:2:1-5:12
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml:2:1-5:12
package
ADDED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml:3:5-47
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
android:versionName
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
ADDED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml:2:1-5:12
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
android:versionCode
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
ADDED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml:2:1-5:12
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
xmlns:android
ADDED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml:2:11-69
uses-sdk
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml reason: use-sdk injection requested
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
android:targetSdkVersion
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
ADDED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
android:minSdkVersion
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
ADDED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml
INJECTED from /Users/arrowem/Documents/androidProject/Launcher/core/function-impl/mogo-core-function-smp/src/main/AndroidManifest.xml

Some files were not shown because too many files have changed in this diff Show More