[charter]

[3.2.0]
[车门操作统一到一个地方]
This commit is contained in:
yangyakun
2023-04-24 19:45:10 +08:00
parent 17f425a186
commit cb3f29336d
20 changed files with 226 additions and 286 deletions

View File

@@ -4,7 +4,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
import com.mogo.och.bus.passenger.bean.LoopInfo
import com.mogo.och.bus.passenger.constant.CharterPassengerConst
import com.mogo.och.bus.passenger.utils.RxUtils
import com.mogo.och.common.module.utils.RxUtils
import io.reactivex.Observable
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers

View File

@@ -4,7 +4,7 @@ import androidx.lifecycle.LifecycleOwner
import com.mogo.commons.mvp.IView
import com.mogo.commons.mvp.Presenter
import com.mogo.och.bus.passenger.model.CharterPassengerModel
import com.mogo.och.bus.passenger.utils.RxUtils
import com.mogo.och.common.module.utils.RxUtils
import io.reactivex.disposables.Disposable
abstract class BusBasePassengerFunctionDevicePresenter<V : IView?>(view: V) :

View File

@@ -5,92 +5,15 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.bus.passenger.model.CharterPassengerModel
import com.mogo.och.bus.passenger.ui.M1CarUserNoOrderFragment
import com.mogo.och.common.module.manager.OCHM1LightAirconditionDoorStatusManager
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager
import io.reactivex.disposables.Disposable
class BusPassengerCarUseAndNoOrderPresenter(view: M1CarUserNoOrderFragment?) :
BusBasePassengerFunctionDevicePresenter<M1CarUserNoOrderFragment?>(view),
OCHM1LightAirconditionDoorStatusManager.OCHM1LightAirconditionDoorCallback {
BusBasePassengerFunctionDevicePresenter<M1CarUserNoOrderFragment?>(view){
companion object {
private const val TAG = "BusPassengerFunctionPresenter"
}
private var subscribe: Disposable? = null
private var subscribeDoorStatus: Disposable? = null
private var gnssSpeed = 0.0
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
OCHM1LightAirconditionDoorStatusManager.addListener(TAG, this)
CharterPassengerModel.setControllerStatusCallback(TAG) { location ->
location?.let {
gnssSpeed = it.gnssInfo.vehicleSpeed
}
}
}
override fun onDestroy(owner: LifecycleOwner) {
super.onDestroy(owner)
OCHM1LightAirconditionDoorStatusManager.removeListener(TAG)
disposeSubscribe(subscribe)
disposeSubscribe(subscribeDoorStatus)
}
override fun onDoorStatusCallback(isOpen: Boolean, isFirst: Boolean) {
if (!isFirst) {
if (isOpen) {
ToastUtils.showShort("已开启车门")
} else {
ToastUtils.showShort("已关门车门")
}
}
}
fun openDoor() {
val canOpenOrCloseDoor = canOpenOrCloseDoor()
if (!canOpenOrCloseDoor.isNullOrEmpty()) {
ToastUtils.showShort(canOpenOrCloseDoor)
return
}
disposeSubscribe(subscribe)
subscribe = createSubscribe(1000) {
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0)
}
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(1)
disposeSubscribe(subscribeDoorStatus)
subscribeDoorStatus = createSubscribe {
if (!OCHM1LightAirconditionDoorStatusManager.doorStatus.isOpen) {
ToastUtils.showShort("车门无法开启,请使用车内物理按钮")
}
}
}
fun closeDoor() {
val canOpenOrCloseDoor = canOpenOrCloseDoor()
if (!canOpenOrCloseDoor.isNullOrBlank()) {
ToastUtils.showShort(canOpenOrCloseDoor)
return
}
disposeSubscribe(subscribe)
subscribe = createSubscribe(1000) {
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0)
}
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(2)
disposeSubscribe(subscribeDoorStatus)
subscribeDoorStatus = createSubscribe {
if (OCHM1LightAirconditionDoorStatusManager.doorStatus.isOpen) {
ToastUtils.showShort("车门无法关闭,请使用车内物理按钮")
}
}
}
private fun canOpenOrCloseDoor(): String? {
if (gnssSpeed < 0.01) {
return null
} else {
return "车辆正在运行、请稍后再试"
}
}
}

View File

