Commit e645ec02 authored by p x's avatar p x
Browse files

添加业务代码

parent 5e6e85f0
...@@ -9,6 +9,7 @@ package com.sd.cavphmi.bean ...@@ -9,6 +9,7 @@ package com.sd.cavphmi.bean
*/ */
data class AvpStatuBean( data class AvpStatuBean(
val businessType: String, val businessType: String,
val businessStatus: String,
val drivenDecision: DrivenDecision, val drivenDecision: DrivenDecision,
// val exceptionCode: Any, // val exceptionCode: Any,
// val exceptionMessage: Any, // val exceptionMessage: Any,
......
package com.sd.cavphmi.highmap package com.sd.cavphmi.highmap
class ReverCar { class ReverCar {
val cenLat: Double = 0.0 //车位中心点坐标 var cenLat: Double = 0.0 //车位中心点坐标
val cenLng: Double = 0.0 //车位中心点坐标 var cenLng: Double = 0.0 //车位中心点坐标
val code: String = ""//车位编号 var code: String = ""//车位编号
} }
\ No newline at end of file
...@@ -13,7 +13,7 @@ import com.sd.cavphmi.utils.MyContants ...@@ -13,7 +13,7 @@ import com.sd.cavphmi.utils.MyContants
class TileJsonBean { class TileJsonBean {
var host: String = MyContants.HOST_HTTP_3 var host: String = MyContants.HOST_HTTP_3
var tiles3d = listOf( var tiles3d = listOf(
"/gis_data/3dtiles/road/CurbStrip/tileset.json", // "/gis_data/3dtiles/road/CurbStrip/tileset.json",
"/gis_data/3dtiles/road/LanePolygon/tileset.json", "/gis_data/3dtiles/road/LanePolygon/tileset.json",
"/gis_data/3dtiles/road/RoadSection/tileset.json", "/gis_data/3dtiles/road/RoadSection/tileset.json",
"/gis_data/3dtiles/road/SafetyIsland/tileset.json", "/gis_data/3dtiles/road/SafetyIsland/tileset.json",
...@@ -22,22 +22,54 @@ class TileJsonBean { ...@@ -22,22 +22,54 @@ class TileJsonBean {
"/gis_data/3dtiles/road/TraMarkA/tileset.json", "/gis_data/3dtiles/road/TraMarkA/tileset.json",
"/gis_data/3dtiles/road/TraMarkL/tileset.json", "/gis_data/3dtiles/road/TraMarkL/tileset.json",
"/gis_data/3dtiles/road/TraMarkP/tileset.json", "/gis_data/3dtiles/road/TraMarkP/tileset.json",
"/gis_data/3dtiles/roadequip/FieldFacility/tileset.json", // "/gis_data/3dtiles/roadequip/FieldFacility/tileset.json",
"/gis_data/3dtiles/roadequip/PlatForm/tileset.json", // "/gis_data/3dtiles/roadequip/PlatForm/tileset.json",
"/gis_data/3dtiles/roadequip/SafetyRail/tileset.json", // "/gis_data/3dtiles/roadequip/SafetyRail/tileset.json",
"/gis_data/3dtiles/roadequip/SignStrct/tileset.json", // "/gis_data/3dtiles/roadequip/SignStrct/tileset.json",//监控杆子和路标杆子
"/gis_data/3dtiles/roadequip/StreetLight/tileset.json", // "/gis_data/3dtiles/roadequip/StreetLight/tileset.json",//路灯
"/gis_data/3dtiles/roadequip/TrafficLight/tileset.json", // "/gis_data/3dtiles/roadequip/TrafficLight/tileset.json",
"/gis_data/3dtiles/roadequip/TrafficSign/tileset.json", // "/gis_data/3dtiles/roadequip/TrafficSign/tileset.json",//监控探头和路标牌子
"/gis_data/3dtiles/roadequip/VideoCamera/tileset.json", // "/gis_data/3dtiles/roadequip/VideoCamera/tileset.json",
"/gis_data/3dtiles/roadequip/baoganji/tileset.json", // "/gis_data/3dtiles/roadequip/xinhaodeng/tileset.json",
"/gis_data/3dtiles/roadequip/buguangdeng/tileset.json", // "/gis_data/3dtiles/roadequip/baoganji/tileset.json",
// "/gis_data/3dtiles/roadequip/buguangdeng/tileset.json",
"/gis_data/3dtiles/roadequip/chongdianzhuang/tileset.json", "/gis_data/3dtiles/roadequip/chongdianzhuang/tileset.json",
"/gis_data/3dtiles/roadequip/jiaohuanji/tileset.json", // "/gis_data/3dtiles/roadequip/jiaohuanji/tileset.json",
"/gis_data/3dtiles/roadequip/xinhaoji/tileset.json", // "/gis_data/3dtiles/roadequip/xinhaoji/tileset.json",
"/gis_data/3dtiles/roadequip/yidongronghe/tileset.json", "/gis_data/3dtiles/roadequip/yidongronghe/tileset.json",
"/gis_data/3dtiles/buildings/tileset.json", "/gis_data/3dtiles/buildings/tileset.json",
"/gis_data/3dtiles/ground/tileset.json", "/gis_data/3dtiles/ground/tileset.json",
"/gis_data/3dtiles/vegetation/Tree/tileset.json" // "/gis_data/3dtiles/vegetation/Tree/tileset.json"//树
) )
//四维的
/* var host = "http://gz.tasks.city/3dtiles"
var tiles3d = listOf(
// "/1/CurbStrip/tileset.json",
"/1/LanePolygon/tileset.json",
"/1/RoadSection/tileset.json",
"/1/SafetyIsland/tileset.json",
"/1/SepStrip/tileset.json",
"/1/SideWalk/tileset.json",
"/1/TraMarkA/tileset.json",
"/1/TraMarkL/tileset.json",
"/1/TraMarkP/tileset.json",
"/2/FieldFacility/tileset.json",
"/2/PlatForm/tileset.json",
// "/2/SafetyRail/tileset.json",
// "/2/SignStrct/tileset.json",
// "/2/StreetLight/tileset.json",
// "/2/TrafficLight/tileset.json",
// "/2/TrafficSign/tileset.json",
// "/2/VideoCamera/tileset.json",
// "/2/xinhaodeng/tileset.json",
// "/3/baoganji/tileset.json",
// "/3/buguangdeng/tileset.json",
"/3/chongdianzhuang/tileset.json",
// "/3/jiaohuanji/tileset.json",
// "/3/jiaohuanji/tileset.json",
// "/3/yidongronghe.clt/tileset.json",
"/4/Yizhuang_Unicom_building/tileset.json",
"/4/Yizhuang_Unicom_Ground/tileset.json",
// "/4/Yizhuang_Unicom_Tree/tileset.json"
)*/
} }
\ No newline at end of file
...@@ -10,8 +10,13 @@ import com.sd.cavphmi.BR ...@@ -10,8 +10,13 @@ import com.sd.cavphmi.BR
import com.sd.cavphmi.R import com.sd.cavphmi.R
import com.sd.cavphmi.base.BaseActivity import com.sd.cavphmi.base.BaseActivity
import com.sd.cavphmi.base.MyBaseViewModel import com.sd.cavphmi.base.MyBaseViewModel
import com.sd.cavphmi.bean.AvpStatuBean
import com.sd.cavphmi.bean.DrivenDecision
import com.sd.cavphmi.bean.Space
import com.sd.cavphmi.databinding.ActivityMainBinding import com.sd.cavphmi.databinding.ActivityMainBinding
import com.sd.cavphmi.highmap.AllLine
import com.sd.cavphmi.highmap.HighMapApi import com.sd.cavphmi.highmap.HighMapApi
import com.sd.cavphmi.highmap.ReverCar
import com.sd.cavphmi.highmap.UnityPtc import com.sd.cavphmi.highmap.UnityPtc
import com.sd.cavphmi.highmap.WarnPtc import com.sd.cavphmi.highmap.WarnPtc
import com.sd.cavphmi.intfaces.OnConCan import com.sd.cavphmi.intfaces.OnConCan
...@@ -58,7 +63,10 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(), ...@@ -58,7 +63,10 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
private val mockVM: MockVM by viewModels() private val mockVM: MockVM by viewModels()
private val mainVm: MainVm by viewModels() private val mainVm: MainVm by viewModels()
// private val avpMapVM: AvpMapVM by viewModels()
// private val avpMapVM: AvpMapVM by viewModels()
//是否进入泊车倒车状态
private var isReversePark = false
//退出应用弹窗 //退出应用弹窗
private lateinit var dialogFragment: ExitAppDialog private lateinit var dialogFragment: ExitAppDialog
...@@ -101,21 +109,81 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(), ...@@ -101,21 +109,81 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
mockBt() mockBt()
} }
private fun mockBt() {
//获取AVP状态 //获取AVP状态
binding.btAvpStatu.setOnClickListener { private fun getAvpStatus() {
mainVm.getAvpStatus().observe(this) { mainVm.getAvpStatus().observe(this) { avpStatu ->
var businessType = avpStatu.businessType//Park Call
var businessStatus =
avpStatu.businessStatus//NIL WAITING PROCESSING COMPLETED CANCELLED FAILED
var gearType = avpStatu.vehicleContext.vehicleDynamic.gearType
//画全局路径
drawAllLines(avpStatu.drivenDecision)
//在泊车状态下的倒挡绘制倒车路线
drawReversePark(businessType, gearType, avpStatu.space)
//是否显示车位流光效果
showParkLight(businessType, gearType, avpStatu.space)
//根据AVP状态判特效是否关闭
showEffectAvpStatu(businessStatus)
}
}
private fun showEffectAvpStatu(businessStatus: String) {
if (businessStatus == "CANCELLED" || businessStatus == "COMPLETED" || businessStatus == "FAILED") {
HighMapApi.setCarNavPath(listOf(), drawpassed = false)
HighMapApi.parkRoundLight("")
} else {
}
}
//是否显示车位流光效果
private fun showParkLight(businessType: String, gearType: String, space: Space) {
if (businessType == "Park" && gearType == "REVERSE") {
HighMapApi.parkRoundLight(space.code)
}
}
//在泊车状态下的倒挡绘制倒车路线
private fun drawReversePark(businessType: String, gearType: String, space: Space) {
if (businessType == "Park" && gearType == "REVERSE") {
if (isReversePark)
return
isReversePark = true
var reverCar = ReverCar().apply {
this.cenLat = space.centerLatitude
this.cenLng = space.centerLongitude
this.code = space.code
}
HighMapApi.setParkRever(reverCar)
}
}
//画全局路径
private fun drawAllLines(drivenDecision: DrivenDecision) {
var lines = drivenDecision.trajectory.points.map {
AllLine().apply {
this.lat = it.latitude
this.lon = it.longitude
} }
} }
HighMapApi.setCarNavPath(lines, drawpassed = true, showdistance = 300)
}
//联网车辆位姿数据 //联网车辆位姿数据
binding.btVehicle.setOnClickListener { private fun getCarVehicle() {
mainVm.subVehicle().observe(this) { mainVm.subVehicle().observe(this) { carBean ->
var a = 1 var car = carBean.first()
HighMapApi.setCarPosition(
car.heading,
car.latitude,
car.longitude,
20.80189
)
} }
} }
//感知目标物
binding.btTarget.setOnClickListener { private fun getTarget() {
mainVm.subTarget().observe(this) { mainVm.subTarget().observe(this) {
if (it.isEmpty()) { if (it.isEmpty()) {
HighMapApi.clearPtcData() HighMapApi.clearPtcData()
...@@ -140,8 +208,9 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(), ...@@ -140,8 +208,9 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
HighMapApi.setPtcData(ptcList) HighMapApi.setPtcData(ptcList)
} }
} }
//v2x 预警
binding.btV2x.setOnClickListener { //开启v2x预警
private fun getV2x() {
mainVm.subStartV2x().observe(this) { v2x -> mainVm.subStartV2x().observe(this) { v2x ->
if (v2x.objects.isEmpty()) if (v2x.objects.isEmpty())
return@observe return@observe
...@@ -152,19 +221,38 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(), ...@@ -152,19 +221,38 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
var warnPtc = WarnPtc().apply { var warnPtc = WarnPtc().apply {
this.ptcid = v2xId this.ptcid = v2xId
this.isRed = true this.isRed = true
this.isFlash = true // this.isFlash = true
} }
val warnPtcs = listOf(warnPtc) val warnPtcs = listOf(warnPtc)
HighMapApi.setWarnPtc(warnPtcs) HighMapApi.setWarnPtc(warnPtcs)
CoroutineScope(Dispatchers.Default).launch { CoroutineScope(Dispatchers.Default).launch {
delay(MyContants.WARNINGTIME) delay(MyContants.WARNINGTIME)
warnPtc.isRed = false warnPtc.isRed = false
HighMapApi.setWarnPtc(listOf(warnPtc)) // HighMapApi.setWarnPtc(listOf(warnPtc))
HighMapApi.setWarnPtc(warnPtcs)
} }
} }
} }
private fun mockBt() {
//获取AVP状态
binding.btAvpStatu.setOnClickListener {
getAvpStatus()
}
//联网车辆位姿数据
binding.btVehicle.setOnClickListener {
getCarVehicle()
}
//感知目标物
binding.btTarget.setOnClickListener {
getTarget()
}
//v2x 预警
binding.btV2x.setOnClickListener {
getV2x()
}
//模拟选择车辆 //模拟选择车辆
binding.btSetcar.setOnClickListener { binding.btSetcar.setOnClickListener {
var list = listOf("skywell.1ggvlp16.car10", "skywell.1ggvlp16.car8") var list = listOf("skywell.1ggvlp16.car10", "skywell.1ggvlp16.car8")
...@@ -175,6 +263,10 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(), ...@@ -175,6 +263,10 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
//车位四周流光 //车位四周流光
binding.btParkround.setOnClickListener { binding.btParkround.setOnClickListener {
HighMapApi.parkRoundLight("B050") HighMapApi.parkRoundLight("B050")
CoroutineScope(Dispatchers.Default).launch {
delay(5000)
HighMapApi.parkRoundLight("")
}
} }
} }
......
...@@ -48,6 +48,10 @@ class CarPanelFragment : BaseFragment<FragmentCarPanelBinding, MyBaseViewModel>( ...@@ -48,6 +48,10 @@ class CarPanelFragment : BaseFragment<FragmentCarPanelBinding, MyBaseViewModel>(
mainVm.carVehicle.observe(this) { mainVm.carVehicle.observe(this) {
carPanelVM.setCarPanelBean(it) carPanelVM.setCarPanelBean(it)
} }
mainVm.avpStatu.observe(this) {
var gearType = it.vehicleContext.vehicleDynamic.gearType
carPanelVM.setGearType(gearType)
}
} }
......
...@@ -98,7 +98,7 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents { ...@@ -98,7 +98,7 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
mUnityPlayer.windowFocusChanged(true) mUnityPlayer.windowFocusChanged(true)
// mUnityPlayer.requestFocus() // mUnityPlayer.requestFocus()
//使用拼接服务器资源加载地图 //使用拼接服务器资源加载地图
// unityMapVm.loadTileJson() unityMapVm.loadTileJson()
} }
......
package com.sd.cavphmi.viewmodels package com.sd.cavphmi.viewmodels
import android.content.Context
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.sd.cavphmi.base.MyBaseViewModel import com.sd.cavphmi.base.MyBaseViewModel
import com.sd.cavphmi.bean.CarPanelBean import com.sd.cavphmi.bean.CarPanelBean
import com.sd.cavphmi.bean.CarVehicle import com.sd.cavphmi.bean.CarVehicle
import com.sd.cavphmi.bean.GearStatus
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
...@@ -44,6 +42,26 @@ class CarPanelVM @Inject constructor() : MyBaseViewModel() { ...@@ -44,6 +42,26 @@ class CarPanelVM @Inject constructor() : MyBaseViewModel() {
// var a = 0 // var a = 0
} }
/**设置档位类型*****/
fun setGearType(gearType: String) {
when (gearType) {
"PARK" -> {
carPanelBean.tapPos.set(GearStatus.P)
}
"REVERSE" -> {
carPanelBean.tapPos.set(GearStatus.R)
}
"NEUTRAL" -> {
carPanelBean.tapPos.set(GearStatus.N)
}
"DRIVE" -> {
carPanelBean.tapPos.set(GearStatus.D)
}
}
}
fun mock() { fun mock() {
changeMockHeading() changeMockHeading()
......
...@@ -212,15 +212,8 @@ class MainVm @Inject constructor( ...@@ -212,15 +212,8 @@ class MainVm @Inject constructor(
//下载到sd卡下面的DownLoad文件夹下面 //下载到sd卡下面的DownLoad文件夹下面
// FileIoUtils.writeToFile(str, "CarVehicle.txt") // FileIoUtils.writeToFile(str, "CarVehicle.txt")
var carBean = gson.fromJson(str, CarVehicle::class.java) var carBean = gson.fromJson(str, CarVehicle::class.java)
// carVehicle.postValue(carBean)
//更新主车位置 //更新主车位置
var car = carBean.first() carVehicle.postValue(carBean)
HighMapApi.setCarPosition(
car.heading,
car.latitude,
car.longitude,
20.80189
)
} }
} }
} }
......
...@@ -51,11 +51,11 @@ class VecLocWSClient : WebSocketClient { ...@@ -51,11 +51,11 @@ class VecLocWSClient : WebSocketClient {
} }
override fun onClose(code: Int, reason: String?, remote: Boolean) { override fun onClose(code: Int, reason: String?, remote: Boolean) {
// System.out.println(TAG + " closed with exit code " + code + " additional info: " + reason); System.out.println(TAG + " closed with exit code " + code + " additional info: " + reason);
} }
override fun onError(ex: Exception?) { override fun onError(ex: Exception?) {
// System.err.println(TAG + "an error occurred:" + ex) System.err.println(TAG + "an error occurred:" + ex)
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment