Merge remote-tracking branch 'origin/dev_robobus-m1-p-app-module_1.1.0_230112_1.1.0' into dev_robobus-m1-p-app-module_1.1.0_230112_1.1.0

This commit is contained in:
yangyakun
2023-02-28 20:40:12 +08:00
24 changed files with 410 additions and 143 deletions

View File

@@ -192,6 +192,7 @@ class PM2DrivingModel private constructor() {
private val moGoAutopilotPlanningListener = object : IMoGoPlanningRottingListener{
override fun onAutopilotRotting(globalPathResp: MessagePad.GlobalPathResp?) {
d(SceneConstant.M_BUS_P + TAG, "och-rotting==globalPathResp = " + GsonUtils.toJson(globalPathResp))
globalPathResp?.let {
d(SceneConstant.M_BUS_P + TAG, "och-rotting==wayPointsSize = " + it.wayPointsList.size)
updateRoutePoints(it.wayPointsList)

View File

@@ -28,21 +28,21 @@ class PM2BaseFragment :
override fun initViews() {
//横竖屏
setScreenDirection()
// setScreenDirection()
//隐藏小地图
initFragment()
}
private fun setScreenDirection() {
var ro = Settings.System.getInt(context?.contentResolver,
Settings.System.USER_ROTATION,Surface.ROTATION_270)
if (ro != Surface.ROTATION_270){
ro = Surface.ROTATION_270
}
Settings.System.putInt(context?.contentResolver,
Settings.System.USER_ROTATION,ro)
}
// private fun setScreenDirection() {
// var ro = Settings.System.getInt(context?.contentResolver,
// Settings.System.USER_ROTATION,Surface.ROTATION_270)
// if (ro != Surface.ROTATION_270){
// ro = Surface.ROTATION_270
// }
// Settings.System.putInt(context?.contentResolver,
// Settings.System.USER_ROTATION,ro)
// }
/**
* 初始化行程信息,高静地图,宣传 三个fragment

View File

@@ -105,7 +105,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
pause = false
if (viewList.size > 0 && viewList[mViewPager.currentItem] is AdvanceVideoView) {
val videoView = viewList[mViewPager.currentItem] as AdvanceVideoView
videoView.setRestart()
videoView.setResume()
}
}

View File

@@ -184,9 +184,9 @@ class AdvanceVideoView @JvmOverloads constructor(
}
}
fun setRestart() {
fun setResume() {
if (videoViewPlayer !== null) {
videoViewPlayer?.startPlayLogic()
videoViewPlayer?.onVideoResume()
}
}

View File

@@ -117,14 +117,17 @@
app:layout_constraintLeft_toLeftOf="@+id/speed_tv"
android:textColor="@color/m2_line_during_tv_color"/>
<androidx.appcompat.widget.AppCompatTextView
<com.mogo.och.common.module.wigets.MarqueeTextView
android:id="@+id/station_name_tv"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textStyle="bold"
android:singleLine="true"
android:ellipsize="marquee"
android:text="@string/m2_p_empty_tv"
android:textSize="@dimen/dp_22"
android:layout_marginTop="@dimen/dp_8"
app:layout_constraintRight_toRightOf="@+id/img_line_location_bg"
app:layout_constraintTop_toBottomOf="@+id/station_name_title_tv"
app:layout_constraintLeft_toLeftOf="@+id/speed_tv"
android:textColor="@color/m2_no_line_tv_color"/>
@@ -171,13 +174,17 @@
app:layout_constraintLeft_toLeftOf="@+id/speed_tv"
android:textColor="@color/m2_no_line_tv_color"/>
<androidx.appcompat.widget.AppCompatTextView
<com.mogo.och.common.module.wigets.MarqueeTextView
android:id="@+id/line_name_tv"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textStyle="bold"
android:singleLine="true"
android:marqueeRepeatLimit="marquee_forever"
android:ellipsize="marquee"
android:layout_marginTop="@dimen/dp_16"
android:textSize="@dimen/dp_22"
app:layout_constraintRight_toRightOf="@+id/img_line_location_bg"
app:layout_constraintTop_toTopOf="@+id/img_time_bg"
app:layout_constraintLeft_toLeftOf="@+id/speed_tv"
android:textColor="@color/m2_line_name_tv_color"/>

View File

@@ -963,7 +963,7 @@ public class OrderModel {
//展示在运营消息
OCHSocketMessageManager.INSTANCE.pushAppOperationalMsgBox(
DateTimeUtil.getCurrentTimeStamp(),
tips);
tips,OCHSocketMessageManager.OPERATION_SYSTEM);
//语音提示
VoiceNotice.showNotice(tips);
}

View File

@@ -0,0 +1,35 @@
package com.magic.mogo.och.charter.bean
import com.mogo.eagle.core.data.BaseData
/**
* @author: wangmingjun
* @date: 2023/2/28
*/
data class QueryRoutesResponse(var data: Result) : BaseData(){
data class Result(
var csvFileUrl : String = "" ,
var csvFileMd5 : String = "" ,//轨迹文件md5默认“”
var txtFileUrl : String = "" ,//打点文件下载的cos url默认“”
var txtFileMd5 : String = "", //轨迹文件md5默认“”
var contrailSaveTime : Long = 0,//上传轨迹完成时间戳ms用于MEC本地手动导入轨迹验证时不会被云端轨迹覆盖
var carModel : String = "" ,//[optional] 车型号如红旗H9默认“”暂不加入校验逻辑、用于人工排查问题
var csvFileUrlDPQP : String = "", //轨迹文件下载的cos url默认“”
var csvFileMd5DPQP : String = "", //轨迹文件md5默认“”
var txtFileUrlDPQP : String = "" ,//打点文件下载的cos url默认“”
var txtFileMd5DPQP : String = "" ,//轨迹文件md5默认“”
var contrailSaveTimeDPQP : Long = 0//上传轨迹完成时间戳ms用于MEC本地手动导入轨迹验证时不会被云端轨迹覆盖
)
}

View File

@@ -1,7 +1,10 @@
package com.magic.mogo.och.charter.fragment
import android.os.Bundle
import android.os.CountDownTimer
import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
import com.alibaba.android.arouter.launcher.ARouter
import com.magic.mogo.och.charter.R
import com.magic.mogo.och.charter.base.CharterBaseFragment
@@ -29,6 +32,7 @@ class DriverM1Fragment : CharterBaseFragment<DriverM1Fragment?, DriverM1Presente
SlidePanelView.OnSlidePanelMoveToEndListener{
private var loginService: LoginService? = null
private var ochCommitDialog: OCHCommitDialog? = null
var countDownTimer: CountDownTimer? = null
companion object{
val TAG: String = DriverM1Fragment::class.java.name
@@ -49,10 +53,11 @@ class DriverM1Fragment : CharterBaseFragment<DriverM1Fragment?, DriverM1Presente
}
fun showOrHideOrderUI(show:Boolean){
if (show){
group_stations_panel.visibility = View.VISIBLE
}else{
group_stations_panel.visibility = View.GONE
if (show && group_stations_panel.visibility == GONE){
group_stations_panel.visibility = VISIBLE
no_line_data_view.visibility = GONE
}else if (!show){
group_stations_panel.visibility = GONE
hideSlidePanel()
}
}
@@ -60,6 +65,7 @@ class DriverM1Fragment : CharterBaseFragment<DriverM1Fragment?, DriverM1Presente
fun updateOrderUI(orderStatus: QueryCurrentOrderResponse.Result){
requireActivity().runOnUiThread {
showOrHideOrderUI(true)
driverm1_line_name.text = orderStatus.lineName
driverm1StationName1Tv.text = orderStatus.startSiteName
driverm1StationName2Tv.text = orderStatus.siteName
@@ -89,7 +95,7 @@ class DriverM1Fragment : CharterBaseFragment<DriverM1Fragment?, DriverM1Presente
@Subscribe(threadMode = ThreadMode.MAIN)
fun changeOverview(eventLogout: EventLogout) {
if (eventLogout.messgae == EventLogout.LOGOUT_TYPE) {
d(SceneConstant.M_BUS + TAG, "changeOverview Event消息去登出")
d(SceneConstant.M_CHARTER_D + TAG, "changeOverview Event消息去登出")
mPresenter?.logout()
}
}
@@ -156,11 +162,29 @@ class DriverM1Fragment : CharterBaseFragment<DriverM1Fragment?, DriverM1Presente
fun updateReturnCarStatus(returnSuccess: Boolean) {
requireActivity().runOnUiThread {
if (returnSuccess){
group_stations_panel.visibility = View.GONE
no_line_data_view.visibility = View.VISIBLE
group_stations_panel.visibility = GONE
no_line_data_view.visibility = VISIBLE
}else{
slidePanelView?.visibility = View.VISIBLE
slidePanelView?.visibility = VISIBLE
}
}
}
fun startCountDownTimer(total: Long,countDownInterval:Long){
countDownTimer = object : CountDownTimer(total,countDownInterval){
override fun onTick(millisUntilFinished: Long) {
var minute=millisUntilFinished/1000/60%60
driverm1_order_count_down.text = String.format(
resources.getString(R.string.count_down_txt)
,minute)
d(SceneConstant.M_CHARTER_D + TAG, "倒计时分钟 = $minute" )
}
override fun onFinish() {
d(SceneConstant.M_CHARTER_D + TAG, "倒计时结束")
}
}
}
}

View File

@@ -10,6 +10,7 @@ import com.magic.mogo.och.charter.R
import com.magic.mogo.och.charter.bean.CheckOrderCountDownResponse
import com.magic.mogo.och.charter.bean.QueryBusinessStatusResponse
import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse
import com.magic.mogo.och.charter.bean.QueryRoutesResponse
import com.magic.mogo.och.charter.callback.ChangeDestCallback
import com.magic.mogo.och.charter.callback.DriverM1OrderCallback
import com.magic.mogo.och.charter.callback.IDriverM1ControllerStatusCallback
@@ -25,8 +26,6 @@ import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.data.telematic.TelematicConstant
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.setIPCDemoMode
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.setIgnoreConditionDraw
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
@@ -91,6 +90,8 @@ class DriverM1Model {
private var currentChangeDestMsg: ChangeDestMsg? = null
private var mCurrentResult: QueryRoutesResponse.Result? = null
//0: 代表没有启动过 1代表是启动第一次当>=1 代表是重试 每次到站/路线结束清空置为0
private var loginService: LoginService? = null
@@ -400,26 +401,6 @@ class DriverM1Model {
}
/**
* 关闭美化模式
*/
fun closeBeautificationMode() {
if (FunctionBuildConfig.isDemoMode) { //收车结束美化
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData =
false //是否强制绘制引导线
setIgnoreConditionDraw(false) // 同步给乘客屏
setIPCDemoMode(false) //是否自动启动自驾
d(SceneConstant.M_CHARTER_D + TAG, "美化模式-ignore置为false")
}
}
fun startBeautificationMode() {
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true
setIgnoreConditionDraw(true)
setIPCDemoMode(true)
}
/**
* 延时查询站点信心
*/
@@ -492,8 +473,8 @@ class DriverM1Model {
CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null)
}
fun initAutopilotControlParameters(): AutopilotControlParameters? {
if ( mCurrentOrder == null) return null
private fun initAutopilotControlParameters(): AutopilotControlParameters? {
if ( mCurrentOrder == null || mCurrentResult == null) return null
var parameters = AutopilotControlParameters()
parameters.routeID = mCurrentOrder?.lineId!!
parameters.routeName = mCurrentOrder?.lineName!!
@@ -506,17 +487,17 @@ class DriverM1Model {
parameters.endLatLon =
AutopilotControlParameters.AutoPilotLonLat(mCurrentOrder?.wgs84Lat!!, mCurrentOrder?.wgs84Lon!!)
parameters.vehicleType = VEHICLE_TYPE
// if (parameters.autoPilotLine == null) {
// parameters.autoPilotLine = AutopilotControlParameters.AutoPilotLine(
// busRoutesResult.getLineId(),
// busRoutesResult.csvFileUrl, busRoutesResult.csvFileMd5,
// busRoutesResult.txtFileUrl, busRoutesResult.txtFileMd5,
// busRoutesResult.contrailSaveTime, busRoutesResult.carModel,
// busRoutesResult.csvFileUrlDPQP, busRoutesResult.csvFileMd5DPQP,
// busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP,
// busRoutesResult.contrailSaveTimeDPQP
// )
// }
if (parameters.autoPilotLine == null) {
parameters.autoPilotLine = AutopilotControlParameters.AutoPilotLine(
mCurrentOrder!!.lineId.toLong(),
mCurrentResult!!.csvFileUrl, mCurrentResult!!.csvFileMd5,
mCurrentResult!!.txtFileUrl, mCurrentResult!!.txtFileMd5,
mCurrentResult!!.contrailSaveTime, mCurrentResult!!.carModel,
mCurrentResult!!.csvFileUrlDPQP, mCurrentResult!!.csvFileMd5DPQP,
mCurrentResult!!.txtFileUrlDPQP, mCurrentResult!!.txtFileMd5DPQP,
mCurrentResult!!.contrailSaveTimeDPQP!!
)
}
return parameters
}
@@ -567,6 +548,9 @@ class DriverM1Model {
if (data == null || data.code != 0){
return
}
d(SceneConstant.M_CHARTER_D + TAG, "queryCurrentServiceStatus success = "
+ GsonUtils.toJson(data.data))
if (data.data.businessStatus == 2){
if (TextUtils.isEmpty(data.data.orderNo)){//还未换车,显示还车状态
mOrderCallback?.updateReturnCarStatus(false)
@@ -590,25 +574,28 @@ class DriverM1Model {
DriverM1ServiceManager.queryCurrentOrder(mContext
,object: OchCommonServiceCallback<QueryCurrentOrderResponse>{
override fun onSuccess(data: QueryCurrentOrderResponse?) {
if (data == null || data.code == 0 || mCurrentOrder === data.data) return
if (data == null || data.code != 0 || mCurrentOrder === data.data) return
d(SceneConstant.M_CHARTER_D + TAG, "queryCurrentOrder order =" +
GsonUtils.toJson(data.data))
mCurrentOrder = data.data
mOrderCallback?.updateOrderUI(data.data)
// 倒计时校验开始
startOrStopCheckCountDown(true)
checkoutContrail()
checkOrderCountDown()
}
override fun onFail(code: Int, msg: String?) {
TODO("Not yet implemented")
d(SceneConstant.M_CHARTER_D + TAG, "queryCurrentOrder onFail = $msg")
}
})
}
private fun startOrStopCheckCountDown(start: Boolean) {
if (start){
DriverM1LooperManager.starCountDownLoop()
}else{
DriverM1LooperManager.stopCountDownLoop()
}
// if (start){
// DriverM1LooperManager.starCountDownLoop()
// }else{
// DriverM1LooperManager.stopCountDownLoop()
// }
}
fun checkOrderCountDown() {
@@ -618,6 +605,7 @@ class DriverM1Model {
if (data?.data == null || data.code != 0){
return
}
d(SceneConstant.M_CHARTER_D,"checkOrderCountDown = "+ GsonUtils.toJson(data.data))
val gap = data.data.endTime - data.data.currentTime
if (gap >= 0){
mOrderCallback?.updateOverCountDown((gap/1000/60).toInt())
@@ -645,6 +633,7 @@ class DriverM1Model {
override fun onSuccess(data: BaseData?) {
if (data != null && data.code == 0){
d(SceneConstant.M_CHARTER_D + TAG, "confirmed station .")
queryCurrentServiceStatus()
sendCommitMsgToClient(true)
}
}
@@ -654,4 +643,22 @@ class DriverM1Model {
}
})
}
fun checkoutContrail(){
if (mCurrentOrder == null) return
DriverM1ServiceManager.checkoutContrail(mContext,mCurrentOrder!!.lineId,
object : OchCommonServiceCallback<QueryRoutesResponse>{
override fun onSuccess(data: QueryRoutesResponse?) {
if (data == null || data.code != 0) return
d(SceneConstant.M_CHARTER_D + TAG, "checkoutContrail-=="
+ GsonUtils.toJson(data.data))
mCurrentResult = data.data
}
override fun onFail(code: Int, msg: String?) {
d(SceneConstant.M_CHARTER_D + TAG, "checkoutContrail-onFail== $msg .")
}
})
}
}

View File

@@ -1,10 +1,7 @@
package com.magic.mogo.och.charter.net
import android.content.Context
import com.magic.mogo.och.charter.bean.CheckOrderCountDownResponse
import com.magic.mogo.och.charter.bean.QueryBusinessStatusResponse
import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse
import com.magic.mogo.och.charter.bean.RequestChangeDest
import com.magic.mogo.och.charter.bean.*
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.eagle.core.data.BaseData
@@ -78,4 +75,16 @@ object DriverM1ServiceManager {
?.subscribe(OchCommonSubscribeImpl(context!!, callback, "changeDest"))
}
fun checkoutContrail(context: Context?,lineId: Int,
callback: OchCommonServiceCallback<QueryRoutesResponse>?){
mDriverM1ServiceApi.checkoutContrail(MoGoAiCloudClientConfig.getInstance().serviceAppId,
MoGoAiCloudClientConfig.getInstance().token,
MoGoAiCloudClientConfig.getInstance().sn,
lineId
)?.transformTry()
?.subscribe(OchCommonSubscribeImpl(context!!, callback, "checkOrderCountDown"))
}
}

View File

@@ -1,9 +1,6 @@
package com.magic.mogo.och.charter.net
import com.magic.mogo.och.charter.bean.CheckOrderCountDownResponse
import com.magic.mogo.och.charter.bean.QueryBusinessStatusResponse
import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse
import com.magic.mogo.och.charter.bean.RequestChangeDest
import com.magic.mogo.och.charter.bean.*
import com.mogo.eagle.core.data.BaseData
import io.reactivex.Observable
import retrofit2.http.*
@@ -52,4 +49,11 @@ interface IDriverM1Service {
@GET("/och-rental-cabin/api/business/v1/driver/queryBusinessTime")
fun checkOrderCountDown(@Header("appId") appId: String?, @Header("ticket") ticket: String?,
@Query("sn") sn: String?): Observable<CheckOrderCountDownResponse>?
@Headers("Content-type:application/json;charset=UTF-8")
@GET("/och-rental-cabin/api/business/v1/driver/contrail")
fun checkoutContrail(@Header("appId") appId: String?, @Header("ticket") ticket: String?,
@Query("sn") sn: String?
,@Query("lineId") lineId:Int): Observable<QueryRoutesResponse>?
}

View File

@@ -99,6 +99,7 @@
android:textStyle="bold"
android:textColor="@color/bus_arrived_station_name_text_color"
android:includeFontPadding = "false"
android:layout_marginTop="@dimen/dp_10"
android:maxLines="2"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
@@ -111,6 +112,7 @@
android:layout_height="wrap_content"
android:text="--"
android:textSize="@dimen/module_mogo_och_bus_station_name_text_size"
android:layout_marginTop="@dimen/dp_10"
android:textStyle="bold"
android:textColor="@color/bus_arrived_station_name_text_color"
android:includeFontPadding = "false"
@@ -164,7 +166,7 @@
<View
android:id="@+id/line3"
android:layout_width="0dp"
android:layout_height="@dimen/dp_1"
android:layout_height="0.5dp"
android:layout_marginTop="@dimen/dp_40"
android:background="#FFFFFF"
app:layout_constraintTop_toBottomOf="@+id/driverm1StationName2Tv"

View File

@@ -93,6 +93,7 @@ abstract class CharterBaseFragment<V : IView?, P : Presenter<V>?>() :
flStationPanelContainer = findViewById(R.id.module_mogo_och_station_panel_container)
slidePanelView = findViewById(R.id.charter_slide_panel)
slidePanelView?.setText(resources.getString(R.string.back_car))
slidePanelView?.setOnSlidePanelMoveToEndListener(onSlideToEndListener)
mTrafficDataView = findViewById<View>(R.id.bus_arc) as TrafficDataView?

View File

@@ -49,5 +49,6 @@
<!-- endregion -->
<string name="bus_before_tips_s">距离发车时间还有%1$s分钟</string>
<string name="back_car">确认还车</string>
</resources>

View File

@@ -14,7 +14,7 @@ import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
object OCHSocketMessageManager {
const val msgMonitorType:Int = 6295553 //后台运营消息
const val msgWriteOffPassengerType:Int = 6295554 //核销消息
const val msgOperateDoorType = 6295554 // 开/关门消息
const val msgOperateDoorType = 6295556 // 开/关门消息
const val msgOrderClosedType = 6295555 //订单结束消息
const val OPERATION_SYSTEM: Int = -1 // 运营消息 默认是次消息类型

View File

@@ -478,22 +478,24 @@ Object readFileToJson(env){
return null
}
def variantName() {
if(gradle.startParameter.taskNames.size()>0) {
def taskName = gradle.startParameter.taskNames[0]
taskName = taskName.replace("Debug","")
taskName = taskName.replace("Release","")
if (taskName.endsWith("Qa")) {
return "qa"
} else if (taskName.endsWith("Online")) {
return "online"
} else if (taskName.endsWith("Demo")) {
return "demo"
} else {
return "qa"
for (String taskName : gradle.startParameter.taskNames) {
if (taskName.startsWith("assemble")) {
taskName = taskName.replace("Debug","")
taskName = taskName.replace("Release","")
if (taskName.endsWith("Qa")) {
return "qa"
} else if (taskName.endsWith("Online")) {
return "online"
} else if (taskName.endsWith("Demo")) {
return "demo"
}
}
}
}else {
return "qa"
}
return "qa"
}

View File

@@ -50,6 +50,6 @@ project.android.productFlavors {
buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false'
//Bus不能启动自驾的档位
buildConfigField 'java.util.Set<chassis.Chassis.GearPosition>', 'UNABLE_LAUNCH_AUTOPILOT_GEAR_BUS', 'new java.util.HashSet<chassis.Chassis.GearPosition>(){{add(chassis.Chassis.GearPosition.GEAR_N);add(chassis.Chassis.GearPosition.GEAR_R);}}'
buildConfigField 'java.util.Set<chassis.Chassis.GearPosition>', 'UNABLE_LAUNCH_AUTOPILOT_GEAR', 'new java.util.HashSet<chassis.Chassis.GearPosition>(){{add(chassis.Chassis.GearPosition.GEAR_N);add(chassis.Chassis.GearPosition.GEAR_R);}}'
}
}

View File

@@ -46,6 +46,6 @@ project.android.productFlavors {
buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false'
//Bus不能启动自驾的档位
buildConfigField 'java.util.Set<chassis.Chassis.GearPosition>', 'UNABLE_LAUNCH_AUTOPILOT_GEAR_BUS', 'new java.util.HashSet<chassis.Chassis.GearPosition>(){{add(chassis.Chassis.GearPosition.GEAR_N);add(chassis.Chassis.GearPosition.GEAR_R);}}'
buildConfigField 'java.util.Set<chassis.Chassis.GearPosition>', 'UNABLE_LAUNCH_AUTOPILOT_GEAR', 'new java.util.HashSet<chassis.Chassis.GearPosition>(){{add(chassis.Chassis.GearPosition.GEAR_N);add(chassis.Chassis.GearPosition.GEAR_R);}}'
}
}

View File

@@ -48,5 +48,8 @@ project.android.productFlavors {
// 构建 是否支持多屏异显异交互
buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false'
//M1不能启动自驾的档位
buildConfigField 'java.util.Set<chassis.Chassis.GearPosition>', 'UNABLE_LAUNCH_AUTOPILOT_GEAR', 'null'
}
}

View File

@@ -1129,6 +1129,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
}
}, "1234567");*/
}
options.setUnableLaunchAutopilotGear(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_TAXI);
AdasManager.getInstance().create(options, this);
AdasManager.getInstance().setOnAdasListener(this);
/*两端数据转发 注释掉

View File

@@ -13,6 +13,8 @@ import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
@@ -41,6 +43,7 @@ import com.zhidao.support.adas.high.common.autopilot.ability.AutopilotAbilityMan
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
@@ -64,11 +67,16 @@ public class VersionFragment extends BaseFragment {
private CheckBox unregistered_check_all;
private TextView hint_registered;
private TextView hint_unregistered;
private TextView can;
private TextView gear_influence;
private TextView gear;
private TextView title_gear;
private RadioButton rb_taxi;
private RadioGroup rg;
private ConfigAdapter adapter;
private InterfaceAdapter unregisteredAdapter;
private InterfaceAdapter registeredAdapter;
private Set[] unableGears;
private int role = Constants.TERMINAL_ROLE.DEBUG;//角色 默认调试屏
@@ -134,6 +142,12 @@ public class VersionFragment extends BaseFragment {
Button btn2 = view.findViewById(R.id.btn2);
ipsView = view.findViewById(R.id.ips_view);
recyclerView = view.findViewById(R.id.config_list);
rb_taxi = view.findViewById(R.id.rb_taxi);
can = view.findViewById(R.id.can);
gear_influence = view.findViewById(R.id.gear_influence);
gear = view.findViewById(R.id.gear);
title_gear = view.findViewById(R.id.title_gear);
rg = view.findViewById(R.id.rg);
initFragmentRecyclerView();
CupidLogUtils.w("InfoFragment===>" + title);
tvTitle.setText(title);
@@ -176,7 +190,36 @@ public class VersionFragment extends BaseFragment {
view.findViewById(R.id.line1).setVisibility(View.GONE);
tvTitle.setText("版本");
}
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.rb_taxi) {
AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_TAXI);
gear("TAXI", Arrays.toString(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_TAXI.toArray()));
} else if (checkedId == R.id.rb_bus) {
AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_BUS);
gear("BUS", Arrays.toString(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_BUS.toArray()));
} else if (checkedId == R.id.rb_sweeper) {
AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_SWEEPER);
gear("SWEEPER", Arrays.toString(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_SWEEPER.toArray()));
} else if (checkedId == R.id.rb_m1) {
AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_M1);
gear("M1", "无限制");
} else if (checkedId == R.id.rb_m2) {
AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_M2);
gear("M1", Arrays.toString(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_M2.toArray()));
} else if (checkedId == R.id.rb_van) {
AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_VAN);
gear("VAN", "无限制");
}
}
});
gear("TAXI", Arrays.toString(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_TAXI.toArray()));
}
private void gear(String car, String gear) {
title_gear.setText(car + "不能启动自动驾驶的档位:");
this.gear.setText(gear);
}
//根据连接状态更新数据
@@ -218,59 +261,37 @@ public class VersionFragment extends BaseFragment {
list.add(new Config("ADAS LIB版本:", AdasManager.getInstance().getAdasVersion()));
list.add(new Config("APP构建时间:", BuildConfig.BUILD_TIME));
list.add(getAutopilotAbilityConfig(""));
list.add(gear());
adapter.setData(list);
}
private Config gear() {
private String gear() {
StringBuilder builder = new StringBuilder();
Chassis.GearPosition gear = App.INSTANCE.gear;
if (gear != null) {
if (unableGears == null) {
unableGears = new Set[6];
unableGears[0] = BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_BUS;
unableGears[1] = BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_M1;
unableGears[2] = BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_M2;
unableGears[3] = BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_SWEEPER;
unableGears[4] = BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_TAXI;
unableGears[5] = BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_VAN;
}
for (int j = 0; j < unableGears.length; j++) {
String type = "";
if (j == 0) {
type = "BUS";
} else if (j == 1) {
type = "M1";
} else if (j == 2) {
type = "M2";
} else if (j == 3) {
type = "SWEEPER";
} else if (j == 4) {
type = "TAXI";
} else if (j == 5) {
type = "VAN";
}
AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(unableGears[j]);
boolean b = AutopilotAbilityManager.getInstance().isLaunchAutopilot(gear);
builder.append("车型:").append(type);
builder.append(" 当前档位:").append(gear.name());
builder.append(" 是否可以启动自驾:").append(b).append('\n');
}
boolean b = AutopilotAbilityManager.getInstance().isLaunchAutopilot(gear);
builder.append(" 当前档位:").append(gear.name());
builder.append(" 是否可以启动自驾:").append(b);
}
return new Config("档位影响:", builder.toString());
return builder.toString();
}
private Config getAutopilotAbilityConfig(String value) {
return new Config("能否启动自动驾驶:", value);
private String getAutopilotAbilityConfig(String value) {
return value;
}
public void autopilotAbility(boolean isAutopilotAbility, String unableAutopilotReason) {
List<Config> list = adapter.getData();
if (list != null) {
updateRefreshConfig(list, getAutopilotAbilityConfig(isAutopilotAbility + ",原因:" + unableAutopilotReason));
updateRefreshConfig(list, gear());
}
if (getActivity() != null)
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
can.setTextColor(getResources().getColor(RandomColor.randomColor()));
can.setText(getAutopilotAbilityConfig(isAutopilotAbility + ",原因:" + unableAutopilotReason));
gear_influence.setTextColor(getResources().getColor(RandomColor.randomColor()));
gear_influence.setText(gear());
}
});
}
private void updateRefreshConfig(List<Config> list, Config temp) {

View File

@@ -33,12 +33,155 @@
android:layout_margin="20dp"
android:orientation="horizontal">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/config_list"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
android:layout_weight="1">
<LinearLayout
android:id="@+id/layout_gear_influence"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="档位影响:"
android:textStyle="bold" />
<TextView
android:id="@+id/gear_influence"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_gear"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintBottom_toTopOf="@id/layout_gear_influence"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:id="@+id/title_gear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="车型档位:"
android:textStyle="bold" />
<TextView
android:id="@+id/gear"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_can"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintBottom_toTopOf="@id/layout_gear"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="能否启动自动驾驶:"
android:textStyle="bold" />
<TextView
android:id="@+id/can"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_car"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintBottom_toTopOf="@id/layout_can"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:id="@+id/car_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="当前车型:"
android:textStyle="bold" />
<RadioGroup
android:id="@+id/rg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/car_type"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_taxi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="TAXI" />
<RadioButton
android:id="@+id/rb_bus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BUS" />
<RadioButton
android:id="@+id/rb_sweeper"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SWEEPER" />
<RadioButton
android:id="@+id/rb_m1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="M1" />
<RadioButton
android:id="@+id/rb_m2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="M2" />
<RadioButton
android:id="@+id/rb_van"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="VAN" />
</RadioGroup>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/config_list"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@id/layout_car"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<View
android:id="@+id/line1"

View File

@@ -1,5 +1,6 @@
package com.mogo.eagle.core.function.call.autopilot
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.enums.DataSourceType
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
@@ -99,7 +100,13 @@ object CallerChassisLocationGCJ02ListenerManager : CallerBase<IMoGoChassisLocati
// 记录最后一次回调时间
M_LISTENERS_HZ_LAST_SEND_TIME[tag] = TimeUtils.getNowMills()
val listener = it.value
listener.onChassisLocationGCJ02(mogoLocation)
if (DebugConfig.isDebug()) {
val timeStampTemp = TimeUtils.getNowMills()
listener.onChassisLocationGCJ02(mogoLocation)
Logger.e(TAG, "Tag:${tag},其处理定位的时间为:${TimeUtils.getNowMills() - timeStampTemp}")
} else {
listener.onChassisLocationGCJ02(mogoLocation)
}
// FileUtils.writeToFile(
// "/sdcard/Download/",
// "location_gcj02.txt",

View File

@@ -3,7 +3,6 @@ package com.zhidao.support.adas.high.common.autopilot.ability;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import com.zhidao.support.adas.high.AdasManager;
import com.zhidao.support.adas.high.OnAdasListener;
@@ -88,7 +87,7 @@ public class AutopilotAbilityManager {
if (version != -1) {
stopTimer();
dockerVersion = version;
Log.i("dddd", "工控机版本=" + dockerVersion);
CupidLogUtils.i(TAG, "工控机版本=" + dockerVersion);
initAutopilotAbility();
}
}