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
5e6e85f0
Commit
5e6e85f0
authored
Sep 30, 2025
by
p x
Browse files
添加协议
parent
9723db98
Changes
10
Hide whitespace changes
Inline
Side-by-side
app/libs/car_and_road_3d-0930-debug.aar
0 → 100644
View file @
5e6e85f0
File added
app/libs/unityLibrary-release(9).aar
deleted
100644 → 0
View file @
9723db98
File deleted
app/src/main/java/com/sd/cavphmi/highmap/HighMapApi.kt
View file @
5e6e85f0
...
...
@@ -144,4 +144,28 @@ object HighMapApi {
UnityPlayer
.
UnitySendMessage
(
MODELNAME
,
"parkRoundLight"
,
gson
.
toJson
(
parkRoundLight
))
}
// 停车位绘制 - 上面有其他车的状态(传入车辆占用情况绘制)
fun
setParkStatu
(
parkStatu
:
ParkStatu
)
{
UnityPlayer
.
UnitySendMessage
(
MODELNAME
,
"SetSpaceParkStatu"
,
gson
.
toJson
(
parkStatu
))
}
// 正在倒车
fun
setParkRever
(
reverCar
:
ReverCar
)
{
UnityPlayer
.
UnitySendMessage
(
MODELNAME
,
"SetParking"
,
gson
.
toJson
(
reverCar
))
}
// 泊车完成
fun
setParkComplete
(
complete
:
Boolean
)
{
var
parkComplete
=
ParkComplete
().
apply
{
this
.
complete
=
complete
}
UnityPlayer
.
UnitySendMessage
(
MODELNAME
,
"SetParking"
,
gson
.
toJson
(
parkComplete
))
}
// 设置地锁状态
fun
setLockStatus
(
lockStatu
:
LockStatu
)
{
UnityPlayer
.
UnitySendMessage
(
MODELNAME
,
"setLockStatus"
,
gson
.
toJson
(
lockStatu
))
}
}
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/highmap/LockStatu.kt
0 → 100644
View file @
5e6e85f0
package
com.sd.cavphmi.highmap
class
LockStatu
{
var
code
=
""
//车位编号
var
isHide
=
false
var
up
=
false
//// true是升起, false是降下
}
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/highmap/ParkComplete.kt
0 → 100644
View file @
5e6e85f0
package
com.sd.cavphmi.highmap
//泊车完成
class
ParkComplete
{
var
complete
=
false
}
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/highmap/ParkStatu.kt
0 → 100644
View file @
5e6e85f0
package
com.sd.cavphmi.highmap
//停车位绘制 - 上面有其他车的状态(传入车辆占用情况绘制)
data class
ParkStatu
(
val
spinfo
:
List
<
Spinfo
>
)
class
Spinfo
{
val
code
:
String
=
""
val
state
:
String
=
""
}
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/highmap/ReverCar.kt
0 → 100644
View file @
5e6e85f0
package
com.sd.cavphmi.highmap
class
ReverCar
{
val
cenLat
:
Double
=
0.0
//车位中心点坐标
val
cenLng
:
Double
=
0.0
//车位中心点坐标
val
code
:
String
=
""
//车位编号
}
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/ui/MainActivity.kt
View file @
5e6e85f0
...
...
@@ -102,6 +102,12 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
}
private
fun
mockBt
()
{
//获取AVP状态
binding
.
btAvpStatu
.
setOnClickListener
{
mainVm
.
getAvpStatus
().
observe
(
this
)
{
}
}
//联网车辆位姿数据
binding
.
btVehicle
.
setOnClickListener
{
mainVm
.
subVehicle
().
observe
(
this
)
{
...
...
@@ -188,46 +194,6 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
ft
.
commit
()
}
/* private fun setImage() {
if(mainVm.v2xStartBean.value.type==1){//前向碰撞
binding.viewPopuler.setImageResource(R.drawable.advance)
startPulseAnimation(binding.viewPopuler)
}else if(mainVm.v2xStartBean.value.type==3){//左转辅助
binding.viewPopuler.setImageResource(R.drawable.left_icon)
startPulseAnimation(binding.viewPopuler)
}else if(mainVm.v2xStartBean.value.type==4){//盲区预警
binding.viewPopuler.setImageResource(R.drawable.change_lanes)
startPulseAnimation(binding.viewPopuler)
}else if(mainVm.v2xStartBean.value.type==6){//紧急制动预警
binding.viewPopuler.setImageResource(R.drawable.stop_icon)
startPulseAnimation(binding.viewPopuler)
}else if(mainVm.v2xStartBean.value.type==12){//弱势交通参与者
binding.viewPopuler.setImageResource(R.drawable.weak)
startPulseAnimation(binding.viewPopuler)
}else{
binding.viewPopuler.setImageResource(0)
}
}*/
/* fun startPulseAnimation(imageView: ImageView) {
val alphaAnim = ObjectAnimator.ofFloat(imageView, "alpha", 1.0f, 0.5f)
val scaleXAnim = ObjectAnimator.ofFloat(imageView, "scaleX", 1.0f, 1.2f)
val scaleYAnim = ObjectAnimator.ofFloat(imageView, "scaleY", 1.0f, 1.2f)
val set = AnimatorSet().apply {
playTogether(alphaAnim, scaleXAnim, scaleYAnim)
duration = 300
}
set.start()
}
private val displayRunnable = object : Runnable {
override fun run() {
isPlay = false
}
}*/
override
fun
dispatchKeyEvent
(
event
:
KeyEvent
):
Boolean
{
if
((
event
.
getKeyCode
()
==
KeyEvent
.
KEYCODE_BACK
)
||
event
.
getKeyCode
()
==
KeyEvent
.
KEYCODE_HOME
)
{
// var ft = supportFragmentManager.beginTransaction()
...
...
app/src/main/java/com/sd/cavphmi/viewmodels/MainVm.kt
View file @
5e6e85f0
...
...
@@ -26,6 +26,9 @@ import com.sd.cavphmi.websockets.V2xWSClient
import
com.sd.cavphmi.websockets.VecLocWSClient
import
dagger.hilt.android.lifecycle.HiltViewModel
import
dagger.hilt.android.qualifiers.ApplicationContext
import
kotlinx.coroutines.Job
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.isActive
import
kotlinx.coroutines.launch
import
java.net.URI
import
javax.inject.Inject
...
...
@@ -84,8 +87,10 @@ class MainVm @Inject constructor(
//avp状态数据
var
avpStatu
=
MutableLiveData
<
AvpStatuBean
>()
//车位占用情况
var
spaceInfo
=
MutableLiveData
<
SpaceInfoBean
>()
//获取已绑定车辆列表
var
bindCars
=
MutableLiveData
<
List
<
BindCarItem
>>()
...
...
@@ -127,8 +132,8 @@ class MainVm @Inject constructor(
}
/* HTTP获取车位占用情况
通过车位号传给四维高精地图*/
/* HTTP获取车位占用情况
通过车位号传给四维高精地图*/
fun
getSpaceInfo
():
LiveData
<
SpaceInfoBean
>
{
viewModelScope
.
launch
{
var
result
=
avpDataRepo
.
getSpaceInfo
()
...
...
@@ -146,26 +151,34 @@ class MainVm @Inject constructor(
return
spaceInfo
}
private
var
avpStatuJob
:
Job
?
=
null
//HTTP获取AVP状态
fun
getAvpStatus
()
:
LiveData
<
AvpStatuBean
>{
viewModelScope
.
launch
{
var
result
=
avpDataRepo
.
getAvpStatus
()
when
(
result
)
{
is
MyResult
.
Success
<
AvpStatuBean
>
->
{
var
str
=
gson
.
toJson
(
result
)
FileIoUtils
.
writeToFile
(
str
,
"avp_status.txt"
)
avpStatu
.
postValue
(
result
.
data
)
}
fun
getAvpStatus
():
LiveData
<
AvpStatuBean
>
{
avpStatuJob
=
viewModelScope
.
launch
{
while
(
isActive
)
{
var
result
=
avpDataRepo
.
getAvpStatus
()
when
(
result
)
{
is
MyResult
.
Success
<
AvpStatuBean
>
->
{
var
str
=
gson
.
toJson
(
result
)
FileIoUtils
.
writeToFile
(
str
,
"avp_status.txt"
)
avpStatu
.
postValue
(
result
.
data
)
}
else
->
{
else
->
{
}
}
delay
(
2000
)
}
}
avpStatuJob
?.
invokeOnCompletion
{
}
return
avpStatu
}
//HTTP获取已绑定车辆列表
fun
getBindCar
()
:
LiveData
<
AvpStatuBean
>{
fun
getBindCar
():
LiveData
<
AvpStatuBean
>
{
viewModelScope
.
launch
{
var
result
=
avpDataRepo
.
getBindCar
()
when
(
result
)
{
...
...
@@ -201,12 +214,17 @@ class MainVm @Inject constructor(
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
)
var
car
=
carBean
.
first
()
HighMapApi
.
setCarPosition
(
car
.
heading
,
car
.
latitude
,
car
.
longitude
,
20.80189
)
}
}
}
if
(!
vecLocWSClient
.
isOpen
){
if
(!
vecLocWSClient
.
isOpen
)
{
vecLocWSClient
.
connect
()
}
}
catch
(
e
:
Exception
)
{
...
...
@@ -234,7 +252,7 @@ class MainVm @Inject constructor(
}
}
}
if
(!
feelTargetWSClient
.
isOpen
){
if
(!
feelTargetWSClient
.
isOpen
)
{
feelTargetWSClient
.
connect
()
}
}
catch
(
e
:
Exception
)
{
...
...
@@ -263,7 +281,7 @@ class MainVm @Inject constructor(
}
}
}
if
(
v2xWSClient
.
isOpen
==
false
){
if
(
v2xWSClient
.
isOpen
==
false
)
{
v2xWSClient
.
connect
()
}
}
catch
(
e
:
Exception
)
{
...
...
@@ -277,31 +295,31 @@ class MainVm @Inject constructor(
/**
* 网联车辆状态
**/
/* fun subVehicleStatus(): LiveData<VehicleStats> {
if (isMock) {
} else {
try {
vehStatuWSClient.onDataCb = object : VehStatuWSClient.OnDataCb {
override fun onMsg(str: String) {
viewModelScope.launch {
FileIoUtils.writeToFile(str, "vehicleS.txt")
var bean = gson.fromJson(str, VehicleStats::class.java)
vehicleStat.postValue(bean)
}
}
}
if (vehStatuWSClient.isOpen == false) {
vehStatuWSClient.connect()
} else {
vehStatuWSClient.reconnect()
}
} catch (e: Exception) {
e.printStackTrace()
}
}
return vehicleStat
}*/
/* fun subVehicleStatus(): LiveData<VehicleStats> {
if (isMock) {
} else {
try {
vehStatuWSClient.onDataCb = object : VehStatuWSClient.OnDataCb {
override fun onMsg(str: String) {
viewModelScope.launch {
FileIoUtils.writeToFile(str, "vehicleS.txt")
var bean = gson.fromJson(str, VehicleStats::class.java)
vehicleStat.postValue(bean)
}
}
}
if (vehStatuWSClient.isOpen == false) {
vehStatuWSClient.connect()
} else {
vehStatuWSClient.reconnect()
}
} catch (e: Exception) {
e.printStackTrace()
}
}
return vehicleStat
}*/
//暂时用不到---------------------------------------------
...
...
app/src/main/res/layout/activity_main.xml
View file @
5e6e85f0
...
...
@@ -93,21 +93,15 @@
android:layout_height=
"wrap_content"
android:text=
"选择车辆"
/>
<!-- <Button-->
<!-- android:id="@+id/bt_tarpre"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="交通(感知)事件"-->
<!-- android:visibility="gone"/>-->
<!-- <Button-->
<!-- android:id="@+id/bt_tarlight"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="交通信号灯"-->
<!-- android:visibility="gone"/>-->
<Button
android:id=
"@+id/bt_avpStatu"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"AVP状态"
/>
</LinearLayout>
...
...
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