[2.13.0-arch-opt] move dispatch to biz and remove gradle settings

This commit is contained in:
zhongchao
2023-01-03 22:11:48 +08:00
parent 86149bf22d
commit 22df250f6f
71 changed files with 944 additions and 1609 deletions

View File

@@ -187,7 +187,6 @@ ext {
mogo_core_function_v2x : "com.mogo.eagle.core.function.impl:v2x:${MOGO_CORE_FUNCTION_V2X_VERSION}",
mogo_core_function_api : "com.mogo.eagle.core.function:api:${MOGO_CORE_FUNCTION_API_VERSION}",
mogo_core_function_call : "com.mogo.eagle.core.function:call:${MOGO_CORE_FUNCTION_CALL_VERSION}",
mogo_core_function_carcorder : "com.mogo.eagle.core.function:carcorder:${MOGO_CORE_FUNCTION_CARCORDER_VERSION}",
mogo_core_data : "com.mogo.eagle.core:data:${MOGO_CORE_DATA_VERSION}",
mogo_core_res : "com.mogo.eagle.core:res:${MOGO_CORE_RES_VERSION}",
mogo_core_utils : "com.mogo.eagle.core:utils:${MOGO_CORE_UTILS_VERSION}",

View File

@@ -0,0 +1,46 @@
package com.mogo.eagle.function.biz.push
import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.function.api.biz.IMoGoFuncBizProvider
import com.mogo.eagle.core.function.api.biz.IMoGoNoticeNetCallBack
import com.mogo.eagle.function.biz.push.dispatch.DispatchAutoPilotManager.Companion.dispatchAutoPilotManager
import com.mogo.eagle.function.biz.push.notice.NoticeSocketManager.Companion.noticeSocketManager
import com.mogo.eagle.function.biz.push.notice.network.NoticeNetWorkManager
@Route(path = MogoServicePaths.PATH_FUNC_BIZ)
class FuncBizProvider : IMoGoFuncBizProvider {
override val functionName: String
get() = "FuncBiz"
override fun init(context: Context) {
noticeSocketManager.init(context)
dispatchAutoPilotManager.init(context)
}
override fun feedBackNoticeTraffic(infoId: String, sn: String, accept: Int) {
NoticeNetWorkManager.getInstance().sendAccidentAcceptStatus(infoId, sn, accept)
}
override fun requestAccidentInfo(infoId: String, sn: String, callBack: IMoGoNoticeNetCallBack) {
NoticeNetWorkManager.getInstance().requestAccidentInfo(infoId, sn, callBack)
}
override fun dispatchAffirm() {
dispatchAutoPilotManager.affirm()
}
override fun dispatchCancel(manualTrigger: Boolean) {
dispatchAutoPilotManager.cancel(manualTrigger)
}
override fun testDispatch(sceneType: Int) {
dispatchAutoPilotManager.testDispatch(sceneType)
}
override fun onDestroy() {
noticeSocketManager.release()
dispatchAutoPilotManager.release()
}
}

View File

@@ -1,48 +0,0 @@
package com.mogo.eagle.function.biz.push;
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.eagle.core.function.api.notice.IMoGoNoticeProvider;
import com.mogo.eagle.core.function.api.notice.NoticeNetCallBack;
import com.mogo.eagle.function.biz.push.network.NoticeNetWorkManager;
import org.jetbrains.annotations.NotNull;
/**
* @author Jing
* @description 云公告公告
* @since: 10/27/21
*/
@Route(path = MogoServicePaths.PATH_AI_NOTICE)
public class NoticeProvider implements IMoGoNoticeProvider {
@NotNull
@Override
public String getFunctionName() {
return null;
}
@Override
public void onDestroy() {
NoticeSocketManager.getInstance().unRegisterSocketMessageListener();
}
@Override
public void init(Context context) {
NoticeSocketManager.getInstance().registerSocketMessageListener(context);
}
@Override
public void feedBackNoticeTraffic(String infoId, String sn, int accept) {
NoticeNetWorkManager.getInstance().sendAccidentAcceptStatus(infoId, sn, accept);
}
@Override
public void requestAccidentInfo(String infoId, String sn, NoticeNetCallBack callBack) {
NoticeNetWorkManager.getInstance().requestAccidentInfo(infoId, sn, callBack);
}
}

View File

@@ -1,93 +0,0 @@
package com.mogo.eagle.function.biz.push;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_NOTICE;
import android.content.Context;
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager;
import com.mogo.eagle.core.data.msgbox.MsgBoxBean;
import com.mogo.eagle.core.data.msgbox.MsgBoxType;
import com.mogo.eagle.core.data.msgbox.NoticeFrCloudMsg;
import com.mogo.eagle.core.data.notice.NoticeNormalData;
import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData;
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.network.utils.GsonUtil;
import com.mogo.aicloud.services.socket.IMogoOnMessageListener;
/**
* @author Jing
* @description 云公告注册、反注册
* @since: 10/27/21
*/
class NoticeSocketManager {
private String TAG = "AINotice";
private static NoticeSocketManager mNoticeSocketManager;
private Context mContext;
public static synchronized NoticeSocketManager getInstance() {
synchronized (NoticeSocketManager.class) {
if (mNoticeSocketManager == null) {
mNoticeSocketManager = new NoticeSocketManager();
}
}
return mNoticeSocketManager;
}
public void registerSocketMessageListener(Context context) {
mContext = context;
MogoAiCloudSocketManager.getInstance(context).
registerOnMessageListener(301001, mTrafficNoticeListener);
MogoAiCloudSocketManager.getInstance(context).
registerOnMessageListener(100, mNormalNoticeListener);
}
public void unRegisterSocketMessageListener() {
MogoAiCloudSocketManager.getInstance(mContext).
unregisterOnMessageListener(301001, mTrafficNoticeListener);
MogoAiCloudSocketManager.getInstance(mContext).
unregisterOnMessageListener(100, mNormalNoticeListener);
}
/**
* 普通云公告
*/
private final IMogoOnMessageListener<NoticeNormalData> mNormalNoticeListener = new IMogoOnMessageListener<NoticeNormalData>() {
@Override
public Class<NoticeNormalData> target() {
return NoticeNormalData.class;
}
@Override
public void onMsgReceived(NoticeNormalData obj) {
if (obj == null) {
return;
}
CallerLogger.INSTANCE.d(M_NOTICE + TAG, "100-- 普通公告数据:" + GsonUtil.jsonFromObject(obj));
NoticeFrCloudMsg noticeFromCloudMsg = new NoticeFrCloudMsg(obj, null, 0);
CallerMsgBoxManager.INSTANCE.saveMsgBox(new MsgBoxBean(MsgBoxType.NOTICE, noticeFromCloudMsg));
}
};
/**
* 交警类型公告弹窗
*/
private final IMogoOnMessageListener<NoticeTrafficStylePushData> mTrafficNoticeListener = new IMogoOnMessageListener<NoticeTrafficStylePushData>() {
@Override
public Class<NoticeTrafficStylePushData> target() {
return NoticeTrafficStylePushData.class;
}
@Override
public void onMsgReceived(NoticeTrafficStylePushData obj) {
if (obj == null) {
return;
}
CallerLogger.INSTANCE.d(M_NOTICE + TAG, "301001-- 交警类型公告数据:" + GsonUtil.jsonFromObject(obj));
NoticeFrCloudMsg noticeFromCloudMsg = new NoticeFrCloudMsg(null, obj, 1);
CallerMsgBoxManager.INSTANCE.saveMsgBox(new MsgBoxBean(MsgBoxType.NOTICE, noticeFromCloudMsg));
}
};
}

View File

@@ -0,0 +1,289 @@
package com.mogo.eagle.function.biz.push.dispatch
import android.annotation.SuppressLint
import android.content.Context
import android.os.Handler
import android.os.Message
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager
import com.mogo.cloud.commons.utils.CoordinateUtils
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo
import com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean
import com.mogo.eagle.core.data.map.MogoLatLng
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.CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.function.biz.push.dispatch.network.DispatchServiceModel.Companion.DISPATCH_RESULT_AFFIRM
import com.mogo.eagle.function.biz.push.dispatch.network.DispatchServiceModel.Companion.DISPATCH_RESULT_MANUAL_CANCEL
import com.mogo.eagle.function.biz.push.dispatch.network.DispatchServiceModel.Companion.DISPATCH_RESULT_TIMER_CANCEL
import com.mogo.eagle.function.biz.push.dispatch.network.DispatchServiceModel.Companion.dispatchServiceModel
import mogo.telematics.pad.MessagePad
//负责监听自动驾驶状态并进行状态上报,自动驾驶路线上报,接收调度指令展示指令弹窗
class DispatchAutoPilotManager private constructor() :
IMogoOnMessageListener<DispatchAdasAutoPilotLocReceiverBean>, IMoGoCheckAutoPilotBtnListener,
IMoGoAutopilotPlanningListener, IMoGoAutopilotStatusListener {
companion object {
private const val TAG = "DispatchAutoPilotManager"
private const val MSG_SOCKET_TYPE = 501000
private const val MSG_TYPE_SHOW_DIALOG = 0
private const val MSG_TYPE_UPLOAD_AUTOPILOT_STATUS = 1
val dispatchAutoPilotManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
DispatchAutoPilotManager()
}
}
private var mContext: Context? = null
private var receiverBean: DispatchAdasAutoPilotLocReceiverBean? = null
private var isDispatch = false
private var isArriveEnd = false
private val handler: Handler = object : Handler() {
override fun handleMessage(msg: Message) {
super.handleMessage(msg)
if (msg.what == MSG_TYPE_SHOW_DIALOG) {
isDispatch = true
isArriveEnd = false
val msgData: DispatchAdasAutoPilotLocReceiverBean =
msg.obj as DispatchAdasAutoPilotLocReceiverBean
CallerHmiManager.showDispatchDialog(msgData)
} else if (msg.what == MSG_TYPE_UPLOAD_AUTOPILOT_STATUS) {
dispatchServiceModel.uploadAutopilotStatus(
getAutoPilotStatusInfo().state,
getAutoPilotStatusInfo().reason
)
sendEmptyMessageDelayed(MSG_TYPE_UPLOAD_AUTOPILOT_STATUS, 1000L)
}
}
}
fun init(context: Context) {
mContext = context
MogoAiCloudSocketManager.getInstance(context)
.registerOnMessageListener(MSG_SOCKET_TYPE, this)
// 添加自动驾驶按钮选中监听
CallerHmiListenerManager.addCheckAutoPilotBtnListener(TAG, this)
// 添加 规划路径相关回调 监听
CallerAutopilotPlanningListenerManager.addListener(TAG, this)
// 添加 ADAS状态 监听
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
handler.sendEmptyMessageDelayed(MSG_TYPE_UPLOAD_AUTOPILOT_STATUS, 1000L)
}
fun release() {
// 添加自动驾驶按钮选中监听
CallerHmiListenerManager.removeCheckAutoPilotBtnListener(TAG)
// 添加 规划路径相关回调 监听
CallerAutopilotPlanningListenerManager.removeListener(TAG)
// 添加 ADAS状态 监听
CallerAutoPilotStatusListenerManager.removeListener(TAG)
}
override fun target(): Class<DispatchAdasAutoPilotLocReceiverBean> {
return DispatchAdasAutoPilotLocReceiverBean::class.java
}
override fun onMsgReceived(adasAutoPilotLocReceiverBean: DispatchAdasAutoPilotLocReceiverBean?) {
if (adasAutoPilotLocReceiverBean != null && adasAutoPilotLocReceiverBean.startLat != 0.0 && adasAutoPilotLocReceiverBean.startLon != 0.0) {
receiverBean = adasAutoPilotLocReceiverBean
val message = Message()
message.what = MSG_TYPE_SHOW_DIALOG
message.obj = adasAutoPilotLocReceiverBean
handler.sendMessage(message)
}
}
private fun startAutoPilot() {
val currentAutopilot = AutopilotControlParameters()
currentAutopilot.isSpeakVoice = false
val wayLatLon: MutableList<AutopilotControlParameters.AutoPilotLonLat> = ArrayList()
receiverBean?.let {
if (it.stopsList != null) {
for (mogoLatLng in receiverBean!!.stopsList) {
wayLatLon.add(
AutopilotControlParameters.AutoPilotLonLat(
mogoLatLng.lat,
mogoLatLng.lon
)
)
}
}
currentAutopilot.wayLatLons = wayLatLon
currentAutopilot.startLatLon =
AutopilotControlParameters.AutoPilotLonLat(it.startLat, it.startLon)
currentAutopilot.endLatLon =
AutopilotControlParameters.AutoPilotLonLat(it.endLat, it.endLon)
currentAutopilot.vehicleType = 10
CallerLogger.d(SceneConstant.Companion.M_DISPATCH + TAG, "开启自动驾驶====$currentAutopilot")
CallerAutoPilotManager.startAutoPilot(currentAutopilot)
}
}
fun affirm() {
CallerHmiManager.dismissDispatchDialog()
dispatchServiceModel.dispatchResultUpload(DISPATCH_RESULT_AFFIRM)
}
fun cancel(manualTrigger: Boolean) {
CallerHmiManager.dismissDispatchDialog()
dispatchServiceModel.dispatchResultUpload(
if (manualTrigger) DISPATCH_RESULT_MANUAL_CANCEL else DISPATCH_RESULT_TIMER_CANCEL
)
}
override fun onCheck(isChecked: Boolean) {
if (isChecked) {
// 确保到达终点后,再次点击,不会有回馈,并且在下次调开始时,才会重置
if (isArriveEnd) {
return
}
//todo 确认是否要根据停靠时自动驾驶状态,再次开启自动驾驶
// 确保处于调度中并且返回的自动驾驶状态为1才开启自动驾驶
// 上述等待鄂州项目复盘后,产品输出完成方案后再进操作!!!
if (isDispatch) {
startAutoPilot()
}
}
}
override fun onAutopilotRotting(globalPathResp: MessagePad.GlobalPathResp?) {
if (globalPathResp == null || globalPathResp.wayPointsList.isEmpty()) {
return
}
val list: MutableList<AutopilotRouteInfo.RouteModels> = ArrayList()
for (location in globalPathResp.wayPointsList) {
val routeModels = AutopilotRouteInfo.RouteModels()
routeModels.lat = location.latitude
routeModels.lon = location.longitude
list.add(routeModels)
}
dispatchServiceModel.uploadAutopilotRoute(list)
}
override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) {
if (!isDispatch) {
return
}
if (arrivalNotification == null) {
return
}
if (receiverBean == null) {
return
}
CallerLogger.d(
SceneConstant.Companion.M_DISPATCH + TAG,
"onArriveAt data : $arrivalNotification"
)
if (arrivalNotification.endLocation == null) {
return
}
val endLat: Double = arrivalNotification.endLocation.latitude
val endLon: Double = arrivalNotification.endLocation.longitude
// 计算是不是到了终点
val distanceFromSelf: Float = CoordinateUtils.calculateLineDistance(
receiverBean!!.endLon, receiverBean!!.endLat, endLon, endLat
)
CallerLogger.d(
SceneConstant.Companion.M_DISPATCH + TAG,
"onArriveAt cal distance : $distanceFromSelf"
)
if (distanceFromSelf < 10) {
CallerLogger.d(SceneConstant.Companion.M_DISPATCH + TAG, "onArriveAt end location")
isDispatch = false
isArriveEnd = true
}
}
fun testDispatch(sceneType: Int) {
when (sceneType) {
0 -> testEZhouStart()
1 -> testEZhouStop()
2 -> testHengYangStart()
3 -> testDispatchResultUpload()//验证自动驾驶调度上报接口
}
}
private fun testEZhouStart() {
val adasAutoPilotLocReceiverBean = 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(),
ArrayList<MogoLatLng>()
)
receiverBean = adasAutoPilotLocReceiverBean
CallerHmiManager.showDispatchDialog(adasAutoPilotLocReceiverBean)
}
private fun testEZhouStop() {
val adasAutoPilotLocReceiverBean = DispatchAdasAutoPilotLocReceiverBean(
DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_EZHOU,
DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_STOP,
"1",
0.0,
0.0,
"",
0.0,
0.0,
"",
"",
"",
"",
System.currentTimeMillis(),
ArrayList<MogoLatLng>()
)
receiverBean = adasAutoPilotLocReceiverBean
CallerHmiManager.showDispatchDialog(adasAutoPilotLocReceiverBean)
}
private fun testHengYangStart() {
val adasAutoPilotLocReceiverBean = DispatchAdasAutoPilotLocReceiverBean(
DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_HENGYANG,
DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_START,
"2",
26.825571122,
112.5762410415,
"衡阳科学城",
26.825571122,
112.5762410415,
"衡阳首钢集团",
"",
"",
"",
System.currentTimeMillis(),
ArrayList<MogoLatLng>()
)
receiverBean = adasAutoPilotLocReceiverBean
CallerHmiManager.showDispatchDialog(adasAutoPilotLocReceiverBean)
}
private fun testDispatchResultUpload() {
dispatchServiceModel.dispatchResultUpload(DISPATCH_RESULT_AFFIRM)
}
}

