Commit 5e6e85f0 authored by p x's avatar p x
Browse files

添加协议

parent 9723db98
......@@ -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
package com.sd.cavphmi.highmap
class LockStatu {
var code = ""//车位编号
var isHide = false
var up = false//// true是升起, false是降下
}
\ No newline at end of file
package com.sd.cavphmi.highmap
//泊车完成
class ParkComplete {
var complete = false
}
\ No newline at end of file
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
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
......@@ -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()
......
......@@ -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
}*/
//暂时用不到---------------------------------------------
......
......@@ -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>
......
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