@@ -7,16 +7,12 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.bus.passenger.model.CharterPassengerModel
import com.mogo.och.bus.passenger.ui.M1DeviceFragment
import com.mogo.och.common.module.manager.OCHM1LightAirconditionDoorStatusManager
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager
import io.reactivex.disposables.Disposable
class BusPassengerFunctionDevicePresenter(view: M1DeviceFragment?) :
BusBasePassengerFunctionDevicePresenter<M1DeviceFragment?>(view),
OCHM1LightAirconditionDoorStatusManager.OCHM1LightAirconditionDoorCallback {
private var subscribe: Disposable? = null
private var subscribeDoorStatus: Disposable? = null
private var gnssSpeed =0.0
BusBasePassengerFunctionDevicePresenter<M1DeviceFragment?>(view) {
companion object {
private const val TAG = "BusPassengerFunctionDevicePresenter"
@@ -24,75 +20,10 @@ class BusPassengerFunctionDevicePresenter(view: M1DeviceFragment?) :
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
OCHM1LightAirconditionDoorStatusManager.addListener(TAG, this)
CharterPassengerModel.setControllerStatusCallback(TAG) { location ->
location?.let {
gnssSpeed = it.gnssInfo.vehicleSpeed
}
}
}
override fun onDestroy(owner: LifecycleOwner) {
super.onDestroy(owner)
OCHM1LightAirconditionDoorStatusManager.removeListener(TAG)
disposeSubscribe(subscribe)
disposeSubscribe(subscribeDoorStatus)
}
override fun onDoorStatusCallback(isOpen: Boolean,isFirst: Boolean) {
if(!isFirst) {
if (isOpen) {
ToastUtils.showShort("已开启车门")
} else {
ToastUtils.showShort("已关门车门")
}
}
}
fun openDoor() {
val canOpenOrCloseDoor = canOpenOrCloseDoor()
if(!canOpenOrCloseDoor.isNullOrEmpty()){
ToastUtils.showShort(canOpenOrCloseDoor)
return
}
disposeSubscribe(subscribe)
subscribe = createSubscribe(1000) {
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0)
}
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(1)
disposeSubscribe(subscribeDoorStatus)
subscribeDoorStatus = createSubscribe(6000) {
if (!OCHM1LightAirconditionDoorStatusManager.doorStatus.isOpen) {
ToastUtils.showShort("车门无法开启,请使用车内物理按钮")
}
}
}
fun closeDoor() {
val canOpenOrCloseDoor = canOpenOrCloseDoor()
if(!canOpenOrCloseDoor.isNullOrBlank()){
ToastUtils.showShort(canOpenOrCloseDoor)
return
}
disposeSubscribe(subscribe)
subscribe = createSubscribe(1000) {
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0)
}
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(2)
disposeSubscribe(subscribeDoorStatus)
subscribeDoorStatus = createSubscribe(6000) {
if (OCHM1LightAirconditionDoorStatusManager.doorStatus.isOpen) {
ToastUtils.showShort("车门无法关闭,请使用车内物理按钮")
}
}
}
private fun canOpenOrCloseDoor():String?{
if(gnssSpeed<0.01){
return null
}else{
return "车辆正在运行、请稍后再试"
}
}
// 靠边停车

View File

