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

添加业务代码

parent 5e6e85f0
......@@ -9,6 +9,7 @@ package com.sd.cavphmi.bean
*/
data class AvpStatuBean(
val businessType: String,
val businessStatus: String,
val drivenDecision: DrivenDecision,
// val exceptionCode: Any,
// val exceptionMessage: Any,
......
package com.sd.cavphmi.highmap
class ReverCar {
val cenLat: Double = 0.0 //车位中心点坐标
val cenLng: Double = 0.0 //车位中心点坐标
val code: String = ""//车位编号
var cenLat: Double = 0.0 //车位中心点坐标
var cenLng: Double = 0.0 //车位中心点坐标
var code: String = ""//车位编号
}
\ No newline at end of file
......@@ -13,7 +13,7 @@ import com.sd.cavphmi.utils.MyContants
class TileJsonBean {
var host: String = MyContants.HOST_HTTP_3
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/RoadSection/tileset.json",
"/gis_data/3dtiles/road/SafetyIsland/tileset.json",
......@@ -22,22 +22,54 @@ class TileJsonBean {
"/gis_data/3dtiles/road/TraMarkA/tileset.json",
"/gis_data/3dtiles/road/TraMarkL/tileset.json",
"/gis_data/3dtiles/road/TraMarkP/tileset.json",
"/gis_data/3dtiles/roadequip/FieldFacility/tileset.json",
"/gis_data/3dtiles/roadequip/PlatForm/tileset.json",
"/gis_data/3dtiles/roadequip/SafetyRail/tileset.json",
"/gis_data/3dtiles/roadequip/SignStrct/tileset.json",
"/gis_data/3dtiles/roadequip/StreetLight/tileset.json",
"/gis_data/3dtiles/roadequip/TrafficLight/tileset.json",
"/gis_data/3dtiles/roadequip/TrafficSign/tileset.json",
"/gis_data/3dtiles/roadequip/VideoCamera/tileset.json",
"/gis_data/3dtiles/roadequip/baoganji/tileset.json",
"/gis_data/3dtiles/roadequip/buguangdeng/tileset.json",
// "/gis_data/3dtiles/roadequip/FieldFacility/tileset.json",
// "/gis_data/3dtiles/roadequip/PlatForm/tileset.json",
// "/gis_data/3dtiles/roadequip/SafetyRail/tileset.json",
// "/gis_data/3dtiles/roadequip/SignStrct/tileset.json",//监控杆子和路标杆子
// "/gis_data/3dtiles/roadequip/StreetLight/tileset.json",//路灯
// "/gis_data/3dtiles/roadequip/TrafficLight/tileset.json",
// "/gis_data/3dtiles/roadequip/TrafficSign/tileset.json",//监控探头和路标牌子
// "/gis_data/3dtiles/roadequip/VideoCamera/tileset.json",
// "/gis_data/3dtiles/roadequip/xinhaodeng/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/jiaohuanji/tileset.json",
"/gis_data/3dtiles/roadequip/xinhaoji/tileset.json",
// "/gis_data/3dtiles/roadequip/jiaohuanji/tileset.json",
// "/gis_data/3dtiles/roadequip/xinhaoji/tileset.json",
"/gis_data/3dtiles/roadequip/yidongronghe/tileset.json",
"/gis_data/3dtiles/buildings/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
import com.sd.cavphmi.R
import com.sd.cavphmi.base.BaseActivity
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.highmap.AllLine
import com.sd.cavphmi.highmap.HighMapApi
import com.sd.cavphmi.highmap.ReverCar
import com.sd.cavphmi.highmap.UnityPtc
import com.sd.cavphmi.highmap.WarnPtc
import com.sd.cavphmi.intfaces.OnConCan
......@@ -58,7 +63,10 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
private val mockVM: MockVM 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
......@@ -101,21 +109,81 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
mockBt()
}
private fun mockBt() {
//获取AVP状态
binding.btAvpStatu.setOnClickListener {
mainVm.getAvpStatus().observe(this) {
private fun getAvpStatus() {
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 {
mainVm.subVehicle().observe(this) {
var a = 1
private fun getCarVehicle() {
mainVm.subVehicle().observe(this) { carBean ->
var car = carBean.first()
HighMapApi.setCarPosition(
car.heading,
car.latitude,
car.longitude,
20.80189
)
}
}
//感知目标物
binding.btTarget.setOnClickListener {
private fun getTarget() {
mainVm.subTarget().observe(this) {
if (it.isEmpty()) {
HighMapApi.clearPtcData()
......@@ -140,8 +208,9 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
HighMapApi.setPtcData(ptcList)
}
}
//v2x 预警
binding.btV2x.setOnClickListener {
//开启v2x预警
private fun getV2x() {
mainVm.subStartV2x().observe(this) { v2x ->
if (v2x.objects.isEmpty())
return@observe
......@@ -152,19 +221,38 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
var warnPtc = WarnPtc().apply {
this.ptcid = v2xId
this.isRed = true
this.isFlash = true
// this.isFlash = true
}
val warnPtcs = listOf(warnPtc)
HighMapApi.setWarnPtc(warnPtcs)
CoroutineScope(Dispatchers.Default).launch {
delay(MyContants.WARNINGTIME)
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 {
var list = listOf("skywell.1ggvlp16.car10", "skywell.1ggvlp16.car8")
......@@ -175,6 +263,10 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
//车位四周流光
binding.btParkround.setOnClickListener {
HighMapApi.parkRoundLight("B050")
CoroutineScope(Dispatchers.Default).launch {
delay(5000)
HighMapApi.parkRoundLight("")
}
}
}
......
......@@ -48,6 +48,10 @@ class CarPanelFragment : BaseFragment<FragmentCarPanelBinding, MyBaseViewModel>(
mainVm.carVehicle.observe(this) {
carPanelVM.setCarPanelBean(it)
}
mainVm.avpStatu.observe(this) {
var gearType = it.vehicleContext.vehicleDynamic.gearType
carPanelVM.setGearType(gearType)
}
}
......
......@@ -98,7 +98,7 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
mUnityPlayer.windowFocusChanged(true)
// mUnityPlayer.requestFocus()
//使用拼接服务器资源加载地图
// unityMapVm.loadTileJson()
unityMapVm.loadTileJson()
}
......
package com.sd.cavphmi.viewmodels
import android.content.Context
import androidx.lifecycle.viewModelScope
import com.sd.cavphmi.base.MyBaseViewModel
import com.sd.cavphmi.bean.CarPanelBean
import com.sd.cavphmi.bean.CarVehicle
import com.sd.cavphmi.bean.GearStatus
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
......@@ -44,6 +42,26 @@ class CarPanelVM @Inject constructor() : MyBaseViewModel() {
// 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() {
changeMockHeading()
......
......@@ -212,15 +212,8 @@ class MainVm @Inject constructor(
//下载到sd卡下面的DownLoad文件夹下面
// FileIoUtils.writeToFile(str, "CarVehicle.txt")
var carBean = gson.fromJson(str, CarVehicle::class.java)
// carVehicle.postValue(carBean)
//更新主车位置
var car = carBean.first()
HighMapApi.setCarPosition(
car.heading,
car.latitude,
car.longitude,
20.80189
)
carVehicle.postValue(carBean)
}
}
}
......
......@@ -51,11 +51,11 @@ class VecLocWSClient : WebSocketClient {
}
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?) {
// 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