[routing]

[fea]
[功能转移到biz]
This commit is contained in:
yangyakun
2025-05-19 19:00:59 +08:00
parent 9442d66b63
commit a0573b54cb
57 changed files with 575 additions and 530 deletions

View File

@@ -40,6 +40,15 @@ android {
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main {
res.srcDirs = [
'src/main/res',
'src/main/res/routing',
]
}
}
}
dependencies {
@@ -53,6 +62,7 @@ dependencies {
implementation rootProject.ext.dependencies.androidxappcompat
implementation rootProject.ext.dependencies.material
implementation rootProject.ext.dependencies.rxandroid
implementation rootProject.ext.dependencies.amapnavi3dmap
implementation project(':OCH:common:common')
implementation rootProject.ext.dependencies.arouter

View File

@@ -0,0 +1,53 @@
package com.mogo.och.biz.routing
import android.content.Context
import android.view.View
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
import com.mogo.och.biz.routing.ui.RoutingSwitchView
import com.mogo.och.common.module.biz.routing.RoutingCallback
import com.mogo.och.common.module.biz.routing.RoutingService
import com.mogo.och.common.module.constant.OchCommonConst
@Route(path = OchCommonConst.BIZ_ROUTING)
class RoutingProvider : RoutingService {
private var context: Context? = null
private val TAG = M_OCHCOMMON + "RoutingProvider"
private var switchView:RoutingSwitchView?=null
private var callback:RoutingCallback?=null
override fun getRoutingView(): View? {
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
context?.let {
if(switchView==null){
switchView = RoutingSwitchView(it)
}
return switchView
}
}
return null
}
override fun setRoutingCallback(callback: RoutingCallback?) {
this.callback = callback
}
override fun init(context: Context?) {
this.context = context
}
fun invokeCallbackShowMap(isShow: Boolean) {
this.callback?.showMap(isShow)
}
}

View File

@@ -0,0 +1,19 @@
package com.mogo.och.biz.routing
import android.annotation.SuppressLint
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.och.common.module.constant.OchCommonConst
object RoutingServiceManager {
@SuppressLint("StaticFieldLeak")
private var routingService: RoutingProvider? =
ARouter.getInstance().build(OchCommonConst.BIZ_ROUTING).navigation() as RoutingProvider
fun invokeCallback(isShow: Boolean) {
this.routingService?.invokeCallbackShowMap(isShow)
}
}

View File

@@ -1,4 +1,4 @@
package com.mogo.och.unmanned.taxi.bean
package com.mogo.och.biz.routing.bean
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.data.bean.BusStationBean

View File

@@ -1,13 +1,10 @@
package com.mogo.och.unmanned.taxi.callback
import com.mogo.och.unmanned.taxi.bean.GrayLineBean
import com.mogo.och.unmanned.taxi.bean.StartGrayAndQueryContrailRsp
interface ITaxiRoutingCallback {
/**
* 查询灰度路线列表--成功
*/
fun onQueryRoutingGrayLineListSuccess(data: MutableList<GrayLineBean>)
fun onQueryRoutingGrayLineListSuccess(data: MutableList<com.mogo.och.biz.routing.bean.GrayLineBean>)
/**
* 查询灰度路线列表--失败
@@ -18,7 +15,7 @@ interface ITaxiRoutingCallback {
/**
* 灰度任务&查询轨迹详情--成功
*/
fun onStartGrayTaskAndQueryContrailSuccess(data: StartGrayAndQueryContrailRsp)
fun onStartGrayTaskAndQueryContrailSuccess(data: com.mogo.och.biz.routing.bean.StartGrayAndQueryContrailRsp)
/**
* 灰度任务&查询轨迹详情--失败

View File

@@ -1,16 +1,8 @@
package com.mogo.och.unmanned.taxi.network
package com.mogo.och.biz.routing.net
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.unmanned.taxi.bean.EndGrayContrailTaskReq
import com.mogo.och.unmanned.taxi.bean.QueryGrayContrailListRsp
import com.mogo.och.unmanned.taxi.bean.QueryPointErrorReasonsRsp
import com.mogo.och.unmanned.taxi.bean.QueryRoutingContrailByIdRsp
import com.mogo.och.unmanned.taxi.bean.SaveGrayContrailErrorReasons
import com.mogo.och.unmanned.taxi.bean.StartGrayContrailTaskReq
import com.mogo.och.unmanned.taxi.bean.StartGrayContrailTaskRsp
import com.mogo.och.unmanned.taxi.bean.SubmitGrayLineIssueLocationReq
import io.reactivex.Observable
import retrofit2.http.Body
import retrofit2.http.GET
@@ -19,7 +11,7 @@ import retrofit2.http.Headers
import retrofit2.http.POST
import retrofit2.http.Query
interface TaxiRoutingServiceApi {
interface RoutingServiceApi {
/**
* 查询灰度线路列表
@@ -30,7 +22,7 @@ interface TaxiRoutingServiceApi {
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String = SharedPrefsMgr.getInstance().token,
@Query("sn") sn: String?
): Observable<QueryGrayContrailListRsp>
): Observable<com.mogo.och.biz.routing.bean.QueryGrayContrailListRsp>
/**
* 开始一个路线的灰度任务
@@ -40,8 +32,8 @@ interface TaxiRoutingServiceApi {
fun startGrayTask(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String = SharedPrefsMgr.getInstance().token,
@Body data: StartGrayContrailTaskReq
): Observable<StartGrayContrailTaskRsp>
@Body data: com.mogo.och.biz.routing.bean.StartGrayContrailTaskReq
): Observable<com.mogo.och.biz.routing.bean.StartGrayContrailTaskRsp>
/**
* 根据id查询灰度轨迹详情
@@ -52,7 +44,7 @@ interface TaxiRoutingServiceApi {
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String = SharedPrefsMgr.getInstance().token,
@Query("id") contrailId: Long
): Observable<QueryRoutingContrailByIdRsp>
): Observable<com.mogo.och.biz.routing.bean.QueryRoutingContrailByIdRsp>
/**
* 上报路线打点
@@ -62,7 +54,7 @@ interface TaxiRoutingServiceApi {
fun submitGrayLineIssueLocation(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String = SharedPrefsMgr.getInstance().token,
@Body data: SubmitGrayLineIssueLocationReq
@Body data: com.mogo.och.biz.routing.bean.SubmitGrayLineIssueLocationReq
): Observable<BaseData>
/**
@@ -73,7 +65,7 @@ interface TaxiRoutingServiceApi {
fun endGrayTask(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String = SharedPrefsMgr.getInstance().token,
@Body data: EndGrayContrailTaskReq
@Body data: com.mogo.och.biz.routing.bean.EndGrayContrailTaskReq
): Observable<BaseData>
/**
@@ -84,7 +76,7 @@ interface TaxiRoutingServiceApi {
fun getDotErrorList(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String = SharedPrefsMgr.getInstance().token,
): Observable<QueryPointErrorReasonsRsp>
): Observable<com.mogo.och.biz.routing.bean.QueryPointErrorReasonsRsp>
/**
* 结束一个路线的灰度任务
@@ -94,6 +86,6 @@ interface TaxiRoutingServiceApi {
fun saveDotDetail(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String = SharedPrefsMgr.getInstance().token,
@Body data: SaveGrayContrailErrorReasons
@Body data: com.mogo.och.biz.routing.bean.SaveGrayContrailErrorReasons
): Observable<BaseData>
}

View File

@@ -1,4 +1,4 @@
package com.mogo.och.unmanned.taxi.network
package com.mogo.och.biz.routing.net
import android.content.Context
import com.mogo.commons.storage.SharedPrefsMgr
@@ -8,23 +8,13 @@ import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.common.module.network.OchCommonSubscribeImpl
import com.mogo.och.common.module.network.interceptor.transformTry
import com.mogo.och.unmanned.taxi.bean.EndGrayContrailTaskReq
import com.mogo.och.unmanned.taxi.bean.GrayLineBean
import com.mogo.och.unmanned.taxi.bean.QueryGrayContrailListRsp
import com.mogo.och.unmanned.taxi.bean.QueryPointErrorReasonsRsp
import com.mogo.och.unmanned.taxi.bean.QueryRoutingContrailByIdRsp
import com.mogo.och.unmanned.taxi.bean.SaveGrayContrailErrorReasons
import com.mogo.och.unmanned.taxi.bean.StartGrayAndQueryContrailRsp
import com.mogo.och.unmanned.taxi.bean.StartGrayContrailTaskReq
import com.mogo.och.unmanned.taxi.bean.StartGrayContrailTaskRsp
import com.mogo.och.unmanned.taxi.bean.SubmitGrayLineIssueLocationReq
import io.reactivex.Observable
object TaxiRoutingServiceManager {
object RoutingServiceManager {
private var mRoutingServiceApi: TaxiRoutingServiceApi =
private var mRoutingServiceApi: RoutingServiceApi =
MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(
TaxiRoutingServiceApi::class.java
RoutingServiceApi::class.java
)
/**
@@ -32,7 +22,7 @@ object TaxiRoutingServiceManager {
*/
fun queryRoutingGrayLineList(
context: Context,
callback: OchCommonServiceCallback<QueryGrayContrailListRsp>
callback: OchCommonServiceCallback<com.mogo.och.biz.routing.bean.QueryGrayContrailListRsp>
) {
mRoutingServiceApi.queryRoutingGrayLineList(
sn = SharedPrefsMgr.getInstance().sn
@@ -46,8 +36,8 @@ object TaxiRoutingServiceManager {
*/
fun startGrayTask(
context: Context,
data: StartGrayContrailTaskReq,
callback: OchCommonServiceCallback<StartGrayContrailTaskRsp>
data: com.mogo.och.biz.routing.bean.StartGrayContrailTaskReq,
callback: OchCommonServiceCallback<com.mogo.och.biz.routing.bean.StartGrayContrailTaskRsp>
) {
mRoutingServiceApi.startGrayTask(data = data).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "startGrayTask"))
@@ -59,7 +49,7 @@ object TaxiRoutingServiceManager {
fun queryRoutingContrailById(
context: Context,
contrailId: Long,
callback: OchCommonServiceCallback<QueryRoutingContrailByIdRsp>
callback: OchCommonServiceCallback<com.mogo.och.biz.routing.bean.QueryRoutingContrailByIdRsp>
) {
mRoutingServiceApi.queryRoutingContrailById(contrailId = contrailId).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryRoutingContrailById"))
@@ -70,7 +60,7 @@ object TaxiRoutingServiceManager {
*/
fun submitGrayLineIssueLocation(
context: Context,
data: SubmitGrayLineIssueLocationReq,
data: com.mogo.och.biz.routing.bean.SubmitGrayLineIssueLocationReq,
callback: OchCommonServiceCallback<BaseData>
) {
mRoutingServiceApi.submitGrayLineIssueLocation(data = data).transformTry()
@@ -82,7 +72,7 @@ object TaxiRoutingServiceManager {
*/
fun endGrayTask(
context: Context,
data: EndGrayContrailTaskReq,
data: com.mogo.och.biz.routing.bean.EndGrayContrailTaskReq,
callback: OchCommonServiceCallback<BaseData>
) {
mRoutingServiceApi.endGrayTask(data = data).transformTry()
@@ -91,14 +81,14 @@ object TaxiRoutingServiceManager {
fun getErrorPointReasons(
context: Context,
callback: OchCommonServiceCallback<QueryPointErrorReasonsRsp>
callback: OchCommonServiceCallback<com.mogo.och.biz.routing.bean.QueryPointErrorReasonsRsp>
) {
mRoutingServiceApi.getDotErrorList().transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "dot/list"))
}
fun saveDotDetail(
context: Context,
data: SaveGrayContrailErrorReasons,
data: com.mogo.och.biz.routing.bean.SaveGrayContrailErrorReasons,
callback: OchCommonServiceCallback<BaseData>
) {
mRoutingServiceApi.saveDotDetail(data = data).transformTry()
@@ -112,16 +102,17 @@ object TaxiRoutingServiceManager {
context: Context,
sn: String,
contrailId: Long,
grayLineBean: GrayLineBean,
callback: OchCommonServiceCallback<StartGrayAndQueryContrailRsp>
grayLineBean: com.mogo.och.biz.routing.bean.GrayLineBean,
callback: OchCommonServiceCallback<com.mogo.och.biz.routing.bean.StartGrayAndQueryContrailRsp>
) {
val data = StartGrayContrailTaskReq(sn = sn, contrailId = contrailId)
val data =
com.mogo.och.biz.routing.bean.StartGrayContrailTaskReq(sn = sn, contrailId = contrailId)
var taskId: Long
mRoutingServiceApi.startGrayTask(data = data)
.flatMap { startGrayRsp ->
if (startGrayRsp.data == null) {
taskId = -1L
val result = StartGrayAndQueryContrailRsp(
val result = com.mogo.och.biz.routing.bean.StartGrayAndQueryContrailRsp(
taskId = taskId,
contrail = null,
grayLineBean = grayLineBean
@@ -133,7 +124,7 @@ object TaxiRoutingServiceManager {
taskId = startGrayRsp.data!!
return@flatMap mRoutingServiceApi.queryRoutingContrailById(contrailId = contrailId)
.map { queryRoutingContrailRsp ->
val result = StartGrayAndQueryContrailRsp(
val result = com.mogo.och.biz.routing.bean.StartGrayAndQueryContrailRsp(
taskId = taskId,
contrail = queryRoutingContrailRsp.data,
grayLineBean = grayLineBean

View File

@@ -1,8 +1,8 @@
package com.mogo.och.unmanned.taxi.ui.routing
package com.mogo.och.biz.routing.ui
import androidx.lifecycle.ViewModel
import com.mogo.och.biz.routing.bean.StartGrayAndQueryContrailRsp
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.unmanned.taxi.bean.StartGrayAndQueryContrailRsp
/**
* @author XuXinChao

View File

@@ -1,21 +1,19 @@
package com.mogo.och.unmanned.taxi.ui.routing
package com.mogo.och.biz.routing.ui
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeViewModelStoreOwner
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.och.biz.R
import com.mogo.och.biz.routing.bean.StartGrayAndQueryContrailRsp
import com.mogo.och.common.module.utils.ResourcesUtils
import com.mogo.och.unmanned.taxi.R
import com.mogo.och.unmanned.taxi.TaxiUnmannedDriverProvider
import com.mogo.och.unmanned.taxi.bean.StartGrayAndQueryContrailRsp
import kotlinx.android.synthetic.main.unmanned_routing_switch.view.routingRunningView
import kotlinx.android.synthetic.main.unmanned_routing_switch.view.routingSelectView
import kotlinx.android.synthetic.main.unmanned_routing_switch.view.switch_routing_loading
import kotlinx.android.synthetic.main.biz_taxi_switch.view.routingRunningView
import kotlinx.android.synthetic.main.biz_taxi_switch.view.routingSelectView
import kotlinx.android.synthetic.main.biz_taxi_switch.view.switch_routing_loading
class RoutingSwitchView: ConstraintLayout, RoutingSwitchModel.SwtichLineViewCallback {
@@ -35,17 +33,15 @@ class RoutingSwitchView: ConstraintLayout, RoutingSwitchModel.SwtichLineViewCall
private var viewModel: RoutingSwitchModel?=null
private var fragment: LifecycleOwner?=null
init {
LayoutInflater.from(context).inflate(R.layout.unmanned_routing_switch, this, true)
LayoutInflater.from(context).inflate(R.layout.biz_taxi_switch, this, true)
initView()
initEventBus()
}
private fun initView(){
fragment = TaxiUnmannedDriverProvider.getFragmentInfo()
switch_routing_loading.setEmptyText(ResourcesUtils.getString(R.string.common_biz_loading))
}

View File

@@ -1,16 +1,15 @@
package com.mogo.och.unmanned.taxi.ui.routing.errorpoint
package com.mogo.och.biz.routing.ui.errorpoint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.CheckBox
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import androidx.recyclerview.widget.RecyclerView
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.och.unmanned.taxi.R
import com.mogo.och.unmanned.taxi.bean.PointError
import com.mogo.och.biz.R
import com.mogo.och.biz.routing.bean.PointError
import me.jessyan.autosize.AutoSizeCompat
/**
@@ -40,7 +39,7 @@ class ErrorPointItemAdapter(
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TextVH {
val view: View
val inflater = LayoutInflater.from(context)
view = inflater.inflate(R.layout.taxt_report_error_point_item, parent, false)
view = inflater.inflate(R.layout.biz_taxi_report_error_point_item, parent, false)
return TextVH(view)
}
@@ -48,9 +47,9 @@ class ErrorPointItemAdapter(
val errorInfo = dataList[holder.bindingAdapterPosition]
AutoSizeCompat.autoConvertDensityOfGlobal(holder.itemView.resources)
if (errorInfo.isCheck) {
holder.cbErrorInfo.setImageResource(R.drawable.taxi_routing_check)
holder.cbErrorInfo.setImageResource(R.drawable.biz_taxi_routing_check)
}else{
holder.cbErrorInfo.setImageResource(R.drawable.taxi_routing_uncheck)
holder.cbErrorInfo.setImageResource(R.drawable.biz_taxi_uncheck)
}
holder.cbErrorResong.text = errorInfo.name
holder.itemView.onClick {

View File

@@ -1,29 +1,25 @@
package com.mogo.och.unmanned.taxi.ui.routing.errorpoint
package com.mogo.och.biz.routing.ui.errorpoint
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.GridLayoutManager
import com.google.android.flexbox.AlignItems
import com.google.android.flexbox.FlexDirection
import com.google.android.flexbox.FlexWrap
import com.google.android.flexbox.FlexboxLayoutManager
import com.mogo.eagle.core.utilcode.kotlin.onClick
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.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.biz.R
import com.mogo.och.biz.routing.bean.PointError
import com.mogo.och.common.module.wigets.WindowRelativeLayout
import com.mogo.och.common.module.wigets.dialog.CommonDialogView
import com.mogo.och.common.module.wigets.dialog.CommonFeedbackDialog
import com.mogo.och.unmanned.taxi.R
import com.mogo.och.unmanned.taxi.bean.PointError
import kotlinx.android.synthetic.main.taxt_report_error_point_panel.view.lvs_loding
import kotlinx.android.synthetic.main.taxt_report_error_point_panel.view.rvErrorPointReason
import kotlinx.android.synthetic.main.taxt_report_error_point_panel.view.tv_report_error_point_reason
import kotlinx.android.synthetic.main.taxt_report_error_point_panel.view.tv_report_error_point_reason_cancel
import kotlinx.android.synthetic.main.taxt_report_error_point_panel.view.tv_work_order_time
import kotlinx.android.synthetic.main.biz_taxi_report_error_point_panel.view.rvErrorPointReason
import kotlinx.android.synthetic.main.biz_taxi_report_error_point_panel.view.lvs_loding
import kotlinx.android.synthetic.main.biz_taxi_report_error_point_panel.view.tv_report_error_point_reason
import kotlinx.android.synthetic.main.biz_taxi_report_error_point_panel.view.tv_report_error_point_reason_cancel
import kotlinx.android.synthetic.main.biz_taxi_report_error_point_panel.view.tv_work_order_time
/**
*
@@ -78,7 +74,7 @@ class ReportErrorPointView : WindowRelativeLayout,
private fun initView() {
d(SceneConstant.M_TAXI_P + TAG, "initView")
LayoutInflater.from(context).inflate(R.layout.taxt_report_error_point_panel, this, true)
LayoutInflater.from(context).inflate(R.layout.biz_taxi_report_error_point_panel, this, true)
rvErrorPointReason?.layoutManager = GridLayoutManager(context, 2)
rvErrorPointReason?.setHasFixedSize(true)

View File

@@ -1,16 +1,16 @@
package com.mogo.och.unmanned.taxi.ui.routing.errorpoint
package com.mogo.och.biz.routing.ui.errorpoint
import androidx.lifecycle.ViewModel
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.biz.routing.bean.PointError
import com.mogo.och.biz.routing.bean.QueryPointErrorReasonsRsp
import com.mogo.och.biz.routing.bean.SaveGrayContrailErrorReasons
import com.mogo.och.biz.routing.net.RoutingServiceManager
import com.mogo.och.bridge.autopilot.location.OchLocationManager
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.unmanned.taxi.bean.PointError
import com.mogo.och.unmanned.taxi.bean.QueryPointErrorReasonsRsp
import com.mogo.och.unmanned.taxi.bean.SaveGrayContrailErrorReasons
import com.mogo.och.unmanned.taxi.network.TaxiRoutingServiceManager
class ReportErrorPointViewModel : ViewModel() {
@@ -30,7 +30,7 @@ class ReportErrorPointViewModel : ViewModel() {
}
fun getPointErrorReasons(){
TaxiRoutingServiceManager.getErrorPointReasons(
RoutingServiceManager.getErrorPointReasons(
AbsMogoApplication.getApp(),
object : OchCommonServiceCallback<QueryPointErrorReasonsRsp> {
override fun onSuccess(data: QueryPointErrorReasonsRsp?) {
@@ -79,7 +79,7 @@ class ReportErrorPointViewModel : ViewModel() {
occurrenceTime,
errorReasonCodes
)
TaxiRoutingServiceManager.saveDotDetail(
RoutingServiceManager.saveDotDetail(
AbsMogoApplication.getApp(),
saveGrayContrailErrorReasons,
object : OchCommonServiceCallback<BaseData> {

View File

@@ -1,4 +1,4 @@
package com.mogo.och.unmanned.taxi.ui.routing.routingselect
package com.mogo.och.biz.routing.ui.routingselect
import android.content.Context
import android.view.LayoutInflater
@@ -8,8 +8,8 @@ import androidx.appcompat.widget.AppCompatTextView
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.DiffUtil.Callback
import androidx.recyclerview.widget.RecyclerView
import com.mogo.och.unmanned.taxi.R
import com.mogo.och.unmanned.taxi.bean.GrayLineBean
import com.mogo.och.biz.R
import com.mogo.och.biz.routing.bean.GrayLineBean
import me.jessyan.autosize.AutoSizeCompat
/**
@@ -42,7 +42,7 @@ class RoutingItemAdapter(
viewType: Int
): RoutingItemViewHolder {
val view = LayoutInflater.from(mContext).inflate(
R.layout.unmanned_routing_select_item, parent, false
R.layout.biz_taxi_select_item, parent, false
)
return RoutingItemViewHolder(view)
}

View File

@@ -1,4 +1,4 @@
package com.mogo.och.unmanned.taxi.ui.routing.routingselect
package com.mogo.och.biz.routing.ui.routingselect
import androidx.lifecycle.ViewModel
import com.mogo.commons.AbsMogoApplication
@@ -9,17 +9,16 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.biz.routing.bean.GrayLineBean
import com.mogo.och.biz.routing.bean.QueryGrayContrailListRsp
import com.mogo.och.biz.routing.bean.StartGrayAndQueryContrailRsp
import com.mogo.och.biz.routing.net.RoutingServiceManager
import com.mogo.och.bridge.autopilot.line.LineManager
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.data.bean.BusStationBean
import com.mogo.och.data.bean.LineInfo
import com.mogo.och.unmanned.taxi.bean.GrayLineBean
import com.mogo.och.unmanned.taxi.bean.QueryGrayContrailListRsp
import com.mogo.och.unmanned.taxi.bean.StartGrayAndQueryContrailRsp
import com.mogo.och.unmanned.taxi.network.TaxiRoutingServiceManager
import com.mogo.och.unmanned.taxi.ui.debug.DebugView
import com.mogo.och.unmanned.taxi.ui.routing.TaxiRoutingModel
import com.mogo.och.unmanned.taxi.ui.routing.routingrunning.RoutingRunningModel
import com.mogo.och.biz.routing.ui.runing.taxi.routingrunning.RoutingRunningModel
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
/**
* @author XuXinChao
@@ -43,9 +42,9 @@ class RoutingSelectModel : ViewModel() {
* 查询灰度路线
*/
fun queryRoutingGrayLineList() {
DebugView.printInfoMsg("[查询灰度路线] 准备发送请求sn=${SharedPrefsMgr.getInstance().sn}")
OchChainLogManager.writeChainLogRouting("[查询灰度路线]","[查询灰度路线] 准备发送请求sn=${SharedPrefsMgr.getInstance().sn}")
TaxiRoutingServiceManager.queryRoutingGrayLineList(
RoutingServiceManager.queryRoutingGrayLineList(
content,
object : OchCommonServiceCallback<QueryGrayContrailListRsp> {
override fun onSuccess(data: QueryGrayContrailListRsp) {
@@ -53,7 +52,7 @@ class RoutingSelectModel : ViewModel() {
TAG,
"queryRoutingGrayLineList onSuccess: data=${GsonUtils.toJson(data)}"
)
DebugView.printInfoMsg("[查询灰度路线] 请求successdataSize=${data?.data?.size}")
OchChainLogManager.writeChainLogRouting("[查询灰度路线]","[查询灰度路线] 请求successdataSize=${data?.data?.size}")
val result = mutableListOf<GrayLineBean>()
data.data?.also {
result.addAll(it)
@@ -66,7 +65,7 @@ class RoutingSelectModel : ViewModel() {
TAG,
"queryRoutingGrayLineList onFail: code=$code, msg=$msg"
)
DebugView.printErrorMsg("[查询灰度路线] 请求fail, code=$code, msg=$msg, sn=${SharedPrefsMgr.getInstance().sn}")
OchChainLogManager.writeChainLogRouting("[查询灰度路线]","[查询灰度路线] 请求fail, code=$code, msg=$msg, sn=${SharedPrefsMgr.getInstance().sn}")
ToastUtils.showShort("查询灰度线路列表异常, 请稍后重试, code=$code")
viewCallback?.onQueryRoutingGrayLineListFailed(msg ?: "查询灰度线路列表异常, 请稍后重试")
}
@@ -83,7 +82,7 @@ class RoutingSelectModel : ViewModel() {
TAG,
"queryRoutingGrayLineList onError, msg=$hintStr, sn=${SharedPrefsMgr.getInstance().sn}"
)
DebugView.printErrorMsg("[查询灰度路线] 请求error, msg=$hintStr")
OchChainLogManager.writeChainLogRouting("[查询灰度路线]","[查询灰度路线] 请求error, msg=$hintStr")
viewCallback?.onQueryRoutingGrayLineListFailed(hintStr)
}
})
@@ -93,8 +92,8 @@ class RoutingSelectModel : ViewModel() {
* 开始灰度任务&查询轨迹详情
*/
fun startGrayTaskAndQueryRoutingContrail(contrailId: Long, grayLineBean: GrayLineBean) {
DebugView.printInfoMsg("[开始灰度任务&查询轨迹详情] 准备发送请求contrailId=${contrailId}, lineId=${grayLineBean.lineId}")
TaxiRoutingServiceManager.startGrayTaskAndQueryRoutingContrail(
OchChainLogManager.writeChainLogRouting("[开始灰度任务&查询轨迹详情]","[开始灰度任务&查询轨迹详情] 准备发送请求contrailId=${contrailId}, lineId=${grayLineBean.lineId}")
RoutingServiceManager.startGrayTaskAndQueryRoutingContrail(
content,
sn = SharedPrefsMgr.getInstance().sn,
contrailId = contrailId,
@@ -109,7 +108,7 @@ class RoutingSelectModel : ViewModel() {
)
}"
)
DebugView.printInfoMsg("[开始灰度任务&查询轨迹详情] 请求successtaskId=${data.taskId}, contrailId=${contrailId}, lineId=${grayLineBean.lineId}")
OchChainLogManager.writeChainLogRouting("[开始灰度任务&查询轨迹详情]","[开始灰度任务&查询轨迹详情] 请求successtaskId=${data.taskId}, contrailId=${contrailId}, lineId=${grayLineBean.lineId}")
initAutopilot(data)
}
@@ -119,7 +118,7 @@ class RoutingSelectModel : ViewModel() {
TAG,
"startGrayTaskAndQueryRoutingContrail onFail: code=$code, msg=$msg"
)
DebugView.printErrorMsg("[开始灰度任务&查询轨迹详情] 请求fail, code=$code, msg=$msg, contrailId=${contrailId}, lineId=${grayLineBean.lineId}")
OchChainLogManager.writeChainLogRouting("[开始灰度任务&查询轨迹详情]","[开始灰度任务&查询轨迹详情] 请求fail, code=$code, msg=$msg, contrailId=${contrailId}, lineId=${grayLineBean.lineId}")
viewCallback?.onStartGrayTaskAndQueryContrailFailed( msg ?: "startGrayTaskAndQueryRoutingContrail onFail")
}
@@ -135,7 +134,7 @@ class RoutingSelectModel : ViewModel() {
TAG,
"startGrayTaskAndQueryRoutingContrail onError, msg=$hintStr, contrailId=${contrailId}, lineId=${grayLineBean.lineId}"
)
DebugView.printErrorMsg("[开始灰度任务&查询轨迹详情] 请求error, msg=$hintStr")
OchChainLogManager.writeChainLogRouting("[开始灰度任务&查询轨迹详情]","[开始灰度任务&查询轨迹详情] 请求error, msg=$hintStr")
viewCallback?.onStartGrayTaskAndQueryContrailFailed(hintStr)
}
}
@@ -143,16 +142,16 @@ class RoutingSelectModel : ViewModel() {
}
private fun initAutopilot(data: StartGrayAndQueryContrailRsp) {
DebugView.printInfoMsg("[开始任务] 准备开始任务")
OchChainLogManager.writeChainLogRouting("[开始任务]","[开始任务] 准备开始任务")
val grayLineBean = data.grayLineBean
val contrailBean = data.contrail
val grayId = data.taskId
if (grayLineBean == null || contrailBean == null) {
ToastUtils.showShort("灰度线路或轨迹信息异常,请稍后再试")
DebugView.printErrorMsg("[开始任务] 灰度线路或轨迹信息异常,请稍后再试")
OchChainLogManager.writeChainLogRouting("[开始任务]","[开始任务] 灰度线路或轨迹信息异常,请稍后再试")
return
}
DebugView.printInfoMsg("[启自驾] 准备启动自驾")
OchChainLogManager.writeChainLogRouting("[启自驾]","[启自驾] 准备启动自驾")
val startStation = grayLineBean.startSite?.toBusStationBean()
val endStation = grayLineBean.endSite?.toBusStationBean()

View File

@@ -1,4 +1,4 @@
package com.mogo.och.unmanned.taxi.ui.routing.routingselect
package com.mogo.och.biz.routing.ui.routingselect
import android.content.Context
import android.util.AttributeSet
@@ -9,16 +9,16 @@ import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeViewModelStoreOwner
import com.mogo.eagle.core.utilcode.mogo.view.SpacesItemDecoration
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.biz.R
import com.mogo.och.biz.routing.bean.GrayLineBean
import com.mogo.och.biz.routing.bean.StartGrayAndQueryContrailRsp
import com.mogo.och.common.module.wigets.WrapContentLinearLayoutManager
import com.mogo.och.unmanned.taxi.R
import com.mogo.och.unmanned.taxi.bean.GrayLineBean
import com.mogo.och.unmanned.taxi.bean.StartGrayAndQueryContrailRsp
import com.mogo.och.unmanned.taxi.ui.debug.DebugView
import com.mogo.och.unmanned.taxi.ui.routing.RoutingSwitchModel
import com.mogo.och.unmanned.taxi.ui.routing.routingselect.RoutingSelectModel.SwtichRoutingViewCallback
import kotlinx.android.synthetic.main.unmanned_routing_select.view.include_empty
import kotlinx.android.synthetic.main.unmanned_routing_select.view.include_error
import kotlinx.android.synthetic.main.unmanned_routing_select.view.switch_routing_rv
import com.mogo.och.biz.routing.ui.RoutingSwitchModel
import com.mogo.och.biz.routing.ui.routingselect.RoutingSelectModel.SwtichRoutingViewCallback
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import kotlinx.android.synthetic.main.biz_taxi_select.view.include_empty
import kotlinx.android.synthetic.main.biz_taxi_select.view.include_error
import kotlinx.android.synthetic.main.biz_taxi_select.view.switch_routing_rv
import me.jessyan.autosize.utils.AutoSizeUtils
class RoutingSelectView: ConstraintLayout, SwtichRoutingViewCallback {
@@ -48,7 +48,7 @@ class RoutingSelectView: ConstraintLayout, SwtichRoutingViewCallback {
init {
LayoutInflater.from(context).inflate(R.layout.unmanned_routing_select, this, true)
LayoutInflater.from(context).inflate(R.layout.biz_taxi_select, this, true)
initView()
}
@@ -61,12 +61,13 @@ class RoutingSelectView: ConstraintLayout, SwtichRoutingViewCallback {
switch_routing_rv.addItemDecoration(SpacesItemDecoration(AutoSizeUtils.dp2px(context,20f)))
switch_routing_rv.adapter = mChooseLineListAdapter
//设置item 点击事件
mChooseLineListAdapter.setOnLineItemClickListener(object : RoutingItemAdapter.LineItemClickListener {
mChooseLineListAdapter.setOnLineItemClickListener(object :
RoutingItemAdapter.LineItemClickListener {
override fun onItemClick(data: GrayLineBean) {
if(data.contrailId==null||data.contrailId!!<=0L){
ToastUtils.showShort("请设置轨迹信息")
}
DebugView.printInfoMsg("[选择灰度任务] 当前选择 mCurrentChosenPosition=$mCurrentChosenPosition, ")
OchChainLogManager.writeChainLogRouting("[选择灰度任务]","[选择灰度任务] 当前选择 mCurrentChosenPosition=$mCurrentChosenPosition, ")
swtichViewModel?.showLoading()
viewModel?.startGrayTaskAndQueryRoutingContrail(data.contrailId!!,data)
}

View File

@@ -1,4 +1,4 @@
package com.mogo.och.unmanned.taxi.ui.routing.routingrunning
package com.mogo.och.biz.routing.ui.runing.taxi.routingrunning
import androidx.lifecycle.ViewModel
import com.mogo.commons.AbsMogoApplication
@@ -9,6 +9,12 @@ import com.mogo.eagle.core.function.call.och.CallerEagleBaseFunctionCall4OchMana
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.och.biz.routing.bean.ContrailBean
import com.mogo.och.biz.routing.bean.EndGrayContrailTaskReq
import com.mogo.och.biz.routing.bean.EndGrayTaskFeedbackType
import com.mogo.och.biz.routing.bean.GrayLineBean
import com.mogo.och.biz.routing.bean.StartGrayAndQueryContrailRsp
import com.mogo.och.biz.routing.net.RoutingServiceManager
import com.mogo.och.bridge.autopilot.autopilot.IOchAutopilotStatusListener
import com.mogo.och.bridge.autopilot.autopilot.OchAutoPilotStatusListenerManager
import com.mogo.och.bridge.autopilot.autopilot.bean.ArrivedStation
@@ -16,15 +22,9 @@ import com.mogo.och.bridge.autopilot.line.ILineCallback
import com.mogo.och.bridge.autopilot.line.LineManager
import com.mogo.och.bridge.distance.IDistanceListener
import com.mogo.och.bridge.distance.TrajectoryAndDistanceManager
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.unmanned.taxi.bean.ContrailBean
import com.mogo.och.unmanned.taxi.bean.EndGrayContrailTaskReq
import com.mogo.och.unmanned.taxi.bean.EndGrayTaskFeedbackType
import com.mogo.och.unmanned.taxi.bean.GrayLineBean
import com.mogo.och.unmanned.taxi.bean.StartGrayAndQueryContrailRsp
import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst
import com.mogo.och.unmanned.taxi.network.TaxiRoutingServiceManager
import com.mogo.och.unmanned.taxi.ui.debug.DebugView
/**
* @author XuXinChao
@@ -57,16 +57,14 @@ class RoutingRunningModel : ViewModel(), IDistanceListener {
TAG,
"onAutopilotArriveAtStation = ${arrivalNotification.toString()}"
)
DebugView.printInfoMsg("[MAP到站通知] 上报到站location=${arrivalNotification?.endLocation}")
OchChainLogManager.writeChainLogRouting("MAP到站通知","[MAP到站通知] 上报到站location=${arrivalNotification?.endLocation}")
viewCallback?.onArrivedStation(currentGrayId)
}
}
private val lineCallback: ILineCallback = object : ILineCallback {
override fun arrivedStationSuccessBySearch() {
DebugView.printInfoMsg(
"[自车定位围栏] 并查询底盘触发到站, endSiteId=${currentGrayLineBean?.endSite?.siteId}, endSiteName=${currentGrayLineBean?.endSite?.siteName}, lineId=${currentGrayLineBean?.lineId},围栏范围:${TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE}米 没有过站、速度基本为零且在15m内"
)
OchChainLogManager.writeChainLogRouting("[自车定位围栏]","\"[自车定位围栏] 并查询底盘触发到站, endSiteId=${currentGrayLineBean?.endSite?.siteId}, endSiteName=${currentGrayLineBean?.endSite?.siteName}, lineId=${currentGrayLineBean?.lineId},围栏范围:${OchCommonConst.ARRIVE_AT_START_STATION_DISTANCE}米 没有过站、速度基本为零且在15m内\"")
viewCallback?.onArrivedStation(currentGrayId)
}
}
@@ -91,7 +89,7 @@ class RoutingRunningModel : ViewModel(), IDistanceListener {
override fun distanceCallback(distance: Float) {
val lastTime = distance / TaxiUnmannedConst.TAXI_AVERAGE_SPEED * 3.6 //秒
val lastTime = distance / OchCommonConst.TAXI_AVERAGE_SPEED * 3.6 //秒
this.viewCallback?.showDistance(distance.toLong(),lastTime.toLong())
}
@@ -110,9 +108,9 @@ class RoutingRunningModel : ViewModel(), IDistanceListener {
* 结束灰度任务
*/
fun endGrayTask(grayId: Long, type: EndGrayTaskFeedbackType, occurrenceTime: Long) {
DebugView.printInfoMsg("[结束灰度任务] 准备发送请求grayId=$grayId type=${type.type}, typeName=${type.name}")
OchChainLogManager.writeChainLogRouting("[结束灰度任务]","[结束灰度任务] 准备发送请求grayId=$grayId type=${type.type}, typeName=${type.name}")
val submit = EndGrayContrailTaskReq(grayId, type.type, occurrenceTime)
TaxiRoutingServiceManager.endGrayTask(
RoutingServiceManager.endGrayTask(
content,
submit,
object : OchCommonServiceCallback<BaseData> {
@@ -125,7 +123,7 @@ class RoutingRunningModel : ViewModel(), IDistanceListener {
)
}"
)
DebugView.printInfoMsg("[结束灰度任务] 请求successgrayId=$grayId type=${type.type}, typeName=${type.name}")
OchChainLogManager.writeChainLogRouting("[结束灰度任务]","[结束灰度任务] 请求successgrayId=$grayId type=${type.type}, typeName=${type.name}")
clearData()
viewCallback?.onSubmitEndTaskSuccess()
}
@@ -135,7 +133,7 @@ class RoutingRunningModel : ViewModel(), IDistanceListener {
TAG,
"endGrayTask onFail: code=$code, msg=$msg"
)
DebugView.printErrorMsg("[结束灰度任务] 请求fail, code=$code, msg=$msg, grayId=$grayId type=${type.type}, typeName=${type.name}")
OchChainLogManager.writeChainLogRouting("[结束灰度任务]","[结束灰度任务] 请求fail, code=$code, msg=$msg, grayId=$grayId type=${type.type}, typeName=${type.name}")
viewCallback?.onSubmitEndTaskFailed(msg ?: "endGrayTask onFail")
}
@@ -151,7 +149,7 @@ class RoutingRunningModel : ViewModel(), IDistanceListener {
TAG,
"endGrayTask onError, msg=$hintStr"
)
DebugView.printErrorMsg("[结束灰度任务] 请求error, msg=$hintStr, grayId=$grayId type=${type.type}, typeName=${type.name}")
OchChainLogManager.writeChainLogRouting("[结束灰度任务]","[结束灰度任务] 请求error, msg=$hintStr, grayId=$grayId type=${type.type}, typeName=${type.name}")
viewCallback?.onSubmitEndTaskFailed(hintStr)
}
})
@@ -183,7 +181,7 @@ class RoutingRunningModel : ViewModel(), IDistanceListener {
private fun cancelAutopilot() {
try {
CallerAutoPilotControlManager.cancelAutoPilot()
DebugView.printInfoMsg("[取消自驾] 调用成功")
OchChainLogManager.writeChainLogRouting("[取消自驾]","[取消自驾] 调用成功")
CallerLogger.d(TAG, "结束自动驾驶")
} catch (e: Exception) {
e.printStackTrace()

View File

@@ -1,4 +1,4 @@
package com.mogo.och.unmanned.taxi.ui.routing.routingrunning
package com.mogo.och.biz.routing.ui.runing.taxi.routingrunning
import android.content.Context
import android.util.AttributeSet
@@ -13,29 +13,29 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.biz.R
import com.mogo.och.biz.routing.RoutingServiceManager
import com.mogo.och.biz.routing.bean.EndGrayTaskFeedbackType
import com.mogo.och.biz.routing.bean.StartGrayAndQueryContrailRsp
import com.mogo.och.bridge.autopilot.location.OchLocationManager
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.common.module.map.AmapNaviToDestinationModel
import com.mogo.och.common.module.map.ICommonNaviChangedCallback
import com.mogo.och.unmanned.taxi.R
import com.mogo.och.unmanned.taxi.bean.EndGrayTaskFeedbackType
import com.mogo.och.unmanned.taxi.bean.StartGrayAndQueryContrailRsp
import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst
import com.mogo.och.unmanned.taxi.ui.routing.RoutingSwitchModel
import com.mogo.och.unmanned.taxi.ui.routing.TaxiRoutingModel
import com.mogo.och.biz.routing.ui.RoutingSwitchModel
import com.mogo.och.common.module.map.MapMakerManager
import com.mogo.och.common.module.wigets.dialog.CommonDialogStatus
import com.mogo.och.unmanned.taxi.ui.routing.errorpoint.ReportErrorPointView
import com.mogo.och.unmanned.taxi.utils.TaskUtils
import kotlinx.android.synthetic.main.unmanned_routing_running.view.actv_current_itinerary_end_name
import kotlinx.android.synthetic.main.unmanned_routing_running.view.actv_current_itinerary_start_name
import kotlinx.android.synthetic.main.unmanned_routing_running.view.actv_distance_end
import kotlinx.android.synthetic.main.unmanned_routing_running.view.actv_end_routing
import kotlinx.android.synthetic.main.unmanned_routing_running.view.actv_routing_name
import kotlinx.android.synthetic.main.unmanned_routing_running.view.actv_submit_task
import kotlinx.android.synthetic.main.unmanned_routing_running.view.goutp_show_routing_info
import kotlinx.android.synthetic.main.unmanned_routing_running.view.include_empty
import kotlinx.android.synthetic.main.unmanned_routing_running.view.naviToStart
import com.mogo.och.biz.routing.ui.errorpoint.ReportErrorPointView
import com.mogo.och.biz.routing.ui.utils.TimeDistanceUtils
import com.mogo.och.common.module.constant.OchCommonConst
import kotlinx.android.synthetic.main.biz_taxi_running.view.actv_end_routing
import kotlinx.android.synthetic.main.biz_taxi_running.view.actv_current_itinerary_end_name
import kotlinx.android.synthetic.main.biz_taxi_running.view.actv_current_itinerary_start_name
import kotlinx.android.synthetic.main.biz_taxi_running.view.actv_distance_end
import kotlinx.android.synthetic.main.biz_taxi_running.view.actv_routing_name
import kotlinx.android.synthetic.main.biz_taxi_running.view.actv_submit_task
import kotlinx.android.synthetic.main.biz_taxi_running.view.goutp_show_routing_info
import kotlinx.android.synthetic.main.biz_taxi_running.view.include_empty
import kotlinx.android.synthetic.main.biz_taxi_running.view.naviToStart
class RoutingRunningView: ConstraintLayout, RoutingRunningModel.RoutingRuningCallback,
ICommonNaviChangedCallback {
@@ -61,7 +61,7 @@ class RoutingRunningView: ConstraintLayout, RoutingRunningModel.RoutingRuningCal
init {
LayoutInflater.from(context).inflate(R.layout.unmanned_routing_running, this, true)
LayoutInflater.from(context).inflate(R.layout.biz_taxi_running, this, true)
initView()
initListener()
}
@@ -91,7 +91,7 @@ class RoutingRunningView: ConstraintLayout, RoutingRunningModel.RoutingRuningCal
.title("路线验证结束")
.tips("请点击按钮反馈验证结果")
.showClose(true)
.cancelTextColor(R.color.taxi_color_FF4E41)
.cancelTextColor(R.color.biz_routing_FF4E41)
.cancelStr("线路不可用")
.confirmStr("线路可用")
.status(CommonDialogStatus.Status.success)
@@ -132,7 +132,7 @@ class RoutingRunningView: ConstraintLayout, RoutingRunningModel.RoutingRuningCal
}
private fun removeAllMapMarker() {
MapMakerManager.removeAllMapMarkerByOwner(TaxiUnmannedConst.TYPE_MARKER_ROUTING_VERIFY)
MapMakerManager.removeAllMapMarkerByOwner(OchCommonConst.TYPE_MARKER_ROUTING_VERIFY)
}
private fun initStartNaviToStationParam(
@@ -162,16 +162,8 @@ class RoutingRunningView: ConstraintLayout, RoutingRunningModel.RoutingRuningCal
*/
private fun updateCurrentTaskTripInfo(meters: Long, timeInSecond: Long) {
UiThreadHandler.post {
CallerLogger.d(
TAG,
"updateCurrentTaskTripInfo, taskUtil, ${
TaskUtils.getCurrentTaskTripHtml(
meters,
timeInSecond
)
}"
)
actv_distance_end.text = "${TaskUtils.getCurrentTaskDistance(meters)} ${TaskUtils.getCurrentTaskTime(timeInSecond)}"
CallerLogger.d(TAG, "updateCurrentTaskTripInfo, taskUtil, ${TimeDistanceUtils.getCurrentTaskTripHtml(meters, timeInSecond)}")
actv_distance_end.text = "${TimeDistanceUtils.getCurrentTaskDistance(meters)} ${TimeDistanceUtils.getCurrentTaskTime(timeInSecond)}"
}
}
@@ -188,7 +180,7 @@ class RoutingRunningView: ConstraintLayout, RoutingRunningModel.RoutingRuningCal
resourceId: Int
) {
if (isAdd) {
MapMakerManager.addMapMaker(TaxiUnmannedConst.TYPE_MARKER_ROUTING_VERIFY, uuid, lat, lon, resourceId)
MapMakerManager.addMapMaker(OchCommonConst.TYPE_MARKER_ROUTING_VERIFY, uuid, lat, lon, resourceId)
} else {
MapMakerManager.removeMapMaker(uuid, lat, lon)
}
@@ -223,7 +215,7 @@ class RoutingRunningView: ConstraintLayout, RoutingRunningModel.RoutingRuningCal
override fun reInitNaviAmap(isPlay: Boolean, isRestart: Boolean) {
CallerLogger.d(TAG, "isPlay = $isPlay, isRestart=$isRestart")
if (!isRestart) {
TaxiRoutingModel.startNaviToEndStationByAMap(false)
RoutingServiceManager.invokeCallback(false)
return
}
}
@@ -244,11 +236,11 @@ class RoutingRunningView: ConstraintLayout, RoutingRunningModel.RoutingRuningCal
it.gcjLon
)
naviToStart.setOnClickListener {
TaxiRoutingModel.startNaviToEndStationByAMap(true)
RoutingServiceManager.invokeCallback(true)
}
setOrRemoveMapMaker(
true,
TaxiUnmannedConst.TAXI_ROUTING_VERIFY_START_SITE,
OchCommonConst.TAXI_ROUTING_VERIFY_START_SITE,
it.wgs84Lat,
it.wgs84Lon,
R.raw.star_marker
@@ -258,7 +250,7 @@ class RoutingRunningView: ConstraintLayout, RoutingRunningModel.RoutingRuningCal
data.grayLineBean.endSite?.also {
setOrRemoveMapMaker(
true,
TaxiUnmannedConst.TAXI_ROUTING_VERIFY_END_SITE,
OchCommonConst.TAXI_ROUTING_VERIFY_END_SITE,
it.wgs84Lat,
it.wgs84Lon,
R.raw.end_marker
@@ -271,7 +263,7 @@ class RoutingRunningView: ConstraintLayout, RoutingRunningModel.RoutingRuningCal
override fun onSubmitEndTaskSuccess() {
ToastUtils.showLong("结束任务成功")
TaxiRoutingModel.startNaviToEndStationByAMap(false)
RoutingServiceManager.invokeCallback(false)
// 移除高德导航计算距离
AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi()
swtichViewModel?.showRoutingSelectView()

View File

@@ -0,0 +1,112 @@
package com.mogo.och.biz.routing.ui.utils
import android.text.Spanned
import androidx.core.text.HtmlCompat
import com.mogo.eagle.core.utilcode.util.DateTimeUtils
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.NumberFormatUtil
import java.util.Calendar
import kotlin.math.ceil
import kotlin.math.roundToInt
object TimeDistanceUtils {
fun getCurrentTaskDistance(meters: Long):String{
var dis = "0"
var disUnit = "公里"
if (meters > 0) {
if (meters / 1000 < 1) {
disUnit = ""
dis = meters.toFloat().roundToInt().toString()
} else {
disUnit = "公里"
dis = NumberFormatUtil.formatLong(meters.toDouble() / 1000)
}
}
return "${dis}${disUnit}"
}
fun getCurrentTaskTime(timeInSecond: Long):String{
val min = ceil(timeInSecond.toDouble() / 60f).toInt()
return "${min}分钟"
}
/**
* 剩余里程和剩余时间 html
*/
fun getCurrentTaskTripHtml(meters: Long, timeInSecond: Long): Spanned {
var dis = "0"
var disUnit = "公里"
if (meters > 0) {
if (meters / 1000 < 1) {
disUnit = ""
dis = meters.toFloat().roundToInt().toString()
} else {
disUnit = "公里"
dis = NumberFormatUtil.formatLong(meters.toDouble() / 1000)
}
}
val min = ceil(timeInSecond.toDouble() / 60f).toInt()
val strHtml =
("<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>")
return HtmlCompat.fromHtml(strHtml, HtmlCompat.FROM_HTML_MODE_LEGACY)
}
fun getCurrentTaskWaitTimeHtml(): Spanned {
val currentCale = DateTimeUtils.getCurrentDateTime()
val currentDay =
DateTimeUtil.formatCalendarToString(currentCale, DateTimeUtil.yyyy_MM_dd)
currentCale.add(Calendar.MINUTE, 10)
val strHtml13: String = if (currentDay == DateTimeUtil.formatCalendarToString(
currentCale,
DateTimeUtil.yyyy_MM_dd
)
) {
("<font color=\"#CAD6FF\">免费等待至 </font>"
+ "<b><font color=\"#FFFFFF\"><big>" + DateTimeUtil.formatCalendarToString(
currentCale,
DateTimeUtil.HH_mm
) + "</big></b></font>")
} else {
("<font color=\"#CAD6FF\">免费等待至</font>"
+ "<font color=\"#FFFFFF\"><big>" + DateTimeUtil.formatCalendarToString(
currentCale,
DateTimeUtil.MM_dd_HH_mm
) + "</big></font>")
}
return HtmlCompat.fromHtml(strHtml13, HtmlCompat.FROM_HTML_MODE_LEGACY)
}
fun getCurrentTaskTotalAndDurationHtml(mileage: Float, duration: Int): Spanned {
val strHtml =
("<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>")
return HtmlCompat.fromHtml(strHtml, HtmlCompat.FROM_HTML_MODE_LEGACY)
}
fun getCurrentTaskPhoneNumAndPassengerCountHtml(phoneNum: String, passengerSize: Int): Spanned {
return HtmlCompat.fromHtml(
"<font color=\"#FFFFFF\"> " + phoneNum + "</font>" +
"<font color=\"#6473B2\"> | </font>" +
"<font color=\"#FFFFFF\">" + passengerSize + "" + "</font>",
HtmlCompat.FROM_HTML_MODE_LEGACY
)
}
fun getNextTaskPhoneNumAndPassengerCountHtml(phoneNum: String, passengerSize: Int): Spanned {
return HtmlCompat.fromHtml(
"<font color=\"#FFFFFF\"> " + phoneNum + "</font>" +
"<font color=\"#6473B2\"> | </font>" +
"<font color=\"#FFFFFF\">" + passengerSize + "" + "</font>",
HtmlCompat.FROM_HTML_MODE_LEGACY
)
}
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/biz_routing_FF4E41" android:state_pressed="true"/>
<item android:color="@color/biz_routing_FF4E41" android:state_pressed="false"/>
<item android:color="@color/biz_routing_FF4E41"/>
</selector>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/biz_routing_2eacff" android:state_pressed="true"/>
<item android:color="@color/biz_routing_2eacff" android:state_pressed="false"/>
<item android:color="@color/biz_routing_2eacff"/>
</selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/biz_routing_4D000000"/>
<corners android:radius="@dimen/dp_30"/>
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/biz_routing_80000000"/>
<corners android:radius="@dimen/dp_30"/>
</shape>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/biz_button_selected"/>
<item android:state_pressed="false" android:drawable="@drawable/biz_button_normal"/>
<item android:state_checked="true" android:drawable="@drawable/biz_button_selected"/>
<item android:state_checked="false" android:drawable="@drawable/biz_button_normal"/>
<item android:drawable="@drawable/biz_button_normal"/>
</selector>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid
android:color="@color/biz_routing_4D000000" />
<corners android:radius="@dimen/dp_30"/>
</shape>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:endColor="#660043FF"
android:startColor="#0028345E" />
</shape>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:endColor="#CC0043FF"
android:startColor="#0028345E" />
</shape>

View File

@@ -4,7 +4,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_12"
android:background="@drawable/routing_choose_line_shape_select_line_item_bg_normal"
android:background="@drawable/biz_shape_select_line_item_bg_normal"
android:orientation="vertical"
android:paddingStart="@dimen/dp_78"
android:paddingEnd="@dimen/dp_78">
@@ -51,7 +51,7 @@
android:layout_toRightOf="@+id/todayVerifyNumTextView"
android:gravity="right|center_vertical"
android:maxLines="1"
android:textColor="@color/taxi_color_ccb9c3e9"
android:textColor="@color/biz_routing_ccb9c3e9"
android:textSize="@dimen/dp_30"
tools:text="路线累计反馈0可用1不可用" />
</RelativeLayout>

View File

@@ -13,7 +13,7 @@
android:id="@+id/no_routing_data_iv"
android:layout_width="@dimen/dp_386"
android:layout_height="@dimen/dp_350"
android:src="@drawable/no_order_data"
android:src="@drawable/biz_taxi_no_order_data"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"

View File

@@ -10,7 +10,7 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:src="@drawable/taxi_routing_uncheck"
android:src="@drawable/biz_taxi_uncheck"
android:layout_width="@dimen/dp_53"
android:layout_height="@dimen/dp_53"/>
<androidx.appcompat.widget.AppCompatTextView

View File

@@ -54,7 +54,7 @@
android:background="@drawable/common_button_cancle"
android:gravity="center"
android:text="打点"
android:textColor="@color/taxi_color_2eacff"
android:textColor="@color/biz_routing_2eacff"
android:textSize="@dimen/sp_40"
android:textStyle="bold"
android:layout_marginBottom="@dimen/dp_65"

View File

@@ -5,7 +5,7 @@
android:layout_width="@dimen/dp_880"
android:layout_height="match_parent"
tools:layout_height="@dimen/dp_966"
tools:background="@drawable/shape_itinerary_bg_default"
tools:background="@drawable/biz_shape_itinerary_bg_default"
xmlns:tools="http://schemas.android.com/tools">
<androidx.appcompat.widget.AppCompatTextView
@@ -41,7 +41,7 @@
android:layout_marginStart="@dimen/dp_54"
android:layout_marginEnd="@dimen/dp_52"
android:layout_width="match_parent"
android:background="@drawable/shape_itinerary_bg_default"
android:background="@drawable/biz_shape_itinerary_bg_default"
android:layout_height="@dimen/dp_272"/>
<androidx.appcompat.widget.AppCompatImageView
@@ -52,7 +52,7 @@
android:layout_marginTop="@dimen/dp_34"
android:layout_width="@dimen/dp_45"
android:layout_height="@dimen/dp_45"
android:src="@drawable/taxi_task_current_start_station_point" />
android:src="@drawable/biz_taxi_current_start_station_point" />
<View
android:id="@+id/v_line_current_start_end"
@@ -60,7 +60,7 @@
app:layout_constraintStart_toStartOf="@+id/aciv_current_itinerary_start_point"
app:layout_constraintEnd_toEndOf="@+id/aciv_current_itinerary_start_point"
android:layout_marginTop="@dimen/dp_8"
android:background="@color/taxi_color_4D000000"
android:background="@color/biz_routing_4D000000"
android:layout_width="@dimen/dp_6"
android:layout_height="@dimen/dp_92"/>
@@ -72,7 +72,7 @@
android:layout_marginTop="@dimen/dp_8"
android:layout_width="@dimen/dp_45"
android:layout_height="@dimen/dp_45"
android:src="@drawable/taxi_task_current_end_station_point" />
android:src="@drawable/biz_taxi_current_end_station_point" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_current_itinerary_start_name"
@@ -91,7 +91,7 @@
app:layout_constraintTop_toTopOf="@+id/actv_current_itinerary_start_name"
app:layout_constraintBottom_toBottomOf="@+id/actv_current_itinerary_start_name"
app:layout_constraintEnd_toEndOf="@+id/v_bg_itinerary_info"
android:src="@drawable/taxi_task_nav"
android:src="@drawable/biz_taxi_nav"
android:layout_marginEnd="@dimen/dp_36"
android:layout_width="@dimen/dp_46"
android:layout_height="@dimen/dp_46"/>
@@ -101,7 +101,7 @@
android:id="@+id/actv_distance_end"
android:text="5.2公里"
android:textSize="@dimen/dp_32"
android:textColor="@color/taxi_color_CCCCCC"
android:textColor="@color/biz_routing_CCCCCC"
app:layout_constraintTop_toBottomOf="@+id/actv_current_itinerary_start_name"
app:layout_constraintStart_toStartOf="@+id/actv_current_itinerary_start_name"
app:layout_constraintBottom_toTopOf="@+id/actv_current_itinerary_end_name"
@@ -131,8 +131,8 @@
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="@dimen/dp_54"
android:layout_marginBottom="@dimen/dp_55"
android:background="@drawable/taxi_button_selector"
android:textColor="@color/taxi_submit_text_color_selector"
android:background="@drawable/biz_button_selector"
android:textColor="@color/biz_taxi_submit_text_color_selector"
android:textSize="@dimen/dp_40" />
<androidx.appcompat.widget.AppCompatTextView
@@ -146,8 +146,8 @@
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="@dimen/dp_54"
android:layout_marginBottom="@dimen/dp_55"
android:background="@drawable/taxi_button_selector"
android:textColor="@color/taxi_button_red_text_color"
android:background="@drawable/biz_button_selector"
android:textColor="@color/biz_taxi_button_red_text_color"
android:textSize="@dimen/dp_40" />
<androidx.constraintlayout.widget.Group

View File

@@ -5,7 +5,7 @@
android:layout_width="@dimen/dp_880"
android:layout_height="match_parent"
tools:layout_height="@dimen/dp_966"
tools:background="@drawable/shape_itinerary_bg_default"
tools:background="@drawable/biz_shape_itinerary_bg_default"
xmlns:tools="http://schemas.android.com/tools">
<androidx.appcompat.widget.AppCompatTextView

View File

@@ -4,7 +4,7 @@
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
android:layout_width="@dimen/dp_774"
android:layout_height="wrap_content"
android:background="@drawable/shape_itinerary_bg_default"
android:background="@drawable/biz_shape_itinerary_bg_default"
xmlns:tools="http://schemas.android.com/tools">
<androidx.appcompat.widget.AppCompatTextView
@@ -28,7 +28,7 @@
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="@dimen/dp_40"
android:layout_marginTop="@dimen/dp_31"
android:textColor="@color/taxi_color_CCFFFFFF"
android:textColor="@color/biz_routing_CCFFFFFF"
android:textSize="@dimen/dp_32"
tools:text="今日验证2次"
android:layout_width="wrap_content"
@@ -63,7 +63,7 @@
app:layout_constraintTop_toTopOf="@+id/actv_history_verify_num_title"
app:layout_constraintBottom_toBottomOf="@+id/actv_history_verify_num_title"
app:layout_constraintStart_toEndOf="@+id/actv_history_verify_num_title"
android:textColor="@color/taxi_color_26C14F"
android:textColor="@color/biz_routing_26C14F"
android:layout_marginStart="@dimen/dp_17"
android:textSize="@dimen/dp_30"
tools:text="5可用"
@@ -75,7 +75,7 @@
app:layout_constraintTop_toTopOf="@+id/actv_history_verify_num_title"
app:layout_constraintBottom_toBottomOf="@+id/actv_history_verify_num_title"
app:layout_constraintStart_toEndOf="@+id/actv_history_verify_num_enable_num"
android:textColor="@color/taxi_color_FF852E"
android:textColor="@color/biz_routing_FF852E"
android:layout_marginStart="@dimen/dp_28"
android:textSize="@dimen/dp_30"
tools:text="2不可用"
@@ -87,7 +87,7 @@
android:id="@+id/actv_routing_start"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:textColor="@color/taxi_color_2eacff"
android:textColor="@color/biz_routing_2eacff"
android:layout_marginEnd="@dimen/dp_40"
android:layout_marginBottom="@dimen/dp_32"
android:textSize="@dimen/dp_30"

View File

@@ -7,7 +7,7 @@
xmlns:tools="http://schemas.android.com/tools"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<com.mogo.och.unmanned.taxi.ui.routing.routingselect.RoutingSelectView
<com.mogo.och.biz.routing.ui.routingselect.RoutingSelectView
android:id="@+id/routingSelectView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -15,7 +15,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.mogo.och.unmanned.taxi.ui.routing.routingrunning.RoutingRunningView
<com.mogo.och.biz.routing.ui.runing.taxi.routingrunning.RoutingRunningView
android:id="@+id/routingRunningView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="biz_routing_FF4E41">#FF4E41</color>
<color name="biz_routing_2eacff">#2EACFF</color>
<color name="biz_routing_ccb9c3e9">#CCB9C3E9</color>
<color name="biz_routing_4D000000">#4D000000</color>
<color name="biz_routing_80000000">#80000000</color>
<color name="biz_routing_CCCCCC">#CCCCCC</color>
<color name="biz_routing_CCFFFFFF">#CCFFFFFF</color>
<color name="biz_routing_26C14F">#26C14F</color>
<color name="biz_routing_FF852E">#FF852E</color>
</resources>

View File

@@ -61,7 +61,7 @@ dependencies {
testImplementation project(path: ':OCH:common:common')
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation rootProject.ext.dependencies.amapnavi3dmap
api rootProject.ext.dependencies.amapnavi3dmap
implementation rootProject.ext.dependencies.rxandroid
implementation rootProject.ext.dependencies.arouter

View File

@@ -0,0 +1,5 @@
package com.mogo.och.common.module.biz.routing;
public interface RoutingCallback {
void showMap(boolean show);
}

View File

@@ -0,0 +1,35 @@
package com.mogo.och.common.module.biz.routing
import android.view.View
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
import com.mogo.och.common.module.biz.time.TimeService
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.loop.BizLoopManager
object RoutingManager {
private const val TAG = M_OCHCOMMON+"RoutingManager"
private var routingService: RoutingService? =
ARouter.getInstance().build(OchCommonConst.BIZ_ROUTING).navigation() as RoutingService
fun load(){
OchChainLogManager.writeChainLogInit("初始化信息","初始化算路验证系统")
d(TAG,"初始化信息_初始化算路验证系统")
}
fun getRoutingView():View?{
return routingService?.getRoutingView()
}
fun setRoutingCallback(callback: RoutingCallback?){
routingService?.setRoutingCallback(callback)
}
}

View File

@@ -0,0 +1,13 @@
package com.mogo.och.common.module.biz.routing
import android.view.View
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.facade.template.IProvider
interface RoutingService : IProvider {
fun getRoutingView(): View?
fun setRoutingCallback(callback: RoutingCallback?)
}

View File

@@ -37,6 +37,7 @@ class OchCommonConst {
const val BIZ_SKIN = "/ochbiz/common/skin"
const val BIZ_SCANNER = "/ochbiz/common/scanner"
const val BIZ_TIME = "/ochbiz/common/time"
const val BIZ_ROUTING = "/ochbiz/common/routing"
const val BIZ_OFFLINE = "/offlinedriver/offlinedata"
const val BIZ_Bridge = "/birdge/bridge"
@@ -71,5 +72,21 @@ class OchCommonConst {
const val AUTOMATIC_PLANNING_MAX_DISTANCE = 15
const val ARRIVE_AT_END_STATION_DISTANCE = 10
// taxi 到达起始点围栏
const val ARRIVE_AT_START_STATION_DISTANCE = 15 //围栏由20m改为50m 再次改为15m
//总里程/平均车速。bus的平均里程25km/htaxi的平均里程38km/h单位为分钟不足1分钟时显示1分钟。
const val TAXI_AVERAGE_SPEED = 38
//算路终点UUID
const val TAXI_ROUTING_VERIFY_END_SITE = "taxi_routing_verify_end_site"
//算路起点UUID
const val TAXI_ROUTING_VERIFY_START_SITE = "taxi_routing_verify_start_site"
const val TYPE_MARKER_ROUTING_VERIFY = "TYPE_MARKER_TAXI_ROUTING_VERIFY"
}
}

View File

@@ -64,6 +64,13 @@ object OchChainLogManager {
const val EVENT_KEY_INFO_ERROR = "analytics_event_och_error"
// 算路验证模式
const val EVENT_KEY_INFO_ROUTING = "analytics_event_och_routing"
fun writeChainLogRouting(title: String, info: String) {
writeChainLog(title, info, true, EVENT_KEY_INFO_ROUTING)
}
fun writeChainLogEye(title: String, info: String) {
writeChainLog(title, info, true, EVENT_KEY_INFO_CALL_EYE)

View File

@@ -12,6 +12,7 @@ import com.mogo.och.common.module.biz.lansocket.LoginLanDriverSocket
import com.mogo.och.common.module.biz.login.EnumLoginStatus
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.offline.OfflineManager
import com.mogo.och.common.module.biz.routing.RoutingManager
import com.mogo.och.common.module.manager.socket.lan.LanSocketManager
import com.mogo.och.facade.constant.FacadeConst
@@ -43,6 +44,7 @@ class FacadeDriverProvider : FacadeProvider() {
CheckVinManager.load()
OfflineManager.load()
OTAManager.load()
RoutingManager.load()
}
}

View File

@@ -250,6 +250,32 @@ data class OrderCompletedReqBean(
var sn: String, var orderNo: String
)
/**
* 站点信息
*/
data class RoutingSite(
var siteId: Long,// 站点ID
var siteName: String,// 站点名称
var gcjLat: Double,// 高德坐标
var gcjLon: Double,// 高德坐标
var wgs84Lon: Double,//高精坐标
var wgs84Lat: Double,//高精坐标
var pointType: Int // 1:途径点 2:禁行点 3:站点
) {
fun toBusStationBean(): BusStationBean {
val temp = BusStationBean()
temp.siteId = siteId.toInt()
temp.name = siteName
temp.lat = wgs84Lat
temp.lon = wgs84Lon
temp.gcjLat = gcjLat
temp.gcjLon = gcjLon
temp.pointType = pointType
temp.isLeaving = true
return temp
}
}
/**
* 轨迹路线
*/

View File

@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.content.Context
import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.commons.mvp.MvpFragment
@@ -18,7 +19,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.map.listener.IMogoMapListener
import com.mogo.map.uicontroller.VisualAngleMode
import com.mogo.och.common.module.biz.login.EnumOpenOrderStatus
import com.mogo.och.data.taxi.TaxiOrderStatusEnum
import com.mogo.och.common.module.utils.FlowBus
import com.mogo.och.common.module.wigets.StartAutopilotAnimationView
@@ -27,7 +27,7 @@ import com.mogo.och.unmanned.taxi.R
import com.mogo.och.unmanned.taxi.constant.TaxiDriverEventConst
import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst.Companion.START_AUTOPILOT_ANIMATION_INTERVAL
import com.mogo.och.unmanned.taxi.ui.navi.amap.TaxiAmapNaviFragment
import com.mogo.och.unmanned.taxi.ui.navi.auto.TaxiRoutingNaviFragment
import com.mogo.och.common.module.biz.routing.RoutingManager
import com.mogo.och.unmanned.taxi.ui.operational.OperationalManager
import com.mogo.och.unmanned.taxi.ui.task.TaxiTaskModel
import com.mogo.och.unmanned.taxi.ui.task.itinerarycurrent.ItineraryCurrentView
@@ -52,7 +52,7 @@ class TaxiFragment :MvpFragment<TaxiFragment?, TaxiPresenter?>(),
private var ochAmapNaviFragment: TaxiAmapNaviFragment? = null
// 高德地图轨迹展示fragment
private var taxiRoutingNaviFragment: TaxiRoutingNaviFragment? = null
private var taxiRoutingNaviFragment: Fragment? = null
private val runningTaskGateWay = "RUNNINGTASKGATEWAY"
private val lineView = "LINEVIEW"
@@ -231,24 +231,24 @@ class TaxiFragment :MvpFragment<TaxiFragment?, TaxiPresenter?>(),
}
fun showRoutingToStationFragment(isShow: Boolean) {
val transaction: FragmentTransaction = childFragmentManager.beginTransaction()
closeRoutingViewIfHadAdd()
if (isShow) {
closeAmapViewIFHadeAdd()
taxiRoutingNaviFragment = TaxiRoutingNaviFragment.newInstance()
if (taxiRoutingNaviFragment!!.isAdded) {
return
}
transaction.add(R.id.module_mogo_och_navi_panel_container, taxiRoutingNaviFragment!!)
.show(taxiRoutingNaviFragment!!)
transaction.commitAllowingStateLoss()
taxi_close_navi_icon.visibility = View.VISIBLE
module_mogo_och_navi_panel_container.visibility = View.VISIBLE
} else {
taxi_close_navi_icon.visibility = View.GONE
module_mogo_och_navi_panel_container.visibility =
View.INVISIBLE //2023.9.4高德导航由gone设置成INVISIBLE,保留导航实例,避免导航被挂起
}
// val transaction: FragmentTransaction = childFragmentManager.beginTransaction()
// closeRoutingViewIfHadAdd()
// if (isShow) {
// closeAmapViewIFHadeAdd()
// taxiRoutingNaviFragment = TaxiRoutingNaviFragment.newInstance()
// if (taxiRoutingNaviFragment!!.isAdded) {
// return
// }
// transaction.add(R.id.module_mogo_och_navi_panel_container, taxiRoutingNaviFragment!!)
// .show(taxiRoutingNaviFragment!!)
// transaction.commitAllowingStateLoss()
// taxi_close_navi_icon.visibility = View.VISIBLE
// module_mogo_och_navi_panel_container.visibility = View.VISIBLE
// } else {
// taxi_close_navi_icon.visibility = View.GONE
// module_mogo_och_navi_panel_container.visibility =
// View.INVISIBLE //2023.9.4高德导航由gone设置成INVISIBLE,保留导航实例,避免导航被挂起
// }
}
fun startNaviToEndStation(isShow: Boolean) {

View File

@@ -14,6 +14,8 @@ import com.mogo.och.common.module.biz.login.ILoginCallback;
import com.mogo.och.common.module.biz.login.EnumLoginStatus;
import com.mogo.och.common.module.biz.login.LoginStatusManager;
import com.mogo.och.common.module.biz.login.EnumOpenOrderStatus;
import com.mogo.och.common.module.biz.routing.RoutingCallback;
import com.mogo.och.common.module.biz.routing.RoutingManager;
import com.mogo.och.unmanned.taxi.utils.order.OrderListener;
import com.mogo.och.unmanned.taxi.utils.order.OrderModel;
import com.mogo.och.data.taxi.TaxiOrderStatusEnum;
@@ -23,7 +25,6 @@ import com.mogo.och.data.taxi.BaseOrderBean;
import com.mogo.och.unmanned.taxi.callback.ITaxiADASStatusCallback;
import com.mogo.och.unmanned.taxi.callback.ITaxiControllerStatusCallback;
import com.mogo.och.unmanned.taxi.callback.ITaxiOrderStatusCallback;
import com.mogo.och.unmanned.taxi.ui.routing.TaxiRoutingModel;
import com.mogo.och.unmanned.taxi.ui.task.TaxiTaskModel;
/**
@@ -33,7 +34,7 @@ import com.mogo.och.unmanned.taxi.ui.task.TaxiTaskModel;
* 描述
*/
public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASStatusCallback,
ITaxiOrderStatusCallback, ITaxiControllerStatusCallback, ILoginCallback, OrderListener {
ITaxiOrderStatusCallback, ITaxiControllerStatusCallback, ILoginCallback, OrderListener, RoutingCallback {
private static final String TAG = TaxiPresenter.class.getSimpleName();
@@ -55,7 +56,7 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
TaxiTaskModel.INSTANCE.setADASStatusCallback(this);
TaxiTaskModel.INSTANCE.setControllerStatusCallback(this);
TaxiTaskModel.INSTANCE.setOrderStatusCallback(this);
TaxiRoutingModel.INSTANCE.setOrderStatusCallback(this);
RoutingManager.INSTANCE.setRoutingCallback(this);
LoginStatusManager.INSTANCE.addListener(TAG,this);
OrderModel.INSTANCE.setOrderStatusCallback(TAG,this);
OchTransform.INSTANCE.addListener(TAG,ochTransform);
@@ -65,6 +66,7 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
TaxiTaskModel.INSTANCE.setADASStatusCallback(null);
TaxiTaskModel.INSTANCE.setControllerStatusCallback(null);
TaxiTaskModel.INSTANCE.setOrderStatusCallback(null);
RoutingManager.INSTANCE.setRoutingCallback(null);
OCHAdasAbilityManager.getInstance().release();
TaxiTaskModel.INSTANCE.setMoGoAutopilotPlanningListener(null);
LoginStatusManager.INSTANCE.removeListener(TAG);
@@ -226,4 +228,9 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
}
}
}
@Override
public void showMap(boolean show) {
mView.showAmapNaviToStationFragment(show);
}
}

View File

@@ -5,6 +5,7 @@ import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeViewModelStoreOwner
import com.mogo.och.common.module.biz.routing.RoutingManager
import com.mogo.och.common.module.wigets.WindowRelativeLayout
import com.mogo.och.unmanned.taxi.R
import kotlinx.android.synthetic.main.unmanned_switch_biz.view.itinerarySwitchView
@@ -45,11 +46,17 @@ class SwitchBizView: WindowRelativeLayout, SwtichBizeModel.SwtichLineViewCallbac
override fun showTaskView() {
itinerarySwitchView.visibility = VISIBLE
routingSwitchView.visibility = GONE
RoutingManager.getRoutingView()?.let {
routingSwitchView.removeView(it)
}
}
override fun showRoutingView() {
itinerarySwitchView.visibility = GONE
routingSwitchView.visibility = VISIBLE
RoutingManager.getRoutingView()?.let {
routingSwitchView.addView(it)
}
}
}

View File

@@ -1,24 +0,0 @@
package com.mogo.och.unmanned.taxi.ui.routing
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.unmanned.taxi.callback.ITaxiOrderStatusCallback
object TaxiRoutingModel {
private val TAG = SceneConstant.M_TAXI + TaxiRoutingModel::class.java.simpleName
private var mOrderStatusCallback: ITaxiOrderStatusCallback? = null
fun setOrderStatusCallback(callback: ITaxiOrderStatusCallback?) {
mOrderStatusCallback = callback
}
/**
* 显示/隐藏 前往任务目的地的导航
*
* @param isShow
*/
fun startNaviToEndStationByAMap(isShow: Boolean) {
mOrderStatusCallback?.onNaviToEnd(true, isShow)
}
}

View File

@@ -1,270 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/dp_618"
android:layout_height="@dimen/dp_960"
android:paddingTop="@dimen/dp_26"
android:paddingBottom="@dimen/dp_32"
android:paddingStart="@dimen/dp_29"
android:paddingEnd="@dimen/dp_29"
android:background="@drawable/taxi_order_bg"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/headerTitleContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.mogo.och.common.module.wigets.MarqueeTextView
android:id="@+id/taskTitleTv"
android:layout_width="@dimen/dp_420"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_35"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
android:text="路线name路线name"
android:textColor="@android:color/white"
android:textSize="@dimen/dp_46"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/headerTitleContainer">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/bottomBtnContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/btnChooseTask"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_116"
android:background="@drawable/routing_click_btn_bg"
android:gravity="center"
android:text="@string/routing_verify_btn_choose_task"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_44"
app:layout_constraintBottom_toBottomOf="parent"
tools:visibility="gone" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/btnStartTask"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_116"
android:background="@drawable/routing_click_btn_bg"
android:gravity="center"
android:text="@string/routing_verify_btn_start_task"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_44"
app:layout_constraintBottom_toBottomOf="parent"
tools:visibility="gone" />
<TextView
android:id="@+id/btnFinishTask"
android:layout_width="0dp"
android:layout_height="@dimen/dp_116"
android:layout_weight="1"
android:background="@drawable/routing_btn_bg_finish_task"
android:gravity="center"
android:text="结束任务"
android:textColor="@android:color/white"
android:textSize="@dimen/dp_44"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_percent="0.55" />
<TextView
android:id="@+id/btnSummitIssue"
android:layout_width="0dp"
android:layout_height="@dimen/dp_116"
android:layout_weight="1"
android:background="@drawable/routing_btn_bg_submit_issue"
android:gravity="center"
android:text="问题打点"
android:textColor="@android:color/white"
android:textSize="@dimen/dp_44"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintWidth_percent="0.55" />
<androidx.constraintlayout.widget.Group
android:id="@+id/finishSubmitIssueGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
app:constraint_referenced_ids="btnFinishTask,btnSummitIssue"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/mCurrentTaskLayout"
android:layout_width="@dimen/module_och_taxi_panel_width"
android:layout_height="0dp"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@+id/bottomBtnContainer"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/taskHintTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_40"
android:layout_marginTop="@dimen/dp_54"
android:text="当前任务"
android:textColor="@android:color/white"
android:textSize="@dimen/dp_34"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/startStationTag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_78"
android:layout_marginTop="@dimen/dp_30"
android:text="上车:"
android:textColor="@color/station_tag_color"
android:textSize="@dimen/dp_32"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/taskHintTextView"
app:layout_goneMarginTop="@dimen/dp_68" />
<com.mogo.och.common.module.wigets.MarqueeTextView
android:id="@+id/startStationName"
android:layout_width="@dimen/dp_366"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_12"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
android:text="始发站"
android:textColor="@android:color/white"
android:textSize="@dimen/dp_44"
app:layout_constraintLeft_toLeftOf="@+id/startStationTag"
app:layout_constraintTop_toBottomOf="@+id/startStationTag" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/naviToStart"
android:layout_width="@dimen/dp_48"
android:layout_height="@dimen/dp_48"
android:layout_marginEnd="@dimen/dp_40"
android:src="@drawable/taxi_navi_icon"
app:layout_constraintBottom_toBottomOf="@id/startStationName"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@+id/startStationName"
app:layout_goneMarginEnd="@dimen/dp_40" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/naviToEnd"
android:layout_width="@dimen/dp_48"
android:layout_height="@dimen/dp_48"
android:layout_marginEnd="@dimen/dp_40"
android:src="@drawable/taxi_navi_icon"
app:layout_constraintBottom_toBottomOf="@id/endStationName"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@+id/endStationName"
app:layout_goneMarginEnd="@dimen/dp_40" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/endStationTag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_52"
android:text="下车:"
android:textColor="@color/station_tag_color"
android:textSize="@dimen/dp_32"
app:layout_constraintStart_toStartOf="@+id/startStationTag"
app:layout_constraintTop_toBottomOf="@+id/startStationName" />
<com.mogo.och.common.module.wigets.MarqueeTextView
android:id="@+id/endStationName"
android:layout_width="@dimen/dp_366"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_12"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
android:text="终点站"
android:textColor="@android:color/white"
android:textSize="@dimen/dp_44"
app:layout_constraintLeft_toLeftOf="@+id/startStationTag"
app:layout_constraintTop_toBottomOf="@+id/endStationTag" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/startPoint"
android:layout_width="@dimen/dp_38"
android:layout_height="@dimen/dp_38"
android:src="@drawable/taxi_driver_circle_green_big"
app:layout_constraintBottom_toBottomOf="@+id/startStationName"
app:layout_constraintLeft_toLeftOf="@+id/taskHintTextView"
app:layout_constraintTop_toTopOf="@+id/startStationName" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/taper"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:scaleType="fitXY"
android:src="@drawable/taxi_grab_dot_line"
app:layout_constraintBottom_toTopOf="@+id/endPoint"
app:layout_constraintLeft_toLeftOf="@+id/startPoint"
app:layout_constraintRight_toRightOf="@+id/startPoint"
app:layout_constraintTop_toBottomOf="@+id/startPoint" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/endPoint"
android:layout_width="@dimen/dp_38"
android:layout_height="@dimen/dp_38"
android:src="@drawable/taxi_driver_circle_blue_big"
app:layout_constraintBottom_toBottomOf="@+id/endStationName"
app:layout_constraintLeft_toLeftOf="@+id/taskHintTextView"
app:layout_constraintTop_toTopOf="@+id/endStationName" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/taskTripInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_30"
android:layout_marginBottom="36dp"
android:text="距离 -- 公里, 用时 -- 分钟"
android:textColor="@color/station_tag_color"
android:textSize="@dimen/dp_30"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@+id/endPoint"
app:layout_constraintTop_toBottomOf="@+id/endStationName" />
</androidx.constraintlayout.widget.ConstraintLayout>
<include
android:id="@+id/noDataContainer"
layout="@layout/unmanned_routing_no_data_common_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
app:layout_constraintBottom_toTopOf="@+id/bottomBtnContainer"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -57,7 +57,7 @@
android:layout_width="@dimen/dp_880"
android:layout_height="0dp"/>
<com.mogo.och.unmanned.taxi.ui.routing.RoutingSwitchView
<FrameLayout
android:id="@+id/routingSwitchView"
app:layout_constraintTop_toTopOf="@+id/guideline_h_top"
app:layout_constraintStart_toStartOf="@+id/guideline_v_left"