Merge branch 'dev_robotaxi-d_230809_6.0.0' into dev_robotaxi-d_230809_6.0.0_refactor
# Conflicts: # OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt # OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt
This commit is contained in:
@@ -1,14 +1,21 @@
|
||||
package com.magic.mogo.och.charter.manager
|
||||
|
||||
import com.magic.mogo.och.charter.R
|
||||
import com.magic.mogo.och.charter.constant.CharterConst
|
||||
import com.magic.mogo.och.charter.model.DriverM1Model.Companion.get
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxType
|
||||
import com.mogo.eagle.core.data.msgbox.OperationMsg
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.sendTrajectoryDownloadReq
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e
|
||||
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.och.common.module.biz.constant.LoginStatusManager
|
||||
import com.mogo.och.common.module.utils.SoundPoolHelper
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
@@ -80,6 +87,16 @@ object CharterTrajectoryManager {
|
||||
// 5. 轨迹管理_轨迹下载超时
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() 轨迹下载超时")
|
||||
// ToastUtils.showShort("轨迹下载超时");
|
||||
} else if ("IMAP_TRA_LOADED" == guardianInfo.getCode()) {
|
||||
CallerMsgBoxManager.saveMsgBox(
|
||||
MsgBoxBean(
|
||||
MsgBoxType.OPERATION,
|
||||
OperationMsg(
|
||||
System.currentTimeMillis(), "请尽快操作车辆至适当位置掉头!", -1
|
||||
)
|
||||
)
|
||||
)
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getTopActivity(), R.raw.startautopilot)
|
||||
} else if ("ISSM_FUNC_AUTO_PILOT_READY" == guardianInfo.getCode()) {
|
||||
// 收到ssm的自动驾驶变为ready,再次下发轨迹下载.解决:域控重启,或者102域控启动太早,107节点初始化未完成导致的轨迹未进行下载。
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() ssm ready,再次发起下载")
|
||||
|
||||
@@ -23,12 +23,16 @@ 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.map.MogoLocation
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxType
|
||||
import com.mogo.eagle.core.data.msgbox.OperationMsg
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
|
||||
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.autopilot.CallerAutoPilotControlManager.startAutoPilot
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.sendMsgToAllClients
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
@@ -76,8 +80,8 @@ class DriverM1Model {
|
||||
// 运营类型
|
||||
private val VEHICLE_TYPE : Int = 10
|
||||
|
||||
private var mControllerStatusCallback //Model->Presenter:VR mode等
|
||||
: IDriverM1ControllerStatusCallback? = null
|
||||
//Model->Presenter:VR mode等
|
||||
private var mControllerStatusCallback: IDriverM1ControllerStatusCallback? = null
|
||||
|
||||
private var mOrderCallback: DriverM1OrderCallback? = null
|
||||
|
||||
@@ -110,7 +114,7 @@ class DriverM1Model {
|
||||
fun init(context: Context) {
|
||||
mContext = context
|
||||
// 定位监听
|
||||
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10,mMapLocationListener)
|
||||
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, mMapLocationListener)
|
||||
|
||||
//开启自驾后 异常信息返回
|
||||
OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener)
|
||||
@@ -118,18 +122,20 @@ class DriverM1Model {
|
||||
// 监听运营信息
|
||||
registerSocketMessageListener(
|
||||
OCHSocketMessageManager.msgMonitorType,
|
||||
mOnSystemMessageListener)
|
||||
mOnSystemMessageListener
|
||||
)
|
||||
//监听开门
|
||||
registerSocketMessageListener(
|
||||
OCHSocketMessageManager.msgOperateDoorType,
|
||||
mOnDoorMessageListener)
|
||||
mOnDoorMessageListener
|
||||
)
|
||||
//监听订单结束
|
||||
registerSocketMessageListener(
|
||||
OCHSocketMessageManager.msgOrderClosedType,
|
||||
mOnOrderClosedMessageListener)
|
||||
|
||||
mOnOrderClosedMessageListener
|
||||
)
|
||||
//监听核销乘客
|
||||
registerSocketMessageListener<WriteOffPassenger>( //监听核销乘客
|
||||
registerSocketMessageListener(
|
||||
OCHSocketMessageManager.msgWriteOffPassengerType,
|
||||
mWriteOffPassengerOnMessageListener
|
||||
)
|
||||
@@ -149,45 +155,7 @@ class DriverM1Model {
|
||||
// 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃
|
||||
// The exception could not be delivered to the consumer because it has already canceled/disposed
|
||||
// the flow or the excTeption has nowhere to go to begin with
|
||||
RxJavaPlugins.setErrorHandler(object : Consumer<Throwable?> {
|
||||
override fun accept(e: Throwable?) {
|
||||
var e = e
|
||||
if (e is UndeliverableException) {
|
||||
e = e.cause!!
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "UndeliverableException")
|
||||
}
|
||||
if (e is IOException) { //
|
||||
// fine, irrelevant network problem or API that throws on cancellation
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "IOException")
|
||||
return
|
||||
}
|
||||
if (e is InterruptedException) {
|
||||
// fine, some blocking code was interrupted by a dispose call
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "InterruptedException")
|
||||
return
|
||||
}
|
||||
if (e is NullPointerException || e is IllegalArgumentException) {
|
||||
// that's likely a bug in the application
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "NullPointerException or IllegalArgumentException")
|
||||
Thread.currentThread().uncaughtExceptionHandler.uncaughtException(
|
||||
Thread.currentThread(),
|
||||
e
|
||||
)
|
||||
return
|
||||
}
|
||||
if (e is IllegalStateException) {
|
||||
// that's a bug in RxJava or in a custom operator
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "IllegalStateException")
|
||||
Thread.currentThread().uncaughtExceptionHandler.uncaughtException(
|
||||
Thread.currentThread(),
|
||||
e
|
||||
)
|
||||
return
|
||||
}
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "Undeliverable exception")
|
||||
}
|
||||
|
||||
})
|
||||
RxUtils.errCatch()
|
||||
}
|
||||
|
||||
fun setChangeDestCallback(callback: ChangeDestCallback?){
|
||||
@@ -267,18 +235,18 @@ class DriverM1Model {
|
||||
|
||||
private fun showChangerDestCommitDialog(changeDestMsg: ChangeDestMsg) {
|
||||
if (!TextUtils.isEmpty(changeDestMsg.destSiteName) && !TextUtils.isEmpty(changeDestMsg.lineName)){
|
||||
if (changeDestMsg.lineId == currentChangeDestMsg?.lineId){//同一条路线切换站点不需要再确认
|
||||
//if (changeDestMsg.lineId == currentChangeDestMsg?.lineId){//同一条路线切换站点不需要再确认
|
||||
currentChangeDestMsg = changeDestMsg
|
||||
changeDest()
|
||||
return
|
||||
}
|
||||
//} 不用司机端确认直接保存
|
||||
|
||||
currentChangeDestMsg = changeDestMsg
|
||||
// currentChangeDestMsg = changeDestMsg
|
||||
|
||||
UiThreadHandler.post{
|
||||
mChangeDestCallback?.showCommitDialog("确认路线站点",
|
||||
"请确认是否前往 "+ changeDestMsg.lineName+ changeDestMsg.destSiteName + " 站点")
|
||||
}
|
||||
// UiThreadHandler.post{
|
||||
// mChangeDestCallback?.showCommitDialog("确认路线站点",
|
||||
// "请确认是否前往 "+ changeDestMsg.lineName+ changeDestMsg.destSiteName + " 站点")
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -819,6 +787,17 @@ class DriverM1Model {
|
||||
CallerAutoPilotControlManager.cancelAutoPilot()
|
||||
queryCurrentServiceStatus()
|
||||
sendCommitMsgToClient(true,writeVersion)
|
||||
CallerMsgBoxManager.saveMsgBox(
|
||||
MsgBoxBean(
|
||||
MsgBoxType.OPERATION,
|
||||
OperationMsg(
|
||||
System.currentTimeMillis(),
|
||||
"即将前往路线${currentChangeDestMsg!!.lineName}、站点${currentChangeDestMsg!!.destSiteName};如需掉头请尽快操作车辆至适当位置!",
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getTopActivity(), R.raw.startautopilot)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -159,16 +159,6 @@
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--隐藏态下的 美化模式按钮-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.switch.DemoModeHiddenSwitch
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="100dp"
|
||||
android:layout_marginStart="40dp"
|
||||
android:layout_marginBottom="200dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
tools:ignore="SpeakableTextPresentCheck" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/module_mogo_och_autopilot_status"
|
||||
android:layout_width="@dimen/module_mogo_och_autopilot_status_bg_width"
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.mogo.och.bus.passenger.bean.response
|
||||
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -20,13 +22,50 @@ data class OrderInfoResponse(val data: OrderInfo?) : BaseData() {
|
||||
val siteNameKr: String?,//站点名称
|
||||
var wgs84Lat: Double?,
|
||||
var wgs84Lon: Double?,
|
||||
var gcj02Lat: Double?,
|
||||
var gcj02Lon: Double?,
|
||||
val startTime: Long?,//开始时间
|
||||
val endTime: Long?,//结束时间
|
||||
val passengerPhone: String?,//乘客手机号
|
||||
var arriveStatus:Int?,//1:未到达 2:到达
|
||||
)
|
||||
){
|
||||
var gcj02Lat: Double?=null
|
||||
get() {
|
||||
if(field!=null){
|
||||
return field
|
||||
}
|
||||
if(wgs84Lat!=null&&wgs84Lon!=null){
|
||||
val coordinateConverterWgsToGcj =
|
||||
CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(
|
||||
AbsMogoApplication.getApp(),
|
||||
wgs84Lon!!,
|
||||
wgs84Lat!!
|
||||
)
|
||||
field = coordinateConverterWgsToGcj.latitude
|
||||
gcj02Lon = coordinateConverterWgsToGcj.longitude
|
||||
return field
|
||||
}else{
|
||||
return null
|
||||
}
|
||||
}
|
||||
var gcj02Lon: Double?=null
|
||||
get() {
|
||||
if(field!=null){
|
||||
return field
|
||||
}
|
||||
if(wgs84Lat!=null&&wgs84Lon!=null){
|
||||
val coordinateConverterWgsToGcj =
|
||||
CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(
|
||||
AbsMogoApplication.getApp(),
|
||||
wgs84Lon!!,
|
||||
wgs84Lat!!
|
||||
)
|
||||
field = coordinateConverterWgsToGcj.longitude
|
||||
gcj02Lat = coordinateConverterWgsToGcj.latitude
|
||||
return field
|
||||
}else{
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
companion object{
|
||||
val ARRIVING = 1
|
||||
val ARRIVED = 2
|
||||
|
||||
@@ -46,13 +46,13 @@ import com.mogo.och.common.module.manager.OCHAdasAbilityManager
|
||||
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.PinYinUtil
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import com.mogo.och.common.module.voice.VoiceManager
|
||||
import com.mogo.och.common.module.voice.VoiceNotice
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.disposables.Disposable
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo_msg.MogoReportMsg
|
||||
import java.util.*
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.TimeUnit
|
||||
@@ -78,13 +78,6 @@ object CharterPassengerModel {
|
||||
var mAutoStatusChnageListener =
|
||||
ConcurrentHashMap<String, ICharterPassengerAutoStatusChangeCallback>()
|
||||
|
||||
// 定位监听
|
||||
private val mControllerStatusCallbackMap =
|
||||
ConcurrentHashMap<String, IBusPassengerControllerStatusCallback>()
|
||||
|
||||
// 当前位置坐标
|
||||
private var mLocationGCJ02: MogoLocation? = null
|
||||
|
||||
// 订单信息 有订单有线路结束订单
|
||||
@Volatile
|
||||
private var orderInfo: OrderInfoResponse.OrderInfo? = null
|
||||
@@ -135,7 +128,6 @@ object CharterPassengerModel {
|
||||
|
||||
private fun releaseListeners() {
|
||||
CallerAutoPilotStatusListenerManager.removeListener(mGoAutopilotStatusListener)
|
||||
CallerChassisLocationGCJ02ListenerManager.removeListener(TAG)
|
||||
CallerPlanningRottingListenerManager.removeListener(moGoAutopilotPlanningListener)
|
||||
}
|
||||
|
||||
@@ -145,8 +137,6 @@ object CharterPassengerModel {
|
||||
.registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener)
|
||||
// 自动驾驶状态变化监听
|
||||
CallerAutoPilotStatusListenerManager.addListener(TAG, mGoAutopilotStatusListener)
|
||||
// 定位监听
|
||||
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 4, mMapLocationListener)
|
||||
// 自动驾驶路线规划接口 返回自动驾驶轨迹
|
||||
CallerPlanningRottingListenerManager.addListener(TAG, moGoAutopilotPlanningListener)
|
||||
// 登录状态监听
|
||||
@@ -154,14 +144,6 @@ object CharterPassengerModel {
|
||||
}
|
||||
|
||||
// region 设置业务回调
|
||||
fun setControllerStatusCallback(tag: String, callback: IBusPassengerControllerStatusCallback?) {
|
||||
if (tag.isBlank()) return
|
||||
if (callback == null) {
|
||||
mControllerStatusCallbackMap.remove(tag)
|
||||
return
|
||||
}
|
||||
mControllerStatusCallbackMap[tag] = callback
|
||||
}
|
||||
|
||||
fun setAutoStatusCallback(tag: String, callback: ICharterPassengerAutoStatusChangeCallback?) {
|
||||
if (tag.isBlank()) return
|
||||
@@ -201,18 +183,6 @@ object CharterPassengerModel {
|
||||
// endregion
|
||||
|
||||
// region 设置外部回调
|
||||
// 定位监听
|
||||
private val mMapLocationListener: IMoGoChassisLocationGCJ02Listener =
|
||||
object : IMoGoChassisLocationGCJ02Listener {
|
||||
override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) {
|
||||
if (null == mogoLocation) return
|
||||
mLocationGCJ02 = mogoLocation
|
||||
for (callback in mControllerStatusCallbackMap.values) {
|
||||
callback.onCarLocationChanged(mogoLocation)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 自动驾驶状态监听
|
||||
private val mGoAutopilotStatusListener: IMoGoAutopilotStatusListener =
|
||||
object : IMoGoAutopilotStatusListener {
|
||||
@@ -222,6 +192,15 @@ object CharterPassengerModel {
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {
|
||||
super.onAutopilotGuardian(guardianInfo)
|
||||
guardianInfo?.let {
|
||||
if (it.code=="IMAP_TRA_LOADED") {
|
||||
ToastCharterUtils.showShort("请等待车辆完成掉头后再出发吧~")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) {
|
||||
d(M_BUS_P + TAG, "底盘给到站信息")
|
||||
arriveDest()
|
||||
@@ -387,17 +366,11 @@ object CharterPassengerModel {
|
||||
d(M_BUS_P + TAG, "设置车模")
|
||||
}
|
||||
if (this.orderInfo?.siteId != orderData.siteId) {
|
||||
val coordinateConverterWgsToGcj =
|
||||
CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(
|
||||
mContext,
|
||||
order.wgs84Lon!!,
|
||||
order.wgs84Lat!!
|
||||
)
|
||||
this.carTypeChageListener?.setEndStationCallBack(
|
||||
order.siteId,
|
||||
order.siteName,
|
||||
coordinateConverterWgsToGcj.longitude,
|
||||
coordinateConverterWgsToGcj.latitude
|
||||
order.gcj02Lon!!,
|
||||
order.gcj02Lat!!
|
||||
)
|
||||
}
|
||||
this.orderInfo?.orderNo?.let {
|
||||
@@ -422,19 +395,13 @@ object CharterPassengerModel {
|
||||
this.orderInfo = orderData
|
||||
}
|
||||
//计算终点距离
|
||||
mLocationGCJ02?.let { currentInfo ->
|
||||
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let { currentInfo ->
|
||||
// 两点之间的距离
|
||||
val coordinateConverterWgsToGcj =
|
||||
CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(
|
||||
mContext,
|
||||
order.wgs84Lon!!,
|
||||
order.wgs84Lat!!
|
||||
)
|
||||
val calculateLineDistance = CoordinateUtils.calculateLineDistance(
|
||||
currentInfo.longitude,
|
||||
currentInfo.latitude,
|
||||
coordinateConverterWgsToGcj.longitude,
|
||||
coordinateConverterWgsToGcj.latitude
|
||||
order.gcj02Lon!!,
|
||||
order.gcj02Lat!!
|
||||
)
|
||||
// 小于15m到站
|
||||
if (calculateLineDistance < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE && calculateLineDistance > 0) {
|
||||
@@ -520,7 +487,7 @@ object CharterPassengerModel {
|
||||
if (data.orderNo != null && data.orderNo.isNotEmpty()) {// 订单进行中
|
||||
return
|
||||
}
|
||||
// 结束路距计算
|
||||
// 结束路距计算 订单结束了
|
||||
endCalculateDistanceLoop()
|
||||
// 停止时间校准
|
||||
endCalibrationLoop()
|
||||
@@ -673,7 +640,7 @@ object CharterPassengerModel {
|
||||
*/
|
||||
private fun calculateDistance() {
|
||||
//mLocation gcj坐标
|
||||
mLocationGCJ02?.let {
|
||||
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let {
|
||||
orderInfo?.let { order ->
|
||||
d(M_BUS_P + "calculateDistance", "订单信息:$order")
|
||||
if (order.siteId == null || order.siteId == 0L ||
|
||||
@@ -691,15 +658,9 @@ object CharterPassengerModel {
|
||||
}
|
||||
// 启动轨迹计算
|
||||
var lastSumLength = 0f
|
||||
val orderLonLat =
|
||||
CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(
|
||||
mContext,
|
||||
order.wgs84Lon!!,
|
||||
order.wgs84Lat!!
|
||||
)
|
||||
val mogoLocation = MogoLocation()
|
||||
mogoLocation.longitude = orderLonLat.longitude
|
||||
mogoLocation.latitude = orderLonLat.latitude
|
||||
mogoLocation.longitude = order.gcj02Lon!!
|
||||
mogoLocation.latitude = order.gcj02Lat!!
|
||||
|
||||
lastSumLength = CoordinateUtils.calculateLineDistance(
|
||||
it.longitude,
|
||||
@@ -785,7 +746,7 @@ object CharterPassengerModel {
|
||||
var distanceMap: MutableMap<Float, Int> = TreeMap()
|
||||
// 计算所有点的距离
|
||||
data.forEachIndexed { index, siteInfo ->
|
||||
mLocationGCJ02?.let { currentInfo ->
|
||||
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let { currentInfo ->
|
||||
// 两点之间的距离
|
||||
val calculateLineDistance = CoordinateUtils.calculateLineDistance(
|
||||
currentInfo.longitude,
|
||||
@@ -833,7 +794,7 @@ object CharterPassengerModel {
|
||||
if (middle == 0) {
|
||||
return Pair(1, false)
|
||||
}
|
||||
mLocationGCJ02?.let {
|
||||
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let {
|
||||
// 仅计算 距离最近的站点middle 附近5个坐标的夹角
|
||||
// middle middle-1
|
||||
// middle middle+1
|
||||
@@ -987,7 +948,7 @@ object CharterPassengerModel {
|
||||
cleanRoutePoints()
|
||||
// 到站结束自驾
|
||||
CallerAutoPilotControlManager.cancelAutoPilot()
|
||||
// 结束路距计算
|
||||
// 结束路距计算 到达目的站点
|
||||
endCalculateDistanceLoop()
|
||||
// 到站置距离位0
|
||||
invokeStationDistanceListener(-1, -1)
|
||||
@@ -1037,7 +998,7 @@ object CharterPassengerModel {
|
||||
}
|
||||
// 到站结束自驾
|
||||
CallerAutoPilotControlManager.cancelAutoPilot()
|
||||
// 停止路距计算
|
||||
// 停止路距计算 选择新的站点后
|
||||
endCalculateDistanceLoop()
|
||||
// 到站置距离位0
|
||||
invokeStationDistanceListener(-1, -1)
|
||||
@@ -1104,9 +1065,6 @@ object CharterPassengerModel {
|
||||
if (!checkCurrentOCHOrder()) {
|
||||
e(M_BUS_P + TAG, "no order or order is empty.")
|
||||
return null
|
||||
}
|
||||
mLocationGCJ02?.let {
|
||||
|
||||
}
|
||||
val parameters = AutopilotControlParameters()
|
||||
orderInfo?.let { orderInfo ->
|
||||
|
||||
@@ -1,385 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.presenter
|
||||
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.elegant.utils.UiThreadHandler
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
|
||||
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.GsonUtils
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
import com.mogo.och.common.module.manager.loopmanager.LoopInfo
|
||||
import com.mogo.och.bus.passenger.bean.event.EventLineSites
|
||||
import com.mogo.och.bus.passenger.bean.response.LineInfoListResponse
|
||||
import com.mogo.och.bus.passenger.bean.response.LineInfoResponse
|
||||
import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse
|
||||
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||
import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener
|
||||
import com.mogo.och.bus.passenger.model.OrderStatusEnum
|
||||
import com.mogo.och.common.module.manager.loopmanager.BizLoopManager
|
||||
import com.mogo.och.bus.passenger.net.BusPassengerServiceManager
|
||||
import com.mogo.och.bus.passenger.ui.selectline.M1OrderLineFragment
|
||||
import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg
|
||||
import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg
|
||||
import com.mogo.och.common.module.bean.dpmsg.DPMsgType
|
||||
import com.mogo.och.common.module.bean.dpmsg.LineSite
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.manager.StopSideStatusManager
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import io.reactivex.disposables.Disposable
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) :
|
||||
BusBasePassengerFunctionDevicePresenter<M1OrderLineFragment?>(view), IOrderStatusChangeListener {
|
||||
|
||||
companion object{
|
||||
const val TAGLINELOOP = "LineSiteViewLineLoop"
|
||||
const val TAG = "BusPassengerFunctionOrderPresenter"
|
||||
}
|
||||
|
||||
// 成功提交给后台得线路
|
||||
private var checkLine: LineInfoResponse.LineInfo? = null
|
||||
|
||||
// 成功提交给后台得终点站点
|
||||
private var checkSite: SiteInfoResponse.SiteInfo? = null
|
||||
|
||||
// 下一个站点
|
||||
private var currentSite: SiteInfoResponse.SiteInfo? = null
|
||||
|
||||
// 向司机端端提交的临时线路
|
||||
private var tempCheckLine: LineInfoResponse.LineInfo? = null
|
||||
|
||||
// 向司机端临时提交的终点站点
|
||||
private var tempCheckSite: SiteInfoResponse.SiteInfo? = null
|
||||
|
||||
private var subscribeSelectSite: Disposable? = null
|
||||
|
||||
override fun onCreate(owner: LifecycleOwner) {
|
||||
super.onCreate(owner)
|
||||
CharterPassengerModel.setStatusChangeListener(TAG,this)
|
||||
CallerTelematicListenerManager.addListener(TAG, msgReceived)
|
||||
val currentOrderStatus = CharterPassengerModel.getCurrentOrderStatus()
|
||||
needRunUI(currentOrderStatus)
|
||||
extracted()
|
||||
}
|
||||
|
||||
private fun extracted() {
|
||||
val currentOrderStatus = CharterPassengerModel.getCurrentOrderStatus()
|
||||
if (currentOrderStatus == OrderStatusEnum.OrderNoLine || currentOrderStatus == OrderStatusEnum.OrdersWithLine) {
|
||||
val hasSetLineAndSite = CharterPassengerModel.hasSetLineAndSite()
|
||||
if (hasSetLineAndSite != null) {// 已经设置了线路和站点
|
||||
checkLine = hasSetLineAndSite.first
|
||||
checkSite = hasSetLineAndSite.second
|
||||
}
|
||||
mView?.setEnableSiteStatus(false)
|
||||
queryLineList()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置数据
|
||||
*/
|
||||
fun resetData() {
|
||||
tempCheckLine = null
|
||||
tempCheckSite = null
|
||||
if(checkLine==null){// 没有提交线路
|
||||
queryLineList()
|
||||
mView?.setEnableSiteStatus(true)
|
||||
}else{
|
||||
checkLine?.let {
|
||||
mView?.setEnableSiteStatus(false)
|
||||
mView?.lineAdapterSubmit(it)
|
||||
querySitesByLineId(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun querySitesByLineId(checkLine: LineInfoResponse.LineInfo) {
|
||||
context?.let {
|
||||
BusPassengerServiceManager.queryLineSiteList(
|
||||
context,
|
||||
checkLine.lineId.toString(),
|
||||
object : OchCommonServiceCallback<SiteInfoResponse> {
|
||||
override fun onSuccess(data: SiteInfoResponse?) {
|
||||
if (data?.data == null) return
|
||||
val siteInfos = data.data
|
||||
EventBus.getDefault().post(EventLineSites(checkLine,siteInfos,false))
|
||||
if (siteInfos.isNotEmpty()) {
|
||||
// 计算当前站点是那个
|
||||
val calculateCurrentSite =
|
||||
CharterPassengerModel.calculateCurrentSite(siteInfos)
|
||||
val first = calculateCurrentSite.first// 可用站点
|
||||
if(first<0){
|
||||
// 所有站点不可用
|
||||
currentSite = siteInfos[siteInfos.size-1]
|
||||
currentSite!!.isNear = calculateCurrentSite.second
|
||||
mView?.siteAdapterEnableIndex(siteInfos.size-1)
|
||||
}else{
|
||||
//
|
||||
val index = if(first==0) {
|
||||
0
|
||||
}else if (first <= siteInfos.size-1) {
|
||||
first-1
|
||||
} else {
|
||||
siteInfos.size - 1
|
||||
}
|
||||
currentSite = siteInfos[index]
|
||||
currentSite!!.isNear = calculateCurrentSite.second
|
||||
mView?.siteAdapterEnableIndex(index)
|
||||
}
|
||||
siteInfos.forEach {
|
||||
if (it.siteId == checkSite?.siteId) {
|
||||
it.isCheck = true
|
||||
return@forEach
|
||||
}
|
||||
}
|
||||
}
|
||||
mView?.siteAdapterSetData(siteInfos)
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
ToastCharterUtils.showShort("查询站点失败")
|
||||
mView?.setVisableByTrun(showNetError = true)
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
super.onError()
|
||||
ToastCharterUtils.showShort("查询站点失败")
|
||||
mView?.setVisableByTrun(showNetError = true)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
private fun queryLineList() {
|
||||
mView?.setVisableByTrun(showLoading = true)
|
||||
context?.let {
|
||||
BusPassengerServiceManager.queryLineList(it, object :
|
||||
OchCommonServiceCallback<LineInfoListResponse> {
|
||||
override fun onSuccess(data: LineInfoListResponse?) {
|
||||
if (data?.data == null) return
|
||||
mView?.setVisableByTrun(showBiz = true)
|
||||
mView?.lineAdapterSetData(data.data,checkLine)
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String) {
|
||||
ToastCharterUtils.showShort("查询线路失败")
|
||||
mView?.setVisableByTrun(showNetError = true)
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
super.onError()
|
||||
mView?.setVisableByTrun(showNetError = true)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume(owner: LifecycleOwner) {
|
||||
super.onResume(owner)
|
||||
}
|
||||
|
||||
override fun onDestroy(owner: LifecycleOwner) {
|
||||
super.onDestroy(owner)
|
||||
CallerLogger.d(M_BUS_P + TAG, "onDestroy")
|
||||
RxUtils.disposeSubscribe(subscribeSelectSite)
|
||||
BizLoopManager.removeLoopFunction(TAGLINELOOP)
|
||||
CharterPassengerModel.setStatusChangeListener(TAG,null)
|
||||
CallerTelematicListenerManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
/**
|
||||
* 接收司机屏反馈信息
|
||||
*/
|
||||
private val msgReceived = object : IReceivedMsgListener {
|
||||
override fun onReceivedMsg(type: Int, byteArray: ByteArray) {
|
||||
UiThreadHandler.post {
|
||||
if (type == OchCommonConst.BUSINESS_STRING) {
|
||||
val msg = GsonUtils.fromJson(
|
||||
String(byteArray),
|
||||
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) {
|
||||
if(msg.arriveStatus==2){
|
||||
return@post
|
||||
}
|
||||
ToastCharterUtils.showShort("站点确定")
|
||||
mView?.setEnableSiteStatus(true)
|
||||
checkLine = tempCheckLine
|
||||
checkSite = tempCheckSite
|
||||
tempCheckLine = null
|
||||
tempCheckSite = null
|
||||
checkLine?.let {
|
||||
mView?.lineAdapterSubmit(it)
|
||||
}
|
||||
mView?.hideDataDriverAgree()
|
||||
CharterPassengerModel.cleanbroadcastListInfo(checkSite)
|
||||
CharterPassengerModel.queryOrder()
|
||||
} else {
|
||||
ToastCharterUtils.showShort("司机端拒绝请重新选择")
|
||||
mView?.hideDataDriverRefuse()
|
||||
}
|
||||
RxUtils.disposeSubscribe(subscribeSelectSite)
|
||||
BizLoopManager.removeLoopFunction(TAGLINELOOP)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun changeSites(siteList: MutableList<SiteInfoResponse.SiteInfo>){
|
||||
if (!CallerTelematicManager.getClientConnStatus()) {
|
||||
ToastCharterUtils.showLong("乘客屏无法连接司机屏请联系安全员")
|
||||
return
|
||||
}
|
||||
val sentDataSite: MutableList<LineSite> = mutableListOf()
|
||||
siteList.forEach {
|
||||
sentDataSite.add(it.copy2Mas())
|
||||
}
|
||||
|
||||
tempCheckSite?.let { siteInfo ->
|
||||
val orderNo = CharterPassengerModel.getCurrentOrderInfo()?.orderNo ?: ""
|
||||
val msg = ChangeDestMsg(
|
||||
orderNo,
|
||||
siteInfo.lineId!!.toInt(),
|
||||
siteInfo.lineName!!,
|
||||
currentSite!!.siteId!!.toInt(),
|
||||
currentSite!!.siteName!!,
|
||||
siteInfo.siteId!!.toInt(),
|
||||
siteInfo.siteName!!,
|
||||
false,
|
||||
1,
|
||||
0,
|
||||
sentDataSite
|
||||
)
|
||||
CallerTelematicManager.sendMsgToServer(
|
||||
OchCommonConst.BUSINESS_STRING,
|
||||
GsonUtils.toJson(msg).toByteArray()
|
||||
)
|
||||
CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "发送数据:切换站点${msg}")
|
||||
}
|
||||
mView?.hideDataWaitDriverMsg()
|
||||
// 启动查看和司机端链接
|
||||
BizLoopManager.setLoopFunction(
|
||||
TAGLINELOOP,
|
||||
LoopInfo(3, ::checkServerStatus)
|
||||
)
|
||||
|
||||
RxUtils.disposeSubscribe(subscribeSelectSite)
|
||||
subscribeSelectSite = RxUtils.createSubscribe(120_000){
|
||||
ToastCharterUtils.showShort("请联系安全员确认")
|
||||
mView?.hideDataDriverRefuse()
|
||||
}
|
||||
}
|
||||
private fun checkServerStatus() {
|
||||
if (!CallerTelematicManager.getClientConnStatus()) {
|
||||
ToastCharterUtils.showShort("断开和司机端连接、请联系安全员")
|
||||
BizLoopManager.removeLoopFunction(TAGLINELOOP)
|
||||
mView?.hideDataDriverRefuse()
|
||||
CallerLogger.d(M_BUS_P + TAG, "endAni666")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStatusChange(currentStatus: OrderStatusEnum) {
|
||||
UiThreadHandler.post {
|
||||
needRunUI(currentStatus)
|
||||
}
|
||||
}
|
||||
|
||||
private fun needRunUI(currentStatus: OrderStatusEnum){
|
||||
when (currentStatus) {
|
||||
OrderStatusEnum.OrderNoLine -> {
|
||||
mView?.setVisableByTrun(showBiz = true)
|
||||
extracted()
|
||||
}
|
||||
OrderStatusEnum.OrdersWithLine ->{
|
||||
mView?.setVisableByTrun(showBiz = true)
|
||||
}
|
||||
else ->{
|
||||
mView?.setVisableByTrun(showNorOrder = true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun canSwitchLine():Boolean {
|
||||
val gnssSpeed =
|
||||
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().gnssSpeed
|
||||
if (gnssSpeed < 0.5) {
|
||||
when (CallerAutoPilotStatusListenerManager.getState()) {
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶
|
||||
return true
|
||||
}
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {//
|
||||
return true
|
||||
}
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> {
|
||||
// 自动驾驶中
|
||||
return when (StopSideStatusManager.stopSiteStatus) {
|
||||
StopSideStatusManager.Status.EndingSuccess -> {
|
||||
true
|
||||
}
|
||||
else ->{
|
||||
ToastCharterUtils.showShort("自动驾驶中无法切换线路")
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> {
|
||||
ToastCharterUtils.showShort("因车辆正在平行驾驶中无法切换线路")
|
||||
return false
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
} else {
|
||||
ToastCharterUtils.showShort("请停车后再修改目的地~")
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
fun checkLineClick(lineInfo: LineInfoResponse.LineInfo) {
|
||||
checkLine4View()
|
||||
tempCheckLine = lineInfo
|
||||
querySitesByLineId(lineInfo)
|
||||
}
|
||||
|
||||
private fun checkLine4View(){
|
||||
tempCheckSite = null
|
||||
mView?.setEnableSiteStatus(false)
|
||||
}
|
||||
|
||||
fun checkSiteClick(siteInfo: SiteInfoResponse.SiteInfo?) {
|
||||
tempCheckSite = siteInfo
|
||||
if(checkSite!=null){
|
||||
checkSite?.let {
|
||||
if (it.siteId == siteInfo?.siteId) {// 站点相同 隐藏所有提交按钮
|
||||
mView?.setEnableSiteStatus(false)
|
||||
} else {
|
||||
if(it.lineId == siteInfo?.lineId){// 线路相同显示单独提交
|
||||
mView?.setEnableSiteStatus(true)
|
||||
}else{
|
||||
if(siteInfo==null){//没有选站点隐藏所有提交
|
||||
mView?.setEnableSiteStatus(false)
|
||||
}else {
|
||||
mView?.setEnableSiteStatus(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
mView?.setEnableSiteStatus(true)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
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?) :
|
||||
BusBasePassengerFunctionDevicePresenter<M1ContainFragment?>(view) {
|
||||
companion object{
|
||||
private const val TAG = "BusPassengerFunctionPresenter"
|
||||
}
|
||||
override fun onCreate(owner: LifecycleOwner) {
|
||||
super.onCreate(owner)
|
||||
}
|
||||
|
||||
override fun onDestroy(owner: LifecycleOwner) {
|
||||
super.onDestroy(owner)
|
||||
}
|
||||
|
||||
fun haveOrder(): Boolean {
|
||||
return CharterPassengerModel.hasOrder()
|
||||
}
|
||||
}
|
||||
@@ -1,245 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.presenter
|
||||
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
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.UiThreadHandler
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.M1SoftFragment
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
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),
|
||||
LightAirconditionDoorCallback {
|
||||
companion object {
|
||||
private const val TAG = "BusPassengerFunctionSoftPresenter"
|
||||
}
|
||||
|
||||
private var subscribeLightTop1: Disposable?=null
|
||||
private var subscribeLightTop2: Disposable?=null
|
||||
private var subscribeLightAtmosphere: Disposable?=null
|
||||
|
||||
private var airconditionDisposable: Disposable?=null
|
||||
private var heaterDisposable: Disposable?=null
|
||||
|
||||
override fun onCreate(owner: LifecycleOwner) {
|
||||
super.onCreate(owner)
|
||||
LightAirconditionDoorStatusManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun onDestroy(owner: LifecycleOwner) {
|
||||
super.onDestroy(owner)
|
||||
LightAirconditionDoorStatusManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
/**
|
||||
* 空调状态变化
|
||||
*/
|
||||
override fun onAirconditionStatusCallback(heaterIsOpen: Boolean, airconditionStatus: AirconditionStatus, isFirst: Boolean) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
|
||||
"回写--空调开关:${LightAirconditionDoorStatusManager.airconditionStatus.isOpen}、" +
|
||||
"空调温度:${LightAirconditionDoorStatusManager.airconditionStatus.temperature}" +
|
||||
"空调模式:${LightAirconditionDoorStatusManager.airconditionStatus.pattert}" +
|
||||
"空调风速:${LightAirconditionDoorStatusManager.airconditionStatus.windSpeed}")
|
||||
UiThreadHandler.post {
|
||||
if(airconditionStatus.isOpen){
|
||||
mView?.setAirconditionHeaterView(
|
||||
airconditionStatus.isOpen,
|
||||
heaterIsOpen,
|
||||
airconditionStatus.temperature,
|
||||
airconditionStatus.pattert,
|
||||
airconditionStatus.windSpeed
|
||||
)
|
||||
}else{
|
||||
mView?.setAirconditionHeaterView(
|
||||
airconditionStatus.isOpen,
|
||||
heaterIsOpen,
|
||||
airconditionStatus.temperature,
|
||||
0,
|
||||
0
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 暖风机状态变化
|
||||
*/
|
||||
override fun onHeaterStatusCallback(airconditionIsOpen:Boolean, heaterStatue: HeaterStatue, isFirst: Boolean) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
|
||||
"回写--暖风机开关:${heaterStatue.isOpen}、" +
|
||||
"风速:${heaterStatue.windSpeed}")
|
||||
UiThreadHandler.post {
|
||||
if(heaterStatue.isOpen) {
|
||||
mView?.setAirconditionHeaterView(
|
||||
airconditionIsOpen,
|
||||
heaterStatue.isOpen,
|
||||
0,
|
||||
0,
|
||||
heaterStatue.windSpeed
|
||||
)
|
||||
}else{
|
||||
mView?.setAirconditionHeaterView(
|
||||
airconditionIsOpen,
|
||||
heaterStatue.isOpen,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 灯状态变化
|
||||
*/
|
||||
override fun onLightTop1Callback(lightStatus: LightStatus, isFirst: Boolean) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
|
||||
"回写--顶灯1开关:${lightStatus.isOpenLight1}、" +
|
||||
"顶灯2开关:${lightStatus.isOpenLight2}、" +
|
||||
"氛围灯开关:${lightStatus.isOpenatmosphere}、")
|
||||
UiThreadHandler.post {
|
||||
mView?.setLightTop1View(lightStatus.isOpenLight1,isFirst)
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 灯状态变化
|
||||
*/
|
||||
override fun onLightTop2Callback(lightStatus: LightStatus, isFirst: Boolean) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
|
||||
"回写--顶灯1开关:${lightStatus.isOpenLight1}、" +
|
||||
"顶灯2开关:${lightStatus.isOpenLight2}、" +
|
||||
"氛围灯开关:${lightStatus.isOpenatmosphere}、")
|
||||
UiThreadHandler.post {
|
||||
mView?.setLightTop2View(lightStatus.isOpenLight2,isFirst)
|
||||
mView?.setLightView(lightStatus.isOpenLight1,lightStatus.isOpenLight2)
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 灯状态变化
|
||||
*/
|
||||
override fun onLightAtmosphereCallback(lightStatus: LightStatus, isFirst: Boolean) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
|
||||
"回写--顶灯1开关:${lightStatus.isOpenLight1}、" +
|
||||
"顶灯2开关:${lightStatus.isOpenLight2}、" +
|
||||
"氛围灯开关:${lightStatus.isOpenatmosphere}、")
|
||||
UiThreadHandler.post {
|
||||
mView?.setLightAtmosphereView(lightStatus.isOpenatmosphere,isFirst)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置空调
|
||||
*/
|
||||
fun openAndSetAircondition(modeCmd: Int, windSpeedCmd: Int, temperatureCmd: Int) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "" +
|
||||
"打开空调,模式$modeCmd--档位${windSpeedCmd}--温度:$temperatureCmd")
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1AirConditionerCmd(1,modeCmd,windSpeedCmd,temperatureCmd)
|
||||
disposeSubscribe(airconditionDisposable)
|
||||
airconditionDisposable = createSubscribe(10000){
|
||||
if (!LightAirconditionDoorStatusManager.airconditionStatus.isOpen&&
|
||||
LightAirconditionDoorStatusManager.airconditionStatus.windSpeed!=windSpeedCmd&&
|
||||
LightAirconditionDoorStatusManager.airconditionStatus.temperature!=temperatureCmd&&
|
||||
LightAirconditionDoorStatusManager.airconditionStatus.pattert!=modeCmd) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
}
|
||||
fun closeAircondition(modeCmd: Int, windSpeedCmd: Int, temperatureCmd: Int) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭空调")
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1AirConditionerCmd(2,modeCmd,windSpeedCmd,temperatureCmd)
|
||||
disposeSubscribe(airconditionDisposable)
|
||||
airconditionDisposable = createSubscribe(10000){
|
||||
if (LightAirconditionDoorStatusManager.airconditionStatus.isOpen) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 设置暖风
|
||||
*/
|
||||
fun openAndSetHeader(windSpeedCmd: Int) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开暖风机、档位${windSpeedCmd}")
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1HeaderCmd(1,windSpeedCmd)
|
||||
disposeSubscribe(heaterDisposable)
|
||||
heaterDisposable = createSubscribe(10000){
|
||||
if (!LightAirconditionDoorStatusManager.heaterStatue.isOpen&&
|
||||
LightAirconditionDoorStatusManager.heaterStatue.windSpeed!=windSpeedCmd) {
|
||||
ToastCharterUtils.showShort("暖风机操作未生效,请稍后重试吧~")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun closeHeader(){
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭暖风机")
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1HeaderCmd(2,0)
|
||||
disposeSubscribe(heaterDisposable)
|
||||
heaterDisposable = createSubscribe(10000){
|
||||
if (LightAirconditionDoorStatusManager.heaterStatue.isOpen) {
|
||||
ToastCharterUtils.showShort("暖风机操作未生效,请稍后重试吧~")//还是开着的
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun setLightData1(leftLight: Boolean){
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "顶灯2:$leftLight")
|
||||
disposeSubscribe(subscribeLightTop1)
|
||||
if(leftLight){
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(1)
|
||||
subscribeLightTop1 = createSubscribe{
|
||||
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
}else{
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(2)
|
||||
subscribeLightTop1 = createSubscribe{
|
||||
if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fun setLightData2(rightLight: Boolean){
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "顶灯1:$rightLight")
|
||||
disposeSubscribe(subscribeLightTop2)
|
||||
if(rightLight){
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(1)
|
||||
subscribeLightTop2 = createSubscribe{
|
||||
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
}else{
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(2)
|
||||
subscribeLightTop2 = createSubscribe{
|
||||
if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fun setAtmosphereLightData2(atmosphereLight: Boolean){
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "氛围灯:$atmosphereLight")
|
||||
disposeSubscribe(subscribeLightAtmosphere)
|
||||
if (atmosphereLight) {
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(1)
|
||||
subscribeLightAtmosphere = createSubscribe{
|
||||
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(2)
|
||||
subscribeLightAtmosphere = createSubscribe{
|
||||
if (LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.presenter
|
||||
|
||||
import com.mogo.och.bus.passenger.ui.video.M1VideoFragment
|
||||
|
||||
class BusPassengerFunctionVideoPresenter(view: M1VideoFragment?) :
|
||||
BusBasePassengerFunctionDevicePresenter<M1VideoFragment?>(view)
|
||||
@@ -1,10 +1,8 @@
|
||||
package com.mogo.och.bus.passenger.presenter
|
||||
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse
|
||||
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.NoviceGuidanceFragment
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.presenter
|
||||
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
|
||||
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.GsonUtils
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
import com.mogo.och.bus.passenger.callback.ITimeCallback
|
||||
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||
import com.mogo.och.bus.passenger.ui.orderinfo.OrderInfoFragment
|
||||
import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg
|
||||
import com.mogo.och.common.module.bean.dpmsg.EndOrderMsg
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
|
||||
class OrderInfoPresenter(view: OrderInfoFragment?) :
|
||||
BusBasePassengerFunctionDevicePresenter<OrderInfoFragment?>(view), ITimeCallback {
|
||||
companion object{
|
||||
private const val TAG = "OrderInfoPresenter"
|
||||
}
|
||||
override fun onCreate(owner: LifecycleOwner) {
|
||||
super.onCreate(owner)
|
||||
CharterPassengerModel.setOrderLeftTimeListeners(TAG,this)
|
||||
getDataInfo()
|
||||
}
|
||||
|
||||
private fun getDataInfo() {
|
||||
val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo()
|
||||
currentOrderInfo?.let {
|
||||
mView?.setPhone(it.passengerPhone?:"")
|
||||
try {
|
||||
mView?.setStartTimeAndEndTime(
|
||||
DateTimeUtil.formatLongToString(it.startTime!!, DateTimeUtil.HH_mm),
|
||||
DateTimeUtil.formatLongToString(it.endTime!!, DateTimeUtil.HH_mm))
|
||||
}catch (e:Exception){
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy(owner: LifecycleOwner) {
|
||||
super.onDestroy(owner)
|
||||
CharterPassengerModel.setOrderLeftTimeListeners(TAG,null)
|
||||
}
|
||||
|
||||
override fun setOrderTimeCallBack(timeInSecond: Long) {
|
||||
val leftTime = DateTimeUtil.second2Time(timeInSecond)
|
||||
mView?.setLeftTime(leftTime)
|
||||
}
|
||||
|
||||
fun endOrder() {
|
||||
CharterPassengerModel.endOrder(object : OchCommonServiceCallback<BaseData> {
|
||||
override fun onSuccess(data: BaseData?) {
|
||||
if (null != data && 0 == data.code) {
|
||||
ToastCharterUtils.showShort("结束成功")
|
||||
CharterPassengerModel.setEndOrderStatus()
|
||||
mView?.closeDialogContaion()
|
||||
val msg = EndOrderMsg(
|
||||
CharterPassengerModel.getCurrentOrderInfo()?.orderNo?:"",
|
||||
)
|
||||
CallerTelematicManager.sendMsgToServer(
|
||||
OchCommonConst.BUSINESS_STRING,
|
||||
GsonUtils.toJson(msg).toByteArray()
|
||||
)
|
||||
CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "发送数据:结束订单${msg}")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String) {
|
||||
ToastCharterUtils.showShort("$code:$msg")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -20,15 +20,16 @@ import com.mogo.eagle.core.function.api.hmi.view.IStatusViewLayout;
|
||||
@Route( path = MogoServicePaths.PATH_STATUS_VIEW_MANAGER )
|
||||
public class StatusViewManager implements IStatusViewLayout {
|
||||
|
||||
private StatusBarView statusBarView;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public View getStatusView(Context context) {
|
||||
return new StatusBarView(context);
|
||||
return statusBarView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Context context) {
|
||||
|
||||
statusBarView = new StatusBarView(context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,16 +5,21 @@ import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.amap.api.maps.model.LatLng
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.eagle.core.data.config.HdMapBuildConfig
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IStatusViewLayout
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.MMsgBoxButtonView
|
||||
import com.mogo.eagle.core.function.view.SiteMarkerBean
|
||||
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.UiThreadHandler
|
||||
import com.mogo.map.listener.IMogoMapListener
|
||||
import com.mogo.map.listener.MogoMapListenerHandler
|
||||
import com.mogo.map.uicontroller.VisualAngleMode
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.bean.event.EventLineSites
|
||||
@@ -23,8 +28,8 @@ import com.mogo.och.bus.passenger.presenter.BusPassengerPresenter
|
||||
import com.mogo.och.bus.passenger.ui.bottom.BottomBar
|
||||
import com.mogo.och.bus.passenger.ui.bottom.BottomClickView
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.M1CarUserNoOrderFragment
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.NoviceGuidanceFragment
|
||||
import com.mogo.och.bus.passenger.ui.statusbar.StatusBarView
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
import com.mogo.och.common.module.biz.constant.LoginStatusManager
|
||||
import kotlinx.android.synthetic.main.m1_main_fragment.*
|
||||
@@ -37,10 +42,8 @@ import java.lang.ref.WeakReference
|
||||
* @author: wangmingjun
|
||||
* @date: 2022/4/12
|
||||
*/
|
||||
class MainFragment :
|
||||
MvpFragment<MainFragment?, BusPassengerPresenter?>() {
|
||||
class MainFragment : MvpFragment<MainFragment?, BusPassengerPresenter?>(), IMogoMapListener {
|
||||
|
||||
private var bpFunctionGroupDialogFragment: WeakReference<M1ContainFragment>? = null
|
||||
private var m1CarUserNoOrderFragment: WeakReference<M1CarUserNoOrderFragment>? = null
|
||||
private var noviceGuidanceFragment: WeakReference<NoviceGuidanceFragment>? = null
|
||||
|
||||
@@ -61,7 +64,16 @@ class MainFragment :
|
||||
}
|
||||
}
|
||||
|
||||
private var statusBarView: StatusBarView? = null
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
(ARouter.getInstance().build(MogoServicePaths.PATH_STATUS_VIEW_MANAGER)
|
||||
.navigation() as? IStatusViewLayout)?.apply {
|
||||
val statusView = getStatusView(requireContext())
|
||||
if (statusView is StatusBarView) {
|
||||
statusBarView = statusView
|
||||
}
|
||||
}
|
||||
return R.layout.m1_main_fragment
|
||||
}
|
||||
|
||||
@@ -117,6 +129,7 @@ class MainFragment :
|
||||
BottomBar.SelectView.VIDEO -> showBizView(showVideo = true)
|
||||
else -> {
|
||||
showBizView()
|
||||
statusBarView?.setBackgroudColor(R.color.bus_p_m1_80ffffff)
|
||||
}
|
||||
}
|
||||
return false
|
||||
@@ -145,6 +158,7 @@ class MainFragment :
|
||||
controller.changeZoom2(0.8f)
|
||||
}
|
||||
}
|
||||
MogoMapListenerHandler.mogoMapListenerHandler.registerHostMapListener(TAG, this)
|
||||
}
|
||||
|
||||
fun setCarMode(type: Int) {
|
||||
@@ -159,39 +173,30 @@ class MainFragment :
|
||||
) {
|
||||
if (orderinfo) {
|
||||
biz_orderinfo.visibility = View.VISIBLE
|
||||
statusBarView?.setBackgroudColor(R.color.bus_p_m1_80ffffff)
|
||||
} else {
|
||||
biz_orderinfo.visibility = View.GONE
|
||||
}
|
||||
if (softControl) {
|
||||
biz_softcontrol.visibility = View.VISIBLE
|
||||
statusBarView?.setBackgroudColor(R.color.bus_p_m1_40ffffff)
|
||||
} else {
|
||||
biz_softcontrol.visibility = View.GONE
|
||||
}
|
||||
if (selectLine) {
|
||||
biz_selectline.visibility = View.VISIBLE
|
||||
statusBarView?.setBackgroudColor(R.color.bus_p_m1_80ffffff)
|
||||
} else {
|
||||
biz_selectline.visibility = View.GONE
|
||||
}
|
||||
if (showVideo) {
|
||||
biz_video.visibility = View.VISIBLE
|
||||
statusBarView?.setBackgroudColor(R.color.bus_p_m1_40ffffff)
|
||||
} else {
|
||||
biz_video.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
private fun openSettingPage(tab: String) {
|
||||
if (bpFunctionGroupDialogFragment?.get() == null) {
|
||||
bpFunctionGroupDialogFragment = WeakReference(M1ContainFragment.newInstance())
|
||||
}
|
||||
val bpFunctionGroup = bpFunctionGroupDialogFragment?.get()
|
||||
M1ContainFragment.openSettingPage(
|
||||
childFragmentManager,
|
||||
parentFragmentManager,
|
||||
bpFunctionGroup,
|
||||
tab
|
||||
)
|
||||
}
|
||||
|
||||
fun setCarModle(rawInfo: Int) {
|
||||
getMapUIController()?.changeCurrentIcon(rawInfo)
|
||||
HdMapBuildConfig.currentCarVrIconRes = rawInfo
|
||||
@@ -221,9 +226,6 @@ class MainFragment :
|
||||
super.onResume()
|
||||
mapBizView.onResume()
|
||||
omvOverMap.onResume()
|
||||
UiThreadHandler.postDelayed({
|
||||
getMapUIController()?.setAllGesturesEnabled(false)
|
||||
},200)
|
||||
}
|
||||
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
@@ -249,9 +251,12 @@ class MainFragment :
|
||||
EventBus.getDefault().unregister(this)
|
||||
}
|
||||
|
||||
override fun onMapLoaded() {
|
||||
super.onMapLoaded()
|
||||
getMapUIController()?.setAllGesturesEnabled(false)
|
||||
}
|
||||
|
||||
fun showOpenAndCloseDoor() {
|
||||
val bpFunctionGroup = bpFunctionGroupDialogFragment?.get()
|
||||
bpFunctionGroup?.dismissAllowingStateLoss()
|
||||
val noviceGuidanceFragment = noviceGuidanceFragment?.get()
|
||||
noviceGuidanceFragment?.dismissAllowingStateLoss()
|
||||
|
||||
|
||||
@@ -1,322 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.ui.dialogfragment
|
||||
|
||||
import android.content.DialogInterface
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
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
|
||||
import com.mogo.eagle.core.utilcode.util.*
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.bean.event.EventLineSites
|
||||
import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionPresenter
|
||||
import com.mogo.och.bus.passenger.ui.selectline.M1OrderLineFragment
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.M1SoftFragment
|
||||
import com.mogo.och.bus.passenger.ui.video.M1VideoFragment
|
||||
import com.mogo.och.bus.passenger.ui.orderinfo.OrderInfoFragment
|
||||
import com.mogo.och.bus.passenger.ui.bottom.BottomBar
|
||||
import com.mogo.och.bus.passenger.ui.bottom.BottomClickView
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
import com.mogo.och.common.module.biz.constant.LoginStatusManager
|
||||
import com.mogo.och.common.module.manager.debug.DebugViewWatchDogFragment
|
||||
import kotlinx.android.synthetic.main.m1_contain_fragment.*
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
/**
|
||||
* @author: yangyakun
|
||||
* @date: 2023/1/28
|
||||
*/
|
||||
class M1ContainFragment :
|
||||
MvpDialogFragment<M1ContainFragment?, BusPassengerFunctionPresenter?>() {
|
||||
|
||||
var tab: String = VIDEOTAB
|
||||
var fragmentTag: String = M1VideoFragment.TAG
|
||||
var fragment: Fragment? = null
|
||||
|
||||
var closeThis:ContainDismiss = object :ContainDismiss{
|
||||
override fun closeDialog() {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
CallerLogger.d(M_BUS_P+ TAG, "onCreate")
|
||||
super.onCreate(savedInstanceState)
|
||||
arguments?.let {
|
||||
tab = it.getString(SELECTTAB, VIDEOTAB)
|
||||
}
|
||||
savedInstanceState?.let {
|
||||
tab = it.getString(SELECTTAB, tab)
|
||||
}
|
||||
setStyle(STYLE_NO_TITLE, R.style.DialogFullScreen) //dialog全屏
|
||||
}
|
||||
|
||||
private fun setCheckView() { //todo yakun 优化
|
||||
CallerLogger.d(M_BUS_P+ TAG, "setCheckView")
|
||||
when (tab) {
|
||||
VIDEOTAB -> {
|
||||
fragment =childFragmentManager.findFragmentByTag(M1VideoFragment.TAG)
|
||||
?: M1VideoFragment.newInstance()
|
||||
bb_bottom_bar.setCheckIndex(BottomBar.SelectView.VIDEO)
|
||||
cl_container.setBackgroundResource(R.drawable.m1_function_bg)
|
||||
fragmentTag = M1VideoFragment.TAG
|
||||
}
|
||||
SETTINGSOFTTAB -> {
|
||||
fragment =childFragmentManager.findFragmentByTag(M1SoftFragment.TAG)
|
||||
?: M1SoftFragment.newInstance()
|
||||
bb_bottom_bar.setCheckIndex(BottomBar.SelectView.SETTING)
|
||||
cl_container.setBackgroundResource(R.drawable.m1_function_bg)
|
||||
fragmentTag = M1SoftFragment.TAG
|
||||
}
|
||||
ORDERINFO -> {
|
||||
fragment =childFragmentManager.findFragmentByTag(OrderInfoFragment.TAG)
|
||||
?: OrderInfoFragment.newInstance(closeThis)
|
||||
bb_bottom_bar.setCheckIndex(BottomBar.SelectView.ORDERINFO)
|
||||
cl_container.background = null
|
||||
fragmentTag = OrderInfoFragment.TAG
|
||||
}
|
||||
SELECTLINE ->{
|
||||
fragment =childFragmentManager.findFragmentByTag(M1OrderLineFragment.TAG)
|
||||
?: M1OrderLineFragment.newInstance(closeThis)
|
||||
bb_bottom_bar.setCheckIndex(BottomBar.SelectView.LINE)
|
||||
cl_container.background = null
|
||||
fragmentTag = M1OrderLineFragment.TAG
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
CallerLogger.d(M_BUS_P+ TAG, "fragment:$fragment")
|
||||
|
||||
fragment?.let {
|
||||
val beginTransaction = childFragmentManager.beginTransaction()
|
||||
beginTransaction
|
||||
.replace(R.id.fl_function_group, it, fragmentTag)
|
||||
.commitNow()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.m1_contain_fragment
|
||||
|
||||
override fun getTagName(): String = TAG
|
||||
|
||||
override fun initViews() {
|
||||
|
||||
//dialog?.setCancelable(false)
|
||||
CallerLogger.d(M_BUS_P+ TAG, "initViews")
|
||||
setCheckView()
|
||||
cl_container.setOnClickListener {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
// bb_bottom_bar.setSettingClickListener{
|
||||
// CallerLogger.d(M_BUS_P+ TAG, "initViews---$tab")
|
||||
// if(tab==SETTINGSOFTTAB) {
|
||||
// dismissAllowingStateLoss()
|
||||
// }else{
|
||||
// tab = SETTINGSOFTTAB
|
||||
// setCheckView()
|
||||
// }
|
||||
// }
|
||||
// bb_bottom_bar.setLineClickListener{
|
||||
// CallerLogger.d(M_BUS_P+ TAG, "initViews---$tab")
|
||||
// if(tab==SELECTLINE) {
|
||||
// dismissAllowingStateLoss()
|
||||
// }else{
|
||||
// tab = SELECTLINE
|
||||
// setCheckView()
|
||||
// }
|
||||
// }
|
||||
// bb_bottom_bar.setOrderInfoClickListener{
|
||||
// if (LoginStatusManager.isLogin()) {
|
||||
// if(mPresenter?.haveOrder()==true){
|
||||
//
|
||||
// }else{
|
||||
// ToastCharterUtils.showShort("请确认订单")
|
||||
// return@setOrderInfoClickListener
|
||||
// }
|
||||
// }else{
|
||||
// ToastCharterUtils.showShort(AbsMogoApplication.getApp().getString(R.string.m1_please_login_driver))
|
||||
// return@setOrderInfoClickListener
|
||||
// }
|
||||
//
|
||||
// CallerLogger.d(M_BUS_P+ TAG, "initViews---$tab")
|
||||
// if(tab==ORDERINFO) {
|
||||
// dismissAllowingStateLoss()
|
||||
// }else{
|
||||
// tab = ORDERINFO
|
||||
// setCheckView()
|
||||
// }
|
||||
// }
|
||||
bb_bottom_bar.setApplyClickListener(object : BottomClickView.ApplyClickLintener{
|
||||
override fun onApplyClick() {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
CallerLogger.d(M_BUS_P+ TAG, "onViewCreated")
|
||||
dialog?.window?.let {
|
||||
BarUtils.hideStatusBarAndSticky(it)
|
||||
it.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)
|
||||
dialog?.setOnShowListener { _ ->
|
||||
it.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)
|
||||
BarUtils.hideStatusBarAndSticky(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
super.onDismiss(dialog)
|
||||
EventBus.getDefault().post(EventLineSites(null,null,true))
|
||||
}
|
||||
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
super.onSaveInstanceState(outState)
|
||||
CallerLogger.d(M_BUS_P+ TAG, "onSaveInstanceState")
|
||||
context?.let {
|
||||
SharedPrefs.getInstance(it).putString(SELECTTAB, tab)
|
||||
}
|
||||
}
|
||||
|
||||
override fun createPresenter(): BusPassengerFunctionPresenter =
|
||||
BusPassengerFunctionPresenter(this)
|
||||
|
||||
/**
|
||||
* 重写父类show()方法
|
||||
* 避免出现java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
|
||||
*/
|
||||
override fun show(manager: FragmentManager, tag: String?) {
|
||||
try {
|
||||
var cls = this.javaClass.superclass ?: return
|
||||
while (true) {
|
||||
if (cls.name == "java.lang.Object") {
|
||||
break
|
||||
}
|
||||
cls = cls.superclass!!
|
||||
if (cls == DialogFragment::class.java) {
|
||||
break
|
||||
}
|
||||
}
|
||||
val mDismissed = cls.getDeclaredField("mDismissed")
|
||||
val mShownByMe = cls.getDeclaredField("mShownByMe")
|
||||
mDismissed.isAccessible = true
|
||||
mShownByMe.isAccessible = true
|
||||
mDismissed.setBoolean(this, false)
|
||||
mShownByMe.setBoolean(this, true)
|
||||
if (isAdded) {
|
||||
return
|
||||
}
|
||||
val ft: FragmentTransaction = manager.beginTransaction()
|
||||
ft.add(this, tag)
|
||||
ft.commitAllowingStateLoss()
|
||||
} catch (e: Exception) {
|
||||
Log.e("DialogFragment", "show", e.fillInStackTrace())
|
||||
}
|
||||
}
|
||||
|
||||
override fun onViewStateRestored(savedInstanceState: Bundle?) {
|
||||
CallerLogger.d(M_BUS_P+ TAG, "onViewStateRestored")
|
||||
when (tab) {
|
||||
VIDEOTAB -> {
|
||||
|
||||
}
|
||||
SETTINGSOFTTAB -> {}
|
||||
ORDERINFO -> {}
|
||||
SELECTLINE -> {}
|
||||
else -> {}
|
||||
}
|
||||
super.onViewStateRestored(savedInstanceState)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "M1ContainFragment"
|
||||
|
||||
/**
|
||||
* 娱乐视频
|
||||
*/
|
||||
const val VIDEOTAB = "VideoTab"
|
||||
|
||||
/**
|
||||
* 空调、暖风、灯和剩余设置
|
||||
*/
|
||||
const val SETTINGSOFTTAB = "SettingSoftTab"
|
||||
|
||||
/**
|
||||
* 订单信息
|
||||
*/
|
||||
const val ORDERINFO = "OrderInfo"
|
||||
|
||||
/**
|
||||
* 选择线路
|
||||
*/
|
||||
const val SELECTLINE = "SelectLine"
|
||||
|
||||
|
||||
|
||||
const val SELECTTAB = "SELECTTAB"
|
||||
|
||||
@JvmStatic
|
||||
fun newInstance(): M1ContainFragment {
|
||||
val args = Bundle()
|
||||
val fragment = M1ContainFragment()
|
||||
CallerLogger.d(M_BUS_P + TAG, "创建新的Fragment")
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
|
||||
|
||||
fun openSettingPage(
|
||||
childFragmentManager: FragmentManager,
|
||||
parentFragmentManager: FragmentManager,
|
||||
bpFunctionGroup: M1ContainFragment?,
|
||||
tab: String
|
||||
) {
|
||||
val fragmentByTag: Fragment? = childFragmentManager.findFragmentByTag(TAG)
|
||||
if (fragmentByTag is DialogFragment) {
|
||||
if (fragmentByTag.dialog != null && fragmentByTag.dialog!!.isShowing) {
|
||||
CallerLogger.d(M_BUS_P + TAG, "正在展示")
|
||||
return
|
||||
}
|
||||
if (fragmentByTag.dialog != null && fragmentByTag.isAdded) {
|
||||
if (AppStateManager.currentActivity() == null) { // 没有在当前应用内 在启动页面关闭应用
|
||||
CallerLogger.d(M_BUS_P + TAG, "权限验证")
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
bpFunctionGroup?.arguments?.putString(SELECTTAB, tab)
|
||||
if (bpFunctionGroup != null) {
|
||||
if (bpFunctionGroup.dialog != null && bpFunctionGroup.dialog!!.isShowing) {
|
||||
CallerLogger.d(M_BUS_P + DebugViewWatchDogFragment.TAG, "正在展示")
|
||||
return
|
||||
}
|
||||
if (ClickUtils.isFastClick()) {
|
||||
if (bpFunctionGroup.isAdded) {
|
||||
CallerLogger.d(M_BUS_P + DebugViewWatchDogFragment.TAG, "已经添加")
|
||||
return
|
||||
}
|
||||
bpFunctionGroup.show(parentFragmentManager, TAG)
|
||||
CallerLogger.d(M_BUS_P + TAG, "展示$tab---$bpFunctionGroup")
|
||||
} else {
|
||||
CallerLogger.d(M_BUS_P + TAG, "dialog 1s内执行一次")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface ContainDismiss{
|
||||
fun closeDialog()
|
||||
}
|
||||
interface ChangeCheck{
|
||||
fun changeChange()
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@ import android.view.View
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.taxi.passenger.widget.animutils.AnimationsContainer
|
||||
import com.mogo.och.common.module.utils.FrameAnimatorContainer
|
||||
import kotlinx.android.synthetic.main.m1_devices_lock_unlock.view.aciv_screen_lock
|
||||
import kotlinx.android.synthetic.main.m1_devices_lock_unlock.view.aciv_screen_lock_bg
|
||||
import kotlinx.android.synthetic.main.m1_devices_lock_unlock.view.aciv_screen_unlock_ani
|
||||
@@ -30,7 +30,7 @@ class LockAndUnlockView : ConstraintLayout, LockManager.LockStatusCallback {
|
||||
|
||||
val TAG = "UnLockView"
|
||||
|
||||
private var animations: AnimationsContainer? = null
|
||||
private var animations: FrameAnimatorContainer? = null
|
||||
private var downType: DownType = DownType.NONE
|
||||
|
||||
private var handler: Handler?=null
|
||||
@@ -55,9 +55,9 @@ class LockAndUnlockView : ConstraintLayout, LockManager.LockStatusCallback {
|
||||
super.onAttachedToWindow()
|
||||
LockManager.setAutoStatusCallback(TAG, this)
|
||||
aciv_screen_unlock_ani?.let {
|
||||
animations = AnimationsContainer(R.array.openlock, 24, it)
|
||||
animations = FrameAnimatorContainer(R.array.openlock, 24, it,initFirstFrame = false)
|
||||
animations!!.setOnAnimStopListener(object :
|
||||
AnimationsContainer.OnAnimationStoppedListener {
|
||||
FrameAnimatorContainer.OnAnimationStoppedListener {
|
||||
override fun AnimationStopped() {
|
||||
it.setImageDrawable(null)
|
||||
}
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.ui.orderinfo
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.presenter.OrderInfoPresenter
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
|
||||
import kotlinx.android.synthetic.main.m1_devices_fragment.*
|
||||
|
||||
/**
|
||||
* @author: yangyakun
|
||||
* @date: 2023/1/28
|
||||
*/
|
||||
class OrderInfoFragment :
|
||||
MvpFragment<OrderInfoFragment?, OrderInfoPresenter?>() {
|
||||
|
||||
private var dismiss: M1ContainFragment.ContainDismiss?=null
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.m1_devices_fragment
|
||||
|
||||
override fun getTagName(): String = TAG
|
||||
|
||||
override fun initViews() {
|
||||
initListener()
|
||||
}
|
||||
|
||||
private fun initListener() {
|
||||
actv_end_order_submit.setOnClickListener {
|
||||
mPresenter?.endOrder()
|
||||
}
|
||||
actv_contain_order.setOnClickListener {
|
||||
this.dismiss?.closeDialog()
|
||||
}
|
||||
actv_end_order.setOnClickListener {
|
||||
cl_order_info.visibility = View.GONE
|
||||
cl_order_info_endorder_comfit.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
fun setStartTimeAndEndTime(startTime:String,endTime:String){
|
||||
actv_order_times.text = "$startTime-$endTime"
|
||||
}
|
||||
fun setPhone(phone:String){
|
||||
if(phone.length>8) {
|
||||
//截取电话号码前三位
|
||||
val phoneNumPre = phone.substring(0, 3);
|
||||
//截取电话号码后四位
|
||||
val phoneNumFix = phone.substring(7);
|
||||
actv_order_phone.text = "$phoneNumPre****$phoneNumFix"
|
||||
}else{
|
||||
actv_order_phone.text = phone
|
||||
}
|
||||
}
|
||||
|
||||
fun setLeftTime(leftTime:String){
|
||||
actv_left_time.text = "剩余时间 $leftTime"
|
||||
}
|
||||
|
||||
fun setContainDismiss(dismiss: M1ContainFragment.ContainDismiss) {
|
||||
this.dismiss = dismiss
|
||||
}
|
||||
|
||||
fun closeDialogContaion(){
|
||||
this.dismiss?.closeDialog()
|
||||
}
|
||||
|
||||
override fun createPresenter(): OrderInfoPresenter =
|
||||
OrderInfoPresenter(this)
|
||||
|
||||
companion object {
|
||||
const val TAG = "OrderInfoFragment"
|
||||
@JvmStatic
|
||||
fun newInstance(dismiss: M1ContainFragment.ContainDismiss): OrderInfoFragment {
|
||||
val args = Bundle()
|
||||
val fragment = OrderInfoFragment()
|
||||
fragment.arguments = args
|
||||
fragment.setContainDismiss(dismiss)
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,268 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.ui.selectline
|
||||
|
||||
import android.animation.ObjectAnimator
|
||||
import android.graphics.drawable.AnimationDrawable
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.animation.LinearInterpolator
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.elegant.utils.UiThreadHandler
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
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
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.bean.response.LineInfoResponse
|
||||
import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse
|
||||
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||
import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionOrderPresenter
|
||||
import com.mogo.och.bus.passenger.ui.selectline.adapter.OrderLineItemAdapter
|
||||
import com.mogo.och.bus.passenger.ui.selectline.adapter.OrderSiteItemAdapter
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
|
||||
import com.mogo.och.bus.passenger.ui.selectline.layoutmanage.BottomDecoration
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import io.reactivex.disposables.Disposable
|
||||
import kotlinx.android.synthetic.main.m1_order_fragment.*
|
||||
import kotlinx.android.synthetic.main.m1_order_loading.iv_loading_wait_ent
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
|
||||
/**
|
||||
* @author: yangyakun
|
||||
* @date: 2023/1/28
|
||||
*/
|
||||
class M1OrderLineFragment :
|
||||
MvpFragment<M1OrderLineFragment?, BusPassengerFunctionOrderPresenter?>() {
|
||||
|
||||
private var dismiss: M1ContainFragment.ContainDismiss? = null
|
||||
|
||||
|
||||
private lateinit var lineAdapter: OrderLineItemAdapter
|
||||
private lateinit var siteAdapter: OrderSiteItemAdapter
|
||||
|
||||
val lineList = mutableListOf<LineInfoResponse.LineInfo>()
|
||||
val siteList = mutableListOf<SiteInfoResponse.SiteInfo>()
|
||||
|
||||
private var subscribeDirverAgree: Disposable? = null
|
||||
private var subscribeDirverRefuse: Disposable? = null
|
||||
|
||||
private val loadingAni =
|
||||
ObjectAnimator.ofFloat(iv_loading_wait_ent, "rotation", 0f, 90f, 180f, 270f, 360f)
|
||||
.apply {
|
||||
repeatCount = -1
|
||||
interpolator = LinearInterpolator()
|
||||
duration = 1000
|
||||
}
|
||||
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.m1_order_fragment
|
||||
}
|
||||
|
||||
override fun getTagName(): String {
|
||||
return TAG
|
||||
}
|
||||
|
||||
override fun initViews() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "initViews")
|
||||
lineAdapter = OrderLineItemAdapter(requireContext(), lineList)
|
||||
siteAdapter = OrderSiteItemAdapter(requireContext(), siteList)
|
||||
loadingAni.target = iv_loading_wait_ent
|
||||
rlv_line_list.layoutManager =
|
||||
LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
|
||||
rlv_line_list.addItemDecoration(
|
||||
BottomDecoration(
|
||||
AutoSizeUtils.dp2px(context, 60f)
|
||||
)
|
||||
)
|
||||
rlv_line_list.adapter = lineAdapter
|
||||
|
||||
rv_site_list.layoutManager =
|
||||
LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
|
||||
rv_site_list.addItemDecoration(
|
||||
BottomDecoration(
|
||||
AutoSizeUtils.dp2px(context, 90f)
|
||||
)
|
||||
)
|
||||
rv_site_list.adapter = siteAdapter
|
||||
|
||||
initListener()
|
||||
|
||||
}
|
||||
|
||||
private fun initListener() {
|
||||
lineAdapter.checkChangeListener = object : OrderLineItemAdapter.CheckListener {
|
||||
override fun canSwitchLine(): Boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onCheckListener(lineInfo: LineInfoResponse.LineInfo) {
|
||||
mPresenter?.checkLineClick(lineInfo)
|
||||
siteAdapter.clearCheck()
|
||||
}
|
||||
}
|
||||
siteAdapter.checkChangeListener = object : OrderSiteItemAdapter.CheckListener {
|
||||
override fun canSwitchLine(): Boolean {
|
||||
return mPresenter?.canSwitchLine()?:true
|
||||
}
|
||||
|
||||
override fun onCheckListener(siteInfo: SiteInfoResponse.SiteInfo?) {
|
||||
// 设置临时选中的
|
||||
mPresenter?.checkSiteClick(siteInfo)
|
||||
}
|
||||
|
||||
}
|
||||
tv_site_cancle.onClick {
|
||||
mPresenter?.resetData()
|
||||
}
|
||||
tv_site_submit.onClick {
|
||||
mPresenter?.changeSites(siteList)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置是否可用选择站点
|
||||
*/
|
||||
fun setEnableSiteStatus(cancleAndSubmit: Boolean) {
|
||||
if (cancleAndSubmit) {
|
||||
g_side_cancle_submit_group?.visibility = View.VISIBLE
|
||||
} else {
|
||||
g_side_cancle_submit_group?.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
fun hideDataWaitDriverMsg() {
|
||||
g_lines_sites_data?.visibility = View.GONE
|
||||
g_loading_group?.visibility = View.VISIBLE
|
||||
iv_loading_wait_driver?.let {
|
||||
val animationDrawable = it.drawable as AnimationDrawable
|
||||
animationDrawable.start()
|
||||
}
|
||||
}
|
||||
|
||||
fun showSelectData() {
|
||||
UiThreadHandler.post {
|
||||
g_lines_sites_data?.visibility = View.VISIBLE
|
||||
g_loading_group?.visibility = View.GONE
|
||||
group_driver_agrenn_line?.visibility = View.GONE
|
||||
aciv_driver_refuse_group?.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
fun hideDataDriverAgree(){
|
||||
group_driver_agrenn_line?.visibility = View.VISIBLE
|
||||
aciv_driver_refuse_group?.visibility = View.GONE
|
||||
g_loading_group?.visibility = View.GONE
|
||||
g_lines_sites_data?.let {
|
||||
it.visibility = View.GONE
|
||||
subscribeDirverAgree = RxUtils.createSubscribe(3_000) {
|
||||
dismiss?.closeDialog()
|
||||
}
|
||||
}
|
||||
}
|
||||
fun hideDataDriverRefuse(){
|
||||
group_driver_agrenn_line?.visibility = View.GONE
|
||||
aciv_driver_refuse_group?.visibility = View.VISIBLE
|
||||
g_loading_group?.visibility = View.GONE
|
||||
g_lines_sites_data?.let {
|
||||
it.visibility = View.GONE
|
||||
subscribeDirverRefuse = RxUtils.createSubscribe(3_000) {
|
||||
showSelectData()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun setVisableByTrun(
|
||||
showBiz: Boolean = false,
|
||||
showNetError: Boolean = false,
|
||||
showNorOrder: Boolean = false,
|
||||
showLoading: Boolean = false
|
||||
) {
|
||||
if(showBiz){
|
||||
// 选择线路页面
|
||||
m1_order_noorder?.visibility = View.GONE
|
||||
m1_order_neterror?.visibility = View.GONE
|
||||
lsv_line_site?.visibility = View.VISIBLE
|
||||
m1_order_loading?.visibility = View.GONE
|
||||
return
|
||||
}
|
||||
if(showNetError){
|
||||
m1_order_noorder?.visibility = View.GONE
|
||||
m1_order_neterror?.visibility = View.VISIBLE
|
||||
lsv_line_site?.visibility = View.GONE
|
||||
m1_order_loading?.visibility = View.GONE
|
||||
return
|
||||
}
|
||||
if(showNorOrder){
|
||||
m1_order_noorder?.visibility = View.VISIBLE
|
||||
m1_order_neterror?.visibility = View.GONE
|
||||
lsv_line_site?.visibility = View.GONE
|
||||
m1_order_loading?.visibility = View.GONE
|
||||
return
|
||||
}
|
||||
if(showLoading){
|
||||
m1_order_noorder?.visibility = View.GONE
|
||||
m1_order_neterror?.visibility = View.GONE
|
||||
lsv_line_site?.visibility = View.GONE
|
||||
m1_order_loading?.visibility = View.VISIBLE
|
||||
if (!loadingAni.isRunning) {
|
||||
loadingAni.start()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun go2StartCar() {
|
||||
dismiss?.closeDialog()
|
||||
}
|
||||
|
||||
override fun createPresenter(): BusPassengerFunctionOrderPresenter {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "createPresenter")
|
||||
return BusPassengerFunctionOrderPresenter(this)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
loadingAni.cancel()
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "onDestroyView")
|
||||
RxUtils.disposeSubscribe(subscribeDirverAgree)
|
||||
RxUtils.disposeSubscribe(subscribeDirverRefuse)
|
||||
}
|
||||
|
||||
fun lineAdapterSubmit(lineInfo: LineInfoResponse.LineInfo) {
|
||||
lineAdapter.submitLine(lineInfo)
|
||||
}
|
||||
|
||||
fun lineAdapterSetData(
|
||||
lineInfo: List<LineInfoResponse.LineInfo>,
|
||||
checkLine: LineInfoResponse.LineInfo?
|
||||
) {
|
||||
lineAdapter.setDataList(lineInfo,checkLine)
|
||||
}
|
||||
|
||||
fun siteAdapterSetData(siteInfo: List<SiteInfoResponse.SiteInfo>) {
|
||||
siteAdapter.setDataList(siteInfo)
|
||||
}
|
||||
fun siteAdapterEnableIndex(index: Int) {
|
||||
siteAdapter.setEnableIndex(index)
|
||||
}
|
||||
|
||||
fun setContainDismiss(dismiss: M1ContainFragment.ContainDismiss) {
|
||||
this.dismiss = dismiss
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "M1OrderLineFragment"
|
||||
|
||||
@JvmStatic
|
||||
fun newInstance(dismiss: M1ContainFragment.ContainDismiss): M1OrderLineFragment {
|
||||
val args = Bundle()
|
||||
val fragment = M1OrderLineFragment()
|
||||
fragment.arguments = args
|
||||
fragment.setContainDismiss(dismiss)
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,6 @@ package com.mogo.och.bus.passenger.ui.selectline
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.elegant.utils.UiThreadHandler
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
@@ -17,24 +16,20 @@ import com.mogo.och.bus.passenger.bean.event.EventLineSites
|
||||
import com.mogo.och.bus.passenger.bean.response.LineInfoListResponse
|
||||
import com.mogo.och.bus.passenger.bean.response.LineInfoResponse
|
||||
import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse
|
||||
import com.mogo.och.bus.passenger.callback.ITimeCallback
|
||||
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||
import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener
|
||||
import com.mogo.och.bus.passenger.model.OrderStatusEnum
|
||||
import com.mogo.och.bus.passenger.net.BusPassengerServiceManager
|
||||
import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionOrderPresenter
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg
|
||||
import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg
|
||||
import com.mogo.och.common.module.bean.dpmsg.DPMsgType
|
||||
import com.mogo.och.common.module.bean.dpmsg.EndOrderMsg
|
||||
import com.mogo.och.common.module.bean.dpmsg.LineSite
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.manager.StopSideStatusManager
|
||||
import com.mogo.och.common.module.manager.loopmanager.BizLoopManager
|
||||
import com.mogo.och.common.module.manager.loopmanager.LoopInfo
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import io.reactivex.disposables.Disposable
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
@@ -1,735 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.ui.softcontrol
|
||||
|
||||
import android.animation.ObjectAnimator
|
||||
import android.animation.ValueAnimator
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.graphics.BitmapFactory
|
||||
import android.graphics.drawable.ClipDrawable
|
||||
import android.graphics.drawable.LayerDrawable
|
||||
import android.media.AudioManager
|
||||
import android.os.Bundle
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.animation.LinearInterpolator
|
||||
import android.widget.RadioButton
|
||||
import android.widget.SeekBar
|
||||
import android.widget.SeekBar.OnSeekBarChangeListener
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
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.mogo.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.utilcode.util.ClickUtils
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.bean.Temperature
|
||||
import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionSoftPresenter
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.adapter.TemperatureAdapter
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.PagerCenterSnapHelper
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.HorizontalDecoration
|
||||
import com.mogo.och.bus.passenger.ui.selectline.layoutmanage.PickerLayoutManager
|
||||
import com.mogo.och.common.module.utils.SoundPoolHelper
|
||||
import com.mogo.och.common.module.wigets.MineGradientDrawable
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
import kotlinx.android.synthetic.main.m1_soft_fragment.*
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
|
||||
/**
|
||||
* @author: yangyakun
|
||||
* @date: 2023/1/28
|
||||
*/
|
||||
class M1SoftFragment :
|
||||
MvpFragment<M1SoftFragment?, BusPassengerFunctionSoftPresenter?>() {
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.m1_soft_fragment
|
||||
|
||||
override fun getTagName(): String = TAG
|
||||
|
||||
private var currentTemperature: Temperature? = null
|
||||
|
||||
private var subscribeAir: Disposable? = null
|
||||
private var subscribeLightTop1: Disposable? = null
|
||||
private var subscribeLightTop2: Disposable? = null
|
||||
private var subscribeAtmosphere: Disposable? = null
|
||||
private var subscribeAnimator: Disposable? = null
|
||||
|
||||
private var animator1: ObjectAnimator? = null
|
||||
private val loadingAni = ObjectAnimator.ofFloat(iv_loading, "rotation", 0f, 90f ,180f, 270f, 360f).apply {
|
||||
repeatCount = -1
|
||||
interpolator = LinearInterpolator()
|
||||
duration = 1000
|
||||
}
|
||||
|
||||
|
||||
override fun initViews() {
|
||||
rg_select_function.setOnCheckedChangeListener { group, checkedId ->
|
||||
when (checkedId) {
|
||||
R.id.tv_setting_aircondition -> {
|
||||
g_light_setting.visibility = View.GONE
|
||||
g_voice_setting.visibility = View.GONE
|
||||
if(loadingAni.isRunning){
|
||||
iv_loading.visibility = View.VISIBLE
|
||||
g_aircondition_setting.visibility = View.GONE
|
||||
}else{
|
||||
g_aircondition_setting.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
R.id.tv_setting_lighting -> {
|
||||
g_light_setting.visibility = View.VISIBLE
|
||||
g_voice_setting.visibility = View.GONE
|
||||
g_aircondition_setting.visibility = View.GONE
|
||||
iv_loading.visibility = View.GONE
|
||||
}
|
||||
R.id.tv_setting_voice -> {
|
||||
g_voice_setting.visibility = View.VISIBLE
|
||||
g_aircondition_setting.visibility = View.GONE
|
||||
g_light_setting.visibility = View.GONE
|
||||
iv_loading.visibility = View.GONE
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
if(rb_pattern_heating.isChecked){
|
||||
iv_temperature_select.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
rg_select_function.check(R.id.tv_setting_aircondition)
|
||||
setAirconditionListener()
|
||||
setAirConditionAni()
|
||||
setLightListener()
|
||||
setVoiceInfo()
|
||||
}
|
||||
|
||||
private fun setAirConditionAni() {
|
||||
dbv_wind.post {
|
||||
dbv_wind?.let {
|
||||
val measuredHeight = it.measuredHeight
|
||||
animator1 = ObjectAnimator.ofInt(it, "showHeight", 0, measuredHeight).apply {
|
||||
duration = 1000
|
||||
repeatCount = ValueAnimator.INFINITE
|
||||
if(rg_setting_windspeed.checkedRadioButtonId!=0&&tv_aircondition_switch.isChecked){
|
||||
start()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun showAni(){
|
||||
iv_loading.visibility = View.VISIBLE
|
||||
loadingAni.target = iv_loading
|
||||
loadingAni.start()
|
||||
g_aircondition_setting.visibility = View.GONE
|
||||
subscribeAnimator = Observable.timer(10000, TimeUnit.MILLISECONDS)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe {
|
||||
loadingAni.cancel()
|
||||
iv_loading.visibility = View.GONE
|
||||
if(tv_setting_aircondition.isChecked){
|
||||
g_aircondition_setting.visibility = View.VISIBLE
|
||||
if(rb_pattern_heating.isChecked){
|
||||
iv_temperature_select.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private fun setAirconditionListener() {
|
||||
// 开关空调或暖风机
|
||||
tv_aircondition_switch.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if(!buttonView.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
if(isChecked){//打开
|
||||
tv_aircondition_switch.setText("关闭空调")
|
||||
if (rg_setting_pattern.checkedRadioButtonId == R.id.rb_pattern_heating) {
|
||||
openHeater()// 打开暖风机
|
||||
} else {
|
||||
openAircondition()// 打开空调
|
||||
}
|
||||
showAni()
|
||||
}else{// 关闭
|
||||
tv_aircondition_switch.setText("打开空调")
|
||||
closeHeater()// 关闭暖风机
|
||||
closeAircondition()//关闭空调
|
||||
}
|
||||
}
|
||||
// 模式调节
|
||||
rg_setting_pattern.setOnCheckedChangeListener { group, checkedId ->
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "调节模式")
|
||||
when (checkedId) {
|
||||
R.id.rb_pattern_heating -> {
|
||||
if(!rb_pattern_heating.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
openHeater()
|
||||
}
|
||||
R.id.rb_pattern_automatic->{
|
||||
if(!rb_pattern_automatic.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
openAircondition()
|
||||
}
|
||||
R.id.rb_pattern_refrigeration->{
|
||||
if(!rb_pattern_refrigeration.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
openAircondition()
|
||||
}
|
||||
R.id.rb_pattern_ventilate->{
|
||||
if(!rb_pattern_ventilate.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
openAircondition()
|
||||
}
|
||||
else -> {
|
||||
openAircondition()
|
||||
}
|
||||
}
|
||||
if(tv_aircondition_switch.isChecked) {
|
||||
showAni()
|
||||
}
|
||||
}
|
||||
|
||||
// 风速调节
|
||||
rg_setting_windspeed.setOnCheckedChangeListener { group, checkedId ->
|
||||
when (checkedId) {
|
||||
R.id.rb_wind_speed_low-> {
|
||||
if(!rb_wind_speed_low.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
}
|
||||
R.id.rb_wind_speed_middle-> {
|
||||
if(!rb_wind_speed_middle.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
}
|
||||
R.id.rb_wind_speed_high-> {
|
||||
if(!rb_wind_speed_high.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
if (rg_setting_pattern.checkedRadioButtonId == R.id.rb_pattern_heating) {//暖风机
|
||||
openHeater()
|
||||
} else {
|
||||
openAircondition()
|
||||
}
|
||||
}
|
||||
val pickerLayoutManager =
|
||||
PickerLayoutManager(
|
||||
requireContext(),
|
||||
PickerLayoutManager.HORIZONTAL,
|
||||
false
|
||||
)
|
||||
pickerLayoutManager.isChangeAlpha = true
|
||||
pickerLayoutManager.scaleDownBy = 0.29f
|
||||
pickerLayoutManager.scaleDownDistance = 0.8f
|
||||
|
||||
val data = getData()
|
||||
val adapter = TemperatureAdapter(requireContext(), data, rv_aircondition_temperature)
|
||||
val snapHelper = PagerCenterSnapHelper()
|
||||
snapHelper.attachToRecyclerView(rv_aircondition_temperature)
|
||||
rv_aircondition_temperature.layoutManager = pickerLayoutManager
|
||||
rv_aircondition_temperature.adapter = adapter
|
||||
HorizontalDecoration.distance = SharedPrefsMgr.getInstance(requireContext()).getInt(
|
||||
HorizontalDecoration.distancekey,0)
|
||||
val space = AutoSizeUtils.dp2px(context, 15f)
|
||||
rv_aircondition_temperature.addItemDecoration(
|
||||
HorizontalDecoration(
|
||||
space,
|
||||
data.size - 1
|
||||
)
|
||||
)
|
||||
|
||||
pickerLayoutManager.setOnScrollStopListener { view ->
|
||||
if (view is TextView) {
|
||||
// 未拖到中点、自动滚动到中点会短时间触发两次
|
||||
val tag = view.tag
|
||||
if (tag is Temperature) {
|
||||
mPresenter?.disposeSubscribe(subscribeAir)
|
||||
if(tag.index==0||tag.index==adapter.data.size-1){
|
||||
subscribeAir = Observable.timer(200, TimeUnit.MILLISECONDS)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe {
|
||||
setCheckAir(adapter,tag)
|
||||
}
|
||||
}else {
|
||||
if (ClickUtils.isClickTooFrequent(rv_aircondition_temperature)) {
|
||||
return@setOnScrollStopListener
|
||||
}
|
||||
setCheckAir(adapter,tag)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
if(HorizontalDecoration.distance!=0){
|
||||
rv_aircondition_temperature.scrollToPosition(data.size-1)
|
||||
adapter.setCheckIndex(data.size-1)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setCheckAir(adapter: TemperatureAdapter, tag:Temperature){
|
||||
adapter.setCheckIndex(tag.index)
|
||||
currentTemperature = tag
|
||||
if (rv_aircondition_temperature.tag == touchTag) {
|
||||
rv_aircondition_temperature.tag = null
|
||||
return
|
||||
} else {
|
||||
SoundPoolHelper.getSoundPoolHelper()
|
||||
.playSoundWithRedId(context, R.raw.bus_di)
|
||||
}
|
||||
openAircondition()
|
||||
}
|
||||
|
||||
private fun getData(): MutableList<Temperature> {
|
||||
val mutableListOf = mutableListOf<Temperature>()
|
||||
mutableListOf.add(Temperature(0, 16, "16°"))
|
||||
mutableListOf.add(Temperature(1, 17, "17°"))
|
||||
mutableListOf.add(Temperature(2, 18, "18°"))
|
||||
mutableListOf.add(Temperature(3, 19, "19°"))
|
||||
mutableListOf.add(Temperature(4, 20, "20°"))
|
||||
mutableListOf.add(Temperature(5, 21, "21°"))
|
||||
mutableListOf.add(Temperature(6, 22, "22°"))
|
||||
mutableListOf.add(Temperature(7, 23, "23°"))
|
||||
mutableListOf.add(Temperature(8, 24, "24°"))
|
||||
mutableListOf.add(Temperature(9, 25, "25°"))
|
||||
mutableListOf.add(Temperature(10, 26, "26°"))
|
||||
return mutableListOf
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭空调
|
||||
*/
|
||||
private fun closeAircondition() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭空调")
|
||||
var modeCmd = 0
|
||||
var windSpeedCmd = 0
|
||||
val temperatureCmd = currentTemperature?.value ?: 26
|
||||
closeHeater()//关闭暖风
|
||||
when (rg_setting_pattern.checkedRadioButtonId) {
|
||||
R.id.rb_pattern_automatic -> modeCmd = 1 // 自动
|
||||
R.id.rb_pattern_refrigeration -> modeCmd = 2 // 制冷
|
||||
R.id.rb_pattern_ventilate -> modeCmd = 3 // 通风
|
||||
else -> {}
|
||||
}
|
||||
when (rg_setting_windspeed.checkedRadioButtonId) {
|
||||
R.id.rb_wind_speed_low -> windSpeedCmd = 1 // 1档
|
||||
R.id.rb_wind_speed_middle -> windSpeedCmd = 2 // 2档
|
||||
R.id.rb_wind_speed_high -> windSpeedCmd = 3 // 3档
|
||||
else -> {}
|
||||
}
|
||||
mPresenter?.closeAircondition(modeCmd, windSpeedCmd, temperatureCmd)
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启空调
|
||||
*/
|
||||
private fun openAircondition() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开空调")
|
||||
var modeCmd = 0
|
||||
var windSpeedCmd = 0
|
||||
val temperatureCmd = currentTemperature?.value ?: 26
|
||||
closeHeater()//关闭暖风
|
||||
when (rg_setting_pattern.checkedRadioButtonId) {
|
||||
R.id.rb_pattern_automatic -> modeCmd = 1 // 自动
|
||||
R.id.rb_pattern_refrigeration -> modeCmd = 2 // 制冷
|
||||
R.id.rb_pattern_ventilate -> modeCmd = 3 // 通风
|
||||
else -> {}
|
||||
}
|
||||
when (rg_setting_windspeed.checkedRadioButtonId) {
|
||||
R.id.rb_wind_speed_low -> windSpeedCmd = 1 // 1档
|
||||
R.id.rb_wind_speed_middle -> windSpeedCmd = 2 // 2档
|
||||
R.id.rb_wind_speed_high -> windSpeedCmd = 3 // 3档
|
||||
else -> {}
|
||||
}
|
||||
if (!tv_aircondition_switch.isChecked) {
|
||||
return
|
||||
}
|
||||
mPresenter?.openAndSetAircondition(modeCmd, windSpeedCmd, temperatureCmd)
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据车的状态会写页面状态
|
||||
*/
|
||||
fun setAirconditionHeaterView(
|
||||
airIsOpen: Boolean,
|
||||
heaterIsOpen: Boolean,
|
||||
temperatureCmd: Int,
|
||||
pattern: Int,
|
||||
windSpeed: Int
|
||||
) {
|
||||
tv_aircondition_switch?.let {
|
||||
if (!airIsOpen && !heaterIsOpen) {
|
||||
tv_aircondition_switch.text = "打开空调"
|
||||
tv_aircondition_switch.isChecked = false
|
||||
dbv_wind.visibility = View.GONE
|
||||
} else {
|
||||
tv_aircondition_switch.text = "关闭空调"
|
||||
tv_aircondition_switch.isChecked = true
|
||||
dbv_wind.visibility = View.VISIBLE
|
||||
}
|
||||
if (airIsOpen) {
|
||||
val adapter = rv_aircondition_temperature.adapter
|
||||
if (adapter is TemperatureAdapter) {
|
||||
adapter.data.forEach {
|
||||
if (it.value == temperatureCmd) {
|
||||
rv_aircondition_temperature.tag = touchTag
|
||||
UiThreadHandler.postDelayed({
|
||||
rv_aircondition_temperature?.smoothScrollToPosition(it.index)
|
||||
},500)
|
||||
}
|
||||
}
|
||||
}
|
||||
when (pattern) {//1: 自动模式, 2: 制冷模式, 3: 通风模式(仅送风,无温度)
|
||||
1 -> {rb_pattern_automatic.isChecked = true}
|
||||
2 -> {rb_pattern_refrigeration.isChecked = true}
|
||||
3 -> {rb_pattern_ventilate.isChecked = true}
|
||||
else -> {}
|
||||
}
|
||||
heaterAirEnable(true)
|
||||
when (windSpeed) {//1: 1档,2: 2档,3:3档
|
||||
1 -> {
|
||||
setWind(rb_wind_speed_low,R.drawable.bus_pm1_aircondition_wind_low)
|
||||
}
|
||||
2 -> {
|
||||
setWind(rb_wind_speed_middle,R.drawable.bus_pm1_aircondition_wind_middle)
|
||||
}
|
||||
3 -> {
|
||||
setWind(rb_wind_speed_high,R.drawable.bus_pm1_aircondition_wind_high)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
if (heaterIsOpen) {
|
||||
rb_pattern_heating.isChecked = true
|
||||
heaterAirEnable(false)
|
||||
when (windSpeed) {//1: 1档,2: 2档
|
||||
1 -> {
|
||||
setWind(rb_wind_speed_middle,R.drawable.bus_pm1_warm_wind_middle)
|
||||
}
|
||||
2 -> {
|
||||
setWind(rb_wind_speed_high,R.drawable.bus_pm1_warm_wind_high)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fun setWind(check: RadioButton,resource:Int){
|
||||
check.isChecked = true
|
||||
dbv_wind.setDrawableImage(BitmapFactory.decodeResource(resources,resource))
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭暖风机
|
||||
*/
|
||||
private fun closeHeater() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭暖风")
|
||||
heaterAirEnable(true)
|
||||
mPresenter?.closeHeader()
|
||||
}
|
||||
|
||||
private fun heaterAirEnable(enable: Boolean) {
|
||||
tv_temperature_title.isEnabled = enable
|
||||
rv_aircondition_temperature.isEnabled = enable
|
||||
val layoutManager = rv_aircondition_temperature.layoutManager
|
||||
if (layoutManager is PickerLayoutManager) {
|
||||
layoutManager.setHorizontallyScroll(enable)
|
||||
}
|
||||
val adapter = rv_aircondition_temperature.adapter as TemperatureAdapter
|
||||
if(enable){
|
||||
adapter.setEnable(true)
|
||||
if(tv_setting_aircondition.isChecked) {
|
||||
if(iv_loading.visibility==View.GONE){
|
||||
iv_temperature_select.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
rb_wind_speed_low.setTextColor(ContextCompat.getColorStateList(requireContext(),R.color.bus_p_function_airconditon_pattern_text_color_selector))
|
||||
}else{
|
||||
adapter.setEnable(false)
|
||||
iv_temperature_select.visibility = View.GONE
|
||||
rb_wind_speed_low.setTextColor(ContextCompat.getColor(requireContext(),R.color.bus_p_m1_6647576e))
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启暖风机
|
||||
*/
|
||||
private fun openHeater() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开暖风")
|
||||
heaterAirEnable(false)
|
||||
closeAircondition()//关闭空调
|
||||
val switch: Int
|
||||
when (rg_setting_windspeed.checkedRadioButtonId) {
|
||||
R.id.rb_wind_speed_low -> {
|
||||
rb_wind_speed_middle.tag = touchTag
|
||||
rb_wind_speed_middle.toggle()
|
||||
switch = 1
|
||||
}
|
||||
R.id.rb_wind_speed_middle -> {
|
||||
switch = 1
|
||||
}
|
||||
R.id.rb_wind_speed_high -> {
|
||||
switch = 2
|
||||
}
|
||||
else -> {
|
||||
rb_wind_speed_middle.tag = touchTag
|
||||
rb_wind_speed_middle.toggle()
|
||||
switch = 1
|
||||
}
|
||||
}
|
||||
if (!tv_aircondition_switch.isChecked) {
|
||||
return
|
||||
}
|
||||
mPresenter?.openAndSetHeader(switch)
|
||||
}
|
||||
|
||||
|
||||
// region 灯
|
||||
private fun setLightListener() {
|
||||
tv_light_top_01.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if(!buttonView.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
tv_light_top_01.isEnabled = false
|
||||
subscribeLightTop1 = Observable.timer(2000, TimeUnit.MILLISECONDS)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe {
|
||||
tv_light_top_01.isEnabled = true
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
mPresenter?.setLightData1(isChecked)
|
||||
setLightTop1View(isChecked,true)
|
||||
setLightView(isChecked,tv_light_top_02.isChecked)
|
||||
}
|
||||
tv_light_top_02.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if(!buttonView.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
tv_light_top_02.isEnabled = false
|
||||
subscribeLightTop2 = Observable.timer(2000, TimeUnit.MILLISECONDS)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe {
|
||||
tv_light_top_02.isEnabled = true
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
mPresenter?.setLightData2(isChecked)
|
||||
setLightTop2View(isChecked,true)
|
||||
setLightView(tv_light_top_01.isChecked,isChecked)
|
||||
}
|
||||
tv_light_atmosphere.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if(!buttonView.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
tv_light_atmosphere.isEnabled = false
|
||||
subscribeAtmosphere = Observable.timer(2000, TimeUnit.MILLISECONDS)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe {
|
||||
tv_light_atmosphere.isEnabled = true
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
mPresenter?.setAtmosphereLightData2(isChecked)
|
||||
setLightAtmosphereView(isChecked,true)
|
||||
}
|
||||
}
|
||||
|
||||
fun setLightTop1View(leftLight: Boolean, isFirst: Boolean){
|
||||
tv_light_top_01?.let {
|
||||
if (leftLight) {
|
||||
tv_light_top_01.text = requireContext().getString(R.string.bus_p_m1_close_light1)
|
||||
tv_light_top_01.isChecked = true
|
||||
if(!isFirst) ToastCharterUtils.showShort("打开顶灯1")
|
||||
} else {
|
||||
tv_light_top_01.text = requireContext().getString(R.string.bus_p_m1_open_light1)
|
||||
tv_light_top_01.isChecked = false
|
||||
if(!isFirst) ToastCharterUtils.showShort("关闭顶灯1")
|
||||
}
|
||||
}
|
||||
}
|
||||
fun setLightTop2View(rightLight: Boolean, isFirst: Boolean){
|
||||
tv_light_top_02?.let {
|
||||
if (rightLight) {
|
||||
tv_light_top_02.text = requireContext().getString(R.string.bus_p_m1_close_light2)
|
||||
tv_light_top_02.isChecked = true
|
||||
if(!isFirst) ToastCharterUtils.showShort("打开顶灯2")
|
||||
} else {
|
||||
tv_light_top_02.text = requireContext().getString(R.string.bus_p_m1_open_light2)
|
||||
tv_light_top_02.isChecked = false
|
||||
if(!isFirst) ToastCharterUtils.showShort("关闭顶灯2")
|
||||
}
|
||||
}
|
||||
}
|
||||
fun setLightAtmosphereView(atmosphereLight: Boolean, isFirst: Boolean){
|
||||
tv_light_atmosphere?.let {
|
||||
if (atmosphereLight) {
|
||||
tv_light_atmosphere.text = requireContext().getString(R.string.bus_p_m1_close_atmosphere)
|
||||
tv_light_atmosphere.isChecked = true
|
||||
iv_bottom_light_setting.setImageResource(R.drawable.bus_p_function_atmosphere_select)
|
||||
if(!isFirst) ToastCharterUtils.showShort("打开氛围灯")
|
||||
} else {
|
||||
tv_light_atmosphere.text = requireContext().getString(R.string.bus_p_m1_open_atmosphere)
|
||||
tv_light_atmosphere.isChecked = false
|
||||
iv_bottom_light_setting.setImageResource(R.drawable.bus_p_function_atmosphere_nor)
|
||||
if(!isFirst) ToastCharterUtils.showShort("关闭氛围灯")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 灯的UI发生变化
|
||||
*/
|
||||
fun setLightView(leftLight: Boolean, rightLight: Boolean) {
|
||||
iv_top_light_setting?.let {
|
||||
if (leftLight && rightLight) {
|
||||
iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_middle_selected)// 都打开
|
||||
} else if (!leftLight && !rightLight) {
|
||||
iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_nor)// 都关闭
|
||||
} else {
|
||||
if (leftLight) {
|
||||
iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_select_left)// 左面开
|
||||
}
|
||||
if (rightLight) {
|
||||
iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_select_right)// 左面开
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// endregion
|
||||
|
||||
// region 声音
|
||||
private var mAudioManager: AudioManager? = null
|
||||
private var mMaxVolume: Int? = 100
|
||||
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
private fun setVoiceInfo() {
|
||||
val dp2px = AutoSizeUtils.dp2px(context, 26f)//进度条高度
|
||||
val color2CBFFC = ContextCompat.getColor(requireContext(), R.color.bus_p_m1_2cbffc)
|
||||
val color1060FF = ContextCompat.getColor(requireContext(), R.color.bus_p_m1_1060ff)
|
||||
val color96A5C2 = ContextCompat.getColor(requireContext(), R.color.bus_p_m1_96a5c2)
|
||||
val temp03 = MineGradientDrawable(color2CBFFC, color1060FF, dp2px)
|
||||
val scaleDrawable3 = ClipDrawable(temp03, Gravity.START, ClipDrawable.HORIZONTAL)
|
||||
val temp01 = MineGradientDrawable(color96A5C2, color96A5C2, dp2px)
|
||||
val arr = arrayOf(temp01, scaleDrawable3)
|
||||
val ld = LayerDrawable(arr)
|
||||
ld.setDrawableByLayerId(android.R.id.background, temp01)
|
||||
ld.setDrawableByLayerId(android.R.id.progress, scaleDrawable3)
|
||||
sb_voice_bar.setProgressDrawableTiled(ld)
|
||||
sb_voice_bar.max = 100
|
||||
sb_voice_bar.min = 5
|
||||
sb_voice_bar.setOnSeekBarChangeListener(object : OnSeekBarChangeListener {
|
||||
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
|
||||
tv_current_voice_value.text = "$progress%"
|
||||
if (fromUser) {
|
||||
mMaxVolume?.let {
|
||||
var currnetValue = ((progress.toFloat() / 100) * it).toInt()
|
||||
if (currnetValue <= 0) {
|
||||
currnetValue = 1
|
||||
}
|
||||
mAudioManager?.setStreamVolume(
|
||||
AudioManager.STREAM_MUSIC,
|
||||
currnetValue,
|
||||
AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE
|
||||
)
|
||||
}
|
||||
}
|
||||
if (progress == 0) {
|
||||
iv_voice.setImageResource(R.drawable.bus_p_function_voice_middle_select)
|
||||
iv_end_voice.setImageResource(R.drawable.bus_p_function_voice_min)
|
||||
} else {
|
||||
iv_voice.setImageResource(R.drawable.bus_p_function_voice_middle_selected)
|
||||
iv_end_voice.setImageResource(R.drawable.bus_p_function_voice_max)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun onStartTrackingTouch(seekBar: SeekBar?) {}
|
||||
override fun onStopTrackingTouch(seekBar: SeekBar?) {}
|
||||
})
|
||||
|
||||
context?.let {
|
||||
mAudioManager = it.getSystemService(Context.AUDIO_SERVICE) as AudioManager
|
||||
mMaxVolume = mAudioManager?.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
|
||||
val mCurrentVolume = mAudioManager?.getStreamVolume(AudioManager.STREAM_MUSIC)
|
||||
mMaxVolume?.let { max ->
|
||||
mCurrentVolume?.let { current ->
|
||||
if (current == 1) {
|
||||
sb_voice_bar.progress = 5
|
||||
tv_current_voice_value.text = "5%"
|
||||
} else {
|
||||
val fl = current.toFloat() / max * 100
|
||||
sb_voice_bar.progress = fl.toInt()
|
||||
tv_current_voice_value.text = "${fl.toInt()}%"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
// endregion
|
||||
|
||||
override fun createPresenter(): BusPassengerFunctionSoftPresenter =
|
||||
BusPassengerFunctionSoftPresenter(this)
|
||||
|
||||
override fun onDestroy() {
|
||||
mPresenter?.disposeSubscribe(subscribeLightTop1)
|
||||
mPresenter?.disposeSubscribe(subscribeLightTop2)
|
||||
mPresenter?.disposeSubscribe(subscribeAtmosphere)
|
||||
mPresenter?.disposeSubscribe(subscribeAnimator)
|
||||
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if(rg_setting_windspeed.checkedRadioButtonId!=0&&tv_aircondition_switch.isChecked){
|
||||
animator1?.start()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
animator1?.let {
|
||||
if(it.isRunning){
|
||||
it.pause()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDetach() {
|
||||
super.onDetach()
|
||||
animator1?.let {
|
||||
if(it.isRunning){
|
||||
it.end()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "M1SoftFragment"
|
||||
const val touchTagKey = 2
|
||||
const val touchTag = 2
|
||||
|
||||
@JvmStatic
|
||||
fun newInstance(): M1SoftFragment {
|
||||
val args = Bundle()
|
||||
val fragment = M1SoftFragment()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -76,6 +76,8 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
|
||||
private val TAG = "OrderInfoView"
|
||||
|
||||
private val touchTag = 2
|
||||
|
||||
private var viewModel: SoftControlViewModel? = null
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
@@ -177,7 +179,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
* 关闭暖风机
|
||||
*/
|
||||
private fun closeHeater() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "关闭暖风")
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭暖风")
|
||||
heaterAirEnable(true)
|
||||
viewModel?.closeHeader()
|
||||
}
|
||||
@@ -219,13 +221,13 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
* 开启暖风机
|
||||
*/
|
||||
private fun openHeater() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "打开暖风")
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开暖风")
|
||||
heaterAirEnable(false)
|
||||
closeAircondition()//关闭空调
|
||||
val switch: Int
|
||||
when (rg_setting_windspeed.checkedRadioButtonId) {
|
||||
R.id.rb_wind_speed_low -> {
|
||||
rb_wind_speed_middle.tag = M1SoftFragment.touchTag
|
||||
rb_wind_speed_middle.tag = touchTag
|
||||
rb_wind_speed_middle.toggle()
|
||||
switch = 1
|
||||
}
|
||||
@@ -239,7 +241,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
}
|
||||
|
||||
else -> {
|
||||
rb_wind_speed_middle.tag = M1SoftFragment.touchTag
|
||||
rb_wind_speed_middle.tag = touchTag
|
||||
rb_wind_speed_middle.toggle()
|
||||
switch = 1
|
||||
}
|
||||
@@ -254,7 +256,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
* 关闭空调
|
||||
*/
|
||||
private fun closeAircondition() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "关闭空调")
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭空调")
|
||||
var modeCmd = 0
|
||||
var windSpeedCmd = 0
|
||||
val temperatureCmd = currentTemperature?.value ?: 26
|
||||
@@ -297,7 +299,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
* 开启空调
|
||||
*/
|
||||
private fun openAircondition() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "打开空调")
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开空调")
|
||||
var modeCmd = 0
|
||||
var windSpeedCmd = 0
|
||||
val temperatureCmd = currentTemperature?.value ?: 26
|
||||
@@ -323,7 +325,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
private fun setCheckAir(adapter: TemperatureAdapter, tag: Temperature) {
|
||||
adapter.setCheckIndex(tag.index)
|
||||
currentTemperature = tag
|
||||
if (rv_aircondition_temperature.tag == M1SoftFragment.touchTag) {
|
||||
if (rv_aircondition_temperature.tag == touchTag) {
|
||||
rv_aircondition_temperature.tag = null
|
||||
return
|
||||
} else {
|
||||
@@ -554,7 +556,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
}
|
||||
// 模式调节
|
||||
rg_setting_pattern.setOnCheckedChangeListener { group, checkedId ->
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "调节模式")
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "调节模式")
|
||||
when (checkedId) {
|
||||
R.id.rb_pattern_heating -> {
|
||||
if (!rb_pattern_heating.isPressed) {
|
||||
@@ -723,7 +725,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
if (adapter is TemperatureAdapter) {
|
||||
adapter.data.forEach {
|
||||
if (it.value == temperatureCmd) {
|
||||
rv_aircondition_temperature.tag = M1SoftFragment.touchTag
|
||||
rv_aircondition_temperature.tag = touchTag
|
||||
UiThreadHandler.postDelayed({
|
||||
rv_aircondition_temperature?.smoothScrollToPosition(it.index)
|
||||
}, 500)
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.os.SystemClock
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.annotation.ColorRes
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import chassis.ChassisStatesOuterClass
|
||||
@@ -64,6 +65,10 @@ class StatusBarView @JvmOverloads constructor(
|
||||
isFocusable = true
|
||||
}
|
||||
|
||||
fun setBackgroudColor(@ColorRes color:Int){
|
||||
setBackgroundColor(ContextCompat.getColor(context,color))
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
post {
|
||||
|
||||
@@ -1,163 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.ui.video
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.bean.TaxiPassengerVideoPlay
|
||||
import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionVideoPresenter
|
||||
import com.mogo.och.bus.passenger.ui.video.adapter.RecyclerVideoAdapter
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.CarouselLayoutManager
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.CarouselZoomPostLayoutListener
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.CenterScrollListener
|
||||
import com.shuyu.gsyvideoplayer.video.base.GSYVideoView
|
||||
import kotlinx.android.synthetic.main.m1_video_fragment.*
|
||||
import kotlin.math.floor
|
||||
|
||||
/**
|
||||
* @author: yangyakun
|
||||
* @date: 2023/1/28
|
||||
*/
|
||||
class M1VideoFragment :
|
||||
MvpFragment<M1VideoFragment?, BusPassengerFunctionVideoPresenter?>() {
|
||||
|
||||
private val arrayListOf = ArrayList<TaxiPassengerVideoPlay>()
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.m1_video_fragment
|
||||
}
|
||||
|
||||
override fun getTagName(): String {
|
||||
return TAG
|
||||
}
|
||||
|
||||
override fun initViews() {
|
||||
initConsultData()
|
||||
val carouselLayoutManager =
|
||||
CarouselLayoutManager(
|
||||
CarouselLayoutManager.HORIZONTAL,
|
||||
true
|
||||
)
|
||||
carouselLayoutManager.setPostLayoutListener(CarouselZoomPostLayoutListener())
|
||||
carouselLayoutManager.maxVisibleItems = 1
|
||||
rvVideoPlaylist.addOnScrollListener(object : CenterScrollListener() {
|
||||
var prePlayerPosition = 0
|
||||
override fun pageSelect(recyclerView: RecyclerView?, newState: Int) {
|
||||
//播放视频
|
||||
val (centerItemPosition: kotlin.Int, player) = getPlayer(carouselLayoutManager)
|
||||
if (player is ConsultVideoPlayer) {
|
||||
if (prePlayerPosition != centerItemPosition) {
|
||||
if (player.currentState == GSYVideoView.CURRENT_STATE_PAUSE) {
|
||||
player.onVideoReset()
|
||||
}
|
||||
val playerHolder =
|
||||
carouselLayoutManager.findViewByPosition(prePlayerPosition)
|
||||
val prePlayer =
|
||||
playerHolder?.findViewById<ConsultVideoPlayer>(R.id.video_item_player)
|
||||
prePlayer?.onVideoReset()
|
||||
val taxiPassengerVideoPlay = arrayListOf[centerItemPosition]
|
||||
setBackageAndPlayNext(taxiPassengerVideoPlay)
|
||||
} else {
|
||||
player.onVideoResume(false)
|
||||
}
|
||||
}
|
||||
prePlayerPosition = centerItemPosition
|
||||
}
|
||||
|
||||
override fun pageStop() {
|
||||
val (_, player) = getPlayer(carouselLayoutManager)
|
||||
if (player is ConsultVideoPlayer) {
|
||||
player.onVideoPause()
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
carouselLayoutManager.addOnDargAutoDiffListener { adapterPosition, currentPosition ->
|
||||
val fl = adapterPosition - floor(adapterPosition)
|
||||
var currentIndex = currentPosition
|
||||
if (fl > 0.5) {
|
||||
if (currentPosition == 0) {
|
||||
currentIndex = rvVideoPlaylist?.adapter!!.itemCount - 1
|
||||
} else {
|
||||
currentIndex -= 1
|
||||
}
|
||||
}
|
||||
}
|
||||
val recyclerVideoAdapter =
|
||||
RecyclerVideoAdapter(
|
||||
requireContext(),
|
||||
arrayListOf,
|
||||
rvVideoPlaylist
|
||||
)
|
||||
recyclerVideoAdapter.setOnThumbImageClilckListener {
|
||||
val (_, player) = getPlayer(carouselLayoutManager)
|
||||
if (player is ConsultVideoPlayer) {
|
||||
player.onVideoReset()
|
||||
player.thumbImageViewLayout.visibility = View.VISIBLE
|
||||
}
|
||||
rvVideoPlaylist?.smoothScrollToPosition(it)
|
||||
}
|
||||
rvVideoPlaylist?.layoutManager = carouselLayoutManager
|
||||
rvVideoPlaylist?.setHasFixedSize(true)
|
||||
rvVideoPlaylist?.adapter = recyclerVideoAdapter
|
||||
}
|
||||
|
||||
private fun getPlayer(carouselLayoutManager: CarouselLayoutManager): Pair<Int, ConsultVideoPlayer?> {
|
||||
val centerItemPosition: Int = carouselLayoutManager.centerItemPosition
|
||||
val playerHolder = carouselLayoutManager.findViewByPosition(centerItemPosition)
|
||||
val player = playerHolder?.findViewById<ConsultVideoPlayer>(R.id.video_item_player)
|
||||
return Pair(centerItemPosition, player)
|
||||
}
|
||||
|
||||
private fun setBackageAndPlayNext(taxiPassengerVideoPlay: TaxiPassengerVideoPlay) {
|
||||
// 设置背景图片
|
||||
}
|
||||
|
||||
private fun initConsultData() {
|
||||
arrayListOf.clear()
|
||||
arrayListOf.add(
|
||||
TaxiPassengerVideoPlay(
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708596763/全车型混剪增加红旗车队.m4v",
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969511280/车队.png",
|
||||
"蘑菇车联覆盖生活的方方面面"
|
||||
)
|
||||
)
|
||||
arrayListOf.add(
|
||||
TaxiPassengerVideoPlay(
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708554279/红旗车队.m4v",
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969553174/红旗重新排版.png",
|
||||
"蘑菇车联之红旗车队"
|
||||
)
|
||||
)
|
||||
arrayListOf.add(
|
||||
TaxiPassengerVideoPlay(
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708499497/大运会合作解说版.m4v",
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969536177/大运会.png",
|
||||
"蘑菇车联牵手成都大运会"
|
||||
)
|
||||
)
|
||||
arrayListOf.add(
|
||||
TaxiPassengerVideoPlay(
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708409810/20210610重新排版3屏.m4v",
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969579713/三屏.png",
|
||||
"多视角体验蘑菇车联自动驾驶"
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun createPresenter(): BusPassengerFunctionVideoPresenter {
|
||||
return BusPassengerFunctionVideoPresenter(this)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "M1VideoFragment"
|
||||
@JvmStatic
|
||||
fun newInstance(): M1VideoFragment {
|
||||
val args = Bundle()
|
||||
val fragment = M1VideoFragment()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 67 KiB |
@@ -32,6 +32,7 @@
|
||||
android:id="@+id/aciv_screen_unlock_ani"
|
||||
android:layout_width="@dimen/dp_90"
|
||||
android:layout_height="@dimen/dp_90"
|
||||
android:src="@drawable/open_lock_000"
|
||||
app:layout_constraintTop_toTopOf="@+id/aciv_screen_lock_bg"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_screen_lock_bg"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_screen_lock_bg"
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
android:layout_height="match_parent"
|
||||
app:bottomPadding="200"
|
||||
app:carDrawable="@drawable/bug_p_overmap_car_model"
|
||||
app:compassDrawable="@drawable/charter_p_car_light"
|
||||
app:isClearArrived="true"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
<color name="bus_p_m1_91EFF6FF">#91EFF6FF</color>
|
||||
<color name="bus_p_m1_CCFFFFFF">#CCFFFFFF</color>
|
||||
<color name="bus_p_m1_80ffffff">#80FFFFFF</color>
|
||||
<color name="bus_p_m1_40ffffff">#40FFFFFF</color>
|
||||
<color name="bus_p_m1_f0e0efff">#F0E0EFFF </color>
|
||||
<color name="bus_p_m1_66000000">#66000000</color>
|
||||
</resources>
|
||||
@@ -151,16 +151,6 @@
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--隐藏态下的 美化模式按钮-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.switch.DemoModeHiddenSwitch
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="100dp"
|
||||
android:layout_marginStart="40dp"
|
||||
android:layout_marginBottom="200dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
tools:ignore="SpeakableTextPresentCheck" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/module_mogo_och_autopilot_status"
|
||||
android:layout_width="@dimen/module_mogo_och_autopilot_status_bg_width"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.taxi.passenger.widget.animutils
|
||||
package com.mogo.och.common.module.utils
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.BitmapFactory
|
||||
@@ -9,7 +9,7 @@ import android.widget.ImageView
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import java.lang.ref.SoftReference
|
||||
|
||||
class AnimationsContainer(resId: Int, fps: Int, imageView: ImageView) {
|
||||
class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFirstFrame:Boolean = true){
|
||||
private lateinit var mFrames: IntArray // 帧数组
|
||||
private var mIndex = 0 // 当前帧
|
||||
private var mShouldRun = false // 开始/停止播放用
|
||||
@@ -22,10 +22,10 @@ class AnimationsContainer(resId: Int, fps: Int, imageView: ImageView) {
|
||||
private var mBitmapOptions: BitmapFactory.Options? = null //Bitmap管理类,可有效减少Bitmap的OOM问题
|
||||
|
||||
init {
|
||||
createAnimation(imageView, getData(resId), fps)
|
||||
createAnimation(imageView, getData(resId), fps,initFirstFrame)
|
||||
}
|
||||
|
||||
private fun createAnimation(imageView: ImageView, frames: IntArray, fps: Int) {
|
||||
private fun createAnimation(imageView: ImageView, frames: IntArray, fps: Int, initFirstFrame:Boolean) {
|
||||
mHandler = Handler(Looper.myLooper()!!)
|
||||
mFrames = frames
|
||||
mIndex = -1
|
||||
@@ -33,7 +33,9 @@ class AnimationsContainer(resId: Int, fps: Int, imageView: ImageView) {
|
||||
mShouldRun = false
|
||||
mIsRunning = false
|
||||
mDelayMillis = 1000 / fps //帧动画时间间隔,毫秒
|
||||
imageView.setImageResource(mFrames[0])
|
||||
if(initFirstFrame) {
|
||||
imageView.setImageResource(mFrames[0])
|
||||
}
|
||||
|
||||
// 当图片大小类型相同时进行复用,避免频繁GC
|
||||
val bmp = (imageView.drawable as BitmapDrawable).bitmap
|
||||
@@ -12,6 +12,7 @@ import android.view.animation.LinearInterpolator
|
||||
import android.widget.RelativeLayout
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.R
|
||||
import com.mogo.och.common.module.utils.SoundPoolHelper
|
||||
import kotlinx.android.synthetic.main.start_autopilot_animation_view.view.startAutopilotTip
|
||||
@@ -28,7 +29,7 @@ class StartAutopilotAnimationView @JvmOverloads constructor(
|
||||
|
||||
companion object {
|
||||
private const val ALL_CLOSE_TIMER = 5000L
|
||||
private const val TAG = "V2XWarningView"
|
||||
private const val TAG = "StartAutopilotAnimationView"
|
||||
}
|
||||
|
||||
private var startTimer: CountDownTimer? = null
|
||||
@@ -77,7 +78,6 @@ class StartAutopilotAnimationView @JvmOverloads constructor(
|
||||
* @see WarningDirectionEnum
|
||||
*/
|
||||
private fun showWarning(direction: DirectionEnum, time: Long = ALL_CLOSE_TIMER) {
|
||||
|
||||
//开始倒计时
|
||||
countDownTimer()
|
||||
|
||||
@@ -146,18 +146,24 @@ class StartAutopilotAnimationView @JvmOverloads constructor(
|
||||
|
||||
private fun countDownTimer() {
|
||||
|
||||
startAutopilotTip.visibility = VISIBLE
|
||||
|
||||
startTimer = object : CountDownTimer(ALL_CLOSE_TIMER, 1000L) {// 5倒计时后开启自驾
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun onTick(millisUntilFinished: Long) {
|
||||
// 倒计时
|
||||
startAutopilotTip.text = "${(millisUntilFinished/1000).toInt()} 车辆即将自动开启自动驾驶"
|
||||
UiThreadHandler.post {
|
||||
startAutopilotTip.text = "${(millisUntilFinished/1000).toInt()} 车辆即将自动开启自动驾驶"
|
||||
}
|
||||
playDI()
|
||||
}
|
||||
|
||||
override fun onFinish() {
|
||||
//倒计时结束了...
|
||||
startAutopilotTip.text = "车辆正在自动开启自动驾驶"
|
||||
UiThreadHandler.post {
|
||||
startAutopilotTip.text = "车辆正在自动开启自动驾驶"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,15 +3,7 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<!--上方闪烁且有文字-->
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/startAutopilotTip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:visibility="gone"
|
||||
android:textSize="@dimen/dp_34"
|
||||
android:textColor="@android:color/white"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/startAutopilotTipImg"
|
||||
android:layout_width="match_parent"
|
||||
@@ -19,4 +11,16 @@
|
||||
android:background="@drawable/start_autopilot_animation_bkg_top"
|
||||
android:visibility="gone"
|
||||
tools:visibility="invisible" />
|
||||
|
||||
<!--上方闪烁且有文字-->
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/startAutopilotTip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:visibility="gone"
|
||||
android:textStyle="bold"
|
||||
android:textSize="@dimen/dp_42"
|
||||
android:textColor="@android:color/white"/>
|
||||
</FrameLayout>
|
||||
@@ -131,16 +131,6 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<!--隐藏态下的 美化模式按钮-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.switch.DemoModeHiddenSwitch
|
||||
android:id="@+id/viewDemoModeSwitch"
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="100dp"
|
||||
android:layout_marginStart="40dp"
|
||||
android:layout_marginBottom="200dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<!--工具箱-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.tools.ToolsImageView
|
||||
android:id="@+id/ivToolsView"
|
||||
|
||||
@@ -151,16 +151,6 @@
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--隐藏态下的 美化模式按钮-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.switch.DemoModeHiddenSwitch
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="100dp"
|
||||
android:layout_marginStart="40dp"
|
||||
android:layout_marginBottom="200dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
tools:ignore="SpeakableTextPresentCheck" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/module_mogo_och_autopilot_status"
|
||||
android:layout_width="@dimen/module_mogo_och_autopilot_status_bg_width"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.taxi.passenger.ui
|
||||
package com.mogo.och.taxi.passenger.ui.systemsetting
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
@@ -10,14 +10,12 @@ import android.media.AudioManager
|
||||
import android.provider.Settings
|
||||
import android.text.TextUtils
|
||||
import android.util.AttributeSet
|
||||
import android.util.Log
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.SeekBar
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.isVisible
|
||||
import com.mogo.commons.module.intent.IMogoIntentListener
|
||||
import com.mogo.commons.module.intent.IntentManager
|
||||
import com.mogo.commons.module.receiver.MogoReceiver
|
||||
@@ -1,18 +0,0 @@
|
||||
package com.mogo.och.taxi.base
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.Fragment
|
||||
|
||||
abstract class BaseUiFragment : Fragment() {
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
initView(view, savedInstanceState)
|
||||
initData(savedInstanceState)
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
}
|
||||
|
||||
abstract fun initView(view: View, savedInstanceState: Bundle?)
|
||||
abstract fun initData(savedInstanceState: Bundle?)
|
||||
|
||||
}
|
||||
@@ -44,7 +44,8 @@ data class OrderDetail(
|
||||
}
|
||||
}
|
||||
|
||||
data class Site(var siteId: Long, var siteName: String, var gcjLat: Double, var gcjLon: Double) {
|
||||
data class Site(var siteId: Long, var siteName: String, var gcjLat: Double, var gcjLon: Double,
|
||||
var wgs84Lon: Double, var wgs84Lat: Double) {
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (this === other) return true
|
||||
if (javaClass != other?.javaClass) return false
|
||||
@@ -55,6 +56,8 @@ data class Site(var siteId: Long, var siteName: String, var gcjLat: Double, var
|
||||
if (siteName != other.siteName) return false
|
||||
if (gcjLat != other.gcjLat) return false
|
||||
if (gcjLon != other.gcjLon) return false
|
||||
if (wgs84Lon != other.wgs84Lon) return false
|
||||
if (wgs84Lat != other.wgs84Lat) return false
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -92,7 +95,7 @@ data class StartTaskReqBean(var sn: String, var lineId: Long)
|
||||
|
||||
data class ArriveSiteReqBean(var sn: String, var siteId: Long)
|
||||
data class PrepareTaskReqBean(var sn: String, var siteId: Long)
|
||||
data class PrepareTaskRespBean(var data: Result): BaseData(){ //taskType 1:虚拟任务 2:接驾任务3:送驾任务
|
||||
data class PrepareTaskRespBean(var data: Result?): BaseData(){ //taskType 1:虚拟任务 2:接驾任务3:送驾任务
|
||||
data class Result(
|
||||
var lineId: Long, var cityCode: Int, var taskType: Int,
|
||||
var startSite: Site, var endSite: Site
|
||||
@@ -103,11 +106,13 @@ data class JumpPassengerCheckReqBean(var sn: String, var orderNo: String)
|
||||
data class CancelOrderReqBean(var sn: String, var orderNo: String, var cancelType: Int)
|
||||
data class OrderCompletedReqBean(var sn: String, var orderNo: String)
|
||||
data class QueryCarOrderByNoReqBean(var sn: String, var orderNo: String)
|
||||
data class QueryCarOrderByNoRespBean(
|
||||
var sn: String, var orderNo: String, var orderStatus: Int,
|
||||
var bookingUserPhone: String, var businessType: String,
|
||||
var mileage: Float,var duration: Int
|
||||
): BaseData()
|
||||
data class QueryCarOrderByNoRespBean(var data: Result): BaseData(){
|
||||
data class Result(
|
||||
var sn: String, var orderNo: String, var orderStatus: Int,
|
||||
var bookingUserPhone: String, var businessType: String,
|
||||
var mileage: Float,var duration: Float,var passengerSize: Int
|
||||
)
|
||||
}
|
||||
|
||||
data class ContrailListRespBean(var data: MutableList<Result>?) //轨迹路线集合
|
||||
: BaseData() {
|
||||
|
||||
@@ -65,6 +65,7 @@ import com.mogo.och.common.module.voice.VoiceNotice
|
||||
import com.mogo.och.taxi.bean.ContrailListRespBean
|
||||
import com.mogo.och.taxi.bean.OrderDetail
|
||||
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
|
||||
import com.mogo.och.taxi.bean.Site
|
||||
import com.mogo.och.taxi.bean.StartServiceRespBean
|
||||
import com.mogo.och.taxi.callback.IOCHTaxiAutopilotPlanningCallback
|
||||
import com.mogo.och.taxi.callback.ITaxiADASStatusCallback
|
||||
@@ -271,6 +272,11 @@ object TaxiModel {
|
||||
return valueOf(order.orderStatus)
|
||||
}
|
||||
|
||||
fun getCurTaskStatus(): Int? {
|
||||
if (mCurrentTaskAndOrder == null) TaskStatusEnum.None
|
||||
return mCurrentTaskAndOrder?.currentStatus
|
||||
}
|
||||
|
||||
fun getCurTaskAndOrder(): QueryCurrentTaskRespBean.Result? {
|
||||
return mCurrentTaskAndOrder
|
||||
}
|
||||
@@ -371,7 +377,7 @@ object TaxiModel {
|
||||
}
|
||||
}
|
||||
|
||||
//检测当前订单
|
||||
//检测当前任务
|
||||
fun checkCurrentTask(): Boolean {
|
||||
return mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.startSite != null
|
||||
&& mCurrentTaskAndOrder!!.endSite != null
|
||||
@@ -477,10 +483,10 @@ object TaxiModel {
|
||||
|
||||
val parameters = AutopilotControlParameters()
|
||||
|
||||
val startWgsLon = mCurrentTaskAndOrder!!.startSite!!.gcjLon
|
||||
val startWgsLat = mCurrentTaskAndOrder!!.startSite!!.gcjLat
|
||||
val endWgsLon = mCurrentTaskAndOrder!!.endSite!!.gcjLon
|
||||
val endWgsLat = mCurrentTaskAndOrder!!.endSite!!.gcjLat
|
||||
val startWgsLon = mCurrentTaskAndOrder!!.startSite!!.wgs84Lon
|
||||
val startWgsLat = mCurrentTaskAndOrder!!.startSite!!.wgs84Lat
|
||||
val endWgsLon = mCurrentTaskAndOrder!!.endSite!!.wgs84Lon
|
||||
val endWgsLat = mCurrentTaskAndOrder!!.endSite!!.wgs84Lat
|
||||
parameters.vehicleType = BUSINESSTYPE
|
||||
parameters.startName = mCurrentTaskAndOrder!!.startSite!!.siteName // 8.10 拼音首字母大写 改为直接传中文
|
||||
parameters.endName = mCurrentTaskAndOrder!!.endSite!!.siteName // 8.10 拼音首字母大写 改为直接传中文
|
||||
@@ -679,10 +685,10 @@ object TaxiModel {
|
||||
|
||||
//3、刚过站且过站距离在15m内, 提交到站
|
||||
if (stationAngle > 90 && distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) {
|
||||
if ((!checkCurrentOrder()
|
||||
|| (getCurOrderStatus() === TaxiOrderStatusEnum.ArriveAtEnd))
|
||||
if ((!checkCurrentTask()
|
||||
|| (getCurTaskStatus() == TaskStatusEnum.StartTask.code))
|
||||
) {
|
||||
i(SceneConstant.M_TAXI + TAG, "order exception or order ArriveAtEnd")
|
||||
i(SceneConstant.M_TAXI + TAG, "task null or TaskStatus = ${getCurTaskStatus()}")
|
||||
return
|
||||
}
|
||||
i(SceneConstant.M_TAXI + TAG, "judgeEndStation() = 刚过站且在15m内")
|
||||
@@ -720,16 +726,6 @@ object TaxiModel {
|
||||
}
|
||||
arriveSite(mUntruthTask!!.siteId, false)
|
||||
}
|
||||
/**
|
||||
* 订单流转debug START
|
||||
*/
|
||||
fun setArriveAtStartStation() {
|
||||
if (!checkCurrentTask()) {
|
||||
ToastUtils.showShort("订单状态不匹配该操作!")
|
||||
return
|
||||
}
|
||||
arriveSite(mCurrentTaskAndOrder?.startSite!!.siteId, false)
|
||||
}
|
||||
|
||||
fun setArriveAtEndStation() {
|
||||
if (!checkCurrentTask()) {
|
||||
@@ -744,7 +740,14 @@ object TaxiModel {
|
||||
ToastUtils.showShort("无任务!")
|
||||
return
|
||||
}
|
||||
mCurrentTaskAndOrder?.lineId?.let { startTask(it) }
|
||||
|
||||
//当前订单状态若为20 , 则使用的lineId为订单信息的
|
||||
mCurrentTaskAndOrder?.let { startTask(
|
||||
if (it.order != null && it.order!!.orderStatus >= TaxiOrderStatusEnum.ArriveAtStart.code)
|
||||
it.order!!.orderLine
|
||||
else
|
||||
it.lineId
|
||||
) }
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.biz.constant.LoginStatusManager
|
||||
import com.mogo.och.common.module.biz.constant.LoginStatusManager.isLogin
|
||||
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.utils.ToastUtilsOch
|
||||
import com.mogo.och.common.module.voice.VoiceNotice
|
||||
@@ -29,6 +30,7 @@ import com.mogo.och.taxi.constant.TaskTypeEnum
|
||||
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
|
||||
import com.mogo.och.taxi.constant.TaxiUnmannedConst
|
||||
import com.mogo.och.taxi.constant.TaxtServingStatusManager
|
||||
import com.mogo.och.taxi.constant.TaxtServingStatusManager.isOpeningOrderStatus
|
||||
import com.mogo.och.taxi.network.CarServiceManager
|
||||
import com.mogo.och.taxi.network.CarServiceManager.cancelOrder
|
||||
import com.mogo.och.taxi.network.CarServiceManager.contrailList
|
||||
@@ -270,6 +272,7 @@ class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
}
|
||||
|
||||
private fun queryCurrentTaskOnce(){
|
||||
if (!LoginStatusManager.isLogin()) return // 未登陆则不去查询
|
||||
CarServiceManager.queryCurrentTask(AbsMogoApplication.getApp().applicationContext,
|
||||
object : OchCommonServiceCallback<QueryCurrentTaskRespBean> {
|
||||
override fun onSuccess(data: QueryCurrentTaskRespBean?) {
|
||||
@@ -287,13 +290,14 @@ class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order!= null &&
|
||||
result != null && result.order == null) {
|
||||
//本地根据订单 orderNo 去查询下(乘客取消订单)
|
||||
d(TAG, "queryCurrentTaskOnce1 = result order is empty, query order by orderNo!")
|
||||
queryCurrentOrderStatusByNo(mCurrentTaskAndOrder!!.order!!.orderNo)
|
||||
return
|
||||
}
|
||||
|
||||
//订单或者伪任务更新, 都去刷新下界面
|
||||
if (mCurrentTaskAndOrder == null || !mCurrentTaskAndOrder!!.equals(result)){
|
||||
|
||||
d(TAG, "queryCurrentTaskOnce1 = mCurrentTaskAndOrder update " )
|
||||
if (result == null) return
|
||||
|
||||
if (result.endSite == null && result.order == null){
|
||||
@@ -302,32 +306,45 @@ class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
TaxiModel.updateCurrentTaskAndOrder(null)
|
||||
}
|
||||
|
||||
//当前任务完成且订单状态到达乘客上车点, 则立马去拉取任务 不再等30s,否则送驾任务要等30s后才能去执行
|
||||
if (result.currentStatus == TaskStatusEnum.CompleteTask.code){
|
||||
startPrepareTask(result.endSite!!.siteId)
|
||||
if (result.order != null && result.order!!.orderStatus
|
||||
== TaxiOrderStatusEnum.ArriveAtStart.code){
|
||||
pullTask(result.endSite!!.siteId)
|
||||
d(TAG, "queryCurrentTaskOnce1 = pullTask" )
|
||||
|
||||
}else{
|
||||
startPrepareTask30S(result.endSite!!.siteId)
|
||||
d(TAG, "queryCurrentTaskOnce1 = startPrepareTask30S" )
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
mCurrentTaskAndOrder = result
|
||||
TaxiModel.updateCurrentTaskAndOrder(result)
|
||||
TaxiModel.updateStation()
|
||||
updateTaskAndOrderUi()
|
||||
|
||||
if (result.order != null && result.order!!.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code){
|
||||
queryCurrentOrderStatusByNo(mCurrentTaskAndOrder!!.order!!.orderNo) //查询全程里程和用时,更新
|
||||
d(TAG, "queryCurrentTaskOnce1 = ArriveAtEnd query mileage and duration")
|
||||
queryCurrentOrderStatusByNo(result.order!!.orderNo) //查询全程里程和用时,更新
|
||||
}
|
||||
|
||||
//根据lineId集合去查轨迹集合, 返回的只是接驾任务的line集合,没有送驾任务
|
||||
if (result.order != null && result.order!!.orderStatus <= TaxiOrderStatusEnum.OnTheWayToEnd.code){
|
||||
var lines = result.order!!.planningLines
|
||||
lines[lines.size] = result.order!!.orderLine
|
||||
lines = lines.plus(result.order!!.orderLine)
|
||||
d(TAG, "queryCurrentTaskOnce1 = by lineIds query Contrails" )
|
||||
queryOrderPickUpContrails(lines)
|
||||
}
|
||||
|
||||
if (result.currentStatus <= TaskStatusEnum.StartTask.code){//任务执行中, 去加载下轨迹
|
||||
d(TAG, "queryCurrentTaskOnce1 = by lineId query Contrail" )
|
||||
TaxiModel.queryTaskContrail(Array(1) {result.lineId})
|
||||
}
|
||||
|
||||
if (result.taskType <= TaskTypeEnum.ToOrderStartTask.code
|
||||
&& result.currentStatus == TaskStatusEnum.GetTask.code){//自动去启动自驾
|
||||
d(TAG, "queryCurrentTaskOnce1 = autoStartDriving" )
|
||||
TaxiModel.autoStartDriving()
|
||||
}
|
||||
}
|
||||
@@ -367,21 +384,25 @@ class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
queryCarOrderByOrderNo(mContext,orderNo,
|
||||
object : OchCommonServiceCallback<QueryCarOrderByNoRespBean>{
|
||||
override fun onSuccess(data: QueryCarOrderByNoRespBean?) {
|
||||
if (data != null && data.code != 0) return
|
||||
if (data!!.orderStatus == TaxiOrderStatusEnum.Cancel.code){
|
||||
d(SceneConstant.M_TAXI + TAG, "queryCurrentOrderStatusByNo data = " +
|
||||
GsonUtil.jsonFromObject(data))
|
||||
if (data == null || data.code != 0) return
|
||||
if (data.data.orderStatus == TaxiOrderStatusEnum.Cancel.code){
|
||||
VoiceNotice.showNotice("乘客已经取消")
|
||||
mCurrentTaskAndOrder = null
|
||||
updateTaskAndOrderUi()
|
||||
updateNoTaskAndOrderUi()
|
||||
TaxiModel.cancelAutopilot()
|
||||
return
|
||||
}
|
||||
if (data.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code){//到站
|
||||
updateOrderMileAndDur(data.mileage,data.duration)
|
||||
if (data.data.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code){//到站
|
||||
//结束导航
|
||||
updateOrderMileAndDur(data.data.mileage,data.data.duration.toInt())
|
||||
return
|
||||
}
|
||||
if (data.orderStatus == TaxiOrderStatusEnum.JourneyCompleted.code){//完成
|
||||
if (data.data.orderStatus == TaxiOrderStatusEnum.JourneyCompleted.code){//完成
|
||||
//获取新的任务
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.endSite != null){
|
||||
startPrepareTask(mCurrentTaskAndOrder!!.endSite!!.siteId)
|
||||
startPrepareTask30S(mCurrentTaskAndOrder!!.endSite!!.siteId)
|
||||
}
|
||||
mCurrentTaskAndOrder = null
|
||||
updateNoTaskAndOrderUi()
|
||||
@@ -407,28 +428,37 @@ class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
}
|
||||
}
|
||||
|
||||
private fun startPrepareTask(siteId: Long) {
|
||||
private fun startPrepareTask30S(siteId: Long) {
|
||||
UiThreadHandler.postDelayed({
|
||||
CarServiceManager.prepareTask(
|
||||
mContext,
|
||||
siteId,
|
||||
object : OchCommonServiceCallback<PrepareTaskRespBean> {
|
||||
override fun onSuccess(data: PrepareTaskRespBean?) {
|
||||
d(SceneConstant.M_TAXI + TAG, "prepareTask = " + GsonUtil.jsonFromObject(data))
|
||||
if (data == null || data.code != 0) return
|
||||
//去下载轨迹, 下发给工控机下载
|
||||
TaxiModel.queryTaskContrail(Array(1) {data.data.lineId})
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
d(SceneConstant.M_TAXI + TAG, "$code $msg")
|
||||
startPrepareTask(siteId) //失败后30s再次调用获取下一任务
|
||||
}
|
||||
|
||||
})
|
||||
if (isLogin() && isOpeningOrderStatus()){
|
||||
pullTask(siteId)
|
||||
}
|
||||
}, TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL)
|
||||
}
|
||||
|
||||
private fun pullTask(siteId: Long) {
|
||||
CarServiceManager.prepareTask(
|
||||
mContext,
|
||||
siteId,
|
||||
object : OchCommonServiceCallback<PrepareTaskRespBean> {
|
||||
override fun onSuccess(data: PrepareTaskRespBean?) {
|
||||
d(SceneConstant.M_TAXI + TAG, "prepareTask = " + GsonUtil.jsonFromObject(data)
|
||||
+ ", isOpeningOrderStatus = ${isOpeningOrderStatus()}")
|
||||
if (data?.data == null || data.code != 0) return
|
||||
//去下载轨迹, 下发给工控机下载
|
||||
TaxiModel.queryTaskContrail(Array(1) {data.data!!.lineId})
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
d(SceneConstant.M_TAXI + TAG, "$code $msg")
|
||||
if (isLogin() && isOpeningOrderStatus()){
|
||||
startPrepareTask30S(siteId) //失败后30s再次调用获取下一任务
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
private fun startInAndWaitCurrentTaskLoop() {
|
||||
if (mInAndWaitServiceDisposable != null && !mInAndWaitServiceDisposable!!.isDisposed) {
|
||||
|
||||
@@ -128,7 +128,7 @@ object CarServiceManager {
|
||||
mOCHTaxiServiceApi.queryCarOrderByOrderNo(
|
||||
data = QueryCarOrderByNoReqBean(MoGoAiCloudClientConfig.getInstance().sn, orderNo)
|
||||
).transformTry()
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "jumpPassengerCheck"))
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "queryCarOrderByOrderNo"))
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -9,7 +9,6 @@ import android.os.Bundle
|
||||
import android.text.Html
|
||||
import android.view.View
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.core.text.HtmlCompat
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.amap.api.navi.model.NaviLatLng
|
||||
@@ -19,8 +18,10 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getOverlayManager
|
||||
import com.mogo.eagle.core.network.utils.GsonUtil
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI
|
||||
import com.mogo.eagle.core.utilcode.util.DateTimeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
@@ -35,7 +36,6 @@ import com.mogo.och.common.module.voice.VoiceNotice.showNotice
|
||||
import com.mogo.och.common.module.wigets.OCHCommitDialog
|
||||
import com.mogo.och.taxi.R
|
||||
import com.mogo.och.taxi.bean.OrderDetail
|
||||
import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean
|
||||
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
|
||||
import com.mogo.och.taxi.bean.StartServiceRespBean
|
||||
import com.mogo.och.taxi.constant.TaskStatusEnum
|
||||
@@ -51,12 +51,14 @@ import com.mogo.och.taxi.ui.unmanned.TaskAndOrderUiState
|
||||
import com.mogo.och.taxi.ui.unmanned.UnmannedIntent
|
||||
import kotlinx.android.synthetic.main.taxi_no_data_common_view.noOrderDataTv
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.cancelOrder
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.endPoint
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.endStationName
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.mBeingOrderLayout
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.naviToEnd
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.naviToStart
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.noTaskData
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.orderPhoneAndNum
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.startPoint
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.startStationName
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.taskClickBtn
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.taskOtherInfo
|
||||
@@ -135,7 +137,7 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
updateUntruthTask(taskAndOrderUiState.untruthTask)
|
||||
}else{
|
||||
updateReserveOrderChanged(taskAndOrderUiState.taskAndOrder)
|
||||
updateCurrentOrderStatusChanged(taskAndOrderUiState.taskAndOrder)
|
||||
updateCurrentTaskAndOrderStatusChanged(taskAndOrderUiState.taskAndOrder)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,7 +152,7 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private fun updateOrderTotalMilAndDur(mileage: Float, duration: Int) {
|
||||
val strHtml2 =
|
||||
("<font color=\"#CAD6FF\">总里程 </font>" + "<font color=\"#FFFFFF\"> $mileage </font>" + "<font color=\"#CAD6FF\"> 公里 </font>"
|
||||
("<font color=\"#CAD6FF\">全程 </font>" + "<font color=\"#FFFFFF\"> $mileage </font>" + "<font color=\"#CAD6FF\"> 公里 </font>"
|
||||
+ "<font color=\"#CAD6FF\">,总用时 </font>" + "<font color=\"#FFFFFF\"> $duration </font>" + "<font color=\"#CAD6FF\"> 分钟</font>")
|
||||
taskOtherInfo.text = Html.fromHtml(strHtml2,Html.FROM_HTML_MODE_LEGACY)
|
||||
}
|
||||
@@ -185,6 +187,17 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
taskStatus.text = resources.getString(R.string.task_start_to_virtual_site)
|
||||
startStationName.text = resources.getString(R.string.task_current_loc)
|
||||
endStationName.text = siteName
|
||||
setPointBlueGreen()
|
||||
}
|
||||
|
||||
private fun setPointBlueGreen(){
|
||||
startPoint.setImageResource(R.drawable.taxi_driver_circle_blue_big)
|
||||
endPoint.setImageResource(R.drawable.taxi_driver_circle_green_big)
|
||||
}
|
||||
|
||||
private fun setPointGreenBlue(){
|
||||
startPoint.setImageResource(R.drawable.taxi_driver_circle_green_big)
|
||||
endPoint.setImageResource(R.drawable.taxi_driver_circle_blue_big)
|
||||
}
|
||||
|
||||
private fun updateUntruthTaskView() {
|
||||
@@ -236,7 +249,7 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
*/
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
@SuppressLint("SetTextI18n", "UseCompatLoadingForDrawables")
|
||||
fun updateCurrentOrderStatusChanged(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
|
||||
fun updateCurrentTaskAndOrderStatusChanged(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
|
||||
if (taskAndOrder == null) return
|
||||
if (taskAndOrder.endSite == null && taskAndOrder.order == null){
|
||||
isHaveBeingOrder(false)
|
||||
@@ -265,6 +278,7 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
updateUIShowStatus(taskType,currentStatus,order)
|
||||
|
||||
when (taskType) {
|
||||
|
||||
TaskTypeEnum.VirtualTask.code -> {// 演练任务
|
||||
if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code){
|
||||
updateOrderUI(order)
|
||||
@@ -277,6 +291,7 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
taskTypeTv.text = resources.getString(R.string.task_exercise)
|
||||
startStationName.text = startSite.siteName
|
||||
endStationName.text = endSite.siteName
|
||||
setPointBlueGreen()
|
||||
}
|
||||
TaskTypeEnum.ToOrderEndTask.code,TaskTypeEnum.ToOrderStartTask.code -> {// 送驾/接驾任务任务
|
||||
if (order == null) return
|
||||
@@ -289,16 +304,81 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
}
|
||||
}
|
||||
|
||||
updateMapMarkers()
|
||||
|
||||
updateRemainDistanceAndTime(false)
|
||||
}
|
||||
|
||||
private fun updateMapMarkers() {
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.startSite != null
|
||||
&& mCurrentTaskAndOrder!!.endSite != null ) {
|
||||
when(mCurrentTaskAndOrder!!.currentStatus){
|
||||
TaskStatusEnum.GetTask.code -> {
|
||||
setOrRemoveMapMaker(
|
||||
true,
|
||||
TAXI_START_MAP_MAKER,
|
||||
mCurrentTaskAndOrder!!.startSite!!.wgs84Lat,
|
||||
mCurrentTaskAndOrder!!.startSite!!.wgs84Lon,
|
||||
R.raw.star_marker
|
||||
)
|
||||
setOrRemoveMapMaker(
|
||||
true,
|
||||
TAXI_END_MAP_MAKER,
|
||||
mCurrentTaskAndOrder!!.endSite!!.wgs84Lat,
|
||||
mCurrentTaskAndOrder!!.endSite!!.wgs84Lon,
|
||||
R.raw.end_marker
|
||||
)
|
||||
}
|
||||
|
||||
TaskStatusEnum.StartTask.code -> {
|
||||
setOrRemoveMapMaker(
|
||||
false,
|
||||
TAXI_START_MAP_MAKER,
|
||||
mCurrentTaskAndOrder!!.startSite!!.wgs84Lat,
|
||||
mCurrentTaskAndOrder!!.startSite!!.wgs84Lon,
|
||||
R.raw.star_marker
|
||||
)
|
||||
setOrRemoveMapMaker(
|
||||
true,
|
||||
TAXI_END_MAP_MAKER,
|
||||
mCurrentTaskAndOrder!!.endSite!!.wgs84Lat,
|
||||
mCurrentTaskAndOrder!!.endSite!!.wgs84Lon,
|
||||
R.raw.end_marker
|
||||
)
|
||||
}
|
||||
|
||||
TaskStatusEnum.CompleteTask.code -> {
|
||||
setOrRemoveMapMaker(
|
||||
false,
|
||||
TAXI_START_MAP_MAKER,
|
||||
mCurrentTaskAndOrder!!.startSite!!.wgs84Lat,
|
||||
mCurrentTaskAndOrder!!.startSite!!.wgs84Lon,
|
||||
R.raw.star_marker
|
||||
)
|
||||
setOrRemoveMapMaker(
|
||||
false,
|
||||
TAXI_END_MAP_MAKER,
|
||||
mCurrentTaskAndOrder!!.endSite!!.wgs84Lat,
|
||||
mCurrentTaskAndOrder!!.endSite!!.wgs84Lon,
|
||||
R.raw.end_marker
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}else{
|
||||
d(M_TAXI + TAG,"CurrentTaskAndOrder == "+GsonUtil.jsonFromObject(mCurrentTaskAndOrder))
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private fun updateOrderUI(order: OrderDetail) {
|
||||
|
||||
taskTypeTv.text = resources.getString(R.string.task_order)
|
||||
taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg,null)
|
||||
orderPhoneAndNum.text = Html.fromHtml("<font color=\"#FFFFFF\"> " + order.bookingUserPhone + "</font>" +
|
||||
"<font color=\"#33FFFFFF\"> | </font>" +
|
||||
"<font color=\"#6473B2\"> | </font>" +
|
||||
"<font color=\"#FFFFFF\">" + order.passengerSize + "人" + "</font>",Html.FROM_HTML_MODE_LEGACY)
|
||||
startStationName.text = order.orderStartSite?.siteName
|
||||
endStationName.text = order.orderEndSite?.siteName
|
||||
@@ -309,81 +389,32 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
isHaveBeingOrder(false)
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.Cancel.code -> { //取消
|
||||
updateOrderBottomBtn(
|
||||
taskClickBtn.text.toString(),
|
||||
Color.parseColor("#4DFFFFFF"),
|
||||
Color.parseColor("#4D1D5EF3"),
|
||||
false
|
||||
)
|
||||
taskTypeTv.background = resources.getDrawable(R.drawable.task_cancel_type_btn_bg,null)
|
||||
taskTypeTv.text = resources.getString(R.string.passenger_cancel_order)
|
||||
onCurrentOrderCancelDone()
|
||||
hideNavi()
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.ArriveAtEnd.code -> { //到达目的地
|
||||
taskStatus.text = resources.getString(R.string.task_start_end_site)
|
||||
|
||||
setPointBlueGreen()
|
||||
updateOrderBottomBtn(
|
||||
getString(R.string.module_och_taxi_order_server_end),
|
||||
Color.parseColor("#FFFFFF"),
|
||||
Color.parseColor("#FF1D5EF3"),
|
||||
true
|
||||
)
|
||||
|
||||
order.orderStartSite?.let {
|
||||
setOrRemoveMapMaker(
|
||||
false,
|
||||
TAXI_START_MAP_MAKER,
|
||||
it.gcjLat,
|
||||
it.gcjLon,
|
||||
R.raw.star_marker
|
||||
)
|
||||
}
|
||||
order.orderEndSite?.let {
|
||||
setOrRemoveMapMaker(
|
||||
false,
|
||||
TAXI_END_MAP_MAKER,
|
||||
it.gcjLat,
|
||||
it.gcjLon,
|
||||
R.raw.end_marker
|
||||
)
|
||||
}
|
||||
hideNavi()
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.OnTheWayToEnd.code -> { //送驾中
|
||||
taskStatus.text = resources.getString(R.string.task_start_end_site)
|
||||
setPointBlueGreen()
|
||||
updateOrderBottomBtn(
|
||||
getString(R.string.module_och_taxi_order_close),
|
||||
Color.parseColor("#FFFFFF"),
|
||||
Color.parseColor("#FF1D5EF3"),
|
||||
true
|
||||
)
|
||||
|
||||
order.orderStartSite?.let {
|
||||
setOrRemoveMapMaker(
|
||||
false,
|
||||
TAXI_START_MAP_MAKER,
|
||||
it.gcjLat,
|
||||
it.gcjLon,
|
||||
R.raw.star_marker
|
||||
)
|
||||
}
|
||||
order.orderEndSite?.let {
|
||||
setOrRemoveMapMaker(
|
||||
true,
|
||||
TAXI_END_MAP_MAKER,
|
||||
it.gcjLat,
|
||||
it.gcjLon,
|
||||
R.raw.end_marker
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.UserArriveAtStart.code,TaxiOrderStatusEnum.ArriveAtStart.code -> {
|
||||
//乘客到达上车点,验证成功 ; 到达乘客上车点
|
||||
|
||||
setPointGreenBlue()
|
||||
taskStatus.text = resources.getString(R.string.arrived_start_site)
|
||||
updateOrderBottomBtn(
|
||||
if (order.orderStatus == TaxiOrderStatusEnum.UserArriveAtStart.code)
|
||||
@@ -395,54 +426,18 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
)
|
||||
|
||||
updateOtherInfo()
|
||||
|
||||
order.orderStartSite?.let {
|
||||
setOrRemoveMapMaker(
|
||||
true,
|
||||
TAXI_START_MAP_MAKER,
|
||||
it.gcjLat,
|
||||
it.gcjLon,
|
||||
R.raw.star_marker
|
||||
)
|
||||
}
|
||||
order.orderEndSite?.let {
|
||||
setOrRemoveMapMaker(
|
||||
true,
|
||||
TAXI_END_MAP_MAKER,
|
||||
it.gcjLat,
|
||||
it.gcjLon,
|
||||
R.raw.end_marker
|
||||
)
|
||||
}
|
||||
hideNavi()
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.OnTheWayToStart.code -> { //前往上车地点
|
||||
taskStatus.text = resources.getString(R.string.task_start_start_site)
|
||||
setPointGreenBlue()
|
||||
updateOrderBottomBtn(
|
||||
getString(R.string.module_och_taxi_order_server_start),
|
||||
Color.parseColor("#4DFFFFFF"),
|
||||
Color.parseColor("#4D1D5EF3"),
|
||||
false
|
||||
)
|
||||
order.orderStartSite?.let {
|
||||
setOrRemoveMapMaker(
|
||||
true,
|
||||
TAXI_START_MAP_MAKER,
|
||||
it.gcjLat,
|
||||
it.gcjLon,
|
||||
R.raw.star_marker
|
||||
)
|
||||
}
|
||||
order.orderEndSite?.let {
|
||||
setOrRemoveMapMaker(
|
||||
true,
|
||||
TAXI_END_MAP_MAKER,
|
||||
it.gcjLat,
|
||||
it.gcjLon,
|
||||
R.raw.end_marker
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -540,21 +535,15 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
AmapNaviToDestinationModel.getInstance(context).setOCHTaciNaviChangedCallback(this)
|
||||
}
|
||||
|
||||
private fun showOrHideNavi() {
|
||||
naviToStart.visibility = View.GONE
|
||||
naviToEnd.visibility = View.GONE
|
||||
AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi()
|
||||
mTaxiFragment?.showAmapNaviToStationFragment(false)
|
||||
mTaxiFragment?.showRoutingToStationFragment(false)
|
||||
}
|
||||
|
||||
/**
|
||||
* 剩余里程和剩余时间
|
||||
* @param meters m
|
||||
* @param timeInSecond 秒
|
||||
*/
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
fun updateDistanceAndTime(meters: Long, timeInSecond: Long) {
|
||||
// CallerLogger.INSTANCE.d(M_TAXI + TAG,"meters = "+meters+"timeInSecond ="+timeInSecond);
|
||||
if (mCurrentTaskAndOrder == null) return
|
||||
if (mCurrentTaskAndOrder!!.endSite == null && mCurrentUntruthTask == null) return
|
||||
|
||||
var dis = "0"
|
||||
@@ -573,7 +562,7 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
("<font color=\"#CAD6FF\">里程 </font>" + "<b><font color=\"#FFFFFF\">" + dis + "</font></b>" + "<font color=\"#CAD6FF\"> " + disUnit + "</font>"
|
||||
+ "<font color=\"#CAD6FF\">,剩余 </font>" + "<b><font color=\"#FFFFFF\">" + min + "</font></b>" + "<font color=\"#CAD6FF\"> 分钟</font>")
|
||||
|
||||
taskOtherInfo.text = HtmlCompat.fromHtml(strHtml2, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
taskOtherInfo.text = Html.fromHtml(strHtml2,Html.FROM_HTML_MODE_LEGACY)
|
||||
}
|
||||
|
||||
private fun speekVoice200mTipsOnce() {
|
||||
@@ -581,25 +570,6 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
showNotice(resources.getString(R.string.module_och_taxi_order_arrive_end_200m_tip))
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
fun onCurrentOrderRouteInfoGot(routeInfo: OrderQueryRouteInfoRespBean.Result?) { // 单位 米, 秒
|
||||
if (routeInfo == null) return
|
||||
d(SceneConstant.M_TAXI + TAG, "durationToEnd = " + routeInfo.durationToEnd)
|
||||
var dis = "0"
|
||||
val distance = routeInfo.distanceToEnd
|
||||
val duration = routeInfo.durationToEnd
|
||||
if (routeInfo.distanceToEnd > 0) {
|
||||
dis = NumberFormatUtil.formatLong(distance.toDouble() / 1000)
|
||||
}
|
||||
val strHtml2 =
|
||||
("<font color=\"#CAD6FF\">全程 </font>" + "<b><font color=\"#FFFFFF\">" + dis + "</font></b>" + "<font color=\"#CAD6FF\"> 公里</font>"
|
||||
+ "<font color=\"#CAD6FF\">,总用时 </font>" + "<b><font color=\"#FFFFFF\">" + ceil(
|
||||
duration.toDouble() / 60
|
||||
).toInt() + "</font></b>" + "<font color=\"#CAD6FF\"> 分钟</font>")
|
||||
|
||||
taskOtherInfo.text = Html.fromHtml(strHtml2,Html.FROM_HTML_MODE_LEGACY)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi()
|
||||
@@ -646,10 +616,6 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
closeOrderDialog.show()
|
||||
}
|
||||
|
||||
private fun clearOrderTag() {
|
||||
taskOtherInfo.text = "距离 - - 公里,用时 - - 分"
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否有正在进行的订单,进行UI显示
|
||||
*
|
||||
@@ -669,6 +635,7 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
noOrderDataTv.text = "暂无进行中订单"
|
||||
mBeingOrderLayout.visibility = View.GONE
|
||||
}
|
||||
|
||||
} catch (e: NullPointerException) { //可能会出现订单信息已经轮询回来,但进行中页面控件还未初始化完成的情况
|
||||
TaxiModel.clearCurrentOCHOrder()
|
||||
}
|
||||
@@ -700,33 +667,6 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
mTaxiFragment?.startNaviToEndStation(isShow)
|
||||
}
|
||||
|
||||
private fun onCurrentOrderCancelDone() {
|
||||
//去除起终点
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.startSite != null
|
||||
&& mCurrentTaskAndOrder!!.endSite != null) {
|
||||
setOrRemoveMapMaker(
|
||||
false,
|
||||
TAXI_START_MAP_MAKER,
|
||||
mCurrentTaskAndOrder!!.startSite!!.gcjLat,
|
||||
mCurrentTaskAndOrder!!.startSite!!.gcjLon,
|
||||
R.raw.star_marker
|
||||
)
|
||||
setOrRemoveMapMaker(
|
||||
false,
|
||||
TAXI_END_MAP_MAKER,
|
||||
mCurrentTaskAndOrder!!.endSite!!.gcjLat,
|
||||
mCurrentTaskAndOrder!!.endSite!!.gcjLon,
|
||||
R.raw.end_marker
|
||||
)
|
||||
}
|
||||
//提交取消订单后的回调
|
||||
// ToastUtils.showShort("订单取消成功")
|
||||
//更新界面
|
||||
isHaveBeingOrder(false)
|
||||
showOrHideNavi()
|
||||
clearOrderTag()
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单流转debug START
|
||||
*/
|
||||
|
||||
@@ -74,7 +74,7 @@ class TaxiReserveOrderFragment : BaseFragment() {
|
||||
naviToEnd.visibility = View.GONE
|
||||
|
||||
orderPhoneAndNum.text = Html.fromHtml("<font color=\"#FFFFFF\"> " + order.bookingUserPhone + "</font>" +
|
||||
"<font color=\"#33FFFFFF\"> | </font>" +
|
||||
"<font color=\"#6473B2\"> | </font>" +
|
||||
"<font color=\"#FFFFFF\">" + order.passengerSize + "人" + "</font>",Html.FROM_HTML_MODE_LEGACY)
|
||||
|
||||
|
||||
|
||||
@@ -205,8 +205,6 @@ abstract class BaseTaxiTabFragment<V : IView, P : Presenter<V>> : MvpFragment<V,
|
||||
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING
|
||||
) {
|
||||
return //远程代驾状态下不可开启自动驾驶,只能等远程代驾主动退出
|
||||
} else if (!(module_mogo_och_autopilot_status.tag as Boolean)) {
|
||||
ToastUtils.showShort(resources.getString(R.string.module_och_taxi_auto_disable_tip1))
|
||||
} else {
|
||||
startAutopilot()
|
||||
}
|
||||
|
||||
@@ -133,9 +133,6 @@ public class TaxiTrajectoryManager {
|
||||
if (curTaskContrail == null) return;
|
||||
|
||||
long curLineId = taskAndOrder.getLineId();
|
||||
final List<ContrailListRespBean.Result> orderContrails = TaxiModel.INSTANCE.getCurOrderContrails();
|
||||
final OrderDetail orderDetail = taskAndOrder.getOrder();
|
||||
ContrailListRespBean.Result preloadContrail = null; //预加载的轨迹
|
||||
|
||||
if (mAutoPilotLine == null) {
|
||||
mAutoPilotLine = new AutopilotControlParameters.AutoPilotLine(curTaskContrail.getLineId(), curTaskContrail.getLineName(),
|
||||
@@ -144,7 +141,7 @@ public class TaxiTrajectoryManager {
|
||||
curTaskContrail.getCsvFileUrlDPQP(), curTaskContrail.getCsvFileMd5DPQP(), curTaskContrail.getTxtFileUrlDPQP(),
|
||||
curTaskContrail.getTxtFileMd5DPQP(), curTaskContrail.getContrailSaveTimeDPQP());
|
||||
} else {
|
||||
mAutoPilotLine.setLineId(taskAndOrder.getLineId());
|
||||
mAutoPilotLine.setLineId(curTaskContrail.getLineId());
|
||||
mAutoPilotLine.setLineName(curTaskContrail.getLineName());
|
||||
mAutoPilotLine.setTrajUrl(curTaskContrail.getCsvFileUrl());
|
||||
mAutoPilotLine.setTrajMd5(curTaskContrail.getCsvFileMd5());
|
||||
@@ -159,13 +156,21 @@ public class TaxiTrajectoryManager {
|
||||
mAutoPilotLine.setTimestamp_dpqp(curTaskContrail.getContrailSaveTimeDPQP());
|
||||
}
|
||||
|
||||
final OrderDetail orderDetail = taskAndOrder.getOrder();
|
||||
ContrailListRespBean.Result preloadContrail = null; //预加载的轨迹
|
||||
final List<ContrailListRespBean.Result> orderContrails = TaxiModel.INSTANCE.getCurOrderContrails();
|
||||
|
||||
if (orderDetail != null && orderContrails != null && orderContrails.size() != 0 ){
|
||||
if (orderContrails.contains(curLineId)){ //预加载轨迹是curLineId索引的下一个
|
||||
int index = orderContrails.indexOf(curLineId);
|
||||
if (orderContrails.size()-1 >= index){
|
||||
preloadContrail = orderContrails.get(index);
|
||||
for (int i = 0; i< orderContrails.size() ; i++){
|
||||
if (orderContrails.get(i).getLineId() == curLineId){ //预加载轨迹是curLineId索引的下一个
|
||||
int index = i + 1;
|
||||
if (orderContrails.size()-1 >= index){
|
||||
preloadContrail = orderContrails.get(index);
|
||||
}
|
||||
}
|
||||
}else {//预加载轨迹直接是集合第一个
|
||||
}
|
||||
if (preloadContrail == null){
|
||||
//不包含预加载轨迹直接是集合第一个
|
||||
preloadContrail = orderContrails.get(0);
|
||||
}
|
||||
}
|
||||
@@ -179,7 +184,7 @@ public class TaxiTrajectoryManager {
|
||||
preloadContrail.getCsvFileUrlDPQP(), preloadContrail.getCsvFileMd5DPQP(), preloadContrail.getTxtFileUrlDPQP(),
|
||||
preloadContrail.getTxtFileMd5DPQP(), preloadContrail.getContrailSaveTimeDPQP());
|
||||
} else {
|
||||
mPreAutoPilotLine.setLineId(taskAndOrder.getLineId());
|
||||
mPreAutoPilotLine.setLineId(preloadContrail.getLineId());
|
||||
mPreAutoPilotLine.setLineName(preloadContrail.getLineName());
|
||||
mPreAutoPilotLine.setTrajUrl(preloadContrail.getCsvFileUrl());
|
||||
mPreAutoPilotLine.setTrajMd5(preloadContrail.getCsvFileMd5());
|
||||
@@ -275,6 +280,6 @@ public class TaxiTrajectoryManager {
|
||||
|
||||
}
|
||||
CallerLogger.INSTANCE.d(M_TAXI + TAG, "sendTrajectoryReq(): common_load = "
|
||||
+ GsonUtils.toJson(mAutoPilotLine) + "pre_load" + GsonUtils.toJson(mPreAutoPilotLine));
|
||||
+ GsonUtils.toJson(mAutoPilotLine) + ", pre_load" + GsonUtils.toJson(mPreAutoPilotLine));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,21 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="@dimen/dp_72">
|
||||
|
||||
<com.mogo.eagle.core.function.view.MapBizView
|
||||
android:id="@+id/mapBizView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<!--自动启动自驾闪烁上边框-->
|
||||
<com.mogo.och.common.module.wigets.StartAutopilotAnimationView
|
||||
android:id="@+id/startAutopilotAnimationView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugViewTrigger
|
||||
android:layout_width="@dimen/dp_400"
|
||||
android:layout_height="@dimen/dp_100"
|
||||
@@ -91,16 +100,6 @@
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<!--自动启动自驾闪烁上边框-->
|
||||
<com.mogo.och.common.module.wigets.StartAutopilotAnimationView
|
||||
android:id="@+id/startAutopilotAnimationView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--Vip车辆标志-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.VipIdentificationView
|
||||
android:layout_width="@dimen/module_vip_width"
|
||||
@@ -206,15 +205,6 @@
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--隐藏态下的 美化模式按钮-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.switch.DemoModeHiddenSwitch
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="100dp"
|
||||
android:layout_marginStart="40dp"
|
||||
android:layout_marginBottom="200dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/module_mogo_och_station_panel_container"
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="上车:"
|
||||
android:textSize="@dimen/dp_32"
|
||||
app:layout_goneMarginTop="@dimen/dp_40"
|
||||
app:layout_goneMarginTop="@dimen/dp_104"
|
||||
android:layout_marginTop="@dimen/dp_52"
|
||||
android:layout_marginStart="@dimen/dp_78"
|
||||
android:textColor="@color/station_tag_color"
|
||||
@@ -134,7 +134,7 @@
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/greenPoint"
|
||||
android:id="@+id/startPoint"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/taxi_driver_circle_green_big"
|
||||
@@ -148,13 +148,13 @@
|
||||
android:layout_height="0dp"
|
||||
android:src="@drawable/taxi_grab_dot_line"
|
||||
android:scaleType="fitXY"
|
||||
app:layout_constraintTop_toBottomOf="@+id/greenPoint"
|
||||
app:layout_constraintBottom_toTopOf="@+id/bluePoint"
|
||||
app:layout_constraintLeft_toLeftOf="@+id/greenPoint"
|
||||
app:layout_constraintRight_toRightOf="@+id/greenPoint"/>
|
||||
app:layout_constraintTop_toBottomOf="@+id/startPoint"
|
||||
app:layout_constraintBottom_toTopOf="@+id/endPoint"
|
||||
app:layout_constraintLeft_toLeftOf="@+id/startPoint"
|
||||
app:layout_constraintRight_toRightOf="@+id/startPoint"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/bluePoint"
|
||||
android:id="@+id/endPoint"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/taxi_driver_circle_blue_big"
|
||||
@@ -162,20 +162,20 @@
|
||||
app:layout_constraintBottom_toBottomOf="@+id/endStationName"
|
||||
app:layout_constraintLeft_toLeftOf="@+id/taskStatus"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/taskOtherInfo"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dp_40"
|
||||
app:layout_goneMarginBottom="@dimen/dp_172"
|
||||
android:textSize="@dimen/dp_30"
|
||||
android:textColor="@color/station_tag_color"
|
||||
android:text="距离 -- 公里, 用时 -- 分钟"
|
||||
app:layout_constraintLeft_toLeftOf="@+id/taskStatus"
|
||||
app:layout_constraintBottom_toTopOf="@+id/taskClickBtn" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/taskOtherInfo"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="36dp"
|
||||
android:text="距离 -- 公里, 用时 -- 分钟"
|
||||
android:textColor="@color/station_tag_color"
|
||||
android:textSize="@dimen/dp_30"
|
||||
app:layout_constraintBottom_toTopOf="@+id/taskClickBtn"
|
||||
app:layout_constraintLeft_toLeftOf="@+id/taskStatus"
|
||||
app:layout_goneMarginBottom="@dimen/dp_172" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/taskClickBtn"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_132"
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
|
||||
|
||||
<string name="module_och_taxi_auto_disable_tip">自动驾驶状态为0不可用</string>
|
||||
<string name="module_och_taxi_auto_disable_tip1">司机端未确认可以开启自动驾驶</string>
|
||||
|
||||
<string name="network_error_tip">网络异常,请稍后重试</string>
|
||||
<string name="request_error_tip">请求出现异常,请稍后重试</string>
|
||||
|
||||
@@ -205,14 +205,6 @@
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--隐藏态下的 美化模式按钮-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.switch.DemoModeHiddenSwitch
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="100dp"
|
||||
android:layout_marginStart="40dp"
|
||||
android:layout_marginBottom="200dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/module_mogo_och_station_panel_container"
|
||||
|
||||
@@ -42,6 +42,7 @@ android {
|
||||
exclude 'META-INF/*'
|
||||
exclude "/lib/armeabi-v7a/*.so"
|
||||
pickFirst 'lib/arm64-v8a/libc++_shared.so'
|
||||
pickFirst "META-INF/com.android.tools/proguard/coroutines.pro"
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
|
||||
@@ -23,7 +23,7 @@ public class MogoApplication extends MainMoGoApplication {
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
TraceNodeCore.Companion.getTraceNodeCore().setDebugMode(true); //todo
|
||||
// TraceNodeCore.Companion.getTraceNodeCore().setDebugMode(false); //todo
|
||||
ARouterStartUp.init(this);
|
||||
ConfigStartUp.init(this);
|
||||
tryEnableStrictMode();
|
||||
|
||||
@@ -48,7 +48,7 @@ public class V2XRoadEventScenario extends AbsV2XScenario<V2XRoadEventEntity> imp
|
||||
@Override
|
||||
public void init(V2XMessageEntity<V2XRoadEventEntity> v2XMessageEntity) {
|
||||
try {
|
||||
V2XBizTrace.Companion.onAck("v2XMessageEntity",GsonUtil.jsonFromObject(v2XMessageEntity));
|
||||
V2XBizTrace.Companion.onAck("v2XMessageEntity",v2XMessageEntity);
|
||||
V2XRoadEventEntity v2XRoadEventEntity = v2XMessageEntity.getContent();
|
||||
if (v2XRoadEventEntity != null) {
|
||||
if (!isSameScenario(v2XMessageEntity)) {
|
||||
|
||||
@@ -28,7 +28,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = Record(AppUtils.getAppVersionName(), sn, mac, type, isSupportPatch, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_start" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_start" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -38,7 +38,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = CheckRecord(AppUtils.getAppVersionName(), START, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertCheckRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_request_start" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_request_start" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -48,7 +48,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = CheckRecord(AppUtils.getAppVersionName(), SUCCESS, response, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertCheckRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_request_success" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_request_success" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -67,7 +67,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = UpgradeRecord(fromVersionName = AppUtils.getAppVersionName(), toVersionName = newVersionName, fromMd5 = AppUtils.getAppApkMd5(), toMD5 = newMd5, type = getType(type), time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertUpgradeRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_record" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_record" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -77,7 +77,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadStart, downloadUrl = downloadUrl, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertDownloadRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_download_start" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_download_start" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -87,7 +87,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadPause, downloadUrl = downloadUrl, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertDownloadRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_download_pause" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_download_pause" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -97,7 +97,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadFailed, failReason = error, downloadUrl = downloadUrl, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertDownloadRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_download_failed" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_download_failed" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -107,7 +107,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadComplete, downloadUrl = downloadUrl, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertDownloadRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_download_success" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_download_success" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -117,7 +117,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = InstallRecord(version = AppUtils.getAppVersionName(), status = InstallStart, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertInstallRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_install_start" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_install_start" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -127,7 +127,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckStart, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertInstallRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_check_source_md5_start" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_check_source_md5_start" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -137,7 +137,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckFailed, failReason = error, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertInstallRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_check_source_md5_failed" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_check_source_md5_failed" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -147,7 +147,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckSuccess, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertInstallRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_check_source_md5_success" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_check_source_md5_success" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -157,7 +157,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchStart, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertInstallRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_apply_patch_start" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_apply_patch_start" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -167,7 +167,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchFailed, failReason = error, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertInstallRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_apply_patch_failed" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_apply_patch_failed" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -177,7 +177,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchSuccess, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertInstallRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_apply_patch_success" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_apply_patch_success" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -187,7 +187,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckStart, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertInstallRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_check_target_md5_start" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_check_target_md5_start" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -197,7 +197,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckFailed, failReason = error, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertInstallRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_check_target_md5_failed" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_check_target_md5_failed" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -207,7 +207,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckSuccess, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertInstallRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_check_target_md5_success" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_check_target_md5_success" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -217,7 +217,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
val record = InstallRecord(version = AppUtils.getAppVersionName(), status = InstallFailed, code = code, failReason = error, time = System.currentTimeMillis())
|
||||
UpgradeDbHelper.insertInstallRecord(record)
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_install_failed" to GsonUtils.toJson(record)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_install_failed" to record))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -249,7 +249,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
itx["step_3"] = all.downloads?.sortedBy { it.status.ordinal }?.mapIndexed { index, r -> "$index" to GsonUtils.toJson(r) } ?: emptyList()
|
||||
itx["step_4"] = all.installs?.let { ArrayList<InstallRecord>(it) + InstallRecord(success.versionName, InstallSuccess, 0) }?.sortedBy { it.status.ordinal }?.mapIndexed { index, r -> "$index" to GsonUtils.toJson(r) } ?: emptyList()
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_success" to GsonUtils.toJson(all)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_success" to all))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -265,7 +265,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
itx["step_3"] = all.downloads?.sortedBy { it.status.ordinal }?.mapIndexed { index, r -> "$index" to GsonUtils.toJson(r) } ?: emptyList()
|
||||
itx["step_4"] = all.installs?.sortedBy { it.status.ordinal }?.mapIndexed { index, r -> "$index" to GsonUtils.toJson(r) } ?: emptyList()
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_failed" to GsonUtils.toJson(all)))
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_failed" to all))
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
@@ -301,5 +301,5 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
nodeAliasCode = ChainConstant.CHAIN_CODE_UPGRADE_APP,
|
||||
paramIndexes = [0]
|
||||
)
|
||||
private fun onUpgradeRecordLinkLog(extra: Map<String, String>) {}
|
||||
private fun onUpgradeRecordLinkLog(extra: Map<String, Any>) {}
|
||||
}
|
||||
@@ -89,6 +89,7 @@ import kotlin.collections.component3
|
||||
import kotlin.collections.component4
|
||||
import kotlin.collections.set
|
||||
import kotlin.math.abs
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
|
||||
/**
|
||||
@@ -745,6 +746,9 @@ internal class DebugSettingView @JvmOverloads constructor(
|
||||
CallerAutoPilotControlManager.sendIpcReboot()
|
||||
ToastUtils.showLong("重启命令已发送")
|
||||
}
|
||||
btnAppReboot.onClick {
|
||||
killApp()
|
||||
}
|
||||
//只在司机端设置工控机节点重启功能
|
||||
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
|
||||
btnIpcReboot.visibility = View.GONE
|
||||
@@ -2035,6 +2039,17 @@ internal class DebugSettingView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private fun killApp() {
|
||||
Intent(Intent.ACTION_MAIN).apply {
|
||||
addCategory(Intent.CATEGORY_HOME)
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
context.startActivity(this)
|
||||
Process.killProcess(Process.myPid())
|
||||
exitProcess(0)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 初始化上报
|
||||
*/
|
||||
|
||||
@@ -333,6 +333,16 @@
|
||||
android:padding="@dimen/dp_20"
|
||||
android:textSize="@dimen/dp_24" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnAppReboot"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/dp_10"
|
||||
android:background="@drawable/radio_button_normal_background_right"
|
||||
android:text="杀死APP"
|
||||
android:padding="@dimen/dp_20"
|
||||
android:textSize="@dimen/dp_24" />
|
||||
|
||||
<ToggleButton
|
||||
android:id="@+id/tbDeviceBind"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -34,7 +34,6 @@ 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.utils.MapBizTrace
|
||||
import com.mogo.eagle.core.function.utils.MapBizTrace.Companion.getCurrentCNode
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.map.MogoMapUIController
|
||||
import com.mogo.map.uicontroller.VisualAngleMode
|
||||
@@ -73,30 +72,27 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
|
||||
if (it.what == H_ERROR_CLOUD) {
|
||||
if (!aiCloudDataChange.get()) {
|
||||
MapBizTrace.log(
|
||||
CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_CLOUD_ERROR, TAG, GsonUtils.toJson(
|
||||
mutableMapOf(
|
||||
"msg" to "云端 $H_DELAY_TIME 秒内无感知数据下发",
|
||||
"socketStatus" to MogoStatusManager.getInstance().isSocketOnLine,
|
||||
"cityCode" to CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().cityCode
|
||||
)
|
||||
CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_CLOUD_ERROR, TAG,
|
||||
mutableMapOf(
|
||||
"msg" to "云端 $H_DELAY_TIME 秒内无感知数据下发",
|
||||
"socketStatus" to MogoStatusManager.getInstance().isSocketOnLine,
|
||||
"cityCode" to CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().cityCode
|
||||
)
|
||||
)
|
||||
} else {
|
||||
MapBizTrace.log(
|
||||
CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_CLOUD_PUSH, TAG, GsonUtils.toJson(
|
||||
mutableMapOf(
|
||||
"msg" to "延迟 $H_DELAY_TIME 秒内获取云端下发感知数据大小",
|
||||
"cloudDataSize" to cloudDataSize
|
||||
)
|
||||
CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_CLOUD_PUSH, TAG,
|
||||
mutableMapOf(
|
||||
"msg" to "延迟 $H_DELAY_TIME 秒内获取云端下发感知数据大小",
|
||||
"cloudDataSize" to cloudDataSize
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
if (it.what == H_ERROR_MAP) {
|
||||
MapBizTrace.log(
|
||||
CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_MAP_ERROR, TAG, GsonUtils.toJson(
|
||||
mutableMapOf("msg" to "地图漫游模式启动失败,原因:${it.obj}")
|
||||
)
|
||||
CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_MAP_ERROR, TAG,
|
||||
mutableMapOf("msg" to "地图漫游模式启动失败,原因:${it.obj}")
|
||||
)
|
||||
if (DebugConfig.isDebug()) {
|
||||
ToastUtils.showShort("进入漫游模式失败, code:${it.obj}")
|
||||
@@ -153,7 +149,7 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
|
||||
"",
|
||||
CHAIN_CODE_ROMA_CLICK,
|
||||
TAG,
|
||||
GsonUtils.toJson(mutableMapOf("trigger" to true))
|
||||
mutableMapOf("trigger" to true)
|
||||
)
|
||||
openRoma()
|
||||
} else {
|
||||
@@ -186,15 +182,13 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
|
||||
// false,改变父节点信息
|
||||
MapBizTrace.log(
|
||||
if (dataReceive) CHAIN_CODE_ROMA_CLICK else "", CHAIN_CODE_ROMA_REQUEST, TAG,
|
||||
GsonUtils.toJson(
|
||||
mutableMapOf(
|
||||
"dataReceive" to dataReceive,
|
||||
"lon" to gnss.longitude,
|
||||
"lat" to gnss.latitude,
|
||||
"heading" to gnss.heading,
|
||||
"socketStatus" to MogoStatusManager.getInstance().isSocketOnLine,
|
||||
"cityCode" to CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().cityCode
|
||||
)
|
||||
mutableMapOf(
|
||||
"dataReceive" to dataReceive,
|
||||
"lon" to gnss.longitude,
|
||||
"lat" to gnss.latitude,
|
||||
"heading" to gnss.heading,
|
||||
"socketStatus" to MogoStatusManager.getInstance().isSocketOnLine,
|
||||
"cityCode" to CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().cityCode
|
||||
), !dataReceive
|
||||
)
|
||||
aiCloudIdentifyNetWorkModel.requestIdentifyRange(
|
||||
@@ -207,12 +201,10 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
|
||||
if (dataReceive) CHAIN_CODE_ROMA_REQUEST else "",
|
||||
CHAIN_CODE_ROMA_REQUEST_OK,
|
||||
TAG,
|
||||
GsonUtils.toJson(
|
||||
mutableMapOf(
|
||||
"dataResult" to dataReceive,
|
||||
"startRange" to START_METRE,
|
||||
"endRange" to END_METRE,
|
||||
)
|
||||
mutableMapOf(
|
||||
"dataResult" to dataReceive,
|
||||
"startRange" to START_METRE,
|
||||
"endRange" to END_METRE,
|
||||
), !dataReceive
|
||||
)
|
||||
if (dataReceive) {
|
||||
@@ -226,13 +218,11 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
|
||||
if (dataReceive) CHAIN_CODE_ROMA_REQUEST else "",
|
||||
CHAIN_CODE_ROMA_REQUEST_ERROR,
|
||||
TAG,
|
||||
GsonUtils.toJson(
|
||||
mutableMapOf(
|
||||
"errorMsg" to errorMsg,
|
||||
"dataResult" to dataReceive,
|
||||
"startRange" to START_METRE,
|
||||
"endRange" to END_METRE
|
||||
)
|
||||
mutableMapOf(
|
||||
"errorMsg" to errorMsg,
|
||||
"dataResult" to dataReceive,
|
||||
"startRange" to START_METRE,
|
||||
"endRange" to END_METRE
|
||||
), true
|
||||
)
|
||||
updateLongSightLevel(false)
|
||||
@@ -252,7 +242,7 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
|
||||
CHAIN_CODE_ROMA_REQUEST_OK,
|
||||
CHAIN_CODE_ROMA_MAP_START,
|
||||
TAG,
|
||||
GsonUtils.toJson(mutableMapOf("romaStart" to "地图开始漫游"))
|
||||
mutableMapOf("romaStart" to "地图开始漫游")
|
||||
)
|
||||
showAiCloud.set(true)
|
||||
FunctionBuildConfig.isDrawIdentifyData = false
|
||||
@@ -270,9 +260,8 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
|
||||
}
|
||||
2 -> { // 地图自动漫游结束,重置状态,调用close通知服务端
|
||||
MapBizTrace.log(
|
||||
CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_MAP_END, TAG, GsonUtils.toJson(
|
||||
mutableMapOf("romaEnd" to "地图结束回调,状态:$status")
|
||||
), true
|
||||
CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_MAP_END, TAG,
|
||||
mutableMapOf("romaEnd" to "地图结束回调,状态:$status"), true
|
||||
)
|
||||
reset()
|
||||
}
|
||||
@@ -280,11 +269,7 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
|
||||
MapBizTrace.log(
|
||||
CHAIN_CODE_ROMA_CLOSE_CLICK,
|
||||
CHAIN_CODE_ROMA_MAP_CHANGE_END,
|
||||
TAG,
|
||||
GsonUtils.toJson(
|
||||
mutableMapOf("romaEnd" to "地图结束回调,状态:$status")
|
||||
),
|
||||
true
|
||||
TAG, mutableMapOf("romaEnd" to "地图结束回调,状态:$status"), true
|
||||
)
|
||||
reset(false)
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ class OverMapView @JvmOverloads constructor(
|
||||
private val markerOptionsList by lazy {
|
||||
ArrayList<MarkerOptions>()
|
||||
}
|
||||
private var isDebug = true
|
||||
private var isDebug = false
|
||||
|
||||
// 绘制轨迹线的集合
|
||||
private val textureList: MutableList<BitmapDescriptor?> = ArrayList()
|
||||
|
||||
@@ -371,12 +371,12 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
|
||||
nodeAliasCode = CHAIN_CODE_HTTP_DNS_ERROR_REASON,
|
||||
paramIndexes = [0]
|
||||
)
|
||||
private fun logError(pr: String) {
|
||||
private fun logError(pr: Map<String,Any>) {
|
||||
CallerLogger.e("$M_MAIN$TAG", "pr:$pr")
|
||||
}
|
||||
|
||||
// 归一处理
|
||||
private fun getPrReason(msg: String): String {
|
||||
private fun getPrReason(msg: String): Map<String,Any> {
|
||||
val map = hashMapOf<String, Any>()
|
||||
map["lat"] =
|
||||
if (CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().latitude != 0.0)
|
||||
@@ -387,7 +387,7 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
|
||||
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude else
|
||||
CallerMapUIServiceManager.getGDLocationServer(context!!)!!.lastLon
|
||||
map["reason"] = msg
|
||||
return GsonUtils.toJson(map)
|
||||
return map
|
||||
}
|
||||
|
||||
@ChainLog(
|
||||
|
||||
@@ -56,14 +56,9 @@ bytex.forbidUseLenientMutationDuringGetArtifact=true
|
||||
bytex.verifyProguardConfigurationChanged=false
|
||||
bytex.ASM_API=ASM7
|
||||
|
||||
HOOK_LOG_VERSION=1.6.1
|
||||
SERVICE_CHAIN_VERSION=1.1.0
|
||||
|
||||
BIZCONFIG_VERSION=1.3.2
|
||||
SERVICE_BIZ_VERSION=1.2.4
|
||||
################ 外部依赖引用 ################
|
||||
# loglib
|
||||
LOGLIB_VERSION=1.8.1
|
||||
LOGLIB_VERSION=1.9.0
|
||||
######## MogoAiCloudSDK Version ########
|
||||
# 网络请求LOGLIB_VERSION
|
||||
MOGO_NETWORK_VERSION=1.4.7.12
|
||||
@@ -93,8 +88,8 @@ WEBSOCKET_VERSION=1.1.7
|
||||
applicationId=com.mogo.launcer
|
||||
applicationName=IntelligentPilot
|
||||
# RoboBus司机端:2.5.1;RoboTaxi司机端:2.5.1;RoboTaxi乘客端:1.0.0
|
||||
versionCode=3030000
|
||||
versionName=3.3.0
|
||||
versionCode=6000000
|
||||
versionName=6.0.0
|
||||
|
||||
################# 新架构模块Maven版本管理 #################
|
||||
MOGO_CORE_FUNCTION_HMI_VERSION=0.0.58.10
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
ext {
|
||||
gradle_version = '4.0.0'
|
||||
gradle_version = '3.5.3'
|
||||
kotlin_version = '1.5.30'
|
||||
plugin_version = '10.0.0_mogo'
|
||||
hook_log_plugin_version = '1.7.2'
|
||||
service_chain_version = '5.2.10'
|
||||
service_chain_version = '5.3.5'
|
||||
lancetx_plugin_version = '10.0.4_mogo'
|
||||
}
|
||||
Reference in New Issue
Block a user