Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
p x
SuZhouAvp
Commits
e645ec02
Commit
e645ec02
authored
Oct 09, 2025
by
p x
Browse files
添加业务代码
parent
5e6e85f0
Changes
10
Show whitespace changes
Inline
Side-by-side
app/libs/unityLibrary-release(1).aar
0 → 100644
View file @
e645ec02
File added
app/src/main/java/com/sd/cavphmi/bean/AvpStatuBean.kt
View file @
e645ec02
...
...
@@ -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,
...
...
app/src/main/java/com/sd/cavphmi/highmap/ReverCar.kt
View file @
e645ec02
package
com.sd.cavphmi.highmap
class
ReverCar
{
va
l
cenLat
:
Double
=
0.0
//车位中心点坐标
va
l
cenLng
:
Double
=
0.0
//车位中心点坐标
va
l
code
:
String
=
""
//车位编号
va
r
cenLat
:
Double
=
0.0
//车位中心点坐标
va
r
cenLng
:
Double
=
0.0
//车位中心点坐标
va
r
code
:
String
=
""
//车位编号
}
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/highmap/TileJsonBean.kt
View file @
e645ec02
...
...
@@ -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
app/src/main/java/com/sd/cavphmi/ui/MainActivity.kt
View file @
e645ec02
...
...
@@ -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
(
""
)
}
}
}
...
...
app/src/main/java/com/sd/cavphmi/ui/fragment/CarPanelFragment.kt
View file @
e645ec02
...
...
@@ -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
)
}
}
...
...
app/src/main/java/com/sd/cavphmi/ui/fragment/UnityFragment.kt
View file @
e645ec02
...
...
@@ -98,7 +98,7 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
mUnityPlayer
.
windowFocusChanged
(
true
)
// mUnityPlayer.requestFocus()
//使用拼接服务器资源加载地图
//
unityMapVm.loadTileJson()
unityMapVm
.
loadTileJson
()
}
...
...
app/src/main/java/com/sd/cavphmi/viewmodels/CarPanelVM.kt
View file @
e645ec02
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
()
...
...
app/src/main/java/com/sd/cavphmi/viewmodels/MainVm.kt
View file @
e645ec02
...
...
@@ -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
)
}
}
}
...
...
app/src/main/java/com/sd/cavphmi/websockets/VecLocWSClient.kt
View file @
e645ec02
...
...
@@ -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
)
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment