Commit e09a56b8 authored by p x's avatar p x
Browse files

整理车辆移动和感知物

parent 1b561d38
...@@ -20,6 +20,10 @@ ...@@ -20,6 +20,10 @@
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 允许程序写入外部存储设备 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 允许程序写入外部存储设备 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 允许程序读取所有者数据 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 允许程序读取所有者数据 -->
<uses-permission android:name="android.permission.READ_OWNER_DATA" /> <!-- 访问WiFi状态,需要WiFi信息用于网络定位 --> <uses-permission android:name="android.permission.READ_OWNER_DATA" /> <!-- 访问WiFi状态,需要WiFi信息用于网络定位 -->
<uses-permission
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 访问网络的变化, 需要某些信息用于网络定位 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 访问网络的变化, 需要某些信息用于网络定位 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 8.0 安装未知程序权限 --> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 8.0 安装未知程序权限 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
...@@ -43,11 +47,21 @@ ...@@ -43,11 +47,21 @@
android:name="com.minedata.minenavi.apikey" android:name="com.minedata.minenavi.apikey"
android:value="57ac7a0d56494912a0c28e651fa4a40a" /> <!-- android:screenOrientation="userLandscape" --> android:value="57ac7a0d56494912a0c28e651fa4a40a" /> <!-- android:screenOrientation="userLandscape" -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<activity <activity
android:name=".ui.LoginActivity" android:name=".ui.LoginActivity"
android:exported="true" android:exported="true"
android:theme="@style/Theme.SuZhouAvp" android:screenOrientation="landscape"
android:screenOrientation="landscape"> android:theme="@style/Theme.SuZhouAvp">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
...@@ -65,19 +79,19 @@ ...@@ -65,19 +79,19 @@
android:hardwareAccelerated="false" android:hardwareAccelerated="false"
android:launchMode="singleTask" android:launchMode="singleTask"
android:resizeableActivity="false" android:resizeableActivity="false"
android:screenOrientation="fullUser"/> android:screenOrientation="fullUser" />
<!-- <activity--> <!-- <activity-->
<!-- android:name=".ui.BootActivity"--> <!-- android:name=".ui.BootActivity"-->
<!-- android:exported="true"--> <!-- android:exported="true"-->
<!-- android:screenOrientation="landscape"--> <!-- android:screenOrientation="landscape"-->
<!-- android:theme="@style/SplashTheme">--> <!-- android:theme="@style/SplashTheme">-->
<!-- <intent-filter>--> <!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />--> <!-- <action android:name="android.intent.action.MAIN" />-->
<!-- <category android:name="android.intent.category.LAUNCHER" />--> <!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>--> <!-- </intent-filter>-->
<!-- </activity>--> <!-- </activity>-->
</application> </application>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
package com.sd.cavphmi.bean
/**
* 感知目标物实体
****/
class PerTargetTest : ArrayList<PerTargetTestItem>()
data class PerTargetTestItem(
val id: String,
val accessTime: Long,
val deviceId: String,
val deviceCode: String,
val intersectionCode: String,
val participants: List<ParticipantTest>,
val receiveTime: Long,
val reportTime: Long,
// val statistic: Statistic
)
data class ParticipantTest(
val color: Int,
val gear: Int,
val heading: Double,
val latitude: Double,
val longitude: Double,
val ptcId: String,
val ptcType: String,
val speed: Double,
var aniTime:Long,
var isFlash:Boolean,
var isRed:Boolean
)
data class StatisticTest(
val ambulance: Int,
val bike: Int,
val bus: Int,
val car: Int,
val coach: Int,
val concrete_mixer: Int,
val conical_barrel: Int,
val electric_bicycle: Int,
val engine_emergency: Int,
val fire_truck: Int,
val heavy_truck: Int,
val large_truck: Int,
val micro_truck: Int,
val midibus: Int,
val minibus: Int,
val motorcycle: Int,
val mpv: Int,
val pedestrian: Int,
val pickup: Int,
val police_car: Int,
val small_truck: Int,
val spillage: Int,
val suv: Int,
val tank_truck: Int,
val tricycle: Int,
val truck: Int,
val unknown: Int
)
\ No newline at end of file
package com.sd.cavphmi.bean package com.sd.cavphmi.bean
/** /**
* 感知目标物实体 * websocket解析目标感知物的接受数据
****/ *
class PerTarget : ArrayList<PerTargetItem>() **/
class PerceptionBean : ArrayList<PerceptionBeanItem>()
data class PerTargetItem( data class PerceptionBeanItem(
val accessTime: Long, val accessTime: Long,
val deviceId: String, val deviceId: String,
val participants: List<Participant>, val participants: List<Participant>,
val receiveTime: Int, val receiveTime: Long,
val reportTime: Long, val reportTime: Long,
// val statistic: Statistic // val statistic: Statistic
) )
...@@ -21,7 +22,7 @@ data class Participant( ...@@ -21,7 +22,7 @@ data class Participant(
val latitude: Double, val latitude: Double,
val longitude: Double, val longitude: Double,
val ptcId: String, val ptcId: String,
val ptcType: String, val ptcType: String,//
val speed: Double val speed: Double
) )
......
...@@ -2,6 +2,7 @@ package com.sd.cavphmi.ui ...@@ -2,6 +2,7 @@ package com.sd.cavphmi.ui
import android.Manifest import android.Manifest
import android.content.Intent import android.content.Intent
import android.os.Build
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.permissionx.guolindev.PermissionX import com.permissionx.guolindev.PermissionX
import com.sd.cavphmi.BR import com.sd.cavphmi.BR
...@@ -61,14 +62,20 @@ class BootActivity : BaseActivity<ActivityBootBinding, MyBaseViewModel>() { ...@@ -61,14 +62,20 @@ class BootActivity : BaseActivity<ActivityBootBinding, MyBaseViewModel>() {
fun requestPers() { fun requestPers() {
var list = listOf( var pers = mutableListOf<String>(
Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_BACKGROUND_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_PHONE_STATE
) )
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R){
pers.add(Manifest.permission.READ_EXTERNAL_STORAGE)
pers.add(Manifest.permission.MANAGE_EXTERNAL_STORAGE)
}else{
pers.add(Manifest.permission.READ_EXTERNAL_STORAGE)
}
PermissionX.init(this) PermissionX.init(this)
.permissions(list) .permissions(pers.toList())
.onExplainRequestReason { scope, deniedList -> .onExplainRequestReason { scope, deniedList ->
scope.showRequestReasonDialog( scope.showRequestReasonDialog(
deniedList, deniedList,
......
...@@ -98,41 +98,33 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(), ...@@ -98,41 +98,33 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
//联网车辆位姿数据 //联网车辆位姿数据
binding.btVehicle.setOnClickListener { binding.btVehicle.setOnClickListener {
mainVm.subVehicle().observe(this) { mainVm.subVehicle().observe(this) {
var a = 1
} }
} }
//感知目标物 //感知目标物
binding.btTarget.setOnClickListener { binding.btTarget.setOnClickListener {
mainVm.subTarget().observe(this) { mainVm.subTarget().observe(this) {
if (it.size == 0) { if (it.isEmpty()) {
HighMapApi.clearPtcData() HighMapApi.clearPtcData()
return@observe return@observe
} }
it.forEachIndexed { index, perTargetTestItem -> var parts = it.flatMap { it.participants }
var list = perTargetTestItem.participants
val ptcList: MutableList<UnityPtc> = ArrayList(list.size) var ptcList = parts.map {
list.forEachIndexed { index, item -> var unityPtc = UnityPtc().apply {
var unityPtc = UnityPtc() lat = it.latitude
unityPtc.lat = item.latitude lon = it.longitude
unityPtc.lon = item.longitude ptcid = it.ptcId
unityPtc.ptcid = item.ptcId heading = it.heading
unityPtc.heading = item.heading if (it.ptcType == "car") {
if (item.ptcType == "car") { pType = 1
unityPtc.pType = 1
} else { } else {
unityPtc.pType = 2 pType = 2
} }
// unityPtc.aniTime=ptc.aniTime
// unityPtc.aniTime = 1
// unityPtc.isFlash=ptc.isFlash
// unityPtc.isRed=ptc.isRed
// unityPtc.isFlash = true
// unityPtc.isRed = true
ptcList.add(unityPtc)
} }
HighMapApi.setPtcData(ptcList) return@map unityPtc
} }
HighMapApi.setPtcData(ptcList)
} }
} }
//v2x 预警 //v2x 预警
......
...@@ -101,18 +101,10 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents { ...@@ -101,18 +101,10 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
unityMapVm.loadTileJson() unityMapVm.loadTileJson()
} }
// 可选:向 Unity 发送消息的方法
fun sendMessageToUnity(gameObjectName: String, methodName: String, message: String) {
// mUnityPlayer?.sendMessage(gameObjectName, methodName, message)
// UnityPlayer.UnitySendMessage()
}
companion object { companion object {
@JvmStatic @JvmStatic
fun newInstance() = UnityFragment() fun newInstance() = UnityFragment()
} }
} }
\ No newline at end of file
package com.sd.cavphmi.utils package com.sd.cavphmi.utils
object MyContants { object MyContants {
// const val IS_DEBUG = true const val IS_DEBUG = true
//测试环境 //测试环境
// var HOST = "https://itg-dev.cu-sc.com:19443/" // var HOST = "https://itg-dev.cu-sc.com:19443/"
//开发环境切勿动 //开发环境切勿动
var HOST = "https://itg-yz.cu-sc.com:13443" var HOST = "https://itg-yz.cu-sc.com:13443"
//智网生产环境地址用于拼接3dtile.json //智网生产环境地址用于拼接3dtile.json
var HOST_HTTP_3 = "https://itg-yz.cu-sc.com:13443" var HOST_HTTP_3 = "https://itg-yz.cu-sc.com:13443"
/***测试环境socket token***/ // /***测试环境socket token***/
private val WSTOKEN = // private val WSTOKEN =
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiI0MTc0NDY3NGNlOGM0MDZmOTVkZTVkYWYyMWVlOWQ0ZiIsImNyZWF0ZVRpbWUiOjE3NTUwNzYxMTgxMjQsInVzZXJUeXBlIjoxLCJzb3VyY2UiOjAsInB3ZEV4cGlyZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImNoZW5ieTUxIn0.aPYHCxXgQHj4eYGGZnce5MPJCtmMoRcIIHcNXzMMOHE" // "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiI0MTc0NDY3NGNlOGM0MDZmOTVkZTVkYWYyMWVlOWQ0ZiIsImNyZWF0ZVRpbWUiOjE3NTUwNzYxMTgxMjQsInVzZXJUeXBlIjoxLCJzb3VyY2UiOjAsInB3ZEV4cGlyZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImNoZW5ieTUxIn0.aPYHCxXgQHj4eYGGZnce5MPJCtmMoRcIIHcNXzMMOHE"
//登录后拿到Token //登录后拿到Token
var HTTP_TOKEN = var HTTP_TOKEN =
...@@ -18,23 +18,26 @@ object MyContants { ...@@ -18,23 +18,26 @@ object MyContants {
//仅仅用于测试接口联通性,这里可不传 //仅仅用于测试接口联通性,这里可不传
// private val reType = "51world" // private val reType = "51world"
//跟踪车辆的ID 267(模拟) skywell.1ggvlp16.car10 skywell.1ggvlp16.car8 //跟踪车辆的ID 15(模拟) skywell.1ggvlp16.car10 skywell.1ggvlp16.car8
private val VEHICLEID = "skywell.1ggvlp16.car8"
var WSHOST = "wss://itg-dev.cu-sc.com:19443/WSPLUSV5/socket?token=${WSTOKEN}&vehicleId=${VEHICLEID}&" //智网测试、开发地址
// var WSHOST = "wss://172.24.124.130:19443/wsplus/socket?token=121&reType=freedo&vehicleId=7&" var BASE_HOST =
if (IS_DEBUG) "172.24.124.130:19443" else "itg-yz.cu-sc.com:19443"
//websocket地址
private var WSHOST = if (IS_DEBUG) "wss://${BASE_HOST}/wsplus/socket?token=121&reType=freedo&" else "wss://${BASE_HOST}/wsplus/socket?token=121&reType=freedo&"
var vehicleId = "17"
/**网联车辆位姿 用于实车测试喽数据***/
var WS_VEH_LOC = "${WSHOST}msgType=2&vehicleId=${vehicleId}"
// var PORT = if (IS_DEBUG) "123" else "34534"
/***感知目标物 &intersectionCode=17 停车场 不传就是整个园区***/ /***感知目标物 &intersectionCode=17 停车场 不传就是整个园区***/
// var WS_FEEL_TARGET = "${WSHOST}msgType=1&intersectionCode=17" // var WS_FEEL_TARGET = "${WSHOST}msgType=1&intersectionCode=17"
var WS_FEEL_TARGET = "wss://172.24.124.130:19443/wsplus/socket?token=121&reType=freedo&&msgType=1&intersectionCode=17" var WS_FEEL_TARGET = "${WSHOST}&msgType=1"
/***网联车辆位姿 &vehicleId=***/
// var WS_VEH_LOC = "${WSHOST}msgType=2"
var WS_VEH_LOC = "wss://172.24.124.130:19443/wsplus/socket?token=121&reType=freedo&msgType=2&vehicleId=7"
/***V2X预警 vehicleId 传了就是获取某一辆车的预警 &vehicleId=***/ /***V2X预警 vehicleId 传了就是获取某一辆车的预警 &vehicleId=***/
var WS_V2X = "${WSHOST}msgType=4" var WS_V2X = "${WSHOST}msgType=4"
/***网联车辆状态 &vehicleId=''***/ /***网联车辆状态 &vehicleId=''***/
var WS_VEH_STATU = "${WSHOST}msgType=6" var WS_VEH_STATU = "${WSHOST}msgType=6"
......
...@@ -8,13 +8,13 @@ import com.google.gson.Gson ...@@ -8,13 +8,13 @@ import com.google.gson.Gson
import com.sd.cavphmi.base.MyBaseViewModel import com.sd.cavphmi.base.MyBaseViewModel
import com.sd.cavphmi.bean.AvpStatuBean import com.sd.cavphmi.bean.AvpStatuBean
import com.sd.cavphmi.bean.CarVehicle import com.sd.cavphmi.bean.CarVehicle
import com.sd.cavphmi.bean.PerTarget import com.sd.cavphmi.bean.PerceptionBean
import com.sd.cavphmi.bean.PerTargetTest
import com.sd.cavphmi.bean.SpaceInfoBean import com.sd.cavphmi.bean.SpaceInfoBean
import com.sd.cavphmi.bean.V2xStartBean import com.sd.cavphmi.bean.V2xStartBean
import com.sd.cavphmi.bean.VToXImgBean import com.sd.cavphmi.bean.VToXImgBean
import com.sd.cavphmi.bean.VehDetailBean import com.sd.cavphmi.bean.VehDetailBean
import com.sd.cavphmi.bean.VehicleStats import com.sd.cavphmi.bean.VehicleStats
import com.sd.cavphmi.highmap.HighMapApi
import com.sd.cavphmi.net.MyResult import com.sd.cavphmi.net.MyResult
import com.sd.cavphmi.repositorys.AvpDataRepo import com.sd.cavphmi.repositorys.AvpDataRepo
import com.sd.cavphmi.utils.FileIoUtils import com.sd.cavphmi.utils.FileIoUtils
...@@ -23,7 +23,6 @@ import com.sd.cavphmi.utils.ToastHelper ...@@ -23,7 +23,6 @@ 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 com.sd.cavphmi.websockets.VehStatuWSClient
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.launch import kotlinx.coroutines.launch
...@@ -72,7 +71,7 @@ class MainVm @Inject constructor( ...@@ -72,7 +71,7 @@ class MainVm @Inject constructor(
lateinit var mockVM: MockVM lateinit var mockVM: MockVM
//是否需要模拟 //是否需要模拟
var isMock = true var isMock = false
//车辆位姿数据 //车辆位姿数据
var carVehicle = MutableLiveData<CarVehicle>() var carVehicle = MutableLiveData<CarVehicle>()
...@@ -81,7 +80,7 @@ class MainVm @Inject constructor( ...@@ -81,7 +80,7 @@ class MainVm @Inject constructor(
var vehDetail = MutableLiveData<VehDetailBean>() var vehDetail = MutableLiveData<VehDetailBean>()
//感知目标物 //感知目标物
var targetPre = MutableLiveData<PerTargetTest>() var targetPre = MutableLiveData<PerceptionBean>()
//v2x 预警 //v2x 预警
var v2xStartBean = MutableLiveData<V2xStartBean>() var v2xStartBean = MutableLiveData<V2xStartBean>()
...@@ -196,12 +195,17 @@ class MainVm @Inject constructor( ...@@ -196,12 +195,17 @@ class MainVm @Inject constructor(
viewModelScope.launch { viewModelScope.launch {
//下载到sd卡下面的DownLoad文件夹下面 //下载到sd卡下面的DownLoad文件夹下面
FileIoUtils.writeToFile(str, "CarVehicle.txt") FileIoUtils.writeToFile(str, "CarVehicle.txt")
var bean = gson.fromJson(str, CarVehicle::class.java) var carBean = gson.fromJson(str, CarVehicle::class.java)
carVehicle.postValue(bean) // carVehicle.postValue(carBean)
//更新主车位置
var car=carBean.first()
HighMapApi.setCarPosition(car.heading, car.latitude, car.longitude, 20.80189)
} }
} }
} }
vecLocWSClient.connect() if (!vecLocWSClient.isOpen){
vecLocWSClient.connect()
}
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
} }
...@@ -213,7 +217,7 @@ class MainVm @Inject constructor( ...@@ -213,7 +217,7 @@ class MainVm @Inject constructor(
/**感知目标物数据 /**感知目标物数据
*传入intersectionCode=17 拼接 代表获取某区域的感知物,目前没有数据 *传入intersectionCode=17 拼接 代表获取某区域的感知物,目前没有数据
*/ */
fun subTarget(): LiveData<PerTargetTest> { fun subTarget(): LiveData<PerceptionBean> {
if (isMock) { if (isMock) {
mockVM.onSubTargetMock(targetPre) mockVM.onSubTargetMock(targetPre)
} else { } else {
...@@ -222,12 +226,14 @@ class MainVm @Inject constructor( ...@@ -222,12 +226,14 @@ class MainVm @Inject constructor(
override fun onMsg(str: String) { override fun onMsg(str: String) {
viewModelScope.launch { viewModelScope.launch {
FileIoUtils.writeToFile(str, "PerTarget.txt") FileIoUtils.writeToFile(str, "PerTarget.txt")
var bean = gson.fromJson(str, PerTargetTest::class.java) var bean = gson.fromJson(str, PerceptionBean::class.java)
targetPre.postValue(bean) targetPre.postValue(bean)
} }
} }
} }
feelTargetWSClient.connect() if (!feelTargetWSClient.isOpen){
feelTargetWSClient.connect()
}
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
} }
...@@ -254,7 +260,9 @@ class MainVm @Inject constructor( ...@@ -254,7 +260,9 @@ class MainVm @Inject constructor(
} }
} }
} }
v2xWSClient.connect() if (v2xWSClient.isOpen == false){
v2xWSClient.connect()
}
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
} }
......
package com.sd.cavphmi.viewmodels package com.sd.cavphmi.viewmodels
import android.content.Context import android.content.Context
import androidx.databinding.ObservableField
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.google.gson.Gson import com.google.gson.Gson
import com.sd.cavphmi.bean.CarPanelBean
import com.sd.cavphmi.bean.CarVehicle import com.sd.cavphmi.bean.CarVehicle
import com.sd.cavphmi.bean.CarVehicleItem import com.sd.cavphmi.bean.PerceptionBean
import com.sd.cavphmi.bean.PerTarget
import com.sd.cavphmi.bean.PerTargetTest
import com.sd.cavphmi.bean.V2xStartBean import com.sd.cavphmi.bean.V2xStartBean
import com.sd.cavphmi.highmap.HighMapApi
import com.sd.cavphmi.utils.FileIoUtils import com.sd.cavphmi.utils.FileIoUtils
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
...@@ -45,32 +42,34 @@ class MockVM @Inject constructor( ...@@ -45,32 +42,34 @@ class MockVM @Inject constructor(
) { ) {
viewModelScope.launch { viewModelScope.launch {
val dst = mutableListOf<String>() val dst = mutableListOf<String>()
FileIoUtils.getAssetMock(context, "mock/CarVehicle.txt", dst) FileIoUtils.getAssetMock(context, "mock/CarVehicle_15.txt", dst)
dst.forEach { str -> dst.forEach { str ->
delay(1000)
val bean = parseDataBean(str, CarVehicle::class.java) val bean = parseDataBean(str, CarVehicle::class.java)
println("------模拟车辆位姿数据 = ${bean}") // println("------模拟车辆位姿数据 = ${bean}")
println("------车速 = ${bean.first().speed}") // println("------车速 = ${bean.first().speed}")
println("------电量 = ${bean.first().soc}") // println("------电量 = ${bean.first().soc}")
carVehicle.value = bean carVehicle.value = bean
var car = bean.first()
HighMapApi.setCarPosition(car.heading, car.latitude, car.longitude, 20.80189)
delay(100)
} }
} }
} }
//感知目标物 //感知目标物
fun onSubTargetMock(targetPre: MutableLiveData<PerTargetTest>) { fun onSubTargetMock(targetPre: MutableLiveData<PerceptionBean>) {
viewModelScope.launch { viewModelScope.launch {
val parts = mutableListOf<String>() val parts = mutableListOf<String>()
FileIoUtils.getAssetMock(context, "mock/PerTarget.txt", parts) FileIoUtils.getAssetMock(context, "mock/PerTarget.txt", parts)
parts.forEach { str -> parts.forEach { str ->
delay(1000) var bean = parseDataBean(str, PerceptionBean::class.java)
var bean = parseDataBean(str, PerTargetTest::class.java)
// println("------模拟感知目标物数据 = ${bean}") // println("------模拟感知目标物数据 = ${bean}")
// println("------模拟感知目标物typeName = ${bean.typeName}") // println("------模拟感知目标物typeName = ${bean.typeName}")
// println("------模拟感知目标物type = ${bean.type}") // println("------模拟感知目标物type = ${bean.type}")
// println("------模拟感知目标物level = ${bean.type}") // println("------模拟感知目标物level = ${bean.type}")
targetPre.value = bean targetPre.value = bean
delay(1000)
} }
} }
} }
......
...@@ -43,11 +43,10 @@ class FeelTargetWSClient : WebSocketClient { ...@@ -43,11 +43,10 @@ class FeelTargetWSClient : WebSocketClient {
return return
onDataCb?.onMsg(message) onDataCb?.onMsg(message)
// onSocketCb?.onMessage(message) // onSocketCb?.onMessage(message)
} }
override fun onMessage(bytes: ByteBuffer?) { override fun onMessage(bytes: ByteBuffer?) {
System.out.println(TAG + " received ByteBuffer") // System.out.println(TAG + " received ByteBuffer")
} }
......
...@@ -44,17 +44,14 @@ class VecLocWSClient : WebSocketClient { ...@@ -44,17 +44,14 @@ class VecLocWSClient : WebSocketClient {
return return
onDataCb?.onMsg(message) onDataCb?.onMsg(message)
// onSocketCb?.onMessage(message) // onSocketCb?.onMessage(message)
} }
override fun onMessage(bytes: ByteBuffer?) { override fun onMessage(bytes: ByteBuffer?) {
// System.out.println(TAG + " received ByteBuffer") // System.out.println(TAG + " received ByteBuffer")
} }
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?) {
......
<?xml version="1.0" encoding="utf-8"?>
<resources>
<paths>
<external-path
name="external-path"
path="." />
</paths>
</resources>
\ No newline at end of file
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