@@ -7,12 +7,16 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.bus.passenger.ui.M1SoftFragment
import com.mogo.och.common.module.manager.OCHM1LightAirconditionDoorStatusManager
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager
import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus
import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue
import com.mogo.och.common.module.manager.devicemanage.data.LightStatus
import io.reactivex.disposables.Disposable
class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
BusBasePassengerFunctionDevicePresenter<M1SoftFragment?>(view),
OCHM1LightAirconditionDoorStatusManager.OCHM1LightAirconditionDoorCallback {
LightAirconditionDoorCallback {
companion object {
private const val TAG = "BusPassengerFunctionSoftPresenter"
}
@@ -26,23 +30,23 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
OCHM1LightAirconditionDoorStatusManager.addListener(TAG, this)
LightAirconditionDoorStatusManager.addListener(TAG, this)
}
override fun onDestroy(owner: LifecycleOwner) {
super.onDestroy(owner)
OCHM1LightAirconditionDoorStatusManager.removeListener(TAG)
LightAirconditionDoorStatusManager.removeListener(TAG)
}
/**
* 空调状态变化
*/
override fun onAirconditionStatusCallback(heaterIsOpen: Boolean,airconditionStatus: OCHM1LightAirconditionDoorStatusManager.AirconditionStatus,isFirst: Boolean) {
override fun onAirconditionStatusCallback(heaterIsOpen: Boolean, airconditionStatus: AirconditionStatus, isFirst: Boolean) {
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
"回写--空调开关:${OCHM1LightAirconditionDoorStatusManager.airconditionStatus.isOpen}" +
"空调温度:${OCHM1LightAirconditionDoorStatusManager.airconditionStatus.temperature}" +
"空调模式:${OCHM1LightAirconditionDoorStatusManager.airconditionStatus.pattert}" +
"空调风速:${OCHM1LightAirconditionDoorStatusManager.airconditionStatus.windSpeed}")
"回写--空调开关:${LightAirconditionDoorStatusManager.airconditionStatus.isOpen}" +
"空调温度:${LightAirconditionDoorStatusManager.airconditionStatus.temperature}" +
"空调模式:${LightAirconditionDoorStatusManager.airconditionStatus.pattert}" +
"空调风速:${LightAirconditionDoorStatusManager.airconditionStatus.windSpeed}")
UiThreadHandler.post {
if(airconditionStatus.isOpen){
mView?.setAirconditionHeaterView(
@@ -66,7 +70,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
/**
* 暖风机状态变化
*/
override fun onHeaterStatusCallback(airconditionIsOpen:Boolean,heaterStatue: OCHM1LightAirconditionDoorStatusManager.HeaterStatue,isFirst: Boolean) {
override fun onHeaterStatusCallback(airconditionIsOpen:Boolean, heaterStatue: HeaterStatue, isFirst: Boolean) {
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
"回写--暖风机开关:${heaterStatue.isOpen}" +
"风速:${heaterStatue.windSpeed}")
@@ -93,7 +97,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
/**
* 灯状态变化
*/
override fun onLightTop1Callback(lightStatus: OCHM1LightAirconditionDoorStatusManager.LightStatus,isFirst: Boolean) {
override fun onLightTop1Callback(lightStatus: LightStatus, isFirst: Boolean) {
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
"回写--顶灯1开关:${lightStatus.isOpenLight1}" +
"顶灯2开关:${lightStatus.isOpenLight2}" +
@@ -105,7 +109,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
/**
* 灯状态变化
*/
override fun onLightTop2Callback(lightStatus: OCHM1LightAirconditionDoorStatusManager.LightStatus,isFirst: Boolean) {
override fun onLightTop2Callback(lightStatus: LightStatus, isFirst: Boolean) {
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
"回写--顶灯1开关:${lightStatus.isOpenLight1}" +
"顶灯2开关:${lightStatus.isOpenLight2}" +
@@ -118,7 +122,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
/**
* 灯状态变化
*/
override fun onLightAtmosphereCallback(lightStatus: OCHM1LightAirconditionDoorStatusManager.LightStatus,isFirst: Boolean) {
override fun onLightAtmosphereCallback(lightStatus: LightStatus, isFirst: Boolean) {
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
"回写--顶灯1开关:${lightStatus.isOpenLight1}" +
"顶灯2开关:${lightStatus.isOpenLight2}" +
@@ -137,10 +141,10 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
CallerAutoPilotControlManager.sendRoboBusJinlvM1AirConditionerCmd(1,modeCmd,windSpeedCmd,temperatureCmd)
disposeSubscribe(airconditionDisposable)
airconditionDisposable = createSubscribe(10000){
if (!OCHM1LightAirconditionDoorStatusManager.airconditionStatus.isOpen&&
OCHM1LightAirconditionDoorStatusManager.airconditionStatus.windSpeed!=windSpeedCmd&&
OCHM1LightAirconditionDoorStatusManager.airconditionStatus.temperature!=temperatureCmd&&
OCHM1LightAirconditionDoorStatusManager.airconditionStatus.pattert!=modeCmd) {
if (!LightAirconditionDoorStatusManager.airconditionStatus.isOpen&&
LightAirconditionDoorStatusManager.airconditionStatus.windSpeed!=windSpeedCmd&&
LightAirconditionDoorStatusManager.airconditionStatus.temperature!=temperatureCmd&&
LightAirconditionDoorStatusManager.airconditionStatus.pattert!=modeCmd) {
ToastUtils.showShort("空调操作未生效,请稍后重试吧~")
}
}
@@ -150,7 +154,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
CallerAutoPilotControlManager.sendRoboBusJinlvM1AirConditionerCmd(2,modeCmd,windSpeedCmd,temperatureCmd)
disposeSubscribe(airconditionDisposable)
airconditionDisposable = createSubscribe(10000){
if (OCHM1LightAirconditionDoorStatusManager.airconditionStatus.isOpen) {
if (LightAirconditionDoorStatusManager.airconditionStatus.isOpen) {
ToastUtils.showShort("空调操作未生效,请稍后重试吧~")
}
}
@@ -163,8 +167,8 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
CallerAutoPilotControlManager.sendRoboBusJinlvM1HeaderCmd(1,windSpeedCmd)
disposeSubscribe(heaterDisposable)
heaterDisposable = createSubscribe(10000){
if (!OCHM1LightAirconditionDoorStatusManager.heaterStatue.isOpen&&
OCHM1LightAirconditionDoorStatusManager.heaterStatue.windSpeed!=windSpeedCmd) {
if (!LightAirconditionDoorStatusManager.heaterStatue.isOpen&&
LightAirconditionDoorStatusManager.heaterStatue.windSpeed!=windSpeedCmd) {
ToastUtils.showShort("暖风机操作未生效,请稍后重试吧~")
}
}
@@ -175,7 +179,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
CallerAutoPilotControlManager.sendRoboBusJinlvM1HeaderCmd(2,0)
disposeSubscribe(heaterDisposable)
heaterDisposable = createSubscribe(10000){
if (OCHM1LightAirconditionDoorStatusManager.heaterStatue.isOpen) {
if (LightAirconditionDoorStatusManager.heaterStatue.isOpen) {
ToastUtils.showShort("暖风机操作未生效,请稍后重试吧~")//还是开着的
}
}
@@ -187,14 +191,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
if(leftLight){
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(1)
subscribeLightTop1 = createSubscribe{
if (!OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) {
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) {
ToastUtils.showShort("操作未生效,请稍后重试吧~")
}
}
}else{
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(2)
subscribeLightTop1 = createSubscribe{
if (OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) {
if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) {
ToastUtils.showShort("操作未生效,请稍后重试吧~")
}
}
@@ -206,14 +210,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
if(rightLight){
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(1)
subscribeLightTop2 = createSubscribe{
if (!OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) {
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) {
ToastUtils.showShort("操作未生效,请稍后重试吧~")
}
}
}else{
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(2)
subscribeLightTop2 = createSubscribe{
if (OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) {
if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) {
ToastUtils.showShort("操作未生效,请稍后重试吧~")
}
}
@@ -225,14 +229,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
if (atmosphereLight) {
CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(1)
subscribeLightAtmosphere = createSubscribe{
if (!OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) {
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) {
ToastUtils.showShort("操作未生效,请稍后重试吧~")
}
}
} else {
CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(2)
subscribeLightAtmosphere = createSubscribe{
if (OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) {
if (LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) {
ToastUtils.showShort("操作未生效,请稍后重试吧~")
}
}

View File

@@ -24,7 +24,7 @@ import com.mogo.och.bus.passenger.ui.MainFragment
import com.mogo.och.common.module.bean.dpmsg.DPMsgType
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.OCHM1LightAirconditionDoorStatusManager
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager
import com.mogo.och.common.module.manager.OCHPlanningStopSideStatusManager
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.NumberFormatUtil
@@ -32,21 +32,20 @@ import com.mogo.och.common.module.utils.SoundPoolHelper
import com.mogo.och.common.module.voice.VoiceNotice
import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg
import com.mogo.och.common.module.bean.dpmsg.DPCommonOperationMsg
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorManager
import io.reactivex.disposables.Disposable
import java.util.*
class BusPassengerPresenter(view: MainFragment?) :
BusBasePassengerFunctionDevicePresenter<MainFragment?>(view),
IBusPassengerControllerStatusCallback, IDistanceTimeCallback, IOrderChangeCallback,
IOrderStatusChangeListener, OCHPlanningStopSideStatusManager.OCHPlanningActionsCallback {
IDistanceTimeCallback, IOrderChangeCallback, IOrderStatusChangeListener,
OCHPlanningStopSideStatusManager.OCHPlanningActionsCallback, LightAirconditionDoorCallback {
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)
CharterPassengerModel.setCarTypeChangeListener(this)
CharterPassengerModel.setStatusChangeListener(TAG,this)
@@ -59,7 +58,6 @@ class BusPassengerPresenter(view: MainFragment?) :
override fun onDestroy(owner: LifecycleOwner) {
super.onDestroy(owner)
CharterPassengerModel.setControllerStatusCallback(TAG,null)
CharterPassengerModel.setiDistanceTimeCallback(null)
CharterPassengerModel.setCarTypeChangeListener(null)
CallerTelematicListenerManager.removeListener(TAG)
@@ -81,12 +79,6 @@ class BusPassengerPresenter(view: MainFragment?) :
mView?.setOrderTime(sumTime, arrivedTime)
}
}
override fun onCarLocationChanged(location: MogoLocation?) {
location?.let {
setSpeed(it.gnssSpeed)
gnssSpeed = it.gnssSpeed
}
}
val msgReceived = object : IReceivedMsgListener {
override fun onReceivedMsg(type: Int, byteArray: ByteArray) {
@@ -98,11 +90,11 @@ class BusPassengerPresenter(view: MainFragment?) :
) as BaseDPMsg
when (msg.type) {
DPMsgType.TYPE_OPEN_CLOSE_DOOR.type -> {
val doorStatus = OCHM1LightAirconditionDoorStatusManager.doorStatus
val doorStatus = LightAirconditionDoorStatusManager.doorStatus
if(doorStatus.isOpen){
closeDoor()
LightAirconditionDoorManager.go2OpenDoor(false)
}else{
openDoor()
LightAirconditionDoorManager.go2OpenDoor(true)
}
}
DPMsgType.TYPE_COMMON.type -> {
@@ -128,40 +120,6 @@ class BusPassengerPresenter(view: MainFragment?) :
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.m1_voice_di)
}
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 "车辆正在运行、请稍后再试"
}
}
/**
* 计算剩余距离和剩余时间
*/
@@ -290,4 +248,13 @@ class BusPassengerPresenter(view: MainFragment?) :
}
}
override fun onDoorStatusCallback(isOpen: Boolean, isFirst: Boolean) {
if (!isFirst) {
if (isOpen) {
ToastUtils.showShort("已开启车门")
} else {
ToastUtils.showShort("已关门车门")
}
}
}
}

View File

@@ -4,9 +4,7 @@ import android.os.Bundle
import android.util.Log
import android.view.View
import android.view.WindowManager
import android.widget.CompoundButton
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import com.mogo.commons.mvp.MvpDialogFragment
@@ -14,11 +12,9 @@ import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
import com.mogo.eagle.core.utilcode.util.BarUtils
import com.mogo.eagle.core.utilcode.util.SharedPrefs
import com.mogo.och.bus.passenger.R
import com.mogo.och.bus.passenger.presenter.BusPassengerCarUseAndNoOrderPresenter
import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionPresenter
import kotlinx.android.synthetic.m1.m1_contain_fragment.*
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorManager
import kotlinx.android.synthetic.m1.m1_order_end.*
/**
@@ -45,10 +41,10 @@ class M1CarUserNoOrderFragment :
override fun initViews() {
dialog?.setCancelable(false)
iv_end_order_opendoor.onClick {
mPresenter?.openDoor()
LightAirconditionDoorManager.go2OpenDoor(true)
}
iv_end_order_closedoor.onClick {
mPresenter?.closeDoor()
LightAirconditionDoorManager.go2OpenDoor(false)
}
}

View File

@@ -36,15 +36,6 @@ class M1DeviceFragment :
mPresenter?.startStopSide()
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
}
tv_car_setting_opendoor.onClick {
// 开门 AdasManager.getInstance().sendRoboBusJinlvM1FrontDoorCmd(2);
mPresenter?.openDoor()
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
}
tv_car_setting_closedoor.onClick {
mPresenter?.closeDoor()
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
}
}
override fun createPresenter(): BusPassengerFunctionDevicePresenter =

View File

@@ -28,7 +28,7 @@ import com.mogo.och.bus.passenger.net.BusPassengerServiceManager
import com.mogo.och.bus.passenger.ui.M1ContainFragment
import com.mogo.och.bus.passenger.ui.adapter.OrderLineItemAdapter
import com.mogo.och.bus.passenger.ui.adapter.OrderSiteItemAdapter
import com.mogo.och.bus.passenger.utils.RxUtils
import com.mogo.och.common.module.utils.RxUtils
import com.mogo.och.bus.passenger.view.BottomDecoration
import com.mogo.och.common.module.bean.dpmsg.DPMsgType
import com.mogo.och.common.module.biz.constant.OchCommonConst

View File

@@ -0,0 +1,32 @@
package com.mogo.och.bus.passenger.ui.view.door
import android.content.Context
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatTextView
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.bus.passenger.R
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorManager
import com.mogo.och.common.module.utils.RxUtils
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager
import com.mogo.och.common.module.utils.SoundPoolHelper
import io.reactivex.disposables.Disposable
class CloseDoorView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : AppCompatTextView(context, attrs, defStyleAttr) {
init {
setOnClickListener {
go2OpenDoor()
}
}
private fun go2OpenDoor(){
LightAirconditionDoorManager.go2OpenDoor(false)
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
}
}

View File

@@ -0,0 +1,27 @@
package com.mogo.och.bus.passenger.ui.view.door
import android.content.Context
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatTextView
import com.mogo.och.bus.passenger.R
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorManager
import com.mogo.och.common.module.utils.SoundPoolHelper
class OpenDoorView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : AppCompatTextView(context, attrs, defStyleAttr) {
init {
setOnClickListener {
go2OpenDoor()
}
}
private fun go2OpenDoor(){
LightAirconditionDoorManager.go2OpenDoor(true)
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
}
}

View File

@@ -47,7 +47,7 @@
app:layout_constraintStart_toEndOf="@+id/tv_car_setting_go"
app:layout_constraintTop_toTopOf="parent" />
<TextView
<com.mogo.och.bus.passenger.ui.view.door.CloseDoorView
android:id="@+id/tv_car_setting_opendoor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -62,7 +62,7 @@
app:layout_constraintStart_toEndOf="@+id/tv_car_setting_stopside"
app:layout_constraintTop_toTopOf="parent" />
<TextView
<com.mogo.och.bus.passenger.ui.view.door.OpenDoorView
android:id="@+id/tv_car_setting_closedoor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@@ -0,0 +1,26 @@
package com.mogo.och.common.module.manager.devicemanage
import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus
import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue
import com.mogo.och.common.module.manager.devicemanage.data.LightStatus
interface LightAirconditionDoorCallback {
fun onAirconditionStatusCallback(heaterIsOpen: Boolean, airconditionStatus: AirconditionStatus,
isFirst: Boolean) {
}
fun onHeaterStatusCallback(airconditionIsOpen: Boolean, heaterStatue: HeaterStatue,
isFirst: Boolean) {
}
fun onDoorStatusCallback(isOpen: Boolean, isFirst: Boolean) {}
fun onLightTop1Callback(lightStatus: LightStatus, isFirst: Boolean) {
}
fun onLightTop2Callback(lightStatus: LightStatus, isFirst: Boolean) {}
fun onLightAtmosphereCallback(lightStatus: LightStatus, isFirst: Boolean) {}
}

View File

@@ -0,0 +1,48 @@
package com.mogo.och.common.module.manager.devicemanage
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.utils.RxUtils
import io.reactivex.disposables.Disposable
object LightAirconditionDoorManager {
private const val TAG = "LightAirconditionDoorManager"
private var dooorSubscribe: Disposable? = null
private var doorStatusSubscribe: Disposable? = null
fun go2OpenDoor(isOpen:Boolean){
val canOpenOrCloseDoor = canOpenOrCloseDoor()
if(!canOpenOrCloseDoor.isNullOrBlank()){
ToastUtils.showShort(canOpenOrCloseDoor)
return
}
RxUtils.disposeSubscribe(dooorSubscribe)
dooorSubscribe = RxUtils.createSubscribe(1000) {
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0)
}
if(isOpen) {
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(1)
}else{
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(2)
}
RxUtils.disposeSubscribe(doorStatusSubscribe)
doorStatusSubscribe = RxUtils.createSubscribe(6000) {
if (LightAirconditionDoorStatusManager.doorStatus.isOpen) {
ToastUtils.showShort("车门无法关闭,请使用车内物理按钮")
}else{
ToastUtils.showShort("车门无法开启,请使用车内物理按钮")
}
}
}
private fun canOpenOrCloseDoor(): String? {
val location = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
return if(location.gnssSpeed<0.01){
null
}else{
"车辆正在运行、请稍后再试"
}
}
}

View File

@@ -1,11 +1,15 @@
package com.mogo.och.common.module.manager
package com.mogo.och.common.module.manager.devicemanage
import chassis.VehicleStateOuterClass
import com.mogo.eagle.core.function.api.autopilot.IMoGoRoboBusJinlvM1StatesListener
import com.mogo.eagle.core.function.call.autopilot.CallerRoboBusJinlvM1StatesListenerManager
import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus
import com.mogo.och.common.module.manager.devicemanage.data.DoorStatus
import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue
import com.mogo.och.common.module.manager.devicemanage.data.LightStatus
import java.util.concurrent.ConcurrentHashMap
object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListener {
object LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListener {
private const val TAG = "OCHM1LightAirconditionDoorStatusManager"
init {
@@ -13,7 +17,7 @@ object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListen
CallerRoboBusJinlvM1StatesListenerManager.setListenerHz(TAG,5)
}
val M_LISTENERS: ConcurrentHashMap<String, OCHM1LightAirconditionDoorCallback> =
val M_LISTENERS: ConcurrentHashMap<String, LightAirconditionDoorCallback> =
ConcurrentHashMap()
val airconditionStatus = AirconditionStatus(false, 0, 26, 2)
@@ -23,7 +27,7 @@ object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListen
fun addListener(
tag: String,
listener: OCHM1LightAirconditionDoorCallback
listener: LightAirconditionDoorCallback
) {
if (M_LISTENERS.containsKey(tag)) {
return
@@ -47,7 +51,7 @@ object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListen
* 删除监听
* @param listener 要删除的监听对象
*/
fun removeListener(listener: OCHM1LightAirconditionDoorCallback) {
fun removeListener(listener: LightAirconditionDoorCallback) {
if (!M_LISTENERS.containsValue(listener)) {
return
}
@@ -58,36 +62,6 @@ object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListen
}
}
interface OCHM1LightAirconditionDoorCallback {
fun onAirconditionStatusCallback(heaterIsOpen:Boolean,airconditionStatus: AirconditionStatus,isFirst: Boolean){}
fun onHeaterStatusCallback(airconditionIsOpen: Boolean,heaterStatue: HeaterStatue,isFirst: Boolean){}
fun onDoorStatusCallback(isOpen: Boolean,isFirst: Boolean){}
fun onLightTop1Callback(lightStatus: LightStatus,isFirst: Boolean){}
fun onLightTop2Callback(lightStatus: LightStatus,isFirst: Boolean){}
fun onLightAtmosphereCallback(lightStatus: LightStatus,isFirst: Boolean){}
}
data class AirconditionStatus(
var isOpen: Boolean,
var pattert: Int,
var temperature: Int,
var windSpeed: Int
)
data class HeaterStatue(var isOpen: Boolean, var windSpeed: Int)
data class DoorStatus(var isOpen: Boolean)
data class LightStatus(
var isOpenLight1: Boolean,
var isOpenLight2: Boolean,
var isOpenatmosphere: Boolean
)
override fun onRoboBusJinlvM1States(states: VehicleStateOuterClass.RoboBusJinlvM1State) {
val airConditionerState = states.airConditionerState
val heaterState = states.heaterState

View File

@@ -0,0 +1,8 @@
package com.mogo.och.common.module.manager.devicemanage.data
data class AirconditionStatus(
var isOpen: Boolean,
var pattert: Int,
var temperature: Int,
var windSpeed: Int
)

View File

@@ -0,0 +1,3 @@
package com.mogo.och.common.module.manager.devicemanage.data
data class DoorStatus(var isOpen: Boolean)

View File

@@ -0,0 +1,3 @@
package com.mogo.och.common.module.manager.devicemanage.data
data class HeaterStatue(var isOpen: Boolean, var windSpeed: Int)

View File

@@ -0,0 +1,7 @@
package com.mogo.och.common.module.manager.devicemanage.data
data class LightStatus(
var isOpenLight1: Boolean,
var isOpenLight2: Boolean,
var isOpenatmosphere: Boolean
)

View File

@@ -1,4 +1,4 @@
package com.mogo.och.bus.passenger.utils
package com.mogo.och.common.module.utils
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers