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

添加token 保存自动判断逻辑

parent dc53ac12
......@@ -78,6 +78,7 @@ dependencies {
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
implementation("com.tencent:mmkv:2.2.4")
implementation("io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.1.7")
implementation("com.jakewharton.rxbinding4:rxbinding:4.0.0")
//屏幕适配
......
package com.sd.cavphmi
import android.app.Application
import com.tencent.mmkv.MMKV
import dagger.hilt.android.HiltAndroidApp
import me.jessyan.autosize.AutoSizeConfig
@HiltAndroidApp
class MyAppcation : Application() {
companion object {
......@@ -15,5 +17,7 @@ class MyAppcation : Application() {
super.onCreate()
instance = this
AutoSizeConfig.getInstance().setLog(false)
val rootDir = MMKV.initialize(this)
println("----MMKV root: " + rootDir)
}
}
\ No newline at end of file
......@@ -72,7 +72,7 @@ object HighMapApi {
notthrough: String = "2868D8",
through: String = "8e959e",
drawpassed: Boolean = true,
showdistance: Int = 45
showdistance: Int = 75
) {
var carNavPath = CarNavPath().apply {
this.lines = lines
......
......@@ -99,11 +99,8 @@ class AvpDataRepo @Inject constructor(
* 我们车辆位姿数据用的是 车俩基础信息的id 可绑车辆接口 返回的是 avp车俩id
* 所以这里的id 是绑定车辆列表返回的id
*/
fun getAvpStatus(url: String,body: RequestBody?, listener: SSESimpleListener?) {
simpleSSEClient.startSSE(
"${MyContants.HOST}/api/avpweb/hmi/monitor/v1/taskStatus",
body, listener
)
fun getAvpStatus(url: String, body: RequestBody?, listener: SSESimpleListener?) {
simpleSSEClient.startSSE(url, body, listener)
}
/**获取车辆位姿****/
......
......@@ -7,6 +7,7 @@ import androidx.appcompat.app.AppCompatActivity
import com.jakewharton.rxbinding4.view.clicks
import com.sd.cavphmi.databinding.ActivityLoginBinding
import com.sd.cavphmi.ui.dialog.SeleBindCarDialog
import com.sd.cavphmi.utils.MMKVUtil
import com.sd.cavphmi.utils.MyContants
import com.sd.cavphmi.viewmodels.LoginVm
import com.sd.cavphmi.viewmodels.MainVm
......@@ -22,6 +23,7 @@ class LoginActivity : AppCompatActivity() {
private val mainVm: MainVm by viewModels()
private val PWD = "5803d205ac27f33ea5f53afed4eb81880bee49f06129ea5437c1b940d18da8f1"
private val VERIFYCODE = 285369
//车牌号选择
// private lateinit var seleBindCarDialog: SeleBindCarDialog
......@@ -32,19 +34,28 @@ class LoginActivity : AppCompatActivity() {
binding = ActivityLoginBinding.inflate(layoutInflater)
setContentView(binding.root)
if (MMKVUtil.token.isNotEmpty()) {
MyContants.HTTP_TOKEN = MMKVUtil.token
getBinderCars()
} else {
var lo = binding.btLogin.clicks().throttleFirst(1, TimeUnit.SECONDS).subscribe {
var user = binding.etAccount.text.toString()
var pwd = binding.etPwd.text.toString()
// "4CIHV37pDF8sx0ZXYmYah6HSgys7F7ULSMmm39uzppc"
// var key = "Cusc@itmp-sm4key".toByteArray()
// var pp = SM4CryptoHelper.encryptECB(key, pwd.toByteArray())
loginVm.login(user, PWD, 285369).observe(this) {
loginVm.login(user, PWD, VERIFYCODE).observe(this) {
//获取可绑定车辆
if (it == 1) {
getBinderCars()
}
}
}
}
setListener()
}
private fun setListener() {
// HTTP获取车位占用情况
binding.btSpaceinfo.setOnClickListener {
mainVm.getSpaceInfo()
......@@ -53,6 +64,9 @@ class LoginActivity : AppCompatActivity() {
binding.btAvpstatu.setOnClickListener {
mainVm.getAvpStatus()
}
binding.btCarpos.setOnClickListener {
mainVm.subVehicle()
}
//获取可绑定车辆
binding.btGetbindcar.setOnClickListener {
getBinderCars()
......@@ -62,9 +76,9 @@ class LoginActivity : AppCompatActivity() {
startActivity(Intent(this, MainActivity::class.java))
finish()
}
}
//获取可绑定车辆
private fun getBinderCars() {
// seleBindCarDialog = SeleBindCarDialog.newInstance()
......@@ -80,7 +94,7 @@ class LoginActivity : AppCompatActivity() {
finish()
}
}
if (!seleBindCarDialog.isAdded){
if (!seleBindCarDialog.isAdded) {
seleBindCarDialog.showNow(supportFragmentManager, "seleBindCarDialog")
}
// val dialog = CustomListDialog(this, "选择车辆", plateNumbers)
......
......@@ -35,11 +35,6 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
/**
* Main activity
*
* @constructor Create empty Main activity
*/
@AndroidEntryPoint
class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
......@@ -71,6 +66,7 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
override fun onDestroy() {
super.onDestroy()
mainVm.cleanRes()
binding.mapView.onDestroy()
}
......@@ -85,7 +81,7 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
// private val avpMapVM: AvpMapVM by viewModels()
//是否进入泊车倒车状态
private var isReversePark = false
// private var isReversePark = false
//退出应用弹窗
private lateinit var dialogFragment: ExitAppDialog
......@@ -149,7 +145,7 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
private fun setUpMap() {
binding.mapView.addMapRenderCallback(object : MapView.OnMapReadyListener {
override fun onMapReady(mineMap: MineMap?) {
mainVm.mMineMap = mineMap
// mainVm.mMineMap = mineMap
mapOpt.mMineMap = mineMap
mockVM.mMineMap = mineMap
mineMap?.setZoomLevel(14f)
......@@ -163,14 +159,15 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
override fun getToData() {
//开启websocket
getTarget()
getV2x()
//开启2个HTTP sse
getCarVehicle()
getAvpStatus()
//获取车位占用情况
// getSpaceInfo()
}
//获取车位占用情况
private fun getSpaceInfo() {
mainVm.getSpaceInfo().observe(this) { spaceInfo ->
//车辆占用情况
......@@ -207,36 +204,59 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
mainVm.getAvpStatus().observe(this) { avpStatu ->
//业务类型
var businessType = avpStatu.businessType//NIL Park Call
if (businessType == AvpContants.NIL_TYPE)
if (businessType == AvpContants.NIL_TYPE) {
clearAllEffect(businessType)
return@observe
}
//业务状态
var businessStatus = avpStatu.haulingStageState
//获取档位
var gearType = avpStatu.vehicleContext.vehicleDynamic.gearType
//画全局路径
mapOpt.drawAllLines(avpStatu.drivenDecision)
//画终点
mapOpt.addEndMarker(avpStatu.drivenDecision.endPoint)
//生成小地图路线以及二维坐标点
mapOpt.takeSmallMapLine(avpStatu.drivenDecision)
//判断在泊车状态下的倒挡绘制倒车路线,改变镜头视角,,判断车是否到达停车
mapOpt.drawReversePark(businessStatus, businessType, gearType, avpStatu.space)
//画终
mapOpt.addEndMarker(avpStatu.drivenDecision.endPoint)
//是否显示车位流光效果
mapOpt.showParkLight(businessType, avpStatu.space)
//根据AVP任务状态判特效是否关闭
//判断在泊车状态下的倒挡绘制倒车路线,改变镜头视角,,判断车是否到达停车点
mapOpt.drawReversePark(businessType,businessStatus,gearType, avpStatu.space)
//根据AVP任务状态判停车特效是否关闭
mapOpt.showEffectAvpStatu(businessType, businessStatus)
// 车内视频
// isCarVideo(businessStatus)
}
}
/***是否展示车内视频****/
private fun isCarVideo(businessStatus: String) {
if (businessStatus == AvpContants.TRANSPORT_PROGRESS) {
getVehDetail()
} else {
// exoPlayFragment.videoUrl = cameraUrl
showVideoFragment(false)
}
}
/**清除所有特效****/
private fun clearAllEffect(businessType: String) {
if (businessType == AvpContants.NIL_TYPE) {
//消除车位流光特效
HighMapApi.parkRoundLight("")
//消除泊车特效
HighMapApi.setParkComplete(true)
//消除全局路径
HighMapApi.setCarNavPath(emptyList())
//清除所有绘制
mapOpt.clearAllEffect()
//重置变量
// resetVariable(businessStatus)
// 是否关闭车内视频
// if (businessStatus == "CANCELLED" || businessStatus == "COMPLETED" || businessStatus == "FAILED") {
// exoPlayFragment.videoUrl = ""
// showVideoFragment(false)
// }
resetVariable(businessType)
}
}
/***重置变量**/
fun resetVariable(businessType: String) {
private fun resetVariable(businessType: String) {
if (businessType == AvpContants.NIL_TYPE) {
mainVm.isGetVehDetail = false
mapOpt.smallMapLine = false
......@@ -268,21 +288,6 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
}
}
private var setCamera = false
//设置跟车视角
private fun setCarCamera(c: Int) {
if (setCamera)
return
if (c == 1) {
HighMapApi.setCameraAngle(30f)
HighMapApi.setCameraDistance(6f)
} else if (c == 2) {
HighMapApi.setCameraAngle(90f)
HighMapApi.setCameraDistance(80f)
}
setCamera = true
}
//联网车辆感知物
private fun getTarget() {
......@@ -324,13 +329,25 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
}
}
//获取车辆详情,取车内摄像头地址打开左下角的车内视频
private fun getVehDetail(car: CarVehicle?) {
if (car?.businessStatus.equals("EXITED")) {
exoPlayFragment.videoUrl = ""
showVideoFragment(false)
return
//设置跟车视角
private fun setCarCamera(c: Int) {
if (c == 1) {
HighMapApi.setCameraAngle(30f)
HighMapApi.setCameraDistance(6f)
} else if (c == 2) {
HighMapApi.setCameraAngle(90f)
HighMapApi.setCameraDistance(80f)
}
}
//获取车辆详情,取车内摄像头地址打开左下角的车内视频
private fun getVehDetail() {
// if (car?.businessStatus.equals("EXITED")) {
// exoPlayFragment.videoUrl = ""
// showVideoFragment(false)
// return
// }
mainVm.getVehDetail().observe(this) { vehDetail ->
if (vehDetail.result.vehicleInfos.count() == 0)
return@observe
......@@ -360,7 +377,7 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
}
// HTTP获取车辆详情
binding.btVehinfo.setOnClickListener {
getVehDetail(null)
getVehDetail()
}
//v2x 预警
binding.btV2x.setOnClickListener {
......@@ -390,7 +407,7 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
//地锁绘制
binding.btLock.setOnClickListener {
//释放http资源
SimpleSSEClient.instance.cancelContect()
// SimpleSSEClient.instance.cancelContect()
var lockStatu = LockStatu().apply {
code = "B021"
......@@ -435,13 +452,14 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
ft.commit()
}
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
if ((event.getKeyCode() == KeyEvent.KEYCODE_BACK) || event.getKeyCode() == KeyEvent.KEYCODE_HOME) {
// var ft = supportFragmentManager.beginTransaction()
dialogFragment = ExitAppDialog()
dialogFragment.onConCan = object : OnConCan {
override fun onCon() {
mainVm.cleanRes()
finish()
}
......
......@@ -44,11 +44,11 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
override fun onDestroy() {
super.onDestroy()
// try {
// this.mUnityPlayer.destroy()
// } catch (e: Exception) {
//
// }
try {
this.mUnityPlayer.destroy()
} catch (e: Exception) {
// e.printStackTrace()
}
}
override fun onCreateView(
......@@ -108,7 +108,7 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
HighMapApi.setCameraDistance(6f)
// } catch (e: Exception) {
// }
},300)
}, 300)
}
......
package com.sd.cavphmi.utils
import com.tencent.mmkv.MMKV
object MMKVUtil {
private var mmkv = MMKV.defaultMMKV()
var token: String
set(value) {
mmkv.encode("token", value)
}
get() {
return mmkv.decodeString("token", "").toString()
}
}
\ No newline at end of file
......@@ -19,8 +19,8 @@ object MyContants {
// private val WSTOKEN =
// "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiI0MTc0NDY3NGNlOGM0MDZmOTVkZTVkYWYyMWVlOWQ0ZiIsImNyZWF0ZVRpbWUiOjE3NTUwNzYxMTgxMjQsInVzZXJUeXBlIjoxLCJzb3VyY2UiOjAsInB3ZEV4cGlyZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImNoZW5ieTUxIn0.aPYHCxXgQHj4eYGGZnce5MPJCtmMoRcIIHcNXzMMOHE"
//登录后拿到Token aQQ8U2YPfcnrKgdwrIXcLXdtKyaFavYfKlWkNn26fenMLE2fIMPtbt5dSJX3qgM4yHZJ9bY4esSMHRH0FCs1nMte9P5qsaThTe7frFD9RAtWdlyWof4yISiTfkp0ZHiB
var HTTP_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJjNzNkNzA4M2I1YjU0OWI0OTBiZWZlMGEyMmVlM2I3OSIsImNyZWF0ZVRpbWUiOjE3NjMxMDg5MzUyMzQsInVzZXJUeXBlIjoxLCJzb3VyY2UiOjAsInB3ZEV4cGlyZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImhtaSJ9.0GJtC7YaduYUHpknLTpvRd4f4876uygPWKgioMvwRtM"
//登录后拿到Token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJjNzNkNzA4M2I1YjU0OWI0OTBiZWZlMGEyMmVlM2I3OSIsImNyZWF0ZVRpbWUiOjE3NjMxMDg5MzUyMzQsInVzZXJUeXBlIjoxLCJzb3VyY2UiOjAsInB3ZEV4cGlyZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImhtaSJ9.0GJtC7YaduYUHpknLTpvRd4f4876uygPWKgioMvwRtM
var HTTP_TOKEN = ""
//仅仅用于测试接口联通性,这里可不传
// private val reType = "51world"
......@@ -32,10 +32,11 @@ object MyContants {
// if (IS_DEBUG) "172.24.124.130:19443" else "itg-yz.cu-sc.com:19443"
// if (IS_DEBUG) "itg-yz.cu-sc.com:13443" else "itg-yz.cu-sc.com:19443"
//websocket地址
private var WSHOST = "wss://${BASE_HOST}/wsplus/socket?token=${HTTP_TOKEN}&reType=freedo&"
//websocket地址 token=${HTTP_TOKEN}&
private var WSHOST = "wss://${BASE_HOST}/wsplus/socket?reType=freedo&"
// if (IS_DEBUG) "wss://${BASE_HOST}/wsplus/socket?token=121&reType=freedo&" else "wss://${BASE_HOST}/wsplus/socket?token=121&reType=freedo&"
//车辆编号 27
var VEHICLEID = 27
......
......@@ -30,7 +30,7 @@ object Proj4jCoord {
* @param coordinateSeries 坐标点串 [[经度1, 纬度1], [经度2, 纬度2], ...]
* @return 投影结果数组 [投影点经度, 投影点纬度, 最近点索引, 最小距离]
*/
fun calculatePointProjection(
suspend fun calculatePointProjection(
point: DoubleArray,
coordinateSeries: MutableList<DoubleArray>
): DoubleArray {
......
......@@ -7,6 +7,7 @@ import androidx.lifecycle.viewModelScope
import com.sd.cavphmi.bean.CarVehicle
import com.sd.cavphmi.net.MyResult
import com.sd.cavphmi.repositorys.AvpDataRepo
import com.sd.cavphmi.utils.MMKVUtil
import com.sd.cavphmi.utils.MyContants
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
......@@ -42,6 +43,7 @@ class LoginVm @Inject constructor(private var avpDataRepo: AvpDataRepo) : ViewMo
when (result) {
is MyResult.Success<String> -> {
MyContants.HTTP_TOKEN = result.data
MMKVUtil.token = MyContants.HTTP_TOKEN
// loginData.postValue("true")
lLogin.postValue(1)
}
......
......@@ -32,6 +32,7 @@ import com.sd.cavphmi.net.SimpleSSEClient
import com.sd.cavphmi.repositorys.AvpDataRepo
import com.sd.cavphmi.utils.FileIoUtils
import com.sd.cavphmi.utils.MyContants
import com.sd.cavphmi.utils.MyContants.HTTP_TOKEN
import com.sd.cavphmi.utils.MyMapUtils
import com.sd.cavphmi.utils.ToastHelper
import com.sd.cavphmi.websockets.FeelTargetWSClient
......@@ -57,16 +58,20 @@ class MainVm @Inject constructor(
private val TAG = "MainVm"
var mMineMap: MineMap? = null
// var mMineMap: MineMap? = null
//用于拼接
private val WSTOKEN = "&token=${HTTP_TOKEN}"
//网联车辆位姿socket
private var vecLocWSClient = VecLocWSClient(URI(MyContants.WS_VEH_LOC))
//感知物socket
private var feelTargetWSClient = FeelTargetWSClient(URI(MyContants.WS_FEEL_TARGET))
private var feelTargetWSClient =
FeelTargetWSClient(URI(MyContants.WS_FEEL_TARGET + WSTOKEN))
//v2x预警socket
private var v2xWSClient = V2xWSClient(URI(MyContants.WS_V2X))
private var v2xWSClient = V2xWSClient(URI(MyContants.WS_V2X+ WSTOKEN))
//网联车辆状态
// private var vehStatuWSClient = VehStatuWSClient(URI(MyContants.WS_VEH_STATU))
......@@ -114,9 +119,11 @@ class MainVm @Inject constructor(
/***清理资源***/
fun cleanRes() {
//关闭socket连接
sockets.forEach {
it.close()
it?.close()
}
//关闭Http sse 长连接
SimpleSSEClient.instance.cancelContect()
}
......@@ -242,7 +249,7 @@ class MainVm @Inject constructor(
mockVM.onSubTargetMock(targetPre)
} else {
try {
feelTargetWSClient.onWebSocketCb = object : OnWebSocketCb {
feelTargetWSClient!!.onWebSocketCb = object : OnWebSocketCb {
override fun onClose(
code: Int,
reason: String?,
......@@ -261,8 +268,8 @@ class MainVm @Inject constructor(
}
}
}
if (!feelTargetWSClient.isOpen) {
feelTargetWSClient.connect()
if (!feelTargetWSClient!!.isOpen) {
feelTargetWSClient?.connect()
}
} catch (e: Exception) {
e.printStackTrace()
......
......@@ -64,7 +64,7 @@ class MapOpt @Inject constructor(
fun drawAllLines(drivenDecision: DrivenDecision) {
if (drivenDecision.trajectory.points.count() > 0) {
//全局路径这里只执行一次
if (allLines == null || allLines?.count() == 0) {
// if (allLines == null || allLines?.count() == 0) {
allLines = drivenDecision.trajectory.points.map {
AllLine().apply {
this.lat = it.latitude
......@@ -72,7 +72,7 @@ class MapOpt @Inject constructor(
}
}
HighMapApi.setCarNavPath(allLines!!, drawpassed = true, showdistance = 200)
}
// }
}
var arrived = drivenDecision.trajectory.arrived
if (arrived) {
......@@ -172,11 +172,12 @@ class MapOpt @Inject constructor(
)
// println("----最近线段索引: " + result[2].toInt())
var index = result[2].toInt()
var temps = sLatLngs?.sliceArray(index..sLatLngs!!.lastIndex)
//截取线段
var nPoints = sLatLngs?.sliceArray(index..sLatLngs!!.lastIndex)
//删除线
deleteSmapLine()
// if (sPolyline == null) {
sPolyline = Polyline(temps, false)
sPolyline = Polyline(nPoints, false)
sPolyline?.setStrokeStyle(Overlay.StrokeStyle.solidWithButt)
sPolyline?.setWidth(8f)
sPolyline?.setColor(0xFF00B578.toInt())
......@@ -209,10 +210,10 @@ class MapOpt @Inject constructor(
space: Space
) {
if (businessType == AvpContants.Park_TYPE) {
if (businessStatus == AvpContants.TRANSPORT_COMPLETED) {
if (businessStatus == AvpContants.TRANSPORT_COMPLETED) {//到达停车点
HighMapApi.setCameraDistance(30f)
HighMapApi.setCameraAngle(60f)
} else if (businessStatus == AvpContants.PARK_PROGRESS) {
} else if (businessStatus == AvpContants.PARK_PROGRESS) {//泊车进行中
HighMapApi.setCameraDistance(20f)
HighMapApi.setCameraAngle(90f)
......@@ -222,10 +223,16 @@ class MapOpt @Inject constructor(
this.code = space.code
}
HighMapApi.setParkRever(reverCar)
} else {
HighMapApi.setCameraAngle(30f)
HighMapApi.setCameraDistance(6f)
}
// if (isReversePark)
// return
// isReversePark = true
} else {
HighMapApi.setCameraAngle(30f)
HighMapApi.setCameraDistance(6f)
}
}
......@@ -244,7 +251,8 @@ class MapOpt @Inject constructor(
fun showEffectAvpStatu(businessType: String, businessStatus: String) {
//到达召,停车点
if (businessType == AvpContants.TRANSPORT_COMPLETED || businessType == AvpContants.TRANSPORT_CANCELED || businessType == AvpContants.TRANSPORT_ABNORMAL) {
HighMapApi.setCarNavPath(emptyList())//消除全局路径
//消除全局路径
HighMapApi.setCarNavPath(emptyList())
//删除终点mark
deleteEndMarker()
//清除小地图路径数据
......@@ -261,14 +269,22 @@ class MapOpt @Inject constructor(
}
}
/***清除所有绘制**/
fun clearAllEffect() {
//删除终点mark
deleteEndMarker()
//清除小地图路径数据
clearSmallLineData()
//删除线
deleteSmapLine()
}
/**
* 移除终点
*/
private fun deleteEndMarker() {
if (pEndMarker != null) {
mMineMap?.removeMarker(pEndMarker)
pEndMarker = null
}
......
package com.sd.cavphmi.websockets
import com.sd.cavphmi.utils.MyContants
import org.java_websocket.client.WebSocketClient
import org.java_websocket.drafts.Draft
import java.net.Socket
......@@ -18,6 +19,9 @@ import javax.net.ssl.X509ExtendedTrustManager
if (serverUri.toString().contains("wss://")) {
trustAllHosts()
}
// if (MyContants.HTTP_TOKEN.isNotEmpty()){
// serverUri.
// }
}
constructor(serverUri: URI?, protocolDraft: Draft?) : super(serverUri, protocolDraft)
......
......@@ -21,6 +21,7 @@ class FeelTargetWSClient : BaseWsClient {
private val TAG = "-----FeelTargetWSClient"
constructor(serverUri: URI) : super(serverUri){
var a=0
// if(serverUri.toString().contains("wss://")){
// trustAllHosts()
// }
......
......@@ -38,7 +38,7 @@ class V2xWSClient : BaseWsClient {
}
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?) {
......
......@@ -132,6 +132,14 @@
android:visibility="visible"
android:text="获取AVP状态信息"
/>
<Button
android:id="@+id/bt_carpos"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
android:text="获取车辆位姿"
/>
<Button
android:id="@+id/bt_getbindcar"
android:layout_width="wrap_content"
......@@ -146,7 +154,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="直接到首页"
android:visibility="gone"/>
android:visibility="visible"/>
</LinearLayout>
......
......@@ -70,7 +70,7 @@
android:layout_height="wrap_content"
android:background="@color/text_blue"
android:paddingVertical="5dp"
android:text="网联车辆位姿"
android:text="车辆位姿"
android:textColor="@color/white" />
......@@ -81,7 +81,7 @@
android:layout_marginLeft="5dp"
android:background="@color/text_blue"
android:paddingVertical="5dp"
android:text="感知目标物数据"
android:text="感知"
android:textColor="@color/white" />
<TextView
......@@ -113,6 +113,7 @@
android:background="@color/text_blue"
android:paddingVertical="5dp"
android:text="车辆详情"
android:visibility="gone"
android:textColor="@color/white" />
<TextView
......
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