[1.1.2]
[接受小程序开关门推送   小程序-> 服务 -> 司机端 -> 乘客端]
This commit is contained in:
yangyakun
2023-02-28 20:39:55 +08:00
parent 55673e3eb4
commit 74b11c7eaf

View File

@@ -2,24 +2,38 @@ package com.mogo.och.bus.passenger.presenter
import androidx.lifecycle.LifecycleOwner
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.data.telematic.TelematicConstant
import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
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.callback.IBusPassengerControllerStatusCallback
import com.mogo.och.bus.passenger.callback.IDistanceTimeCallback
import com.mogo.och.bus.passenger.model.CharterPassengerModel
import com.mogo.och.bus.passenger.ui.MainFragment
import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg
import com.mogo.och.common.module.bean.dpmsg.DPMsgType
import com.mogo.och.common.module.manager.OCHM1LightAirconditionDoorStatusManager
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.NumberFormatUtil
import io.reactivex.disposables.Disposable
import java.util.*
class BusPassengerPresenter(view: MainFragment?) :
BusBasePassengerFunctionDevicePresenter<MainFragment?>(view),
IBusPassengerControllerStatusCallback, IDistanceTimeCallback {
private var subscribe: Disposable? = null
private var gnssSpeed = 0.0f
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
CharterPassengerModel.init()
// 定位监听
CharterPassengerModel.setControllerStatusCallback(TAG,this)
CharterPassengerModel.setiDistanceTimeCallback(this)
CallerTelematicListenerManager.addListener(TAG, msgReceived)
//BusPassengerModel.setMoGoAutopilotPlanningListener(this)
}
@@ -28,6 +42,7 @@ class BusPassengerPresenter(view: MainFragment?) :
super.onDestroy(owner)
CharterPassengerModel.setControllerStatusCallback(TAG,null)
CharterPassengerModel.setiDistanceTimeCallback(null)
CallerTelematicListenerManager.removeListener(TAG)
}
private fun setSpeed(speed:Float){
UiThreadHandler.post {
@@ -44,6 +59,62 @@ class BusPassengerPresenter(view: MainFragment?) :
override fun onCarLocationChanged(location: MogoLocation?) {
location?.let {
setSpeed(it.gnssSpeed)
gnssSpeed = it.gnssSpeed
}
}
val msgReceived = object : IReceivedMsgListener {
override fun onReceivedMsg(type: Int, byteArray: ByteArray) {
UiThreadHandler.post {
if (type == TelematicConstant.BUSINESS_STRING) {
val msg = GsonUtils.fromJson(
String(byteArray),
ChangeDestMsg::class.java
) as ChangeDestMsg
if (msg.type == DPMsgType.TYPE_OPEN_CLOSE_DOOR.type) {
val doorStatus = OCHM1LightAirconditionDoorStatusManager.doorStatus
if(doorStatus.isOpen){
closeDoor()
}else{
openDoor()
}
}
}
}
}
}
fun openDoor() {
val canOpenOrCloseDoor = canOpenOrCloseDoor()
if(!canOpenOrCloseDoor.isNullOrEmpty()){
ToastUtils.showShort(canOpenOrCloseDoor)
return
}
disposeSubscribe(subscribe)
subscribe = createSubscribe(1000) {
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0)
}
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(1)
}
fun closeDoor() {
val canOpenOrCloseDoor = canOpenOrCloseDoor()
if(!canOpenOrCloseDoor.isNullOrBlank()){
ToastUtils.showShort(canOpenOrCloseDoor)
return
}
disposeSubscribe(subscribe)
subscribe = createSubscribe(1000) {
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0)
}
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(2)
}
private fun canOpenOrCloseDoor():String?{
if(gnssSpeed<0.01){
return null
}else{
return "车辆正在运行、请稍后再试"
}
}