View File

@@ -0,0 +1,140 @@
package com.mogo.eagle.function.biz.push.dispatch.network
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.constants.HostConst
import com.mogo.commons.context.ContextHolderUtil
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo.RouteModels
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.MoGoRetrofitFactory
import com.mogo.eagle.core.network.RequestOptions
import com.mogo.eagle.core.network.SubscribeImpl
import com.mogo.eagle.core.network.utils.GsonUtil
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import java.util.*
class DispatchServiceModel private constructor() {
companion object {
const val DISPATCH_RESULT_AFFIRM = 0
const val DISPATCH_RESULT_MANUAL_CANCEL = 1
const val DISPATCH_RESULT_TIMER_CANCEL = 2
val dispatchServiceModel by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
DispatchServiceModel()
}
}
private var mAdasApiService: IDispatchAdasApiService =
MoGoRetrofitFactory.getInstance(HostConst.DATA_SERVICE_HOST).create(
IDispatchAdasApiService::class.java
)
/**
* 上报自动驾驶状态
*/
fun uploadAutopilotStatus(state: Int, reason: String?) {
val autopilotStatus = AutopilotStatus()
autopilotStatus.action = "autopilotstate"
val valuesBean = AutopilotStatus.ValuesBean()
valuesBean.state = state
valuesBean.reason = reason
autopilotStatus.values = valuesBean
val sn = MoGoAiCloudClientConfig.getInstance().sn
val reportedRoute = ReportedRoute(sn, autopilotStatus.values)
val map: MutableMap<String, Any> = HashMap()
map["sn"] = sn
map["data"] = GsonUtil.jsonFromObject(reportedRoute)
mAdasApiService.uploadAutopilotState(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object :
SubscribeImpl<BaseData>(RequestOptions.create(ContextHolderUtil.getContext())) {
override fun onNext(o: BaseData) {
super.onNext(o)
}
override fun onError(e: Throwable) {
super.onError(e)
}
override fun onSuccess(o: BaseData) {
super.onSuccess(o)
}
})
}
/**
* 上报自动驾驶路线
*
* @param list 路线集合
*/
fun uploadAutopilotRoute(list: List<RouteModels?>?) {
val sn = MoGoAiCloudClientConfig.getInstance().sn
val reportedRoute = ReportedRoute(sn, GsonUtil.jsonFromObject(list))
val map: MutableMap<String, Any> = HashMap()
map["sn"] = sn
map["data"] = GsonUtil.jsonFromObject(reportedRoute)
mAdasApiService.uploadAutopilotRoute(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object :
SubscribeImpl<BaseData>(RequestOptions.create(ContextHolderUtil.getContext())) {
override fun onNext(o: BaseData) {
super.onNext(o)
}
override fun onError(e: Throwable) {
super.onError(e)
}
override fun onSuccess(o: BaseData) {
super.onSuccess(o)
}
})
}
/**
* 上报调度处理结果
*
* @param dispatchResultType int
*/
fun dispatchResultUpload(
dispatchResultType: Int,
onSuccess: ((BaseData) -> Unit)? = null,
onError: ((String) -> Unit)? = null
) {
val sn = MoGoAiCloudClientConfig.getInstance().sn
val reportDispatchResult = ReportDispatchResult(sn, dispatchResultType)
val map: MutableMap<String, Any> = HashMap()
map["sn"] = sn
map["data"] = GsonUtil.jsonFromObject(reportDispatchResult)
mAdasApiService.uploadDispatchResult(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object :
SubscribeImpl<BaseData>(RequestOptions.create(ContextHolderUtil.getContext())) {
override fun onNext(o: BaseData) {
super.onNext(o)
onSuccess?.invoke(o)
}
override fun onError(e: Throwable) {
super.onError(e)
if (!e.message.isNullOrBlank()) {
onError?.invoke(e.message!!)
} else {
onError?.invoke("上报失败")
}
}
override fun onSuccess(o: BaseData) {
super.onSuccess(o)
}
})
}
}

