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
...
@@ -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,
...
...
app/src/main/java/com/sd/cavphmi/highmap/ReverCar.kt
View file @
e645ec02
package
com.sd.cavphmi.highmap
package
com.sd.cavphmi.highmap
class
ReverCar
{
class
ReverCar
{
va
l
cenLat
:
Double
=
0.0
//车位中心点坐标
va
r
cenLat
:
Double
=
0.0
//车位中心点坐标
va
l
cenLng
:
Double
=
0.0
//车位中心点坐标
va
r
cenLng
:
Double
=
0.0
//车位中心点坐标
va
l
code
:
String
=
""
//车位编号
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
...
@@ -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
app/src/main/java/com/sd/cavphmi/ui/MainActivity.kt
View file @
e645ec02
...
@@ -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
(
""
)
}
}
}
}
}
...
...
app/src/main/java/com/sd/cavphmi/ui/fragment/CarPanelFragment.kt
View file @
e645ec02
...
@@ -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
)
}
}
}
...
...
app/src/main/java/com/sd/cavphmi/ui/fragment/UnityFragment.kt
View file @
e645ec02
...
@@ -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
()
}
}
...
...
app/src/main/java/com/sd/cavphmi/viewmodels/CarPanelVM.kt
View file @
e645ec02
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
()
...
...
app/src/main/java/com/sd/cavphmi/viewmodels/MainVm.kt
View file @
e645ec02
...
@@ -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
)
}
}
}
}
}
}
...
...
app/src/main/java/com/sd/cavphmi/websockets/VecLocWSClient.kt
View file @
e645ec02
...
@@ -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
)
}
}
...
...
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