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
9d8a25ea
Commit
9d8a25ea
authored
Dec 08, 2025
by
p x
Browse files
模拟录一波
parent
9edf44f0
Changes
15
Expand all
Show whitespace changes
Inline
Side-by-side
app/src/main/assets/mock/PerTarget.txt
View file @
9d8a25ea
This diff is collapsed.
Click to expand it.
app/src/main/assets/mock/shiche/CarVehicle_park.txt
View file @
9d8a25ea
This diff is collapsed.
Click to expand it.
app/src/main/java/com/sd/cavphmi/bean/CarVehicle.kt
View file @
9d8a25ea
...
@@ -28,5 +28,5 @@ class CarVehicle {
...
@@ -28,5 +28,5 @@ class CarVehicle {
val
spaceName
:
String
=
""
val
spaceName
:
String
=
""
//vehiclePos 里面分别是 经度、纬度、航向角
//vehiclePos 里面分别是 经度、纬度、航向角
va
l
vehiclePos
:
List
<
Double
>?
=
null
va
r
vehiclePos
:
List
<
Double
>?
=
null
}
}
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/highmap/TileJsonBean.kt
View file @
9d8a25ea
...
@@ -48,6 +48,12 @@ class TileJsonBean {
...
@@ -48,6 +48,12 @@ class TileJsonBean {
"/data/avp/04jianzhu/tileset.json"
"/data/avp/04jianzhu/tileset.json"
)
)
// var tiles3d = listOf(
// "/data/adas/LanePolygon/tileset.json",
// "/data/adas/RoadSection/tileset.json",
// "/data/adas/Yizhuang_Unicom_ground1018/tileset.json"
// )
//方本地的
//方本地的
/* var host = "http://192.168.60.164:5003"
/* var host = "http://192.168.60.164:5003"
var host = "http://192.168.60.73:5003"
var host = "http://192.168.60.73:5003"
...
...
app/src/main/java/com/sd/cavphmi/ui/MainActivity.kt
View file @
9d8a25ea
...
@@ -154,7 +154,8 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
...
@@ -154,7 +154,8 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
mockVM
.
mMineMap
=
mineMap
mockVM
.
mMineMap
=
mineMap
mineMap
?.
setZoomLevel
(
14f
)
mineMap
?.
setZoomLevel
(
14f
)
//设置中心点
//设置中心点
val
point
=
Tools
.
latLngToPoint
(
LatLng
(
39.80913878
,
116.50166926
))
// val point = Tools.latLngToPoint(LatLng(39.80913878, 116.50166926))
val
point
=
Tools
.
latLngToPoint
(
LatLng
(
39.809135
,
116.502434
))
mineMap
?.
setPointToCenter
(
point
.
x
,
point
.
y
)
mineMap
?.
setPointToCenter
(
point
.
x
,
point
.
y
)
}
}
})
})
...
@@ -163,10 +164,10 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
...
@@ -163,10 +164,10 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
override
fun
getToData
()
{
override
fun
getToData
()
{
//开启websocket
//开启websocket
getTarget
()
getTarget
()
getV2x
()
//
getV2x()
//开启2个HTTP sse
//开启2个HTTP sse
getCarVehicle
()
//
getCarVehicle()
getAvpStatus
()
//
getAvpStatus()
//获取车位占用情况
//获取车位占用情况
// getSpaceInfo()
// getSpaceInfo()
}
}
...
@@ -302,7 +303,7 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
...
@@ -302,7 +303,7 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
//显示车辆位姿UI
//显示车辆位姿UI
private
fun
showVehicle
(
car
:
CarVehicle
)
{
private
fun
showVehicle
(
car
:
CarVehicle
)
{
if
(
car
.
vehiclePos
==
null
||
car
.
vehiclePos
.
getOrNull
(
2
)
==
null
)
{
if
(
car
.
vehiclePos
==
null
||
car
.
vehiclePos
?
.
getOrNull
(
2
)
==
null
)
{
//隐藏小车
//隐藏小车
return
return
}
}
...
@@ -317,9 +318,9 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
...
@@ -317,9 +318,9 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
// println("----car.heading ${car.heading}")
// println("----car.heading ${car.heading}")
//刷新主车位置
//刷新主车位置
HighMapApi
.
setCarPosition
(
HighMapApi
.
setCarPosition
(
car
.
vehiclePos
.
get
(
2
),
car
.
vehiclePos
!!
.
get
(
2
),
car
.
vehiclePos
.
get
(
1
),
car
.
vehiclePos
!!
.
get
(
1
),
car
.
vehiclePos
.
get
(
0
),
car
.
vehiclePos
!!
.
get
(
0
),
20.80189
20.80189
// car.elevation
// car.elevation
)
)
...
@@ -328,13 +329,16 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
...
@@ -328,13 +329,16 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
//联网车辆感知物
//联网车辆感知物
private
fun
getTarget
()
{
private
fun
getTarget
()
{
mainVm
.
subTarget
().
observe
(
this
)
{
it-
>
mainVm
.
subTarget
().
observe
(
this
)
{
it
->
if
(
it
.
isEmpty
()
)
{
if
(
it
.
getOrNull
(
0
)
==
null
)
{
HighMapApi
.
clearPtcData
()
return
@observe
return
@observe
}
}
var
parts
=
it
.
flatMap
{
it
.
participants
}
var
parts
=
it
.
flatMap
{
it
.
participants
}
if
(
parts
.
count
()
==
0
)
{
HighMapApi
.
clearPtcData
()
return
@observe
}
var
ptcList
=
parts
.
map
{
var
ptcList
=
parts
.
map
{
var
unityPtc
=
UnityPtc
().
apply
{
var
unityPtc
=
UnityPtc
().
apply
{
lat
=
it
.
latitude
lat
=
it
.
latitude
...
...
app/src/main/java/com/sd/cavphmi/ui/fragment/CarPanelFragment.kt
View file @
9d8a25ea
...
@@ -69,7 +69,9 @@ class CarPanelFragment : BaseFragment<FragmentCarPanelBinding, MyBaseViewModel>(
...
@@ -69,7 +69,9 @@ class CarPanelFragment : BaseFragment<FragmentCarPanelBinding, MyBaseViewModel>(
}
}
override
fun
getToData
()
{
override
fun
getToData
()
{
// carPanelVM.mock()
if
(
mainVm
.
isMock
){
carPanelVM
.
mock
()
}
}
}
companion
object
{
companion
object
{
...
...
app/src/main/java/com/sd/cavphmi/ui/fragment/UnityFragment.kt
View file @
9d8a25ea
...
@@ -110,7 +110,7 @@ class UnityFragment : Fragment() {
...
@@ -110,7 +110,7 @@ class UnityFragment : Fragment() {
// HighMapApi.setCameraAngle(90f)
// HighMapApi.setCameraAngle(90f)
// HighMapApi.setCameraDistance(80f)
// HighMapApi.setCameraDistance(80f)
HighMapApi
.
setCameraAngle
(
30f
)
HighMapApi
.
setCameraAngle
(
30f
)
HighMapApi
.
setCameraDistance
(
3
f
)
HighMapApi
.
setCameraDistance
(
5
f
)
// } catch (e: Exception) {
// } catch (e: Exception) {
// }
// }
// }, 300)
// }, 300)
...
...
app/src/main/java/com/sd/cavphmi/utils/MyContants.kt
View file @
9d8a25ea
...
@@ -7,9 +7,8 @@ object MyContants {
...
@@ -7,9 +7,8 @@ object MyContants {
/**全局预警持续时间 5秒*/
/**全局预警持续时间 5秒*/
const
val
WARNINGTIME
=
5000L
const
val
WARNINGTIME
=
5000L
//测试环境
// var HOST = "https://itg-dev.cu-sc.com:19443/"
// var HOST = "https://itg-dev.cu-sc.com:19443/"
//HTTP地址
//HTTP地址
//测试环境
const
val
HOST
=
"https://172.24.124.130:19443"
const
val
HOST
=
"https://172.24.124.130:19443"
//智网生产环境地址用于拼接3dtile.json
//智网生产环境地址用于拼接3dtile.json
...
...
app/src/main/java/com/sd/cavphmi/viewmodels/CarPanelVM.kt
View file @
9d8a25ea
...
@@ -30,6 +30,7 @@ class CarPanelVM @Inject constructor() : MyBaseViewModel() {
...
@@ -30,6 +30,7 @@ class CarPanelVM @Inject constructor() : MyBaseViewModel() {
//航向角
//航向角
carPanelBean
.
heading
.
set
(
dynamic
.
speed
.
toInt
())
carPanelBean
.
heading
.
set
(
dynamic
.
speed
.
toInt
())
//档位
//档位
var
gearType
=
dynamic
.
gearType
var
gearType
=
dynamic
.
gearType
when
(
gearType
)
{
when
(
gearType
)
{
...
@@ -57,11 +58,21 @@ class CarPanelVM @Inject constructor() : MyBaseViewModel() {
...
@@ -57,11 +58,21 @@ class CarPanelVM @Inject constructor() : MyBaseViewModel() {
fun
mock
()
{
fun
mock
()
{
//速度
carPanelBean
.
speed
.
set
(
30
)
//驾驶模式
carPanelBean
.
driveMode
.
set
(
AvpContants
.
DRIVE_MODE_AUTOMATIC
)
//航向角
carPanelBean
.
heading
.
set
(
0
)
//电量
carPanelBean
.
remainSoc
.
set
(
100
)
//档位
carPanelBean
.
tapPos
.
set
(
2
)
// changeMockHeading()
// changeMockHeading()
changeMockDriveMode
()
//
changeMockDriveMode()
// changeMockLight()
// changeMockLight()
// changeMockPro()
// changeMockPro()
changeMockGear
()
//
changeMockGear()
// changeMockSpeed()
// changeMockSpeed()
}
}
...
...
app/src/main/java/com/sd/cavphmi/viewmodels/MainVm.kt
View file @
9d8a25ea
...
@@ -33,6 +33,7 @@ import com.sd.cavphmi.net.RequestBodyUtil
...
@@ -33,6 +33,7 @@ import com.sd.cavphmi.net.RequestBodyUtil
import
com.sd.cavphmi.net.SimpleSSEClient
import
com.sd.cavphmi.net.SimpleSSEClient
import
com.sd.cavphmi.repositorys.AvpDataRepo
import
com.sd.cavphmi.repositorys.AvpDataRepo
import
com.sd.cavphmi.utils.FileIoUtils
import
com.sd.cavphmi.utils.FileIoUtils
//import com.sd.cavphmi.utils.FileIoUtils
import
com.sd.cavphmi.utils.MyContants
import
com.sd.cavphmi.utils.MyContants
import
com.sd.cavphmi.utils.MyContants.HTTP_TOKEN
import
com.sd.cavphmi.utils.MyContants.HTTP_TOKEN
import
com.sd.cavphmi.utils.MyMapUtils
import
com.sd.cavphmi.utils.MyMapUtils
...
@@ -40,6 +41,7 @@ import com.sd.cavphmi.utils.ToastHelper
...
@@ -40,6 +41,7 @@ import com.sd.cavphmi.utils.ToastHelper
import
com.sd.cavphmi.websockets.FeelTargetWSClient
import
com.sd.cavphmi.websockets.FeelTargetWSClient
import
com.sd.cavphmi.websockets.V2xWSClient
import
com.sd.cavphmi.websockets.V2xWSClient
import
com.sd.cavphmi.websockets.VecLocWSClient
import
com.sd.cavphmi.websockets.VecLocWSClient
import
commons.stand.FileSdCardUtils
import
dagger.hilt.android.lifecycle.HiltViewModel
import
dagger.hilt.android.lifecycle.HiltViewModel
import
dagger.hilt.android.qualifiers.ApplicationContext
import
dagger.hilt.android.qualifiers.ApplicationContext
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.delay
...
@@ -100,7 +102,7 @@ class MainVm @Inject constructor(
...
@@ -100,7 +102,7 @@ class MainVm @Inject constructor(
lateinit
var
mockVM
:
MockVM
lateinit
var
mockVM
:
MockVM
//是否需要模拟
//是否需要模拟
var
isMock
=
tru
e
var
isMock
=
fals
e
//车辆位姿数据
//车辆位姿数据
// var carVehicle = MutableLiveData<CarVehicle>()
// var carVehicle = MutableLiveData<CarVehicle>()
...
@@ -215,7 +217,7 @@ class MainVm @Inject constructor(
...
@@ -215,7 +217,7 @@ class MainVm @Inject constructor(
viewModelScope
.
launch
{
viewModelScope
.
launch
{
if
(
data
.
isNotEmpty
())
{
if
(
data
.
isNotEmpty
())
{
// println("-------AVP状态 = ${data}")
// println("-------AVP状态 = ${data}")
File
Io
Utils
.
write
To
File
(
data
,
"avp_status.txt"
)
File
SdCard
Utils
.
writeFile
ToDownload
(
data
,
"avp_status.txt"
)
try
{
try
{
var
result
=
gson
.
fromJson
<
AvpStatuBean
>(
data
,
AvpStatuBean
::
class
.
java
)
var
result
=
gson
.
fromJson
<
AvpStatuBean
>(
data
,
AvpStatuBean
::
class
.
java
)
avpStatu
.
emit
(
result
)
avpStatu
.
emit
(
result
)
...
@@ -227,7 +229,7 @@ class MainVm @Inject constructor(
...
@@ -227,7 +229,7 @@ class MainVm @Inject constructor(
}
}
override
fun
onError
(
throwable
:
Throwable
)
{
override
fun
onError
(
throwable
:
Throwable
)
{
println
(
"------
开启
AVP状态连接断开 ${throwable} 3秒后重连"
)
println
(
"------AVP状态连接断开 ${throwable} 3秒后重连"
)
viewModelScope
.
launch
{
viewModelScope
.
launch
{
delay
(
3000
)
delay
(
3000
)
getAvpStatus
()
getAvpStatus
()
...
@@ -244,7 +246,8 @@ class MainVm @Inject constructor(
...
@@ -244,7 +246,8 @@ class MainVm @Inject constructor(
*/
*/
fun
subVehicle
():
StateFlow
<
CarVehicle
>
{
fun
subVehicle
():
StateFlow
<
CarVehicle
>
{
if
(
isMock
)
{
if
(
isMock
)
{
mockVM
.
subVehicle
(
carVehicle
)
// mockVM.subVehicle(carVehicle)
mockVM
.
onVehicleMock
(
carVehicle
)
}
else
{
}
else
{
var
url
=
"${MyContants.HOST}/api/avpweb/hmi/monitor/v1/monitorDrivenStatus"
var
url
=
"${MyContants.HOST}/api/avpweb/hmi/monitor/v1/monitorDrivenStatus"
carCb
.
url
=
url
carCb
.
url
=
url
...
@@ -267,7 +270,7 @@ class MainVm @Inject constructor(
...
@@ -267,7 +270,7 @@ class MainVm @Inject constructor(
viewModelScope
.
launch
{
viewModelScope
.
launch
{
if
(
data
.
isNotEmpty
())
{
if
(
data
.
isNotEmpty
())
{
// println("-----车辆位姿 = ${data}")
// println("-----车辆位姿 = ${data}")
File
Io
Utils
.
write
To
File
(
data
,
"CarVehicle.txt"
)
File
SdCard
Utils
.
writeFile
ToDownload
(
data
,
"CarVehicle.txt"
)
try
{
try
{
var
result
=
gson
.
fromJson
<
CarVehicle
>(
data
,
CarVehicle
::
class
.
java
)
var
result
=
gson
.
fromJson
<
CarVehicle
>(
data
,
CarVehicle
::
class
.
java
)
carVehicle
.
value
=
result
carVehicle
.
value
=
result
...
@@ -312,9 +315,13 @@ class MainVm @Inject constructor(
...
@@ -312,9 +315,13 @@ class MainVm @Inject constructor(
viewModelScope
.
launch
{
viewModelScope
.
launch
{
//下载到sd卡下面的DownLoad文件夹下面
//下载到sd卡下面的DownLoad文件夹下面
if
(
str
.
isNotEmpty
())
{
if
(
str
.
isNotEmpty
())
{
FileIoUtils
.
writeToFile
(
str
,
"PerTarget.txt"
)
FileSdCardUtils
.
writeFileToDownload
(
str
,
"PerTarget.txt"
)
try
{
var
bean
=
gson
.
fromJson
(
str
,
PerceptionBean
::
class
.
java
)
var
bean
=
gson
.
fromJson
(
str
,
PerceptionBean
::
class
.
java
)
targetPre
.
postValue
(
bean
)
targetPre
.
postValue
(
bean
)
}
catch
(
e
:
JsonSyntaxException
)
{
e
.
printStackTrace
()
}
}
}
}
}
}
}
...
@@ -336,7 +343,7 @@ class MainVm @Inject constructor(
...
@@ -336,7 +343,7 @@ class MainVm @Inject constructor(
*/
*/
fun
subStartV2x
():
LiveData
<
V2xStartBean
>
{
fun
subStartV2x
():
LiveData
<
V2xStartBean
>
{
if
(
isMock
)
{
if
(
isMock
)
{
mockVM
.
onV2xMock
(
v2xStartBean
)
//
mockVM.onV2xMock(v2xStartBean)
}
else
{
}
else
{
try
{
try
{
v2xWSClient
.
onWebSocketCb
=
object
:
OnWebSocketCb
{
v2xWSClient
.
onWebSocketCb
=
object
:
OnWebSocketCb
{
...
@@ -350,10 +357,15 @@ class MainVm @Inject constructor(
...
@@ -350,10 +357,15 @@ class MainVm @Inject constructor(
override
fun
onMsg
(
str
:
String
)
{
override
fun
onMsg
(
str
:
String
)
{
viewModelScope
.
launch
{
viewModelScope
.
launch
{
if
(
str
.
isNotEmpty
())
{
if
(
str
.
isNotEmpty
())
{
File
Io
Utils
.
write
To
File
(
str
,
"avp_v2x.txt"
)
File
SdCard
Utils
.
writeFile
ToDownload
(
str
,
"avp_v2x.txt"
)
}
}
try
{
var
bean
=
gson
.
fromJson
(
str
,
V2xStartBean
::
class
.
java
)
var
bean
=
gson
.
fromJson
(
str
,
V2xStartBean
::
class
.
java
)
v2xStartBean
.
postValue
(
bean
)
v2xStartBean
.
postValue
(
bean
)
}
catch
(
e
:
JsonSyntaxException
)
{
e
.
printStackTrace
()
}
}
}
}
}
}
}
...
...
app/src/main/java/com/sd/cavphmi/viewmodels/MapOpt.kt
View file @
9d8a25ea
...
@@ -127,7 +127,7 @@ class MapOpt @Inject constructor(
...
@@ -127,7 +127,7 @@ class MapOpt @Inject constructor(
if
(
mMineMap
!=
null
&&
car
.
vehiclePos
!=
null
)
{
if
(
mMineMap
!=
null
&&
car
.
vehiclePos
!=
null
)
{
if
(
mSmallMapCar
==
null
)
{
if
(
mSmallMapCar
==
null
)
{
var
point
=
var
point
=
LatLng
(
car
.
vehiclePos
.
get
(
1
),
car
.
vehiclePos
.
get
(
0
))
LatLng
(
car
.
vehiclePos
?
.
get
(
1
)
?:
0.0
,
car
.
vehiclePos
?
.
get
(
0
)
?:
0.0
)
mSmallMapCar
=
MyLocationStyle
(
"res/icons/carIconInSmallMap.png"
,
true
)
mSmallMapCar
=
MyLocationStyle
(
"res/icons/carIconInSmallMap.png"
,
true
)
mSmallMapCar
?.
myLocationType
(
MyLocationStyle
.
LOCATION_TYPE_EXTERNAL
)
mSmallMapCar
?.
myLocationType
(
MyLocationStyle
.
LOCATION_TYPE_EXTERNAL
)
val
scaleFactor
=
-
val
scaleFactor
=
-
...
@@ -149,8 +149,8 @@ class MapOpt @Inject constructor(
...
@@ -149,8 +149,8 @@ class MapOpt @Inject constructor(
if
(
carVehicle
.
vehiclePos
==
null
)
if
(
carVehicle
.
vehiclePos
==
null
)
return
return
synchronized
(
NativeEnv
.
SyncObject
)
{
synchronized
(
NativeEnv
.
SyncObject
)
{
var
ndsLatLng
=
LatLng
(
carVehicle
.
vehiclePos
.
get
(
1
),
carVehicle
.
vehiclePos
.
get
(
0
))
var
ndsLatLng
=
LatLng
(
carVehicle
.
vehiclePos
?
.
get
(
1
)
?:
0.0
,
carVehicle
.
vehiclePos
?
.
get
(
0
)
?:
0.0
)
var
tHead
=
carVehicle
.
vehiclePos
.
get
(
2
).
toFloat
()
var
tHead
=
carVehicle
.
vehiclePos
!!
.
get
(
2
).
toFloat
()
//刷新小地图自车位置
//刷新小地图自车位置
if
(
mSmallMapCar
!=
null
)
{
if
(
mSmallMapCar
!=
null
)
{
// mSmallMapCar!!.orientAngle((heading + 40) % 360)
// mSmallMapCar!!.orientAngle((heading + 40) % 360)
...
...
app/src/main/java/com/sd/cavphmi/viewmodels/MockVM.kt
View file @
9d8a25ea
...
@@ -20,6 +20,7 @@ import com.minedata.minenavi.mapdal.NdsPoint
...
@@ -20,6 +20,7 @@ import com.minedata.minenavi.mapdal.NdsPoint
import
com.minedata.minenavi.util.Tools
import
com.minedata.minenavi.util.Tools
import
com.sd.cavphmi.R
import
com.sd.cavphmi.R
import
com.sd.cavphmi.bean.AvpStatuBean
import
com.sd.cavphmi.bean.AvpStatuBean
import
com.sd.cavphmi.bean.CarPanelBean
import
com.sd.cavphmi.bean.CarVehicle
import
com.sd.cavphmi.bean.CarVehicle
import
com.sd.cavphmi.bean.PerceptionBean
import
com.sd.cavphmi.bean.PerceptionBean
import
com.sd.cavphmi.bean.V2xStartBean
import
com.sd.cavphmi.bean.V2xStartBean
...
@@ -71,7 +72,7 @@ class MockVM @Inject constructor(
...
@@ -71,7 +72,7 @@ class MockVM @Inject constructor(
* @param binding 里的速度
* @param binding 里的速度
* **/
* **/
fun
onVehicleMock
(
fun
onVehicleMock
(
carVehicle
:
Mutable
LiveData
<
CarVehicle
>
carVehicle
:
Mutable
StateFlow
<
CarVehicle
>
)
{
)
{
// HighMapApi.setCameraAngle(30f)
// HighMapApi.setCameraAngle(30f)
viewModelScope
.
launch
{
viewModelScope
.
launch
{
...
@@ -117,14 +118,15 @@ class MockVM @Inject constructor(
...
@@ -117,14 +118,15 @@ class MockVM @Inject constructor(
)
)
}
}
cCar
=
CarVehicle
().
apply
{
cCar
=
CarVehicle
().
apply
{
var
temps
=
this
.
vehiclePos
?.
toMutableList
()
//
var temps = this.vehiclePos?.toMutableList()
if
((
head
-
oldHead
).
absoluteValue
<
45
)
{
//
if ((head - oldHead).absoluteValue < 45) {
temps
?.
set
(
2
,
head
)
//
temps?.set(2, head)
}
//
}
temps
?.
set
(
0
,
it
[
0
])
//
temps?.set(0, it[0])
temps
?.
set
(
1
,
it
[
1
])
//
temps?.set(1, it[1])
// latitude = it[1]
// latitude = it[1]
// longitude = it[0]
// longitude = it[0]
this
.
vehiclePos
=
listOf
(
it
[
0
],
it
[
1
],
head
)
}
}
oldHead
=
head
oldHead
=
head
...
@@ -135,10 +137,10 @@ class MockVM @Inject constructor(
...
@@ -135,10 +137,10 @@ class MockVM @Inject constructor(
Tools
.
latLngToNdsPoint
(
Tools
.
latLngToNdsPoint
(
LatLng
(
LatLng
(
cCar
.
vehiclePos
!!
.
get
(
1
),
cCar
.
vehiclePos
!!
.
get
(
1
),
cCar
.
vehiclePos
.
get
(
0
)
cCar
.
vehiclePos
!!
.
get
(
0
)
)
)
),
),
cCar
.
vehiclePos
.
get
(
2
).
toFloat
()
cCar
.
vehiclePos
!!
.
get
(
2
).
toFloat
()
)
)
//更新小地图路径
//更新小地图路径
upSmallLine
(
index
,
mRoutes
)
upSmallLine
(
index
,
mRoutes
)
...
@@ -166,13 +168,11 @@ class MockVM @Inject constructor(
...
@@ -166,13 +168,11 @@ class MockVM @Inject constructor(
var
forword
=
parkPath
.
result
.
routes
.
find
{
it
.
gear
==
3
}
var
forword
=
parkPath
.
result
.
routes
.
find
{
it
.
gear
==
3
}
forword
?.
polyline
?.
forEach
{
poly
->
forword
?.
polyline
?.
forEach
{
poly
->
cCar
=
CarVehicle
().
apply
{
cCar
=
CarVehicle
().
apply
{
var
temps
=
this
.
vehiclePos
?.
toMutableList
()
// this.vehiclePos = this.vehiclePos?.toMutableList()
temps
?.
set
(
0
,
poly
.
get
(
0
))
// vehiclePos?.set(0, poly.get(0))
temps
?.
set
(
1
,
poly
.
get
(
1
))
// vehiclePos?.set(1, poly.get(1))
temps
?.
set
(
2
,
poly
.
get
(
3
))
// vehiclePos?.set(2, poly.get(3))
// latitude = poly.get(1)
this
.
vehiclePos
=
listOf
(
poly
.
get
(
0
),
poly
.
get
(
1
),
poly
.
get
(
3
))
// longitude = poly.get(0)
// heading = poly.get(3)
}
}
//更新主车位置
//更新主车位置
carVehicle
.
value
=
cCar
carVehicle
.
value
=
cCar
...
@@ -181,10 +181,10 @@ class MockVM @Inject constructor(
...
@@ -181,10 +181,10 @@ class MockVM @Inject constructor(
Tools
.
latLngToNdsPoint
(
Tools
.
latLngToNdsPoint
(
LatLng
(
LatLng
(
cCar
.
vehiclePos
!!
.
get
(
1
),
cCar
.
vehiclePos
!!
.
get
(
1
),
cCar
.
vehiclePos
.
get
(
0
)
cCar
.
vehiclePos
!!
.
get
(
0
)
)
)
),
),
cCar
.
vehiclePos
.
get
(
2
).
toFloat
()
cCar
.
vehiclePos
!!
.
get
(
2
).
toFloat
()
)
)
delay
(
300
)
delay
(
300
)
}
}
...
@@ -198,14 +198,17 @@ class MockVM @Inject constructor(
...
@@ -198,14 +198,17 @@ class MockVM @Inject constructor(
//改变镜头角度
//改变镜头角度
HighMapApi
.
setCameraAngle
(
90f
)
HighMapApi
.
setCameraAngle
(
90f
)
HighMapApi
.
setCameraDistance
(
20f
)
HighMapApi
.
setCameraDistance
(
20f
)
//挂倒挡
CarPanelBean
.
instance
.
tapPos
.
set
(
3
)
//开始后退
//开始后退
var
fBack
=
parkPath
.
result
.
routes
.
find
{
it
.
gear
==
1
}
var
fBack
=
parkPath
.
result
.
routes
.
find
{
it
.
gear
==
1
}
fBack
?.
polyline
?.
forEach
{
poly
->
fBack
?.
polyline
?.
forEach
{
poly
->
cCar
=
CarVehicle
().
apply
{
cCar
=
CarVehicle
().
apply
{
var
temps
=
this
.
vehiclePos
?.
toMutableList
()
// var temps = this.vehiclePos?.toMutableList()
temps
?.
set
(
0
,
poly
.
get
(
0
))
// temps?.set(0, poly.get(0))
temps
?.
set
(
1
,
poly
.
get
(
1
))
// temps?.set(1, poly.get(1))
temps
?.
set
(
2
,
poly
.
get
(
3
))
// temps?.set(2, poly.get(3))
this
.
vehiclePos
=
listOf
(
poly
.
get
(
0
),
poly
.
get
(
1
),
poly
.
get
(
3
))
}
}
//更新主车位置
//更新主车位置
carVehicle
.
value
=
cCar
carVehicle
.
value
=
cCar
...
@@ -214,7 +217,7 @@ class MockVM @Inject constructor(
...
@@ -214,7 +217,7 @@ class MockVM @Inject constructor(
Tools
.
latLngToNdsPoint
(
Tools
.
latLngToNdsPoint
(
LatLng
(
LatLng
(
cCar
.
vehiclePos
!!
.
get
(
1
),
cCar
.
vehiclePos
!!
.
get
(
1
),
cCar
.
vehiclePos
.
get
(
0
)
cCar
.
vehiclePos
!!
.
get
(
0
)
)
)
),
),
cCar
.
vehiclePos
!!
.
get
(
1
).
toFloat
()
cCar
.
vehiclePos
!!
.
get
(
1
).
toFloat
()
...
@@ -226,6 +229,9 @@ class MockVM @Inject constructor(
...
@@ -226,6 +229,9 @@ class MockVM @Inject constructor(
deleteNavingCar
()
deleteNavingCar
()
//关闭流光效果
//关闭流光效果
HighMapApi
.
parkRoundLight
(
""
)
HighMapApi
.
parkRoundLight
(
""
)
//挂P档
CarPanelBean
.
instance
.
tapPos
.
set
(
1
)
CarPanelBean
.
instance
.
speed
.
set
(
0
)
//结束泊车
//结束泊车
HighMapApi
.
setParkComplete
(
true
)
HighMapApi
.
setParkComplete
(
true
)
//降地锁
//降地锁
...
@@ -249,7 +255,7 @@ class MockVM @Inject constructor(
...
@@ -249,7 +255,7 @@ class MockVM @Inject constructor(
try
{
try
{
temp
=
str
temp
=
str
val
cCar
=
gson
.
fromJson
<
CarVehicle
>(
str
,
CarVehicle
::
class
.
java
)
val
cCar
=
gson
.
fromJson
<
CarVehicle
>(
str
,
CarVehicle
::
class
.
java
)
if
(
cCar
!=
null
||
cCar
?.
vehiclePos
!=
null
)
{
if
(
cCar
!=
null
||
cCar
?.
vehiclePos
!=
null
)
{
// carLiveData.postValue(cCar)
// carLiveData.postValue(cCar)
carLiveData
.
value
=
cCar
carLiveData
.
value
=
cCar
delay
(
100
)
delay
(
100
)
...
@@ -370,15 +376,17 @@ class MockVM @Inject constructor(
...
@@ -370,15 +376,17 @@ class MockVM @Inject constructor(
fun
onSubTargetMock
(
targetPre
:
MutableLiveData
<
PerceptionBean
>)
{
fun
onSubTargetMock
(
targetPre
:
MutableLiveData
<
PerceptionBean
>)
{
viewModelScope
.
launch
{
viewModelScope
.
launch
{
val
parts
=
mutableListOf
<
String
>()
val
parts
=
mutableListOf
<
String
>()
FileIoUtils
.
getAssetMock
(
context
,
"mock/
shiche/
PerTarget.txt"
,
parts
)
FileIoUtils
.
getAssetMock
(
context
,
"mock/PerTarget.txt"
,
parts
)
var
temp
=
""
var
temp
=
""
parts
.
forEach
{
str
->
parts
.
forEach
{
str
->
if
(!
str
.
isNullOrEmpty
())
{
temp
=
str
temp
=
str
var
bean
=
parseDataBean
(
str
,
PerceptionBean
::
class
.
java
)
var
bean
=
parseDataBean
(
str
,
PerceptionBean
::
class
.
java
)
// var bean = gson.fromJson<PerceptionBean>(str, PerceptionBean::class.java)
// var bean = gson.fromJson<PerceptionBean>(str, PerceptionBean::class.java)
if
(
bean
!=
null
){
if
(
bean
!=
null
)
{
targetPre
.
value
=
bean
targetPre
.
value
=
bean
delay
(
5000
)
delay
(
4500
)
}
}
}
}
}
}
}
...
@@ -391,7 +399,7 @@ class MockVM @Inject constructor(
...
@@ -391,7 +399,7 @@ class MockVM @Inject constructor(
FileIoUtils
.
getAssetMock
(
context
,
"mock/avp_v2x.txt"
,
parts
)
FileIoUtils
.
getAssetMock
(
context
,
"mock/avp_v2x.txt"
,
parts
)
parts
.
forEach
{
str
->
parts
.
forEach
{
str
->
var
bean
=
parseDataBean
(
str
,
V2xStartBean
::
class
.
java
)
var
bean
=
parseDataBean
(
str
,
V2xStartBean
::
class
.
java
)
if
(
bean
!=
null
){
if
(
bean
!=
null
)
{
targetPre
.
value
=
bean
targetPre
.
value
=
bean
delay
(
2000
)
delay
(
2000
)
}
}
...
@@ -454,7 +462,7 @@ class MockVM @Inject constructor(
...
@@ -454,7 +462,7 @@ class MockVM @Inject constructor(
FileIoUtils
.
getAssetMock
(
context
,
"mock/shiche/avp_status_park.txt"
,
datas
)
FileIoUtils
.
getAssetMock
(
context
,
"mock/shiche/avp_status_park.txt"
,
datas
)
datas
.
forEach
{
datas
.
forEach
{
val
statu
=
gson
.
fromJson
<
AvpStatuBean
>(
it
,
AvpStatuBean
::
class
.
java
)
val
statu
=
gson
.
fromJson
<
AvpStatuBean
>(
it
,
AvpStatuBean
::
class
.
java
)
if
(
statu
!=
null
){
if
(
statu
!=
null
)
{
avp
.
emit
(
statu
)
avp
.
emit
(
statu
)
delay
(
2000
)
delay
(
2000
)
}
}
...
...
app/src/main/res/layout/activity_main.xml
View file @
9d8a25ea
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
>
xmlns:tools=
"http://schemas.android.com/tools"
>
<data>
<data>
<!-- <import type="android.view.View" />-->
<!-- <variable-->
<!-- <variable-->
<!-- name="vm"-->
<!-- name="vm"-->
<!-- type="com.sd.cavphmi.viewmodels.MainVm" />-->
<!-- type="com.sd.cavphmi.viewmodels.MainVm" />-->
</data>
</data>
...
@@ -58,18 +58,16 @@
...
@@ -58,18 +58,16 @@
<LinearLayout
<LinearLayout
android:id=
"@+id/ll_1"
android:id=
"@+id/ll_1"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"
wrap_content
"
android:layout_height=
"
25dp
"
android:layout_alignParentBottom=
"true"
android:layout_alignParentBottom=
"true"
android:orientation=
"horizontal"
android:orientation=
"horizontal"
android:src=
"#907867"
android:visibility=
"gone"
>
android:visibility=
"gone"
>
<TextView
<TextView
android:id=
"@+id/bt_vehicle"
android:id=
"@+id/bt_vehicle"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"
wrap_cont
ent"
android:layout_height=
"
match_par
ent"
android:background=
"@color/text_blue"
android:background=
"@color/text_blue"
android:paddingVertical=
"5dp"
android:text=
"车辆位姿"
android:text=
"车辆位姿"
android:textColor=
"@color/white"
/>
android:textColor=
"@color/white"
/>
...
@@ -77,20 +75,18 @@
...
@@ -77,20 +75,18 @@
<TextView
<TextView
android:id=
"@+id/bt_target"
android:id=
"@+id/bt_target"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"
wrap_cont
ent"
android:layout_height=
"
match_par
ent"
android:layout_marginLeft=
"
5
dp"
android:layout_marginLeft=
"
3
dp"
android:background=
"@color/text_blue"
android:background=
"@color/text_blue"
android:paddingVertical=
"5dp"
android:text=
"感知物"
android:text=
"感知物"
android:textColor=
"@color/white"
/>
android:textColor=
"@color/white"
/>
<TextView
<TextView
android:id=
"@+id/bt_v2x"
android:id=
"@+id/bt_v2x"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"
wrap_cont
ent"
android:layout_height=
"
match_par
ent"
android:layout_marginLeft=
"5dp"
android:layout_marginLeft=
"5dp"
android:background=
"@color/text_blue"
android:background=
"@color/text_blue"
android:paddingVertical=
"5dp"
android:text=
"V2X预警开始"
android:text=
"V2X预警开始"
android:textColor=
"@color/white"
/>
android:textColor=
"@color/white"
/>
...
@@ -98,28 +94,26 @@
...
@@ -98,28 +94,26 @@
<TextView
<TextView
android:id=
"@+id/bt_avpStatu"
android:id=
"@+id/bt_avpStatu"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"
wrap_cont
ent"
android:layout_height=
"
match_par
ent"
android:layout_marginLeft=
"5dp"
android:layout_marginLeft=
"5dp"
android:background=
"@color/text_blue"
android:background=
"@color/text_blue"
android:paddingVertical=
"5dp"
android:text=
"AVP状态"
android:text=
"AVP状态"
android:textColor=
"@color/white"
/>
android:textColor=
"@color/white"
/>
<TextView
<TextView
android:id=
"@+id/bt_vehinfo"
android:id=
"@+id/bt_vehinfo"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"
wrap_cont
ent"
android:layout_height=
"
match_par
ent"
android:layout_marginLeft=
"5dp"
android:layout_marginLeft=
"5dp"
android:background=
"@color/text_blue"
android:background=
"@color/text_blue"
android:paddingVertical=
"5dp"
android:text=
"车辆详情"
android:text=
"车辆详情"
android:
visibility=
"gon
e"
android:
textColor=
"@color/whit
e"
android:
textColor=
"@color/whit
e"
/>
android:
visibility=
"gon
e"
/>
<TextView
<TextView
android:id=
"@+id/bt_status"
android:id=
"@+id/bt_status"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"
wrap_cont
ent"
android:layout_height=
"
match_par
ent"
android:text=
"网联车辆状态"
android:text=
"网联车辆状态"
android:visibility=
"gone"
/>
android:visibility=
"gone"
/>
...
@@ -127,23 +121,23 @@
...
@@ -127,23 +121,23 @@
<TextView
<TextView
android:id=
"@+id/bt_parkround"
android:id=
"@+id/bt_parkround"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"
wrap_cont
ent"
android:layout_height=
"
match_par
ent"
android:text=
"车位四周流光"
android:text=
"车位四周流光"
android:visibility=
"gone"
/>
android:visibility=
"gone"
/>
<TextView
<TextView
android:id=
"@+id/bt_parkstatu"
android:id=
"@+id/bt_parkstatu"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"
wrap_cont
ent"
android:layout_height=
"
match_par
ent"
android:text=
"停车位绘制(占用)"
android:text=
"停车位绘制(占用)"
android:visibility=
"gone"
/>
android:visibility=
"gone"
/>
<TextView
<TextView
android:id=
"@+id/bt_lock"
android:id=
"@+id/bt_lock"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"
wrap_cont
ent"
android:layout_height=
"
match_par
ent"
android:text=
"地锁绘制"
android:text=
"地锁绘制"
android:visibility=
"
visibl
e"
/>
android:visibility=
"
gon
e"
/>
<!-- <Button-->
<!-- <Button-->
<!-- android:id="@+id/bt_move"-->
<!-- android:id="@+id/bt_move"-->
...
@@ -153,20 +147,18 @@
...
@@ -153,20 +147,18 @@
<TextView
<TextView
android:id=
"@+id/warn_car"
android:id=
"@+id/warn_car"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"
wrap_cont
ent"
android:layout_height=
"
match_par
ent"
android:layout_marginLeft=
"5dp"
android:layout_marginLeft=
"5dp"
android:background=
"@color/text_blue"
android:background=
"@color/text_blue"
android:paddingVertical=
"5dp"
android:text=
"预警车"
android:text=
"预警车"
android:textColor=
"@color/white"
/>
android:textColor=
"@color/white"
/>
<TextView
<TextView
android:id=
"@+id/warn_peo"
android:id=
"@+id/warn_peo"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"
wrap_cont
ent"
android:layout_height=
"
match_par
ent"
android:layout_marginLeft=
"5dp"
android:layout_marginLeft=
"5dp"
android:background=
"@color/text_blue"
android:background=
"@color/text_blue"
android:paddingVertical=
"5dp"
android:text=
"预警人"
android:text=
"预警人"
android:textColor=
"@color/white"
/>
android:textColor=
"@color/white"
/>
...
...
app/src/main/res/layout/fragment_distant_tip.xml
View file @
9d8a25ea
...
@@ -7,7 +7,8 @@
...
@@ -7,7 +7,8 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:gravity=
"center_vertical"
android:gravity=
"center_vertical"
tools:context=
".ui.fragment.DistantTipFragment"
>
tools:context=
".ui.fragment.DistantTipFragment"
android:visibility=
"gone"
>
<ImageView
<ImageView
android:layout_width=
"@dimen/dp_30"
android:layout_width=
"@dimen/dp_30"
...
...
app/src/main/res/values/dimens.xml
View file @
9d8a25ea
...
@@ -8,6 +8,7 @@
...
@@ -8,6 +8,7 @@
<dimen
name=
"dp_20"
>
20dp
</dimen>
<dimen
name=
"dp_20"
>
20dp
</dimen>
<dimen
name=
"dp_25"
>
25dp
</dimen>
<dimen
name=
"dp_25"
>
25dp
</dimen>
<dimen
name=
"dp_30"
>
30dp
</dimen>
<dimen
name=
"dp_30"
>
30dp
</dimen>
<dimen
name=
"dp_35"
>
35dp
</dimen>
<dimen
name=
"dp_40"
>
40dp
</dimen>
<dimen
name=
"dp_40"
>
40dp
</dimen>
<dimen
name=
"dp_45"
>
45dp
</dimen>
<dimen
name=
"dp_45"
>
45dp
</dimen>
<dimen
name=
"dp_50"
>
50dp
</dimen>
<dimen
name=
"dp_50"
>
50dp
</dimen>
...
...
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