View File

@@ -0,0 +1,39 @@
package com.mogo.eagle.function.biz.push.dispatch.network
import com.mogo.eagle.core.data.BaseData
import io.reactivex.Observable
import retrofit2.http.FieldMap
import retrofit2.http.FormUrlEncoded
import retrofit2.http.POST
interface IDispatchAdasApiService {
/**
* 上报自动驾驶路径 服务于业务调度
*
* @param parameters map
* @return [BaseData]
*/
@FormUrlEncoded
@POST("/dataService/autoDriver/receiveCarPreSetPath")
fun uploadAutopilotRoute(@FieldMap parameters: Map<String, Any>): Observable<BaseData>
/**
* 上报自动驾驶调度处理结果 服务于业务调度
*
* @param parameters map
* @return [BaseData]
*/
@FormUrlEncoded
@POST("/dataService/autoDriver/receiverDestSiteResult")
fun uploadDispatchResult(@FieldMap parameters: Map<String, Any>): Observable<BaseData>
/**
* 上报自动驾驶状态 服务于业务调度
*
* @param parameters map
* @return [BaseData]
*/
@FormUrlEncoded
@POST("/dataService/autoDriver/receiveAutopilotState")
fun uploadAutopilotState(@FieldMap parameters: Map<String, Any>): Observable<BaseData>
}

View File

@@ -0,0 +1,86 @@
package com.mogo.eagle.function.biz.push.notice
import android.content.Context
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager.saveMsgBox
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
import com.mogo.eagle.core.data.notice.NoticeNormalData
import java.lang.Class
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.data.msgbox.NoticeFrCloudMsg
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.data.msgbox.MsgBoxType
import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData
import com.mogo.eagle.core.network.utils.GsonUtil
/**
* @author Jing
* @description 云公告注册、反注册
* @since: 10/27/21
*/
internal class NoticeSocketManager {
private var mContext: Context? = null
companion object {
private const val TAG = "NoticeSocketManager"
val noticeSocketManager:NoticeSocketManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED){
NoticeSocketManager()
}
}
fun init(context: Context) {
mContext = context
MogoAiCloudSocketManager.getInstance(context)
.registerOnMessageListener(301001, mTrafficNoticeListener)
MogoAiCloudSocketManager.getInstance(context)
.registerOnMessageListener(100, mNormalNoticeListener)
}
fun release() {
MogoAiCloudSocketManager.getInstance(mContext)
.unregisterOnMessageListener(301001, mTrafficNoticeListener)
MogoAiCloudSocketManager.getInstance(mContext)
.unregisterOnMessageListener(100, mNormalNoticeListener)
}
/**
* 普通云公告
*/
private val mNormalNoticeListener: IMogoOnMessageListener<NoticeNormalData> =
object : IMogoOnMessageListener<NoticeNormalData> {
override fun target(): Class<NoticeNormalData> {
return NoticeNormalData::class.java
}
override fun onMsgReceived(obj: NoticeNormalData?) {
if (obj == null) {
return
}
d(SceneConstant.M_NOTICE + TAG, "100-- 普通公告数据:" + GsonUtil.jsonFromObject(obj))
val noticeFromCloudMsg = NoticeFrCloudMsg(obj, null, 0)
saveMsgBox(MsgBoxBean(MsgBoxType.NOTICE, noticeFromCloudMsg))
}
}
/**
* 交警类型公告弹窗
*/
private val mTrafficNoticeListener: IMogoOnMessageListener<NoticeTrafficStylePushData> =
object : IMogoOnMessageListener<NoticeTrafficStylePushData> {
override fun target(): Class<NoticeTrafficStylePushData> {
return NoticeTrafficStylePushData::class.java
}
override fun onMsgReceived(obj: NoticeTrafficStylePushData?) {
if (obj == null) {
return
}
d(SceneConstant.M_NOTICE + TAG, "301001-- 交警类型公告数据:" + GsonUtil.jsonFromObject(obj))
val noticeFromCloudMsg = NoticeFrCloudMsg(null, obj, 1)
saveMsgBox(MsgBoxBean(MsgBoxType.NOTICE, noticeFromCloudMsg))
}
}
}

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.function.biz.push.network;
package com.mogo.eagle.function.biz.push.notice.network;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.eagle.core.data.notice.NoticeNormalDetail;
@@ -19,7 +19,7 @@ import retrofit2.http.QueryMap;
* @description 云公告相关的短链请求接口定义
* @since: 10/28/21
*/
public interface NoticeApiService {
public interface INoticeApiService {
/**
* 获取道路事故详情
*

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.function.biz.push.network;
package com.mogo.eagle.function.biz.push.notice.network;
import android.util.ArrayMap;
@@ -7,9 +7,10 @@ import com.mogo.cloud.network.RetrofitFactory;
import com.mogo.cloud.passport.MoGoAiCloudClient;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.eagle.core.data.notice.NoticeNormalDetail;
import com.mogo.eagle.core.data.notice.NoticeRequest;
import com.mogo.eagle.core.data.notice.NoticeTrafficStyleInfo;
import com.mogo.eagle.core.function.api.notice.NoticeNetCallBack;
import com.mogo.eagle.core.function.api.biz.IMoGoNoticeNetCallBack;
import com.mogo.eagle.core.network.utils.GsonUtil;
import java.util.HashMap;
@@ -30,11 +31,11 @@ import okhttp3.RequestBody;
*/
public class NoticeNetWorkManager {
private static volatile NoticeNetWorkManager requestNoticeManager;
private final NoticeApiService mNoticeApiService;
private final INoticeApiService mNoticeApiService;
private NoticeNetWorkManager() {
mNoticeApiService = RetrofitFactory.INSTANCE.getInstance(NetConstants.DEVA_HOST)
.create(NoticeApiService.class);
.create(INoticeApiService.class);
}
public static NoticeNetWorkManager getInstance() {
@@ -54,8 +55,7 @@ public class NoticeNetWorkManager {
* @param infoId 事故id
* @param callBack 回调
*/
public void requestAccidentInfo(String infoId, String sn,NoticeNetCallBack callBack) {
public void requestAccidentInfo(String infoId, String sn, IMoGoNoticeNetCallBack callBack) {
NoticeRequest request = new NoticeRequest(infoId);
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"),
GsonUtil.jsonFromObject(request));

View File

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

View File

@@ -1,71 +0,0 @@
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.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(":foudations:mogo-commons")
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

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

View File

@@ -1,21 +0,0 @@
# 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

@@ -1,15 +0,0 @@
<?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

@@ -1,331 +0,0 @@
package com.zhjt.dispatch;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_DISPATCH;
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;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.mogo.aicloud.services.socket.IMogoOnMessageListener;
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager;
import com.mogo.cloud.commons.utils.CoordinateUtils;
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
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.api.map.listener.IMoGoMapLocationListener;
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.function.call.map.CallerMapLocationListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.zhjt.dispatch.model.DispatchServiceModel;
import com.zhjt.dispatch.model.IDispatch;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
import mogo.telematics.pad.MessagePad;
import mogo_msg.MogoReportMsg;
import system_master.SystemStatusInfo;
//负责监听自动驾驶状态并进行状态上报,自动驾驶路线上报,接收调度指令展示指令弹窗
public class DispatchAutoPilotManager implements IMogoOnMessageListener<DispatchAdasAutoPilotLocReceiverBean>
, IDispatchRemindClickListener, IMoGoCheckAutoPilotBtnListener, IMoGoAutopilotPlanningListener, IMoGoAutopilotStatusListener, IMoGoMapLocationListener {
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 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()) {
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;
MogoAiCloudSocketManager.getInstance(context).registerOnMessageListener(MSG_SOCKET_TYPE, this);
CallerMapLocationListenerManager.INSTANCE.addListener(TAG, this, false);
// 添加自动驾驶按钮选中监听
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;
CallerLogger.INSTANCE.d(M_DISPATCH + 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 onLocationChanged(@Nullable MogoLocation location, int from, boolean isGps) {
mogoLocation = location;
}
@Override
public void onCheck(boolean isChecked) {
if (isChecked) {
// 确保到达终点后,再次点击,不会有回馈,并且在下次调开始时,才会重置
if (isArriveEnd) {
return;
}
//todo 确认是否要根据停靠时自动驾驶状态,再次开启自动驾驶
// 确保处于调度中并且返回的自动驾驶状态为1才开启自动驾驶
// 上述等待鄂州项目复盘后,产品输出完成方案后再进操作!!!
if (isDispatch) {
startAutoPilot();
}
}
}
public void testAutopilotStatus() {
autoPilotStatus = 2;
}
public void 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() {
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() {
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(List<MessagePad.TrajectoryPoint> trajectoryInfos) {
}
@Override
public void onAutopilotRotting(MessagePad.GlobalPathResp globalPathResp) {
if (globalPathResp == null || globalPathResp.getWayPointsList().size() == 0) {
return;
}
List<AutopilotRouteInfo.RouteModels> list = new ArrayList<>();
for (MessagePad.Location location : globalPathResp.getWayPointsList()) {
AutopilotRouteInfo.RouteModels routeModels = new AutopilotRouteInfo.RouteModels();
routeModels.setLat(location.getLatitude());
routeModels.setLon(location.getLongitude());
list.add(routeModels);
}
DispatchServiceModel.getInstance().uploadAutopilotRoute(list);
}
@Override
public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autoPilotStatusInfo) {
autoPilotStatus = autoPilotStatusInfo.getState();
this.reason = autoPilotStatusInfo.getReason();
}
@Override
public void onAutopilotArriveAtStation(MessagePad.ArrivalNotification autopilotWayArrive) {
if (!isDispatch) {
return;
}
if (autopilotWayArrive == null) {
return;
}
CallerLogger.INSTANCE.d(M_DISPATCH + TAG, "onArriveAt data : " + autopilotWayArrive.toString());
if (autopilotWayArrive.getEndLocation() == null) {
return;
}
double endLat = autopilotWayArrive.getEndLocation().getLatitude();
double endLon = autopilotWayArrive.getEndLocation().getLongitude();
// 计算是不是到了终点
float distanceFromSelf = CoordinateUtils.calculateLineDistance(receiverBean.getEndLon(), receiverBean.getEndLat()
, endLon, endLat);
CallerLogger.INSTANCE.d(M_DISPATCH + TAG, "onArriveAt cal distance : " + distanceFromSelf);
if (distanceFromSelf < 10) {
CallerLogger.INSTANCE.d(M_DISPATCH + TAG, "onArriveAt end location");
isDispatch = false;
isArriveEnd = true;
}
}
@Override
public void onAutopilotSNRequest() {
}
@Override
public void onAutopilotGuardian(MogoReportMsg.MogoReportMessage guardianInfo) {
}
@Override
public void onAutopilotIpcConnectStatusChanged(int status, @Nullable String reason) {
}
@Override
public void onAutopilotStatusRespByQuery(@NonNull SystemStatusInfo.StatusInfo status) {
}
}

View File

@@ -1,46 +0,0 @@
package com.zhjt.dispatch;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
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);
// 分发场景
dispatchSceneTest(sceneType);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 分发处理场景
*
* @param sceneType 场景类型
*/
private void dispatchSceneTest(int 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

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

View File

@@ -1,29 +0,0 @@
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

@@ -1,154 +0,0 @@
package com.zhjt.dispatch.model;
import static com.mogo.commons.context.ContextHolderUtil.getContext;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.constants.HostConst;
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.MoGoRetrofitFactory;
import com.mogo.eagle.core.network.RequestOptions;
import com.mogo.eagle.core.network.SubscribeImpl;
import com.mogo.eagle.core.network.utils.GsonUtil;
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 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 = MoGoRetrofitFactory.getInstance(HostConst.DATA_SERVICE_HOST).create(IDispatchAdasApiService.class);
}
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);
}
@Override
public void onError(Throwable e) {
super.onError(e);
}
@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);
}
@Override
public void onError(Throwable e) {
super.onError(e);
}
@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);
dispatch.onSuccess();
}
@Override
public void onError(Throwable e) {
super.onError(e);
dispatch.onError(e.getMessage());
}
@Override
public void onSuccess(BaseData o) {
super.onSuccess(o);
}
});
}
}

