Merge remote-tracking branch 'origin/dev_minibus-d_230425_3.2.0' into dev_minibus-d_230425_3.2.0

This commit is contained in:
wangmingjun
2023-05-17 17:07:28 +08:00
17 changed files with 193 additions and 113 deletions

View File

@@ -6,7 +6,6 @@ import android.net.ConnectivityManager
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.module.intent.IMogoIntentListener
import com.mogo.commons.module.intent.IntentManager
import com.mogo.commons.voice.AIAssist
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine
@@ -48,8 +47,6 @@ import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.PinYinUtil
import com.mogo.och.common.module.voice.VoiceManager
import com.mogo.och.common.module.voice.VoiceNotice
import com.mogo.tts.base.LangTtsEntity
import com.mogo.tts.base.LanguageType
import io.reactivex.Observable
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
@@ -433,12 +430,12 @@ object CharterPassengerModel {
coordinateConverterWgsToGcj.latitude
)
// 小于15m到站
if (calculateLineDistance < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE) {
CallerLogger.d(SceneConstant.M_BUS_P + TAG,"小于15米到站1")
if (calculateLineDistance < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE && calculateLineDistance > 0) {
CallerLogger.d(M_BUS_P + TAG,"小于15米到站1")
arriveDest()
}
if (calculateLineDistance < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE) {
CallerLogger.d(SceneConstant.M_BUS_P + TAG,"小于100米到站")
if (calculateLineDistance < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE && calculateLineDistance > 0) {
CallerLogger.d(M_BUS_P + TAG, "小于100米到站")
arriveDestSoon()
}
}
@@ -675,6 +672,8 @@ object CharterPassengerModel {
mogoLocation.latitude
)
if(lastSumLength>100) {
ToastUtils.showLong("缺少轨迹数据")
if (mRoutePoints.size == 0) return
// 计算距离
lastSumLength =
CoordinateCalculateRouteUtil.calculateRouteSumLength(
@@ -690,11 +689,11 @@ object CharterPassengerModel {
"---lastSumLength: " + lastSumLength + "----lastTime : " + lastTime
+ " thread = " + Thread.currentThread().name
)
if (lastSumLength < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE) {
if (lastSumLength < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE&&lastSumLength>0) {
CallerLogger.d(M_BUS_P + TAG,"小于100米到站2")
arriveDestSoon()
}
if (lastSumLength < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE) {
if (lastSumLength < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE&&lastSumLength>0) {
CallerLogger.d(M_BUS_P + TAG,"小于15米到站2")
arriveDest()
return
@@ -845,71 +844,88 @@ object CharterPassengerModel {
@Synchronized
fun arriveDest() {
orderInfo?.let { order->
order.lineId?.let {lineId->
order.siteId?.let { siteId ->
if (order.arriveStatus == OrderInfoResponse.ARRIVING) {
if (broadcastList["${siteId}$endKey"] == null || broadcastList["${siteId}$endKey"] == false) {
val currentTimeStamp = DateTimeUtil.getCurrentTimeStamp()
BusPassengerServiceManager.arriveDest(
mContext,
lindId = lineId,
writtenVersion = currentTimeStamp,
object : OchCommonServiceCallback<BaseData> {
override fun onSuccess(data: BaseData?) {
if (null != data && 0 == data.code) {
VoiceManager.arrivedStation(
order.siteName!!,
order.siteNameKr ?: "",
VoiceFocusManager.getVoiceCmdCallBack()
)
broadcastList["${siteId}$endKey"] = true
// 给司机端
val (order, lineId, siteId) = getOrderInfo()
if(order!=null&&lineId!=null&&siteId!=null){
if (order.arriveStatus == OrderInfoResponse.ARRIVING) {
if (broadcastList["${siteId}$endKey"] == null || broadcastList["${siteId}$endKey"] == false) {
val currentTimeStamp = DateTimeUtil.getCurrentTimeStamp()
BusPassengerServiceManager.arriveDest(
mContext,
lindId = lineId,
writtenVersion = currentTimeStamp,
object : OchCommonServiceCallback<BaseData> {
override fun onSuccess(data: BaseData?) {
if (null != data && 0 == data.code) {
arrivedDeskSuccess(currentTimeStamp,true)
}
}
val msg = ChangeDestMsg(
order.orderNo?:":",
lineId.toInt(),
order.lineName?:"",
order.startSiteId?:0,
order.startSiteName?:"",
siteId.toInt(),
order.siteName,
true,
2,
currentTimeStamp
)
CallerTelematicManager.sendMsgToServer(
OchCommonConst.BUSINESS_STRING,
GsonUtils.toJson(msg).toByteArray()
)
CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "到站发送数据${msg}")
switchLine5minWait?.let {
if (!it.isDisposed) {
it.dispose()
}
}
// 到站结束自驾
CallerAutoPilotControlManager.cancelAutoPilot()
// 结束路距计算
endCalculateDistanceLoop()
// 到站置距离位0
invokeStationDistanceListener(-1,-1)
}
}
override fun onFail(code: Int, msg: String) {
ToastUtils.showShort("$code:$msg")
}
})
}
}
override fun onFail(code: Int, msg: String) {
ToastUtils.showShort("$code:$msg")
}
})
}
}
}
}
fun arrivedDeskSuccess(
currentTimeStamp: Long,
needSendDriver:Boolean
) {
val (order, lineId, siteId) = getOrderInfo()
if(order!=null&&lineId!=null&&siteId!=null){
VoiceManager.arrivedStation(
order.siteName!!,
order.siteNameKr ?: "",
VoiceFocusManager.getVoiceCmdCallBack()
)
broadcastList["${siteId}$endKey"] = true
// 给司机端
if (needSendDriver) {
val msg = ChangeDestMsg(
order.orderNo ?: ":",
lineId.toInt(),
order.lineName ?: "",
order.startSiteId ?: 0,
order.startSiteName ?: "",
siteId.toInt(),
order.siteName,
true,
OrderInfoResponse.ARRIVED,
currentTimeStamp
)
CallerTelematicManager.sendMsgToServer(
OchCommonConst.BUSINESS_STRING,
GsonUtils.toJson(msg).toByteArray()
)
CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "到站发送数据${msg}")
}
switchLine5minWait?.let {
if (!it.isDisposed) {
it.dispose()
}
}
// 到站结束自驾
CallerAutoPilotControlManager.cancelAutoPilot()
// 结束路距计算
endCalculateDistanceLoop()
// 到站置距离位0
invokeStationDistanceListener(-1, -1)
}
}
private fun getOrderInfo():Triple<OrderInfoResponse.OrderInfo?,Long?,Long?>{
this.orderInfo?.let { order->
this.orderInfo?.lineId?.let { lineId ->
this.orderInfo?.siteId?.let { siteId ->
return Triple(order,lineId,siteId)
}
}
}
return Triple(null,null,null)
}
@Synchronized
@@ -918,8 +934,8 @@ object CharterPassengerModel {
order.siteId?.let { siteId ->
if (order.arriveStatus == OrderInfoResponse.ARRIVING) {
if (broadcastList["${siteId}$ending100Key"] == null || broadcastList["${siteId}$ending100Key"] == false) {
val string = mContext.getString(com.mogo.och.common.module.R.string.arrived_station_zh)
VoiceNotice.showNotice(string,)
val string = mContext.getString(R.string.arrived_station_left_100)
VoiceNotice.showNotice(string)
}
}
}
@@ -962,9 +978,11 @@ object CharterPassengerModel {
}
val parameters = initAutopilotControlParameters()
if (null == parameters) {
ToastUtils.showShort("请选择站点")
CallerLogger.e(SceneConstant.M_BUS + TAG, "行程日志-AutopilotControlParameters is empty.")
return
}
ToastUtils.showShort("启动自动驾驶中")
startAutoPilot(parameters)
CallerLogger.d(
SceneConstant.M_BUS + TAG,

View File

@@ -180,10 +180,14 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) :
if (type == OchCommonConst.BUSINESS_STRING) {
val msg = GsonUtils.fromJson(
String(byteArray),
ChangeDestMsg::class.java
) as ChangeDestMsg
CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "接受数据:切换站点${msg}")
BaseDPMsg::class.java
) as BaseDPMsg
if (msg.type == DPMsgType.TYPE_CHANGE_DEST.type) {
val msg = GsonUtils.fromJson(
String(byteArray),
ChangeDestMsg::class.java
) as ChangeDestMsg
CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "接受数据:切换站点${msg}")
if (msg.isConfirmed) {
ToastUtils.showShort("站点确定")
mView?.setEnableSiteStatus(true)

View File

@@ -1,6 +1,7 @@
package com.mogo.och.bus.passenger.presenter
import androidx.lifecycle.LifecycleOwner
import com.mogo.och.bus.passenger.model.CharterPassengerModel
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
class BusPassengerFunctionPresenter(view: M1ContainFragment?) :
@@ -15,4 +16,8 @@ class BusPassengerFunctionPresenter(view: M1ContainFragment?) :
override fun onDestroy(owner: LifecycleOwner) {
super.onDestroy(owner)
}
fun haveOrder(): Boolean {
return CharterPassengerModel.hasOrder()
}
}

View File

@@ -7,6 +7,7 @@ import android.view.View
import androidx.lifecycle.LifecycleOwner
import com.amap.api.maps.model.LatLng
import com.mogo.commons.voice.AIAssist
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
@@ -23,6 +24,7 @@ import com.mogo.och.bus.passenger.bean.response.LineInfoResponse
import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse
import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse
import com.mogo.och.bus.passenger.bean.response.TrajectoriesResponse
import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback
import com.mogo.och.bus.passenger.callback.IDistanceCallback
import com.mogo.och.bus.passenger.callback.IOrderChangeCallback
import com.mogo.och.bus.passenger.model.CharterPassengerModel
@@ -46,7 +48,7 @@ import kotlin.math.ceil
class BusPassengerPresenter(view: MainFragment?) :
BusBasePassengerFunctionDevicePresenter<MainFragment?>(view),
IDistanceCallback, IOrderChangeCallback, IOrderStatusChangeListener,
OCHPlanningStopSideStatusManager.OCHPlanningActionsCallback, LightAirconditionDoorCallback {
OCHPlanningStopSideStatusManager.OCHPlanningActionsCallback, LightAirconditionDoorCallback, IBusPassengerControllerStatusCallback {
private val lindIdAndView = ConcurrentHashMap<Long, MakerWithSiteNamewithCheck?>()
@@ -60,6 +62,7 @@ class BusPassengerPresenter(view: MainFragment?) :
CharterPassengerModel.init()
// 定位监听
CharterPassengerModel.setStationDistanceListener(TAG, this)
CharterPassengerModel.setControllerStatusCallback(TAG,this)
CharterPassengerModel.setCarTypeChangeListener(this)
CharterPassengerModel.setStatusChangeListener(TAG, this)
CallerTelematicListenerManager.addListener(TAG, DriverMessage)
@@ -76,6 +79,12 @@ class BusPassengerPresenter(view: MainFragment?) :
OCHPlanningStopSideStatusManager.removeListener(TAG)
}
override fun onCarLocationChanged(location: MogoLocation?) {
location?.let {
setSpeed(it.gnssSpeed)
}
}
private fun setSpeed(speed: Float) {
UiThreadHandler.post {
val speedKM = (Math.abs(speed) * 3.6f).toInt()
@@ -100,6 +109,7 @@ class BusPassengerPresenter(view: MainFragment?) :
override fun setDistancecAndTime(meters: Long, timeInSecond: Long) {
if (meters < 0 && timeInSecond < 0) {
setDistanceAndTime("--", context.getString(R.string.m1_distance_unit_km), "--", "--")
return
}
var dis: String? = "0"
var disUnit = "KM"

View File

@@ -5,13 +5,16 @@ import com.mogo.commons.voice.AIAssist
import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ActivityUtils
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.bus.passenger.R
import com.mogo.och.common.module.bean.dpmsg.AppConnectMsg
import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg
import com.mogo.och.common.module.bean.dpmsg.DPCommonOperationMsg
import com.mogo.och.common.module.bean.dpmsg.DPMsgType
import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse
import com.mogo.och.bus.passenger.model.CharterPassengerModel
import com.mogo.och.bus.passenger.net.BusPassengerModelLoopManager
import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionOrderPresenter
import com.mogo.och.common.module.bean.dpmsg.*
import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorManager
@@ -19,6 +22,7 @@ import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStat
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.RxUtils
import com.mogo.och.common.module.utils.SoundPoolHelper
import com.mogo.och.common.module.voice.VoiceNotice
object DriverMessage: IReceivedMsgListener {
override fun onReceivedMsg(type: Int, byteArray: ByteArray) {
@@ -59,15 +63,23 @@ object DriverMessage: IReceivedMsgListener {
)
}
if(msg.isPlay){
AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSVoiceWithLevel(msg.msg, AIAssist.LEVEL1)
VoiceNotice.showNotice(msg.msg, AIAssist.LEVEL1)
if(msg.msg.contains("核销成功")){
RxUtils.createSubscribe(15_000) {
val string = AbsMogoApplication.getApp().getString(R.string.m1_welcome_tts)
AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSVoiceWithLevel(string, AIAssist.LEVEL1)
}
val string = AbsMogoApplication.getApp().getString(R.string.m1_welcome_tts)
VoiceNotice.showNotice(string, AIAssist.LEVEL1,15_000)
}
}
}
DPMsgType.TYPE_CHANGE_DEST.type -> {
val msg = GsonUtils.fromJson(
String(byteArray),
ChangeDestMsg::class.java
) as ChangeDestMsg
if (msg.isConfirmed&&msg.arriveStatus== OrderInfoResponse.ARRIVED) {
CallerLogger.d(SceneConstant.M_BUS_P + BaseDPMsg.TAG, "接受数据:到站${msg}")
CharterPassengerModel.arrivedDeskSuccess(msg.writtenVersion?:0,false)
}
}
else -> {}
}
}
@@ -80,7 +92,7 @@ object DriverMessage: IReceivedMsgListener {
}
private fun playDI() {
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(AbsMogoApplication.getApp(), R.raw.m1_voice_di)
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getTopActivity(), R.raw.m1_voice_di)
}

View File

@@ -9,6 +9,7 @@ import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.mvp.MvpDialogFragment
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
@@ -23,6 +24,7 @@ import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.M1VideoFragment
import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.OrderInfoFragment
import com.mogo.och.bus.passenger.ui.view.bottom.BottomBar
import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import kotlinx.android.synthetic.main.m1_contain_fragment.*
import org.greenrobot.eventbus.EventBus
@@ -130,6 +132,18 @@ class M1ContainFragment :
}
}
bb_bottom_bar.setOrderInfoClickListener{
if (LoginStatusManager.isLogin()) {
if(mPresenter?.haveOrder()==true){
}else{
ToastUtils.showShort("请确认订单")
return@setOrderInfoClickListener
}
}else{
ToastUtils.showShort(AbsMogoApplication.getApp().getString(R.string.m1_please_login_driver))
return@setOrderInfoClickListener
}
CallerLogger.d(M_BUS_P+ TAG, "initViews---$tab")
if(tab==ORDERINFO) {
dismissAllowingStateLoss()

View File

@@ -82,7 +82,6 @@ class GoViewWithArrive @JvmOverloads constructor(
ToastUtils.showShort("设备未就绪请稍等")
}
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {//
ToastUtils.showShort("启动自动驾驶中")
CallerAutoPilotControlManager.sendPlanningCmd(2)
CharterPassengerModel.startAutopilot()
onceRegisterAutoStatus()

View File

@@ -47,6 +47,8 @@ class StatusBarView @JvmOverloads constructor(
private var mHits = LongArray(COUNTS)
private var preStatus = -1
private fun continuousClick(type:String) {
//每次点击时,数组向前移动一位
System.arraycopy(mHits, 1, mHits, 0, mHits.size - 1)
@@ -96,6 +98,10 @@ class StatusBarView @JvmOverloads constructor(
}
private fun setAutoPilotSatusInfo(state: Int) {
if(preStatus==state){
return
}
preStatus = state
when (state) {
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {
actv_auto_status.text = "安全接管中"

View File

@@ -34,6 +34,8 @@
app:layout_constraintEnd_toEndOf="parent"
android:inputType="numberPassword"
android:gravity="center"
android:maxLines="1"
android:imeOptions="actionDone"
android:textSize="@dimen/dp_32"
android:textColor="@android:color/white"
android:background="@drawable/charter_p_debugview_edit_bg"

View File

@@ -48,7 +48,7 @@
<string name="m1_close_door_and_startauto">先关闭车门再启动吧~</string>
<string name="m1_start_auto_fail">自驾系统繁忙,稍后再试试吧~</string>
<string name="arrived_station_left_100">%1$s站就要到啦</string>
<!-- <string name="m1_novice_guidance_tts">正在为您靠边停车,扶稳坐好哟</string>-->
<!-- <string name="m1_novice_guidance_tts">靠边停车成功</string>-->
<!-- <string name="m1_novice_guidance_tts">车辆系统繁忙,请稍后再试</string>-->

View File

@@ -108,15 +108,15 @@ class MoGoAdasListenerImpl : OnAdasListener {
}
}
//感知物体
@ChainLog(
linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED,
linkCode = CHAIN_LINK_ADAS,
endpoint = PAD,
nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA,
paramIndexes = [0, 1],
clientPkFileName = "sn"
)
//感知物体 注解暂时关闭通过调试面板查看数量此注解暂时用于aiCloud显示感知物
// @ChainLog(
// linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED,
// linkCode = CHAIN_LINK_ADAS,
// endpoint = PAD,
// nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA,
// paramIndexes = [0, 1],
// clientPkFileName = "sn"
// )
override fun onTrackedObjects(
header: MessagePad.Header,
trackedObjects: MessagePad.TrackedObjects

View File

@@ -54,7 +54,7 @@ class TraceManager : IMoGoCloudListener, IMoGoAutopilotCarConfigListener {
fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT] =
FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_AUTO)
fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED] =
FwBuild(false, 30, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_DATA_TRACK)
FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_DATA_TRACK)
fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY] =
FwBuild(false, 30, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_TRAJECTORY)
fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE] =
@@ -82,7 +82,7 @@ class TraceManager : IMoGoCloudListener, IMoGoAutopilotCarConfigListener {
traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT] =
ChainLogParam(true, "ADAS自动驾驶链路(包含: 自动驾驶状态交互,全局路径,到站提醒,节点状态,异常上报)")
traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED] =
ChainLogParam(false, "ADAS感知物体")
ChainLogParam(true, "ADAS感知物体")
traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY] =
ChainLogParam(false, "ADAS车前引导线")
traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE] =

View File

@@ -43,12 +43,18 @@ class UpgradeAppNetWorkManager private constructor() {
scope.launch {
val sn = MoGoAiCloudClientConfig.getInstance().sn //null
val macAddress = mac //"48:b0:2d:4d:31:7f"
val type = screenType //10
val type = screenType //"10"
SharedPrefsMgr.getInstance(context!!).putString(SharedPrefsConstants.HOST_ADDRESS, HostConst.getHost())
try {
val records = provider?.getUpgradeRecords()?.also {
MogoAnalyticUtils.track("AppUpgradeRecord", it.let { TreeMap<String, Any>().also { itx -> itx.putAll(it) } })
MogoAnalyticUtils.track("AppUpgradeRecord", TreeMap<String, Any>().also { itx ->
it.entries.forEach { entry ->
itx[entry.key] = entry.value.joinToString(",") {
"${ it.first } -> ${ it.second }"
}
}
})
}
Log.d(TAG, "getAppUpgradeInfo: -> records:" + records?.entries?.joinToString(",") { itx -> "key:${itx.key} -> value:[${itx.value.joinToString(",") { "${it.first},${it.second}" } }]"})
val versionCode = AppUtils.getAppVersionCode()

View File

@@ -166,6 +166,7 @@ class UpgradeManager : IDownloadListener {
}
} else {
val apk = File(localPath)
upgradeProvider?.recordInstallStart()
withContext(Dispatchers.Main) {
ApkInstaller.installApp(Utils.getApp(), apk) { code, reason ->
if (code != PackageInstaller.STATUS_SUCCESS) {

View File

@@ -127,14 +127,13 @@ class MoGoHmiProvider : IMoGoHmiProvider {
"--- show v2x dialog 1 ---: info -> v2x-type: $v2xType : expireTime: $expireTime"
)
lastShowV2XJob?.safeCancel()
ProcessLifecycleOwner.get().lifecycleScope.launch(Dispatchers.Default) {
ProcessLifecycleOwner.get().lifecycleScope.launch {
delay(expireTime)
}.also { itx ->
lastShowV2XJob = itx
}.invokeOnCompletion {
listener?.onDismiss()
}
Log.d("CODE", "---- 00 ------ tts_content: $ttsContent")
if (ttsContent != null && !TextUtils.isEmpty(ttsContent) && playTTS) {
val last = lastSpeakJob.get()

View File

@@ -4,21 +4,20 @@ import android.content.Context
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager
import com.mogo.commons.debug.DebugConfig
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.deva.chain.ChainConstant
import com.mogo.eagle.core.data.multidisplay.TelematicConstant
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener
import com.mogo.eagle.core.function.business.ai.net.AiCloudIdentifyNetWorkModel.Companion.aiCloudIdentifyNetWorkModel
import com.mogo.eagle.core.function.business.identify.MapIdentifySubscriber
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager
import com.mogo.eagle.core.function.call.map.CallerMapRomaListener
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.updateLongSightLevel
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.sendMsgToServer
import com.mogo.eagle.core.function.utils.MapBizTrace
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.map.MogoMapUIController
@@ -47,7 +46,6 @@ class AiCloudIdentifyDataManager : IMogoMapListener,
}
private var showAiCloud = AtomicBoolean(false)
private var serverSn = ""
fun initServer(mContext: Context) {
MogoMapListenerHandler.mogoMapListenerHandler.registerHostMapListener(TAG, this)
@@ -125,8 +123,10 @@ class AiCloudIdentifyDataManager : IMogoMapListener,
// CallerMapRomaListener.invokeMapRoma(false)
// sendMsgToServer(TelematicConstant.OPEN_ROMA_STATUS, "4".toByteArray())
// }
MapBizTrace.log(TAG,"开启请求data:$dataReceive")
aiCloudIdentifyNetWorkModel.requestIdentifyRange(dataReceive, serverSn, {
val status = MogoStatusManager.getInstance().isSocketOnLine
val gnss = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().gnssInfo
MapBizTrace.log(TAG,"开启请求data:$dataReceive , socketStatus:$status , lon:${gnss.longitude} , lat:${gnss.latitude}")
aiCloudIdentifyNetWorkModel.requestIdentifyRange(dataReceive, gnss.longitude,gnss.latitude,{
MapBizTrace.log(
TAG,
"requestIdentifyRange ok startRange:$START_METRE, endRange:$END_METRE , dataReceive:$dataReceive"
@@ -156,7 +156,7 @@ class AiCloudIdentifyDataManager : IMogoMapListener,
when {
// 解除漫游限制
visualAngleMode.isRoma -> {
MapBizTrace.log(TAG, "onMapVisualAngleChanged, invoke roma")
MapBizTrace.log(TAG, "onMapVisualAngleChanged, invoke roma , socketStatus: ${ MogoStatusManager.getInstance().isSocketOnLine}")
showAiCloud.set(true)
FunctionBuildConfig.isDrawIdentifyData = false
}

View File

@@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.business.ai.net
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.constants.HostConst.getEagleHost
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.BaseResponse
import com.mogo.eagle.core.function.business.ai.AiCloudIdentifyDataManager.Companion.END_METRE
import com.mogo.eagle.core.function.business.ai.AiCloudIdentifyDataManager.Companion.START_METRE
@@ -10,7 +9,7 @@ import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.apiCall
import com.mogo.eagle.core.network.request
class AiCloudIdentifyNetWorkModel private constructor(){
class AiCloudIdentifyNetWorkModel private constructor() {
companion object {
val aiCloudIdentifyNetWorkModel by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
@@ -25,7 +24,7 @@ class AiCloudIdentifyNetWorkModel private constructor(){
fun requestIdentifyRange(
dataReceive: Boolean,
serverSn:String,
lon: Double, lat: Double,
onSuccess: (() -> Unit),
onError: ((String) -> Unit)
) {
@@ -37,7 +36,12 @@ class AiCloudIdentifyNetWorkModel private constructor(){
map["startMetre"] = START_METRE
map["endMetre"] = END_METRE
map["type"] = 1
map["relationSn"] = serverSn
if (lon != 0.0) {
map["lon"] = lon
}
if (lat != 0.0) {
map["lat"] = lat
}
}
loader {
apiCall {