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

切换到默认引擎

parent 0a5baef9
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
......@@ -2,28 +2,35 @@ package com.sd.cavphmi.bean
/***网联车辆位姿
*{"version":"2.0.0","data_id":"default","data_type":"OBU","data_list":[{"vid":"261","vmodel":"01010102001","vtype":"双层客车1","coord_type":"Geo","coord":"117.3499501,39.0072603","direction":333.573,"speed":1.0,"timestamp":1755156180282,"vinfo":{"door":0,"light":0,"wiper":1}},{"vid":"263","vmodel":"01010400006","vtype":"中型客车","coord_type":"Geo","coord":"117.3487397,39.0030869","direction":3.008699999999976,"speed":58.0,"timestamp":1755156180283,"vinfo":{"door":0,"light":0,"wiper":1}},{"vid":"265","vmodel":"01010400001","vtype":"清扫","coord_type":"Geo","coord":"117.3443229,39.0011612","direction":349.3043,"speed":54.0,"timestamp":1755156180283,"vinfo":{"door":0,"light":0,"wiper":1}},{"vid":"267","vmodel":"01010400003","vtype":"售卖","coord_type":"Geo","coord":"117.3463546,38.9986415","direction":348.0532,"speed":4.0,"timestamp":1755156180284,"vinfo":{"door":0,"light":36864,"wiper":1,"poleId":"1200003843"}},{"vid":"269","vmodel":"01010400004","vtype":"出租","coord_type":"Geo","coord":"117.3472319,38.994756","direction":190.48939999999993,"speed":41.0,"timestamp":1755156180283,"vinfo":{"door":0,"light":0,"wiper":1,"poleId":"1200003838"}},{"vid":"271","vmodel":"01010400008","vtype":"巡逻车","coord_type":"Geo","coord":"117.3470161,39.0023286","direction":87.26830000000001,"speed":60.0,"timestamp":1755156180284,"vinfo":{"door":0,"light":0,"wiper":1}}]}
* **/
data class CarVehicle(
val data_id: String,
val data_list: List<VData>,
val data_type: String,
val version: String
)
data class VData(
val coord: String,
val coord_type: String,//"117.345278,39.0059533",
val direction: Double,//交通实体朝向:可选字段, 单位为角度,正东方向为0,顺时针方向为正(0~360),无该字段时会自动计算
val speed: Double,//单位:km/h,
val timestamp: Long,
val vid: String,
val vinfo: Vinfo,
val vmodel: String,
val vtype: String
)
class CarVehicle : ArrayList<CarVehicleItem>()
data class Vinfo(
data class CarVehicleItem(
val acceSpeed: String,
val accessTime: Long,
val deviceCode: String,
val deviceId: String,
val deviceStatus: Int,
val door: Int,
val light: Int,//灯光状态
val poleId: String,
val drivingMode: Int,
val elevation: String,
val gear: Int,
val heading: Double,
val id: String,
val latitude: Double,
val light: Int,
val longitude: Double,
val msgId: String,
val parkInLot: Int,
val receiveTime: Long,
val reportTime: Long,
val soc: Double,
val speed: Double,
val sweeperState: Int,
val vehicleCode: String,
val vehicleId: String,
val vehiclePlate: String,
val vehiclePurpose: String,
val waterState: Int,
val wheelAngle: String,
val wiper: Int
)
\ No newline at end of file
package com.sd.cavphmi.bean
/**感知目标物
*
* {"version":"2.0.0","data_id":"f33f1961-af28-4e87-9b66-084e99720e56","data_type":"路侧感知数据","data_list":[{"vid":"200690","vmodel":"01010104000","vtype":"CAR","coord_type":"Geo","coord":"117.3255554,38.9960103","direction":289.3393,"speed":0.0,"timestamp":1754466394391,"vinfo":null},{"vid":"200696","vmodel":"01010104000","vtype":"CAR","coord_type":"Geo","coord":"117.3255172,38.9960139","direction":289.3537,"speed":0.0,"timestamp":1754466394391,"vinfo":null},{"vid":"400357","vmodel":"01020101014","vtype":"MID_COACH","coord_type":"Geo","coord":"117.325676,38.9966065","direction":109.39340000000004,"speed":0.0,"timestamp":1754466394391,"vinfo":null},{"vid":"400358","vmodel":"01020101013","vtype":"SUV","coord_type":"Geo","coord":"117.3256466,38.9965419","direction":109.59839999999997,"speed":0.0,"timestamp":1754466394391,"vinfo":null},{"vid":"200699","vmodel":"01020101013","vtype":"SUV","coord_type":"Geo","coord":"117.3254728,38.9959157","direction":289.3537,"speed":6.8759999999999994,"timestamp":1754466394391,"vinfo":null},{"vid":"200700","vmodel":"01010104000","vtype":"CAR","coord_type":"Geo","coord":"117.3255258,38.9959447","direction":289.3393,"speed":0.684,"timestamp":1754466394391,"vinfo":null},{"vid":"400363","vmodel":"01010102000","vtype":"ARGE_COACH","coord_type":"Geo","coord":"117.3257287,38.9967229","direction":109.39340000000004,"speed":0.0,"timestamp":1754466394391,"vinfo":null},{"vid":"300370","vmodel":"01010102000","vtype":"ARGE_COACH","coord_type":"Geo","coord":"117.3258973,38.9968533","direction":289.3811,"speed":60.01200000000001,"timestamp":1754466394391,"vinfo":null},{"vid":"300371","vmodel":"01010104000","vtype":"CAR","coord_type":"Geo","coord":"117.3257478,38.9965232","direction":289.29,"speed":58.104000000000006,"timestamp":1754466394391,"vinfo":null},{"vid":"300372","vmodel":"01020101013","vtype":"SUV","coord_type":"Geo","coord":"117.325127,38.9963078","direction":356.99649999999997,"speed":59.11200000000001,"timestamp":1754466394391,"vinfo":null}]}
*
* ***/
data class PerTarget(
val data_id: String,
val data_list: List<PData>,
val data_type: String,
val version: String
)
class PerTarget{
}
data class PData(
val coord: String,
val coord_type: String,
val direction: Double,
val speed: Double,
val timestamp: Long,
val vid: String,
val vinfo: Any,
val vmodel: String,
val vtype: String//pedestrian = 行人
)
\ No newline at end of file
package com.sd.cavphmi.bean
/**V2x 预警开始
* {"id":"39709073452974080","objects":[{"id":"269","name":"Vehicle","longitude":117.3470947,"latitude":38.9947742,"elevation":500.0},{"id":"100228","name":"Participants","longitude":117.347007,"latitude":38.994787,"elevation":500.0}],"type":1,"typeName":"前向碰撞预警","level":1,"startTime":1754533787716,"reportTime":1754533797778}
* {"id":"39846582477537280","objects":[{"id":"267","name":"Vehicle","longitude":117.3461065,"latitude":38.9985969,"elevation":500.0},{"id":"1600009","name":"Participants","longitude":117.3463289,"latitude":38.9986373,"elevation":500.0}],"type":1,"typeName":"前向碰撞预警","level":1,"startTime":1755582898300,"reportTime":1755582898300}
* ***/
data class V2xStartBean(
data class V2xStartBean(
val id: String,
val level: Int,
val objects: List<VObject>,////记录具体是哪两个对象发生了预警
val objects: List<Object>,
val reportTime: Long,
val startTime: Long,
val type: Int,
val typeName: String
)
data class VObject(
data class Object(
val elevation: Double,
val id: String,
val latitude: Double,
......
package com.sd.cavphmi.ui
import android.content.Intent
import android.os.Bundle
import androidx.activity.viewModels
import com.google.android.material.snackbar.Snackbar
......@@ -36,13 +37,20 @@ class LoginActivity : AppCompatActivity() {
var key = "Cusc@itmp-sm4key".toByteArray()
var pp = SM4CryptoHelper.encryptECB(key, pwd.toByteArray())
loginVm.login(user, pp, 276135)
loginVm.login(user, pp, 276135).observe(this) {
}
}
//获取车辆信息
// HTTP获取车辆详情 还没调通
binding.btVehinfo.setOnClickListener {
mainVm.getVehDetail()
}
//直接到首页
binding.btMain.setOnClickListener {
startActivity(Intent(this, MainActivity::class.java))
}
}
......
......@@ -78,10 +78,6 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainVm>() {
binding.btV2x.setOnClickListener {
viewModel.subStartV2x()
}
//HTTP获取车辆详情
binding.btGetveh.setOnClickListener {
viewModel.getVehDetail()
}
//网联车辆状态
// binding.btStatus.setOnClickListener {
......@@ -120,3 +116,26 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainVm>() {
}
}
}
/* https://docs.qq.com/sheet/DVWdOYXZXdVVrQWts?tab=xxmysv socket文档
https://s.apifox.cn/e355c9e1-cdd1-49ab-acb2-54cfc66b1598/320994000e0 大屏文档
获取AVP状态信息 /v1/avp/overview/listAvpStatus 这个曲华烨要做成socket 的推送形式,通过这个接口获取全局路径和局部路径,车辆业务状态。
通过里面的vehicleId,调车辆详情(/v1/avp/overview/getVehicleInfo)获取车内视频流,
websocket 那几个连接,都需要传vehicleId,你也可以不传,不传就是获取所有的*/
//reType 不传就是飞渡,可以问张海胜,数据没有的问题可直接在51word群里反馈
//目前没有全局路径规划变化提醒,具体车位占用情况(用来在车位上绘制白模)
//需求文档里的气泡提醒,数据未必有,已实际数据为准
package com.sd.cavphmi.utils
object MyContants {
// const val IS_DEBUG = true
// var HOST = "https://itg-dev.cu-sc.com:19443/"
// const val IS_DEBUG = true
//测试环境
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"
// var HOST = "https://itg-yz.cu-sc.com:13443/api/avpweb/"
// private val token="111"
/***测试环境socket token***/
private val WSTOKEN =
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiI0MTc0NDY3NGNlOGM0MDZmOTVkZTVkYWYyMWVlOWQ0ZiIsImNyZWF0ZVRpbWUiOjE3NTUwNzYxMTgxMjQsInVzZXJUeXBlIjoxLCJzb3VyY2UiOjAsInB3ZEV4cGlyZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImNoZW5ieTUxIn0.aPYHCxXgQHj4eYGGZnce5MPJCtmMoRcIIHcNXzMMOHE"
//正式环境Token
//Token
var HTTP_TOKEN =
"3W6UeYoWsr3Hged3iJDqw5RQrLyTDwDkkX481PIiuYGwPCamTVdGHhmAxaCgHtns4IaNTEynJ8JfY46bvkzoqqDA9YcGUmkMZ31sV7QAVrk91yOPTv9mCvPLUgOeBgRl"
// var HTTP_TOKEN =
......@@ -19,11 +20,13 @@ object MyContants {
// val Authorization =
// "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiIyM2UzYWU3MGZhMGQ0ZGZjYTIwNGU0NzcwOGNjNDJiNiIsImNyZWF0ZVRpbWUiOjE3NTUyNDA0MjcyNzksInVzZXJUeXBlIjoxLCJzb3VyY2UiOjAsInB3ZEV4cGlyZWQiOmZhbHNlLCJ1c2VybmFtZSI6InhpYW9wMDAxIn0.uiSdxuI34J_U3IuMywZNs_adaWoV2fqMsnx-vMxVWXo"
//仅仅用于测试接口联通性,这里可不传
private val reType = "51world"
var WSHOST = "wss://itg-dev.cu-sc.com:19443/WSPLUSV5/socket?token=${WSTOKEN}&reType=${reType}&"
//测试环境
var WSHOST = "wss://itg-dev.cu-sc.com:19443/WSPLUSV5/socket?token=${WSTOKEN}&"
// var PORT = if (IS_DEBUG) "123" else "34534"
/***感知目标物***/
/***感知目标物 &intersectionCode***/
var WS_FEEL_TARGET = "${WSHOST}msgType=1"
/***网联车辆位姿 &vehicleId=***/
......
package com.sd.cavphmi.viewmodels
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.sd.cavphmi.net.MyResult
......@@ -12,22 +14,34 @@ import javax.inject.Inject
@HiltViewModel
class LoginVm @Inject constructor(private var avpDataRepo: AvpDataRepo) : ViewModel() {
//1= 登录成功 0 = 登录失败
var lLogin = MutableLiveData(-1)
/****
* 登录
* 用户名: xiaop001
* 密码:E@H^@Lxom7v@VY@x
* 验证码:285369(固定)
*以上账号用于 https://172.24.124.201:19443/itg-test-portal/full/login
* 拿到token以后放到请求头里
* ***/
fun login(
user: String = "xiaop001",
pwd: String = "E@H^@Lxom7v@VY@x",
user: String,
pwd: String,
verifyCode: Int = 276135
) {
): LiveData<Int> {
viewModelScope.launch {
var result = avpDataRepo.login(user, pwd, verifyCode)
when (result) {
is MyResult.Success<String> -> {
MyContants.HTTP_TOKEN = result.data
lLogin.value=1
}
else -> {
lLogin.value=0
}
}
}
return lLogin
}
}
\ No newline at end of file
......@@ -44,13 +44,13 @@ class MainVm @Inject constructor(
// private var client: MyWebSocketClient? = null
//w网联车辆socket
//网联车辆位姿socket
private var vecLocWSClient: VecLocWSClient? = null
//感知物socket
private var feelTargetWSClient: FeelTargetWSClient? = null
//感知物socket
//预警socket
private var v2xWSClient: V2xWSClient? = null
//网联车辆状态
......@@ -134,7 +134,9 @@ class MainVm @Inject constructor(
}
/*** 联网车辆位姿数据**/
/**联网车辆位姿数据
* 传入vehicleId 和url拼接代表某辆车的预警
* **/
fun subVehicle(): LiveData<CarVehicle> {
if (isMock) {
// mockVM.onVehicleMock(carVehicle, carPanelBean.heading, carPanelBean.speed)
......@@ -163,7 +165,7 @@ class MainVm @Inject constructor(
/**感知目标物数据
* {"objectData":[{"altitude":0.0,"deviceCode":"ALL","id":"rsm","latitude":0.0,"longitude":0.0,"participant":[],"reportTime":1750138879684}],"wsTime":1750138834204}
*传入intersectionCode 拼接 代表获取某区域的感知物,目前没有数据
* **/
fun subTarget(): LiveData<PerTarget> {
if (isMock) {
......@@ -193,6 +195,7 @@ class MainVm @Inject constructor(
/**
* V2X预警开始
* 传入vehicleId 和url拼接代表某辆车的预警
* **/
fun subStartV2x(): LiveData<V2xStartBean> {
if (isMock) {
......
......@@ -115,9 +115,16 @@
android:id="@+id/bt_vehinfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="获取车辆信息" />
<Button
android:id="@+id/bt_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="直接到首页" />
</LinearLayout>
......
......@@ -28,9 +28,9 @@
<!-- 高精地图放这里-->
<fragment
android:id="@+id/map_main"
class="com.sd.cavphmi.ui.fragment.MapMainFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.sd.cavphmi.ui.fragment.MapMainFragment"/>
android:layout_height="match_parent" />
<LinearLayout
......@@ -47,11 +47,6 @@
android:layout_height="wrap_content"
android:text="网联车辆位姿" />
<Button
android:id="@+id/bt_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="网联车辆状态" />
<Button
android:id="@+id/bt_target"
......@@ -65,24 +60,25 @@
android:layout_height="wrap_content"
android:text="V2X预警开始" />
<Button
android:id="@+id/bt_getveh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="HTTP 获取车辆详情" />
<Button
android:id="@+id/bt_tarpre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="交通(感知)事件" />
<Button
android:id="@+id/bt_tarlight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="交通信号灯" />
<!-- <Button-->
<!-- android:id="@+id/bt_status"-->
<!-- android:layout_width="wrap_content"-->
<!-- 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"/>-->
</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