View File

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

View File

@@ -1,43 +0,0 @@
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

@@ -1,170 +0,0 @@
<?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

@@ -1,13 +0,0 @@
<?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

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

View File

@@ -1,14 +0,0 @@
<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

@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="BaseFloatDialogStyle" parent="@android:style/Theme.Dialog">
<item name="android:windowIsFloating">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimAmount">0.6</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:fullBright">@android:color/transparent</item>
<item name="android:fullDark">@android:color/transparent</item>
<item name="android:topBright">@android:color/transparent</item>
<item name="android:topDark">@android:color/transparent</item>
<item name="android:borderlessButtonStyle">@android:color/transparent</item>
</style>
</resources>

View File

@@ -95,7 +95,6 @@ dependencies {
api rootProject.ext.dependencies.mogo_core_function_v2x
api rootProject.ext.dependencies.mogo_core_function_monitoring
api rootProject.ext.dependencies.mogo_core_function_devatools
api rootProject.ext.dependencies.mogo_core_function_carcorder
api rootProject.ext.dependencies.mogo_core_function_call
api rootProject.ext.dependencies.mogo_core_function_msgbox
@@ -115,7 +114,6 @@ dependencies {
api project(':core:function-impl:mogo-core-function-v2x')
api project(':core:function-impl:mogo-core-function-monitoring')
api project(':core:function-impl:mogo-core-function-devatools')
api project(':core:function-impl:mogo-core-function-dispatch')
api project(':core:function-impl:mogo-core-function-chat')
api project(':core:function-impl:mogo-core-function-bindingcar')
api project(':core:function-impl:mogo-core-function-datacenter')

View File

@@ -179,5 +179,12 @@
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name="com.mogo.eagle.core.function.hmi.receiver.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,41 @@
package com.mogo.eagle.core.function.hmi.receiver
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager
import com.mogo.eagle.core.function.hmi.receiver.DispatchTestPanelBroadCastReceiver
import java.lang.Exception
class DispatchTestPanelBroadCastReceiver : BroadcastReceiver() {
companion object {
private const val TAG = "DispatchTestPanelBroadCastReceiver"
/**
* Adas测试控制面板广播Action
*/
const val BROADCAST_TEST_PANEL_CONTROL_TYPE_EXTRA_KEY = "sceneType"
}
override fun onReceive(context: Context, intent: Intent) {
try {
val sceneType = intent.getIntExtra(BROADCAST_TEST_PANEL_CONTROL_TYPE_EXTRA_KEY, 0)
// 分发场景
dispatchSceneTest(sceneType)
} catch (e: Exception) {
e.printStackTrace()
}
}
/**
* 分发处理场景
*
* @param sceneType 场景类型
*/
private fun dispatchSceneTest(sceneType: Int) {
CallerFuncBizManager.bizProvider.testDispatch(sceneType)
}
}

View File

@@ -33,6 +33,7 @@ import com.mogo.eagle.core.data.config.HmiBuildConfig
import com.mogo.eagle.core.data.constants.MoGoFragmentPaths
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_RTS
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.V2I
import com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean
import com.mogo.eagle.core.data.enums.EventTypeEnum
import com.mogo.eagle.core.data.enums.SidePattern
import com.mogo.eagle.core.data.enums.SidePattern.*
@@ -52,7 +53,7 @@ import com.mogo.eagle.core.function.api.hmi.view.IOchBusView
import com.mogo.eagle.core.function.api.hmi.view.IViewLimitingVelocity
import com.mogo.eagle.core.function.api.hmi.view.IViewNotification
import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWaringProvider
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoHmiProvider
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
@@ -72,8 +73,9 @@ import com.mogo.eagle.core.function.hmi.ui.bindingcar.ToBindingCarDialog
import com.mogo.eagle.core.function.hmi.ui.bindingcar.UpgradeAppDialog
import com.mogo.eagle.core.function.hmi.ui.camera.CameraListView
import com.mogo.eagle.core.function.hmi.ui.camera.RoadVideoDialog
import com.mogo.eagle.core.function.hmi.ui.dispatch.DispatchDialogManager
import com.mogo.eagle.core.function.hmi.ui.notice.NoticeCheckDialog
import com.mogo.eagle.core.function.hmi.ui.notice.NoticeTrafficDialog
import com.mogo.eagle.core.function.hmi.ui.notice.traffic.NoticeTrafficDialog
import com.mogo.eagle.core.function.hmi.ui.setting.DebugSettingView
import com.mogo.eagle.core.function.hmi.ui.setting.IPCReportWindow
import com.mogo.eagle.core.function.hmi.ui.setting.ReportListFloatWindow
@@ -119,7 +121,7 @@ import java.util.*
*/
@Route(path = MoGoFragmentPaths.PATH_FRAGMENT_HMI)
class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
IMoGoWaringProvider,
IMoGoHmiProvider,
IMoGoHmiViewProxy,
MoGoHmiContract.View,
IMoGoAutopilotRecordListener,
@@ -253,13 +255,13 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
}
cbMsgBoxDriver.setOnCheckedChangeListener { _, isChecked ->
if(isChecked){
if (isChecked) {
viewDriverMsgBoxList.visibility = View.VISIBLE
viewDriverMsgBoxList.notifyData()
viewDriverMsgBoxBubble.visibility = View.GONE
viewDriverMsgBoxBubble.isShowData(false)
CallerHmiManager.updateDriverMsgBoxTipView(false)
}else{
} else {
viewDriverMsgBoxList.visibility = View.GONE
viewDriverMsgBoxBubble.visibility = View.VISIBLE
viewDriverMsgBoxBubble.isShowData(true)
@@ -267,24 +269,25 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
}
cbMsgBoxPassenger.setOnCheckedChangeListener { _, isChecked ->
if(isChecked){
if (isChecked) {
viewPassengerMsgBoxList.visibility = View.VISIBLE
viewPassengerMsgBoxBubble.visibility = View.GONE
viewPassengerMsgBoxBubble.isShowData(false)
CallerHmiManager.updatePassengerMsgBoxTipView(false)
}else{
} else {
viewPassengerMsgBoxList.visibility = View.GONE
viewPassengerMsgBoxBubble.visibility = View.VISIBLE
viewPassengerMsgBoxBubble.isShowData(true)
}
}
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
cbMsgBoxDriver.visibility = View.VISIBLE
viewDriverMsgBoxBubble.visibility = View.VISIBLE
}
if(AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode) &&
AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)){
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode) &&
AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)
) {
cbMsgBoxPassenger.visibility = View.VISIBLE
viewPassengerMsgBoxBubble.visibility = View.VISIBLE
}
@@ -467,18 +470,33 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
statusBarView?.updateMfStatus(tag, status)
}
override fun showDispatchDialog(msgData: DispatchAdasAutoPilotLocReceiverBean) {
context?.let {
if (DispatchDialogManager.getInstance(it).isShowing) {
return
}
DispatchDialogManager.getInstance(it).showDialog(msgData)
}
}
override fun dismissDispatchDialog() {
context?.let {
DispatchDialogManager.getInstance(it).releaseDialog()
}
}
override fun updateDriverMsgBoxTipView(show: Boolean) {
if(show){
if (show) {
MsgBoxTipView.visibility = View.VISIBLE
}else{
} else {
MsgBoxTipView.visibility = View.GONE
}
}
override fun updatePassengerMsgBoxTipView(show: Boolean) {
if(show){
if (show) {
MsgBoxPTipView.visibility = View.VISIBLE
}else{
} else {
MsgBoxPTipView.visibility = View.GONE
}
}
@@ -1155,7 +1173,11 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
}
ThreadUtils.runOnUiThread {
context?.let {
noticeTrafficDialog = NoticeTrafficDialog(it, trafficStylePushData)
noticeTrafficDialog =
NoticeTrafficDialog(
it,
trafficStylePushData
)
noticeTrafficDialog?.show()
}
}
@@ -1372,7 +1394,10 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
* 显示转向灯效果 if (HmiBuildConfig.isShowBadCaseView) {
*/
override fun showTurnLight(light: Int) {
CallerLogger.d("${SceneConstant.M_DEVA}${"TurnLight"}", "---showTurnLight = $light ---isLeftLight = $isLeftLight ---isRightLight = $isRightLight")
CallerLogger.d(
"${SceneConstant.M_DEVA}${"TurnLight"}",
"---showTurnLight = $light ---isLeftLight = $isLeftLight ---isRightLight = $isRightLight"
)
if (HmiBuildConfig.isShowTurnLightView) {
ThreadUtils.runOnUiThread {
if (light == 1 || light == 2) {
@@ -1391,7 +1416,10 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
isLeftLight = true
isRightLight = false
isDisappare = false
CallerLogger.d("${SceneConstant.M_DEVA}${"TurnLight"}", "---showTurnLight ---light = 1")
CallerLogger.d(
"${SceneConstant.M_DEVA}${"TurnLight"}",
"---showTurnLight ---light = 1"
)
CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(4, 500)
}
} else if (light == 2) { //右转灯
@@ -1399,7 +1427,10 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
isRightLight = true
isLeftLight = false
isDisappare = false
CallerLogger.d("${SceneConstant.M_DEVA}${"TurnLight"}", "---showTurnLight ---light = 2")
CallerLogger.d(
"${SceneConstant.M_DEVA}${"TurnLight"}",
"---showTurnLight ---light = 2"
)
CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(2, 500)
}
} else {
@@ -1407,7 +1438,10 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
isDisappare = true
isLeftLight = false
isRightLight = false
CallerLogger.d("${SceneConstant.M_DEVA}${"TurnLight"}", "---showTurnLight ---light other")
CallerLogger.d(
"${SceneConstant.M_DEVA}${"TurnLight"}",
"---showTurnLight ---light other"
)
CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(3, 500)
}
}
@@ -1430,13 +1464,19 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
if (light == 1) { //刹车灯亮
if (!isBrake) {
isBrake = true
CallerLogger.d("${SceneConstant.M_DEVA}${"BrakeLight"}", " showBrakeLight light = 1 ")
CallerLogger.d(
"${SceneConstant.M_DEVA}${"BrakeLight"}",
" showBrakeLight light = 1 "
)
CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(0, 500)
}
} else {
if (isBrake) {//默认 不亮灯
isBrake = false
CallerLogger.d("${SceneConstant.M_DEVA}${"BrakeLight"}", " showBrakeLight light != 1 ")
CallerLogger.d(
"${SceneConstant.M_DEVA}${"BrakeLight"}",
" showBrakeLight light != 1 "
)
CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(3, 500)
}
}

View File

@@ -1,251 +0,0 @@
package com.mogo.eagle.core.function.hmi.ui.carcorder
import android.animation.Animator
import android.app.Activity
import android.content.Context
import android.hardware.usb.UsbDevice
import android.os.Looper
import android.view.*
import android.view.animation.OvershootInterpolator
import com.mogo.cloud.live.manager.ILiveStreamManager
import com.mogo.cloud.live.manager.LiveStreamManagerImpl
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.notification.WarningFloat
import com.mogo.eagle.core.function.hmi.notification.anim.DefaultAnimator
import com.mogo.eagle.core.data.enums.SidePattern
import com.mogo.usbcamera.UVCCameraHelper
import com.serenegiant.usb.ParentPreviewConstraintLayout
import com.serenegiant.usb.widget.CameraViewInterface
import kotlinx.android.synthetic.main.view_carcorder_preview.view.*
/**
* @author donghongyu
* @date 2021/9/30 8:46 下午
* USB-Camera 摄像头预览
*
* TODO 临时方案,后面考虑封装将摄像头数据流通过 Tensorflow-lite 处理后展示
*/
class CarcorderPreviewView private constructor(
context: Context
) : ParentPreviewConstraintLayout(context),
CameraViewInterface.Callback {
private val TAG = "CarcorderPreviewView"
private var mCameraHelper: UVCCameraHelper? = null
private var isRequest = false
private var isPreview = false
private var liveStreamManager: ILiveStreamManager? = null
init {
LayoutInflater.from(context).inflate(R.layout.view_carcorder_preview, this, true)
}
companion object {
private var mCarcorderPreviewViewFloat: WarningFloat.Builder? = null
@Volatile
var instance: CarcorderPreviewView? = null
fun getInstance(context: Activity): CarcorderPreviewView {
if (instance == null) {
synchronized(CarcorderPreviewView::class) {
if (instance == null) {
instance = CarcorderPreviewView(context)
}
}
}
return instance!!
}
/**
* 展示窗口
*/
fun show(context: Activity) {
if (mCarcorderPreviewViewFloat == null) {
val carcorderPreviewVie = getInstance(context)
mCarcorderPreviewViewFloat = WarningFloat.with(context)
.setTag("CarcorderPreviewView")
.setLayout(carcorderPreviewVie)
.setSidePattern(SidePattern.RIGHT)
.setGravity(Gravity.RIGHT, offsetY = 250)
.setImmersionStatusBar(true)
.setAnimator(object : DefaultAnimator() {
override fun enterAnim(
view: View,
params: WindowManager.LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.enterAnim(view, params, windowManager, sidePattern)
?.apply {
interpolator = OvershootInterpolator()
}
override fun exitAnim(
view: View,
params: WindowManager.LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.exitAnim(view, params, windowManager, sidePattern)
?.setDuration(200)
})
.show()
} else {
dismiss()
}
}
/**
* 隐藏窗口
*/
fun dismiss() {
if (mCarcorderPreviewViewFloat != null) {
WarningFloat.dismiss(mCarcorderPreviewViewFloat!!.config.floatTag, false)
mCarcorderPreviewViewFloat = null
}
}
}
private val listener: UVCCameraHelper.OnMyDevConnectListener = object : UVCCameraHelper.OnMyDevConnectListener {
override fun onAttachDev(device: UsbDevice?) {
CallerLogger.d("$M_HMI$TAG", "onAttachDev")
// request open permission
if (!isRequest) {
isRequest = true
mCameraHelper?.requestPermission(0)
}
}
override fun onDettachDev(device: UsbDevice) {
CallerLogger.d("$M_HMI$TAG", "onDettachDev")
// close camera
if (isRequest) {
isRequest = false
mCameraHelper?.closeCamera()
showShortMsg(device.deviceName + " is out")
}
}
override fun onConnectDev(device: UsbDevice?, isConnected: Boolean) {
CallerLogger.d("$M_HMI$TAG", "onConnectDev:isConnected=$isConnected")
if (!isConnected) {
showShortMsg("fail to connect,please check resolution params")
isPreview = false
} else {
isPreview = true
showShortMsg("相机连接中")
// initialize seekbar
// need to wait UVCCamera initialize over
Thread {
try {
Thread.sleep(2500)
} catch (e: InterruptedException) {
e.printStackTrace()
}
Looper.prepare()
if (mCameraHelper != null && mCameraHelper!!.isCameraOpened) {
CallerLogger.d("$M_HMI$TAG", "亮度(brightness):${mCameraHelper!!.getModelValue(UVCCameraHelper.MODE_BRIGHTNESS)}")
CallerLogger.d("$M_HMI$TAG", "对比度(contrast):${mCameraHelper!!.getModelValue(UVCCameraHelper.MODE_CONTRAST)}")
}
Looper.loop()
}.start()
}
}
override fun onDisConnectDev(device: UsbDevice?) {
CallerLogger.d("$M_HMI$TAG", "onDisConnectDev")
showShortMsg("相机断开连接")
}
override fun onCancelDev(device: UsbDevice?) {
CallerLogger.d("$M_HMI$TAG", "onCancelDev" + device?.deviceName)
}
}
private fun showShortMsg(msg: String) {
//Toast.makeText(context, msg, Toast.LENGTH_SHORT).show()
}
private fun initView() {
// step.1 initialize UVCCameraHelper
carcorderPreview.setCallback(this)
mCameraHelper = UVCCameraHelper.getInstance()
mCameraHelper?.setDefaultFrameFormat(UVCCameraHelper.FRAME_FORMAT_MJPEG)
mCameraHelper?.initUSBMonitor(context as Activity, carcorderPreview, listener)
mCameraHelper?.setOnPreviewFrameListener { nv21Yuv ->
CallerLogger.d("$M_HMI$TAG", "onPreviewResult: " + nv21Yuv.size)
if (liveStreamManager != null) {
// 将摄像头采集的YUV数据推送到ZEGO
liveStreamManager!!.notifyYUVData(nv21Yuv, 640, 480, 2)
}
}
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
initView()
// step.2 register USB event broadcast
if (mCameraHelper != null) {
mCameraHelper!!.registerUSB()
}
// 初始化直播流管理
// 初始化直播流管理
liveStreamManager = LiveStreamManagerImpl.getInstance((context as Activity).application,
MoGoAiCloudClientConfig.getInstance().sn, true)
// 设置状态回调
liveStreamManager!!.setLiveStatusChangeCallback { status ->
if (status == 0) {
CallerLogger.d("$M_HMI$TAG", "直播中……")
} else {
CallerLogger.d("$M_HMI$TAG", "直播结束……")
}
}
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
// step.3 unregister USB event broadcast
if (mCameraHelper != null) {
mCameraHelper!!.unregisterUSB()
}
if (liveStreamManager != null) {
// 停止
liveStreamManager!!.stopLiveStream()
// 释放资源
liveStreamManager!!.release()
}
}
override fun onSurfaceCreated(view: CameraViewInterface?, surface: Surface?) {
if (!isPreview && mCameraHelper!!.isCameraOpened) {
mCameraHelper!!.startPreview(carcorderPreview)
isPreview = true
}
}
override fun onSurfaceChanged(view: CameraViewInterface?, surface: Surface?, width: Int, height: Int) {
}
override fun onSurfaceDestroy(view: CameraViewInterface?, surface: Surface?) {
if (isPreview && mCameraHelper!!.isCameraOpened) {
mCameraHelper!!.stopPreview()
isPreview = false
}
}
}

View File

@@ -1,4 +1,4 @@
package com.zhjt.dispatch;
package com.mogo.eagle.core.function.hmi.ui.dispatch;
import android.content.Context;
import android.text.TextUtils;
@@ -8,11 +8,11 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager;
import com.mogo.eagle.core.function.hmi.R;
public class DispatchAirportDialog extends DispatchBaseDialog {
private IDispatchRemindClickListener mListener;
private final TextView tvStartLoc;
private final TextView tvEndLoc;
private final TextView tvTaskTime;
@@ -21,7 +21,7 @@ public class DispatchAirportDialog extends DispatchBaseDialog {
public DispatchAirportDialog(@NonNull Context context) {
super(context);
setContentView(R.layout.module_dialog_adas_dispatch_airport);
setContentView(R.layout.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);
@@ -30,12 +30,9 @@ public class DispatchAirportDialog extends DispatchBaseDialog {
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();
CallerFuncBizManager.getBizProvider().dispatchAffirm();
dismissDialog();
}
});
}
@Override
@@ -62,12 +59,4 @@ public class DispatchAirportDialog extends DispatchBaseDialog {
dismiss();
}
@Override
public void addIDispatchRemindListener(IDispatchRemindClickListener listener) {
if (listener == null) {
return;
}
this.mListener = listener;
}
}

View File

@@ -1,4 +1,4 @@
package com.zhjt.dispatch;
package com.mogo.eagle.core.function.hmi.ui.dispatch;
import android.app.Dialog;
import android.content.Context;
@@ -8,11 +8,12 @@ import android.view.WindowManager;
import androidx.annotation.NonNull;
import com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.eagle.core.function.hmi.R;
public abstract class DispatchBaseDialog extends Dialog {
public DispatchBaseDialog(@NonNull Context context) {
super(context,R.style.Base_AlertDialog_AppCompat);
super(context, R.style.Base_AlertDialog_AppCompat);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
} else {
@@ -23,8 +24,6 @@ public abstract class DispatchBaseDialog extends Dialog {
| WindowManager.LayoutParams.FLAG_LOCAL_FOCUS_MODE);
}
public abstract void addIDispatchRemindListener(IDispatchRemindClickListener listener);
public abstract void showDialog(DispatchAdasAutoPilotLocReceiverBean dispatchContent);
}

View File

@@ -1,4 +1,4 @@
package com.zhjt.dispatch;
package com.mogo.eagle.core.function.hmi.ui.dispatch;
import android.content.Context;
import android.os.Handler;
@@ -10,13 +10,14 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager;
import com.mogo.eagle.core.function.hmi.R;
public class DispatchCarsDialog extends DispatchBaseDialog {
private static final int MSG_TYPE_TIMER = 0;
private static int TIMER = 10;
private IDispatchRemindClickListener mListener;
private final TextView tvTimer;
private final TextView tvLoc;
@@ -39,7 +40,7 @@ public class DispatchCarsDialog extends DispatchBaseDialog {
public DispatchCarsDialog(@NonNull Context context) {
super(context);
setContentView(R.layout.module_dialog_adas_dispatch_cars);
setContentView(R.layout.dialog_adas_dispatch_cars);
setCanceledOnTouchOutside(false);
tvTimer = findViewById(R.id.module_adas_dispatch_remind_timer);
tvLoc = findViewById(R.id.module_adas_dispatch_remind_loc);
@@ -47,23 +48,17 @@ public class DispatchCarsDialog extends DispatchBaseDialog {
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();
}
CallerFuncBizManager.getBizProvider().dispatchAffirm();
dismissDialog();
});
btnCancel.setOnClickListener(v -> {
if (mListener != null) {
mListener.cancel(true);
dismissDialog();
}
CallerFuncBizManager.getBizProvider().dispatchCancel(true);
dismissDialog();
});
}
private void hideDialog() {
if (mListener != null) {
mListener.cancel(false);
}
CallerFuncBizManager.getBizProvider().dispatchCancel(false);
dismissDialog();
}
@@ -73,14 +68,6 @@ public class DispatchCarsDialog extends DispatchBaseDialog {
dismiss();
}
@Override
public void addIDispatchRemindListener(IDispatchRemindClickListener listener) {
if (listener == null) {
return;
}
this.mListener = listener;
}
@Override
public void showDialog(DispatchAdasAutoPilotLocReceiverBean dispatchContent) {
if (TextUtils.isEmpty(dispatchContent.getEndLocAddress())) {

View File

@@ -1,5 +1,4 @@
package com.zhjt.dispatch;
package com.mogo.eagle.core.function.hmi.ui.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;
@@ -16,7 +15,6 @@ public class 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) {
@@ -34,13 +32,6 @@ public class DispatchDialogManager {
return manager;
}
public void addIDispatchRemindListener(IDispatchRemindClickListener listener) {
if (listener == null) {
return;
}
this.mListener = listener;
}
public boolean isShowing() {
return dialog != null && dialog.isShowing();
}
@@ -57,7 +48,6 @@ public class DispatchDialogManager {
dispatchEZhou(msgData);
break;
}
}
private void dispatchHengYang(DispatchAdasAutoPilotLocReceiverBean msgData) {
@@ -68,7 +58,6 @@ public class DispatchDialogManager {
if (dialog == null) {
dialog = new DispatchCarsDialog(mContext);
}
dialog.addIDispatchRemindListener(mListener);
dialog.showDialog(msgData);
}
}
@@ -82,7 +71,6 @@ public class DispatchDialogManager {
if (dialog == null) {
dialog = new DispatchAirportDialog(mContext);
}
dialog.addIDispatchRemindListener(mListener);
dialog.showDialog(msgData);
break;
case DISPATCH_TYPE_STOP:

View File

@@ -14,6 +14,7 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData;
import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.function.hmi.ui.notice.traffic.NoticeTrafficDialog;
import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp;
import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform;
import com.mogo.eagle.core.utilcode.util.BitmapHelper;

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.core.function.hmi.ui.notice;
package com.mogo.eagle.core.function.hmi.ui.notice.traffic;
import android.content.Context;
import android.view.LayoutInflater;

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.core.function.hmi.ui.notice;
package com.mogo.eagle.core.function.hmi.ui.notice.traffic;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI;
@@ -24,7 +24,7 @@ import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData;
import com.mogo.eagle.core.data.notice.NoticeValue;
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.notice.CallerNoticeManager;
import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager;
import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp;
import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform;
@@ -153,7 +153,7 @@ public class NoticeTrafficDialog extends BaseFloatDialog implements LifecycleObs
* 0不接收 1接受 发起自动驾驶任务,显示引导线
*/
private void feedBackTraffic(int i) {
CallerNoticeManager.getNoticeProvider().feedBackNoticeTraffic(mPushData.getInfoId(), MoGoAiCloudClientConfig.getInstance().getSn(), i);
CallerFuncBizManager.getBizProvider().feedBackNoticeTraffic(mPushData.getInfoId(), MoGoAiCloudClientConfig.getInstance().getSn(), i);
if (i == 1) {
startAutoPilot();
}
@@ -352,7 +352,7 @@ public class NoticeTrafficDialog extends BaseFloatDialog implements LifecycleObs
*/
private void requestTrafficInfo() {
CallerLogger.INSTANCE.d(M_HMI + TAG, "requestTrafficInfo");
CallerNoticeManager.getNoticeProvider().requestAccidentInfo(mPushData.getInfoId(), MoGoAiCloudClientConfig.getInstance().getSn(), trafficInfo -> {
CallerFuncBizManager.getBizProvider().requestAccidentInfo(mPushData.getInfoId(), MoGoAiCloudClientConfig.getInstance().getSn(), trafficInfo -> {
CallerLogger.INSTANCE.d(M_HMI + TAG, "交通事故详情::" + trafficInfo);
mTrafficStyleInfo = trafficInfo.getResult().getAccidentInfo();
infoRefresh(mTrafficStyleInfo);

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.core.function.hmi.ui.notice;
package com.mogo.eagle.core.function.hmi.ui.notice.traffic;
import android.content.Context;
import android.content.res.TypedArray;

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.core.function.hmi.ui.notice;
package com.mogo.eagle.core.function.hmi.ui.notice.traffic;
import android.content.Context;
import android.util.AttributeSet;

View File

@@ -10,7 +10,6 @@ import android.os.Process;
import androidx.annotation.Nullable;
import androidx.core.app.NotificationCompat;
import com.alibaba.android.arouter.launcher.ARouter;
import com.bytedance.boost_multidex.BoostMultiDex;
import com.elegant.utils.UiThreadHandler;
import com.mogo.cloud.socket.SocketBuildConfig;
@@ -18,11 +17,9 @@ import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.module.MogoModule;
import com.mogo.commons.module.MogoModulePaths;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.data.constants.MoGoConfig;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider;
import com.mogo.eagle.core.function.api.chat.biz.ChatConsts;
import com.mogo.eagle.core.function.api.devatools.IMogoDevaToolsUpgradeListener;
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager;
@@ -237,11 +234,9 @@ 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_FUNC_BIZ, "IMoGoNoticeProvider"));
// 车聊聊IM
MogoModulePaths.addModuleFunctionServer(new MogoModule(ChatConsts.CHAT_PROVIDER_PATH, ChatConsts.CHAT_MODULE_NAME));
// 调度
MogoModulePaths.addBaseModule(new MogoModule(MogoServicePaths.PATH_AI_DISPATCH, "IDispatchProvider"));
// V2X 模块
MogoModulePaths.addBaseModule(new MogoModule(MogoServicePaths.PATH_V2X_MODULE, "V2XProvider"));
// 绑定车辆

View File

@@ -1,6 +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" />
<solid android:color="@color/color_E63B4577" />
<corners android:radius="@dimen/module_services_dispatch_airport_dialog_corner" />
</shape>

View File

@@ -1,6 +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" />
<solid android:color="@color/color_3E7BFE" />
<corners android:radius="@dimen/module_services_dispatch_airport_dialog_affirm_corner" />
</shape>

View File

@@ -1,5 +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"/>
<solid android:color="@color/color_E63B4577"/>
</shape>

View File

@@ -1,5 +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"/>
<solid android:color="@color/color_E63B4577"/>
</shape>

View File

@@ -1,5 +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"/>
<solid android:color="@color/color_E63B4577"/>
</shape>

View File

@@ -1,6 +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" />
<solid android:color="@color/color_E63B4577" />
<corners android:bottomLeftRadius="@dimen/module_services_dispatch_cars_dialog_corner" />
</shape>

View File

@@ -1,6 +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" />
<solid android:color="@color/color_E63B4577" />
<corners android:bottomRightRadius="@dimen/module_services_dispatch_cars_dialog_corner" />
</shape>

View File

@@ -1,4 +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"/>
<solid android:color="@color/color_4D000000"/>
</shape>

View File

@@ -10,7 +10,7 @@
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:text="@string/dispatch_dialog_title"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_title_size"
android:textStyle="bold" />
@@ -20,7 +20,7 @@
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:text="@string/dispatch_dialog_start_loc"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
@@ -38,7 +38,7 @@
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:text="@string/dispatch_dialog_end_loc"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
@@ -56,7 +56,7 @@
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:text="@string/dispatch_dialog_task_info"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
@@ -74,7 +74,7 @@
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:text="@string/dispatch_dialog_task_time"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
@@ -92,7 +92,7 @@
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:text="@string/dispatch_dialog_flight_info"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
@@ -115,7 +115,7 @@
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:text="@string/dispatch_dialog_affirm"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_title_size"
android:textStyle="bold" />

View File

@@ -3,17 +3,17 @@
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">
android:background="@drawable/bg_dispatch_cars">
<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:background="@drawable/bg_dispatch_timer"
android:gravity="center"
android:text="10"
android:textColor="@color/module_services_dispatch_cars_count_down_txt"
android:textColor="@color/color_8E9DD4"
android:textSize="@dimen/module_services_dispatch_cars_dialog_timer_txt_size"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -22,7 +22,7 @@
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:text="@string/dispatch_cars_remind_title"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_cars_dialog_title_size"
app:layout_constraintLeft_toLeftOf="parent"
@@ -33,7 +33,7 @@
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:text="@string/dispatch_cars_remind_content"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_cars_dialog_content_size"
app:layout_constraintLeft_toLeftOf="parent"
@@ -46,7 +46,7 @@
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:textColor="@color/color_1F9BFE"
android:textSize="@dimen/module_services_dispatch_cars_dialog_loc_size"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
@@ -56,7 +56,7 @@
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/module_services_dispatch_cars_line"
android:background="@color/color_66B8BFE8"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toTopOf="@+id/module_adas_dispatch_remind_affirm"
app:layout_constraintLeft_toLeftOf="parent"
@@ -67,9 +67,9 @@
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:background="@drawable/bg_dispatch_left_corner"
android:text="@string/dispatch_cars_affirm"
android:textColor="@color/color_1F9BFE"
android:textSize="@dimen/module_services_dispatch_cars_dialog_title_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />
@@ -78,7 +78,7 @@
android:layout_width="2dp"
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"
android:background="@color/color_66B8BFE8"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />
@@ -87,9 +87,9 @@
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:text="@string/dispatch_cars_cancel"
android:textColor="@color/color_AFB3C7"
android:background="@drawable/bg_dispatch_right_corner"
android:textSize="@dimen/module_services_dispatch_cars_dialog_title_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent" />

View File

@@ -1,17 +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="@dimen/dp_768"
android:layout_height="@dimen/dp_432">
<com.serenegiant.usb.widget.UVCCameraTextureView
android:id="@+id/carcorderPreview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -43,6 +43,13 @@
<color name="color_FFA7B6F0">#FFA7B6F0</color>
<color name="color_B3FFFFFF">#B3FFFFFF</color>
<color name="color_99000000">#99000000</color>
<color name="color_E63B4577">#E63B4577</color>
<color name="color_3E7BFE">#3E7BFE</color>
<color name="color_1F9BFE">#1F9BFE</color>
<color name="color_8E9DD4">#8E9DD4</color>
<color name="color_4D000000">#4D000000</color>
<color name="color_66B8BFE8">#66B8BFE8</color>
<color name="color_AFB3C7">#AFB3C7</color>
<color name="version_latest_start_color">#6D7BAF</color>
@@ -74,4 +81,7 @@
<color name="hmi_check_keyboard_input_field">#FF282F62</color>
<color name="bus_autopilot_text_color_normal">#FFFFFF</color>
</resources>

View File

@@ -76,4 +76,40 @@
<dimen name="hmi_take_over_request_width">810dp</dimen>
<dimen name="hmi_take_over_request_height">560dp</dimen>
<dimen name="hmi_take_over_request_m_top">524dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_width">1263dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_height">1173dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_corner">32dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_next_level_title_size">38dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_title_size">48dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_content_size">42dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_title_margin_top">55dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_startloc_margin_top">219dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_startloc_content_margin_top">288dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_endloc_margin_top">415dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_endloc_content_margin_top">484dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_margin_top">621dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_content_margin_top">690dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_first_column_margin_left">100dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_last_column_margin_left">852dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_margin_top">86dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_margin_bottom">80dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_width">700dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_height">140dp</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_corner">70dp</dimen>
<dimen name="module_services_dispatch_cars_dialog_width">950dp</dimen>
<dimen name="module_services_dispatch_cars_dialog_height">540dp</dimen>
<dimen name="module_services_dispatch_cars_dialog_corner">32dp</dimen>
<dimen name="module_services_dispatch_cars_dialog_title_size">48dp</dimen>
<dimen name="module_services_dispatch_cars_dialog_title_margin_top">55dp</dimen>
<dimen name="module_services_dispatch_cars_dialog_content_size">38dp</dimen>
<dimen name="module_services_dispatch_cars_dialog_content_margin_top">179dp</dimen>
<dimen name="module_services_dispatch_cars_dialog_loc_size">54dp</dimen>
<dimen name="module_services_dispatch_cars_dialog_loc_margin_top">251dp</dimen>
<dimen name="module_services_dispatch_cars_dialog_line_margin_bottom">152dp</dimen>
<dimen name="module_services_dispatch_cars_dialog_btn_width">474.5dp</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_margin">20dp</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_size">46dp</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_txt_size">24dp</dimen>
</resources>

View File

@@ -53,4 +53,16 @@
<string name="to_binding_car">是否绑定车机?</string>
<string name="status_bar_tag">蘑菇星云</string>
<string name="dispatch_dialog_title">您有新的工作任务</string>
<string name="dispatch_dialog_start_loc">开始地点:</string>
<string name="dispatch_dialog_end_loc">结束地点:</string>
<string name="dispatch_dialog_task_time">任务时间:</string>
<string name="dispatch_dialog_task_info">任务内容:</string>
<string name="dispatch_dialog_flight_info">航班信息:</string>
<string name="dispatch_dialog_affirm">接受任务</string>
<string name="dispatch_cars_remind_title">调度确认</string>
<string name="dispatch_cars_remind_content">车辆将开启自动驾驶,并行驶至:</string>
<string name="dispatch_cars_affirm">确认</string>
<string name="dispatch_cars_cancel">取消</string>
</resources>

View File

@@ -89,4 +89,19 @@
<item name="android:layout_margin">@dimen/dp_10</item>
</style>
<style name="BaseFloatDialogStyle" parent="@android:style/Theme.Dialog">
<item name="android:windowIsFloating">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimAmount">0.6</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:fullBright">@android:color/transparent</item>
<item name="android:fullDark">@android:color/transparent</item>
<item name="android:topBright">@android:color/transparent</item>
<item name="android:topDark">@android:color/transparent</item>
<item name="android:borderlessButtonStyle">@android:color/transparent</item>
</style>
</resources>

View File

@@ -30,27 +30,6 @@ public class MogoServicePaths {
@Deprecated
public static final String PATH_FLOAT_VIEW_MANAGER = "/floatview/api";
/**
* 免唤醒语音控制
*/
@Keep
@Deprecated
public static final String PATH_VOICE_MANAGER = "/voicemanager/api";
/**
* 自研地图和高德地图切换
*/
@Keep
@Deprecated
public static final String PATH_MAP_FRAME_CONTROLLER = "/mapframe/controller";
/**
* 小地图控件
*/
@Keep
@Deprecated
public static final String PATH_SMALL_MAP = "/small_map/api";
/**
* v2x 模块
*/
@@ -77,11 +56,11 @@ public class MogoServicePaths {
public static final String PATH_AUTO_PILOT = "/auto_pilot/api";
/**
* 云公告 模块
* 业务聚合 模块
*/
@Keep
@Deprecated
public static final String PATH_AI_NOTICE = "/notice/api";
public static final String PATH_FUNC_BIZ = "/func/biz";
/**
* 绑定车机 模块
@@ -97,20 +76,6 @@ public class MogoServicePaths {
@Deprecated
public static final String PATH_AI_MONITORING = "/monitoring/api";
/**
* 调度 模块
*/
@Keep
@Deprecated
public static final String PATH_AI_DISPATCH = "/dispatch/api";
/**
* 自动驾驶时,定位信息改变要同步更新
*/
@Keep
@Deprecated
public static final String PATH_MAP_LOCATION_UPDATE_4_AUTO_PILOT = "/map_x/location_update";
/**
* deva开发套件
*/

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.function.biz.push.network;
package com.mogo.eagle.core.data.notice;
/**
* @author Jing

View File

@@ -11,7 +11,9 @@ interface IMoGoAutopilotPlanningListener {
*
* @param trajectoryInfos 引导线数据经纬度
*/
fun onAutopilotTrajectory(trajectoryInfos: MutableList<MessagePad.TrajectoryPoint>)
fun onAutopilotTrajectory(trajectoryInfos: MutableList<MessagePad.TrajectoryPoint>){
}
/**
* 2021/6/23 工控机经纬度 绘制时转成高德经纬度

View File

@@ -0,0 +1,42 @@
package com.mogo.eagle.core.function.api.biz
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider
/**
* @author Jing
* @description
* @since: 10/27/21
*/
interface IMoGoFuncBizProvider : IMoGoFunctionServerProvider {
/**
* 是否接受交通事故任务
* @param infoId
* @param sn
* @param accept
*/
fun feedBackNoticeTraffic(infoId: String, sn: String, accept: Int)
/**
* 获取事故详细信息
* @param infoId
* @param sn
* @param callBack
*/
fun requestAccidentInfo(infoId: String, sn: String, callBack: IMoGoNoticeNetCallBack)
/**
* 调度确认
*/
fun dispatchAffirm()
/**
* 调度取消
* @param manualTrigger 是否手动
*/
fun dispatchCancel(manualTrigger: Boolean)
/**
* 调度测试
*/
fun testDispatch(sceneType: Int)
}

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.core.function.api.notice;
package com.mogo.eagle.core.function.api.biz;
import com.mogo.eagle.core.data.notice.NoticeTrafficStyleInfo;
@@ -7,6 +7,6 @@ import com.mogo.eagle.core.data.notice.NoticeTrafficStyleInfo;
* @description 网络请求回调
* @since: 11/3/21
*/
public interface NoticeNetCallBack {
public interface IMoGoNoticeNetCallBack {
void callBackWithResult(NoticeTrafficStyleInfo trafficInfo);
}

View File

@@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.api.hmi.warning
import android.view.View
import android.view.ViewGroup
import com.mogo.eagle.core.data.bindingcar.IPCUpgradeStateInfo
import com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean
import com.mogo.eagle.core.data.enums.WarningDirectionEnum
import com.mogo.eagle.core.data.map.Infrastructure
import com.mogo.eagle.core.data.notice.NoticeNormalData
@@ -15,7 +16,7 @@ import com.mogo.eagle.core.function.api.hmi.view.IOchBusView
* @author xiaoyuzhou
* @date 2021/8/2 7:36 下午
*/
interface IMoGoWaringProvider : IMoGoHmiViewProxy {
interface IMoGoHmiProvider : IMoGoHmiViewProxy {
/**
* 浓雾预警
@@ -321,4 +322,14 @@ interface IMoGoWaringProvider : IMoGoHmiViewProxy {
*/
fun updateMfStatus(tag: String, status: Boolean)
/**
* 调度弹窗展示
*/
fun showDispatchDialog(msgData: DispatchAdasAutoPilotLocReceiverBean)
/**
* 隐藏调度弹窗
*/
fun dismissDispatchDialog()
}

View File

@@ -1,13 +0,0 @@
package com.mogo.eagle.core.function.api.notice;
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider;
/**
* @author Jing
* @description
* @since: 10/27/21
*/
public interface IMoGoNoticeProvider extends IMoGoFunctionServerProvider {
void feedBackNoticeTraffic(String infoId, String sn, int accept);
void requestAccidentInfo(String infoId, String sn,NoticeNetCallBack callBack);
}

View File

@@ -0,0 +1,17 @@
package com.mogo.eagle.core.function.call.biz
import com.mogo.eagle.core.function.call.base.CallerBase
import com.mogo.eagle.core.function.api.biz.IMoGoFuncBizProvider
import com.mogo.eagle.core.data.constants.MogoServicePaths
/**
* @author xiaoyuzhou
*/
object CallerFuncBizManager : CallerBase() {
@JvmStatic
val bizProvider: IMoGoFuncBizProvider
get() = getApiInstance(IMoGoFuncBizProvider::class.java, MogoServicePaths.PATH_FUNC_BIZ)
}

View File

@@ -7,11 +7,9 @@ import com.mogo.eagle.core.data.bindingcar.IPCUpgradeStateInfo
import com.mogo.eagle.core.data.constants.MoGoFragmentPaths
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_SLW
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.V2I
import com.mogo.eagle.core.data.dispatch.DispatchAdasAutoPilotLocReceiverBean
import com.mogo.eagle.core.data.enums.WarningDirectionEnum
import com.mogo.eagle.core.data.map.Infrastructure
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.data.msgbox.MsgBoxType
import com.mogo.eagle.core.data.msgbox.V2XMsg
import com.mogo.eagle.core.data.notice.NoticeNormalData
import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData
import com.mogo.eagle.core.data.report.ReportEntity
@@ -19,10 +17,9 @@ import com.mogo.eagle.core.function.api.hmi.IMoGoHmiViewProxy.IViewNotificationP
import com.mogo.eagle.core.function.api.hmi.view.IOchBusView
import com.mogo.eagle.core.function.api.hmi.view.IViewLimitingVelocity
import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWaringProvider
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoHmiProvider
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
import com.mogo.eagle.core.function.call.base.CallerBase
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager.saveMsgBox
import com.zhjt.service_biz.BizConfig
/**
@@ -34,12 +31,12 @@ import com.zhjt.service_biz.BizConfig
object CallerHmiManager : CallerBase() {
private val waringProviderApi
get() = ARouter.getInstance().build(MoGoFragmentPaths.PATH_FRAGMENT_HMI)
.navigation() as? IMoGoWaringProvider
.navigation() as? IMoGoHmiProvider
/**
* 浓雾预警
*/
fun displayEffects(){
fun displayEffects() {
waringProviderApi?.displayEffects()
}
@@ -485,14 +482,14 @@ object CallerHmiManager : CallerBase() {
/**
* 设置司机端消息盒子是否展示
*/
fun updateDriverMsgBoxTipView(show: Boolean = false){
fun updateDriverMsgBoxTipView(show: Boolean = false) {
waringProviderApi?.updateDriverMsgBoxTipView(show)
}
/**
* 设置乘客端消息盒子是否展示
*/
fun updatePassengerMsgBoxTipView(show: Boolean = false){
fun updatePassengerMsgBoxTipView(show: Boolean = false) {
waringProviderApi?.updatePassengerMsgBoxTipView(show)
}
@@ -510,6 +507,18 @@ object CallerHmiManager : CallerBase() {
waringProviderApi?.updateMfStatus(tag, status)
}
/**
* 调度弹窗展示
*/
fun showDispatchDialog(msgData: DispatchAdasAutoPilotLocReceiverBean) {
waringProviderApi?.showDispatchDialog(msgData)
}
/**
* 隐藏调度弹窗
*/
fun dismissDispatchDialog(){
waringProviderApi?.dismissDispatchDialog()
}
}

View File

@@ -1,16 +0,0 @@
package com.mogo.eagle.core.function.call.notice;
import com.mogo.eagle.core.function.api.notice.IMoGoNoticeProvider;
import com.mogo.eagle.core.function.call.base.CallerBase;
import static com.mogo.eagle.core.data.constants.MogoServicePaths.PATH_AI_NOTICE;
/**
* @author xiaoyuzhou
*/
public class CallerNoticeManager extends CallerBase {
public static IMoGoNoticeProvider getNoticeProvider() {
return getApiInstance(IMoGoNoticeProvider.class, PATH_AI_NOTICE);
}
}

View File

@@ -44,11 +44,8 @@ android {
'src/main/res',
'src/main/function-adas-res',
'src/main/function-chat-res',
'src/main/function-check-res',
'src/main/function-dispatch-res',
'src/main/function-hmi-res',
'src/main/function-map-res',
'src/main/function-notice-res',
'src/main/function-obu-res',
'src/main/function-tts-res',
'src/main/function-v2x-res',

View File

@@ -23,7 +23,6 @@
:core:function-impl:mogo-core-function-map
:core:function-impl:mogo-core-function-monitoring
:core:function-impl:mogo-core-function-v2x
:core:function-impl:mogo-core-function-dispatch
:core:function-impl:mogo-core-function-chat
:core:function-impl:mogo-core-function-devatools
:core:function-impl:mogo-core-function-bindingcar

View File

@@ -34,8 +34,6 @@ include ':core:function-impl:mogo-core-function-obu-mogo'
//include ':core:function-impl:mogo-core-function-autopilot'
// 行车超视距服务,路测摄像头、前车摄像头
include ':core:function-impl:mogo-core-function-monitoring'
// 调度业务
include ':core:function-impl:mogo-core-function-dispatch'
// 绑定车机
include ':core:function-impl:mogo-core-function-bindingcar'
// 车聊聊业务