[charter m1]司机端倒计时,UI处理

This commit is contained in:
wangmingjun
2023-03-01 19:15:50 +08:00
parent 8a6a4374b8
commit c462ce404c
6 changed files with 42 additions and 54 deletions

View File

@@ -176,6 +176,10 @@ class DriverM1Fragment : CharterBaseFragment<DriverM1Fragment?, DriverM1Presente
driverm1_order_count_down.text = String.format(
resources.getString(R.string.count_down_txt)
,minute)
if(minute.toInt() == 5){//还车提示
mPresenter?.carReturnTip()
}
d(SceneConstant.M_CHARTER_D + TAG, "倒计时分钟 = $minute" )
}

View File

@@ -51,7 +51,7 @@ object DriverM1LooperManager {
CallerLogger.i(SceneConstant.M_CHARTER_D + TAG, "starCountDownLoop()")
mQueryCountDownDisposable = Observable.interval(
CharterConst.LOOP_DELAY,
CharterConst.LOOP_5M, TimeUnit.MINUTES
CharterConst.LOOP_3M, TimeUnit.MILLISECONDS
)
.map { aLong: Long -> aLong + 1 }
.subscribeOn(Schedulers.io())

View File

@@ -2,7 +2,6 @@ package com.magic.mogo.och.charter.model
import android.content.Context
import android.net.ConnectivityManager
import android.os.Handler
import com.alibaba.android.arouter.launcher.ARouter
import com.alibaba.android.arouter.utils.TextUtils
import com.amap.api.maps.model.LatLng
@@ -19,7 +18,6 @@ import com.magic.mogo.och.charter.callback.IDriverM1ControllerStatusCallback
import com.magic.mogo.och.charter.constant.CharterConst
import com.magic.mogo.och.charter.net.DriverM1ServiceManager
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.module.intent.IMogoIntentListener
import com.mogo.commons.module.intent.IntentManager
import com.mogo.eagle.core.data.BaseData
@@ -60,8 +58,6 @@ import java.io.IOException
*/
class DriverM1Model {
private var backgroundCurrentStationIndex = 0 //A->B 此处值是A站点索引
var mLongitude = 0.0
var mLatitude = 0.0
private var mContext: Context? = null
@@ -69,11 +65,7 @@ class DriverM1Model {
private var isArrivedStation: Boolean = false
// 运营类型
private val MSG_QUERY_BUS_STATION: Int = 1001
private val QUERY_BUS_STATION_DELAY: Long = 5000
// 运营类型
private val VEHICLE_TYPE = 10
private val VEHICLE_TYPE : Int = 10
private var mControllerStatusCallback //Model->PresenterVR mode等
: IDriverM1ControllerStatusCallback? = null
@@ -104,14 +96,6 @@ class DriverM1Model {
}
}
private val handler = Handler(Handler.Callback { msg ->
if (msg.what == MSG_QUERY_BUS_STATION) {
return@Callback true
}
false
})
fun init(context: Context) {
mContext = context
// 定位监听
@@ -317,15 +301,14 @@ class DriverM1Model {
startFailedCode: String,
startFailedMessage: String
) {
// BusAnalyticsManager.getInstance()
// .triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage)
// if (mADASStatusCallback != null && !FunctionBuildConfig.isDemoMode) {
// e(
// SceneConstant.M_CHARTER_D + TAG,
// "mAdasStartFailureListener = $startFailedMessage"
// )
CharterAnalyticsManager.getInstance()
.triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage)
if (mControllerStatusCallback != null) {
d(SceneConstant.M_CHARTER_D + TAG,
"mAdasStartFailureListener = $startFailedMessage")
mControllerStatusCallback?.onStartAdasFailure()
// }
}
}
}
@@ -413,13 +396,6 @@ class DriverM1Model {
}
/**
* 延时查询站点信心
*/
fun queryBusStationDelay() {
handler.sendEmptyMessageDelayed(MSG_QUERY_BUS_STATION, QUERY_BUS_STATION_DELAY)
}
/**
* 在踩刹车、控制方向盘等操作后,会停止自动驾驶,重启自动驾驶的话相当于重新设置自动驾驶目的地
*/
@@ -438,7 +414,7 @@ class DriverM1Model {
loginService!!.loginOut(mLatitude, mLongitude)
}
private fun triggerStartServiceEvent(isRestart: Boolean, send: Boolean) {
fun triggerStartServiceEvent(isRestart: Boolean, send: Boolean) {
if (mCurrentOrder == null) {
return
}
@@ -462,10 +438,6 @@ class DriverM1Model {
}
}
fun getCurrentStationIndex(): Int {
return backgroundCurrentStationIndex
}
/**
* 将业务订单信息保存,鹰眼可取用
*/
@@ -490,7 +462,7 @@ class DriverM1Model {
var parameters = AutopilotControlParameters()
parameters.routeID = mCurrentOrder?.lineId!!
parameters.routeName = mCurrentOrder?.lineName!!
// parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.getName())
parameters.startName = PinYinUtil.getPinYinHeadChar(mCurrentOrder?.startSiteName)
parameters.endName = PinYinUtil.getPinYinHeadChar(mCurrentOrder?.siteName)
parameters.startLatLon = AutopilotControlParameters.AutoPilotLonLat(
mLatitude,
@@ -565,15 +537,16 @@ class DriverM1Model {
d(SceneConstant.M_CHARTER_D + TAG, "queryCurrentServiceStatus success = "
+ GsonUtils.toJson(data.data))
if (data.data.businessStatus == 2){
if (data.data.businessStatus == 2){//订单为空,则是要换车状态
if (TextUtils.isEmpty(data.data.orderNo)){//还未换车,显示还车状态
mOrderCallback?.updateReturnCarStatus(false)
startOrStopCheckCountDown(false)
}else{ // 去查询订单
}else{ // 订单不为空,有服务中订单,去查询订单
mOrderCallback?.updateReturnCarStatus(true)
queryCurrentOrder()
}
}else{
}else{ //车辆无订单,闲置状态
clearAutopilotControlParameters()
startOrStopCheckCountDown(false)
}
}
@@ -601,6 +574,8 @@ class DriverM1Model {
checkoutContrail()
// 倒计时校验开始
startOrStopCheckCountDown(true)
//鹰眼存参数
updateAutopilotControlParameters()
}
override fun onFail(code: Int, msg: String?) {
@@ -658,6 +633,7 @@ class DriverM1Model {
}
override fun onFail(code: Int, msg: String?) {
ToastUtilsOch.toastRequestError(mContext,msg)
d(SceneConstant.M_CHARTER_D + TAG, "changeDest-onFail== $msg .")
}
})

View File

@@ -1,6 +1,8 @@
package com.magic.mogo.och.charter.presenter
import androidx.lifecycle.LifecycleOwner
import com.magic.mogo.och.charter.CharterAnalyticsManager
import com.magic.mogo.och.charter.R
import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse
import com.magic.mogo.och.charter.callback.ChangeDestCallback
import com.magic.mogo.och.charter.callback.DriverM1OrderCallback
@@ -116,6 +118,11 @@ class DriverM1Presenter(view: DriverM1Fragment?) :
DriverM1Model.get().changeDest()
}
fun carReturnTip(){ //提前 5分钟 提醒
DriverM1Model.get().pushOperationalToMsgBox(DateTimeUtil.getCurrentTimeStamp()
,context.getString(R.string.last_5_minutes))
}
override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) {
DriverM1Model.get().onAutopilotArriveAtStation()
}
@@ -126,21 +133,21 @@ class DriverM1Presenter(view: DriverM1Fragment?) :
mView?.onAutopilotStatusChanged(status)
mCurrentAutopilotStatus = status
// when(status){
//
when(status){
// IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> { //
//
// }
// IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING ->{
//
// }
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING ->{
DriverM1Model.get().triggerStartServiceEvent(false,true)
}
// IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE ->{
//
// }
// IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING ->{
//
// }
// }
}
}
override fun onStartAutopilotFailure(
@@ -160,12 +167,14 @@ class DriverM1Presenter(view: DriverM1Fragment?) :
}
override fun startOpenAutopilot() {
mCurrentAutopilotStatus = -1
ThreadUtils.runOnUiThread {
mView?.startAutopilotAnimation()
}
}
override fun onStartAdasFailure() {
mCurrentAutopilotStatus = -1
ThreadUtils.runOnUiThread {
mView?.stopAnimAndUpdateBtnStatus()
}

View File

@@ -166,9 +166,9 @@
<View
android:id="@+id/line3"
android:layout_width="0dp"
android:layout_height="0.5dp"
android:layout_height="@dimen/dp_1"
android:layout_marginTop="@dimen/dp_40"
android:background="#FFFFFF"
android:background="#33FFFFFF"
app:layout_constraintTop_toBottomOf="@+id/driverm1StationName2Tv"
app:layout_constraintLeft_toLeftOf="@+id/driverm1nextCircleIv"
app:layout_constraintRight_toRightOf="@+id/driverm1_order_count_down"/>
@@ -198,7 +198,7 @@
android:id="@+id/group_stations_panel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
android:visibility="gone"
app:constraint_referenced_ids="driverm1_line_name,driverm1_order_count_down
,cur_station_title,cur_station_title1,line1,line2,driverm1StationName1Tv,
driverm1StationName2Tv,driverm1nextCircleIv,driverm1CircleIvBg,driverm1ArrowBg

View File

@@ -37,12 +37,11 @@ class CharterConst {
const val EVENT_PARAM_ENV_ONLINE = "env_online" // 是否线上环境true/false
// 埋点key开启自动驾驶前已识别的异常会导致无法开启自驾
const val EVENT_KEY_AP_UNABLE_START_REASON = "event_key_och_charter_ap_unable_start_reason"
const val EVENT_PARAM_UNABLE_START_REASON = "unable_start_reason";
const val EVENT_PARAM_UNABLE_START_REASON = "unable_start_reason"
/**
* 订单起终点Marker类型
*/
const val TYPE_MARKER_BUS_ORDER = "TYPE_MARKER_BUS_ORDER"
const val TIMER_START_AUTOPILOT_INTERVAL = 20 * 1000L
@@ -50,7 +49,7 @@ class CharterConst {
const val ARRIVE_AT_END_STATION_DISTANCE = 10
// 轮询
const val LOOP_5M = 3 * 1000L
const val LOOP_3M = 5 * 60 * 1000L
const val LOOP_2S = 2 * 1000L
const val LOOP_1S = 1 * 1000L
const val LOOP_DELAY_500 = 500L