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

添加协议

parent 9723db98
...@@ -144,4 +144,28 @@ object HighMapApi { ...@@ -144,4 +144,28 @@ object HighMapApi {
UnityPlayer.UnitySendMessage(MODELNAME, "parkRoundLight", gson.toJson(parkRoundLight)) 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>(), ...@@ -102,6 +102,12 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
} }
private fun mockBt() { private fun mockBt() {
//获取AVP状态
binding.btAvpStatu.setOnClickListener {
mainVm.getAvpStatus().observe(this) {
}
}
//联网车辆位姿数据 //联网车辆位姿数据
binding.btVehicle.setOnClickListener { binding.btVehicle.setOnClickListener {
mainVm.subVehicle().observe(this) { mainVm.subVehicle().observe(this) {
...@@ -188,46 +194,6 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(), ...@@ -188,46 +194,6 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
ft.commit() 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 { override fun dispatchKeyEvent(event: KeyEvent): Boolean {
if ((event.getKeyCode() == KeyEvent.KEYCODE_BACK) || event.getKeyCode() == KeyEvent.KEYCODE_HOME) { if ((event.getKeyCode() == KeyEvent.KEYCODE_BACK) || event.getKeyCode() == KeyEvent.KEYCODE_HOME) {
// var ft = supportFragmentManager.beginTransaction() // var ft = supportFragmentManager.beginTransaction()
......
...@@ -26,6 +26,9 @@ import com.sd.cavphmi.websockets.V2xWSClient ...@@ -26,6 +26,9 @@ import com.sd.cavphmi.websockets.V2xWSClient
import com.sd.cavphmi.websockets.VecLocWSClient import com.sd.cavphmi.websockets.VecLocWSClient
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.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.net.URI import java.net.URI
import javax.inject.Inject import javax.inject.Inject
...@@ -84,8 +87,10 @@ class MainVm @Inject constructor( ...@@ -84,8 +87,10 @@ class MainVm @Inject constructor(
//avp状态数据 //avp状态数据
var avpStatu = MutableLiveData<AvpStatuBean>() var avpStatu = MutableLiveData<AvpStatuBean>()
//车位占用情况 //车位占用情况
var spaceInfo = MutableLiveData<SpaceInfoBean>() var spaceInfo = MutableLiveData<SpaceInfoBean>()
//获取已绑定车辆列表 //获取已绑定车辆列表
var bindCars = MutableLiveData<List<BindCarItem>>() var bindCars = MutableLiveData<List<BindCarItem>>()
...@@ -146,9 +151,12 @@ class MainVm @Inject constructor( ...@@ -146,9 +151,12 @@ class MainVm @Inject constructor(
return spaceInfo return spaceInfo
} }
private var avpStatuJob: Job? = null
//HTTP获取AVP状态 //HTTP获取AVP状态
fun getAvpStatus() : LiveData<AvpStatuBean>{ fun getAvpStatus(): LiveData<AvpStatuBean> {
viewModelScope.launch { avpStatuJob = viewModelScope.launch {
while (isActive) {
var result = avpDataRepo.getAvpStatus() var result = avpDataRepo.getAvpStatus()
when (result) { when (result) {
is MyResult.Success<AvpStatuBean> -> { is MyResult.Success<AvpStatuBean> -> {
...@@ -160,12 +168,17 @@ class MainVm @Inject constructor( ...@@ -160,12 +168,17 @@ class MainVm @Inject constructor(
else -> { else -> {
} }
} }
delay(2000)
}
}
avpStatuJob?.invokeOnCompletion {
} }
return avpStatu return avpStatu
} }
//HTTP获取已绑定车辆列表 //HTTP获取已绑定车辆列表
fun getBindCar() : LiveData<AvpStatuBean>{ fun getBindCar(): LiveData<AvpStatuBean> {
viewModelScope.launch { viewModelScope.launch {
var result = avpDataRepo.getBindCar() var result = avpDataRepo.getBindCar()
when (result) { when (result) {
...@@ -201,12 +214,17 @@ class MainVm @Inject constructor( ...@@ -201,12 +214,17 @@ class MainVm @Inject constructor(
var carBean = gson.fromJson(str, CarVehicle::class.java) var carBean = gson.fromJson(str, CarVehicle::class.java)
// carVehicle.postValue(carBean) // carVehicle.postValue(carBean)
//更新主车位置 //更新主车位置
var car=carBean.first() var car = carBean.first()
HighMapApi.setCarPosition(car.heading, car.latitude, car.longitude, 20.80189) HighMapApi.setCarPosition(
car.heading,
car.latitude,
car.longitude,
20.80189
)
} }
} }
} }
if (!vecLocWSClient.isOpen){ if (!vecLocWSClient.isOpen) {
vecLocWSClient.connect() vecLocWSClient.connect()
} }
} catch (e: Exception) { } catch (e: Exception) {
...@@ -234,7 +252,7 @@ class MainVm @Inject constructor( ...@@ -234,7 +252,7 @@ class MainVm @Inject constructor(
} }
} }
} }
if (!feelTargetWSClient.isOpen){ if (!feelTargetWSClient.isOpen) {
feelTargetWSClient.connect() feelTargetWSClient.connect()
} }
} catch (e: Exception) { } catch (e: Exception) {
...@@ -263,7 +281,7 @@ class MainVm @Inject constructor( ...@@ -263,7 +281,7 @@ class MainVm @Inject constructor(
} }
} }
} }
if (v2xWSClient.isOpen == false){ if (v2xWSClient.isOpen == false) {
v2xWSClient.connect() v2xWSClient.connect()
} }
} catch (e: Exception) { } catch (e: Exception) {
......
...@@ -93,21 +93,15 @@ ...@@ -93,21 +93,15 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="选择车辆" 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> </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