Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
p x
SuZhouAvp
Commits
83c86d2f
Commit
83c86d2f
authored
Sep 04, 2025
by
p x
Browse files
集成高精地图
parent
9968f320
Changes
29
Hide whitespace changes
Inline
Side-by-side
app/src/main/java/com/sd/cavphmi/utils/MyContants.kt
View file @
83c86d2f
...
@@ -3,10 +3,9 @@ package com.sd.cavphmi.utils
...
@@ -3,10 +3,9 @@ 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"
// var HOST = "https://itg-yz.cu-sc.com:13443/api/avpweb/"
/***测试环境socket token***/
/***测试环境socket token***/
private
val
WSTOKEN
=
private
val
WSTOKEN
=
...
@@ -14,20 +13,17 @@ object MyContants {
...
@@ -14,20 +13,17 @@ object MyContants {
//登录后拿到Token
//登录后拿到Token
var
HTTP_TOKEN
=
var
HTTP_TOKEN
=
"3W6UeYoWsr3Hged3iJDqw5RQrLyTDwDkkX481PIiuYGwPCamTVdGHhmAxaCgHtns4IaNTEynJ8JfY46bvkzoqqDA9YcGUmkMZ31sV7QAVrk91yOPTv9mCvPLUgOeBgRl"
"aQQ8U2YPfcnrKgdwrIXcLXdtKyaFavYfKlWkNn26fenMLE2fIMPtbt5dSJX3qgM4yHZJ9bY4esSMHRH0FCs1nMte9P5qsaThTe7frFD9RAtWdlyWof4yISiTfkp0ZHiB"
// var HTTP_TOKEN =
// "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiIyM2UzYWU3MGZhMGQ0ZGZjYTIwNGU0NzcwOGNjNDJiNiIsImNyZWF0ZVRpbWUiOjE3NTUyNDA0MjcyNzksInVzZXJUeXBlIjoxLCJzb3VyY2UiOjAsInB3ZEV4cGlyZWQiOmZhbHNlLCJ1c2VybmFtZSI6InhpYW9wMDAxIn0.uiSdxuI34J_U3IuMywZNs_adaWoV2fqMsnx-vMxVWXo"
// val Authorization =
// "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiIyM2UzYWU3MGZhMGQ0ZGZjYTIwNGU0NzcwOGNjNDJiNiIsImNyZWF0ZVRpbWUiOjE3NTUyNDA0MjcyNzksInVzZXJUeXBlIjoxLCJzb3VyY2UiOjAsInB3ZEV4cGlyZWQiOmZhbHNlLCJ1c2VybmFtZSI6InhpYW9wMDAxIn0.uiSdxuI34J_U3IuMywZNs_adaWoV2fqMsnx-vMxVWXo"
//仅仅用于测试接口联通性,这里可不传
//仅仅用于测试接口联通性,这里可不传
private
val
reType
=
"51world"
// private val reType = "51world"
// var WSHOST = "wss://itg-dev.cu-sc.com:19443/WSPLUSV5/socket?token=${WSTOKEN}&reType=${reType}&"
//跟踪车辆的ID skywell.1ggvlp16.car10 skywell.1ggvlp16.car8
var
WSHOST
=
"wss://itg-dev.cu-sc.com:19443/WSPLUSV5/socket?token=${WSTOKEN}&"
private
val
VEHICLEID
=
"skywell.1ggvlp16.car8"
var
WSHOST
=
"wss://itg-dev.cu-sc.com:19443/WSPLUSV5/socket?token=${WSTOKEN}&vehicleId=${VEHICLEID}&"
// var PORT = if (IS_DEBUG) "123" else "34534"
// var PORT = if (IS_DEBUG) "123" else "34534"
/***感知目标物 &intersectionCode***/
/***感知目标物 &intersectionCode***/
var
WS_FEEL_TARGET
=
"${WSHOST}msgType=1"
var
WS_FEEL_TARGET
=
"${WSHOST}msgType=1
&intersectionCode=17
"
/***网联车辆位姿 &vehicleId=***/
/***网联车辆位姿 &vehicleId=***/
var
WS_VEH_LOC
=
"${WSHOST}msgType=2"
var
WS_VEH_LOC
=
"${WSHOST}msgType=2"
...
...
app/src/main/java/com/sd/cavphmi/viewmodels/MainVm.kt
View file @
83c86d2f
...
@@ -6,11 +6,14 @@ import androidx.lifecycle.MutableLiveData
...
@@ -6,11 +6,14 @@ import androidx.lifecycle.MutableLiveData
import
androidx.lifecycle.viewModelScope
import
androidx.lifecycle.viewModelScope
import
com.google.gson.Gson
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.CarVehicle
import
com.sd.cavphmi.bean.CarVehicle
import
com.sd.cavphmi.bean.PerTarget
import
com.sd.cavphmi.bean.PerTarget
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.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
...
@@ -19,11 +22,11 @@ import com.sd.cavphmi.utils.ToastHelper
...
@@ -19,11 +22,11 @@ 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
import
java.net.URI
import
java.net.URI
import
java.util.Timer
import
javax.inject.Inject
import
javax.inject.Inject
...
@@ -46,11 +49,12 @@ class MainVm @Inject constructor(
...
@@ -46,11 +49,12 @@ class MainVm @Inject constructor(
//v2x预警socket
//v2x预警socket
private
var
v2xWSClient
=
V2xWSClient
(
URI
(
MyContants
.
WS_V2X
))
private
var
v2xWSClient
=
V2xWSClient
(
URI
(
MyContants
.
WS_V2X
))
//网联车辆状态
// private var vehStatuWSClient = VehStatuWSClient(URI(MyContants.WS_VEH_STATU))
//socket 管理
//socket 管理
private
var
sockets
=
listOf
(
vecLocWSClient
,
feelTargetWSClient
,
v2xWSClient
)
private
var
sockets
=
listOf
(
vecLocWSClient
,
feelTargetWSClient
,
v2xWSClient
)
//网联车辆状态
// private var vehStatuWSClient: VehStatuWSClient? = null
//感知延时
//感知延时
// private var preDelayWSClient: PreDelayWSClient? = null
// private var preDelayWSClient: PreDelayWSClient? = null
...
@@ -67,10 +71,11 @@ class MainVm @Inject constructor(
...
@@ -67,10 +71,11 @@ class MainVm @Inject constructor(
lateinit
var
mockVM
:
MockVM
lateinit
var
mockVM
:
MockVM
//是否需要模拟
//是否需要模拟
var
isMock
=
tru
e
var
isMock
=
fals
e
//车辆位姿数据
//车辆位姿数据
var
carVehicle
=
MutableLiveData
<
CarVehicle
>()
var
carVehicle
=
MutableLiveData
<
CarVehicle
>()
//车辆详情
//车辆详情
var
vehDetail
=
MutableLiveData
<
VehDetailBean
>()
var
vehDetail
=
MutableLiveData
<
VehDetailBean
>()
...
@@ -81,7 +86,12 @@ class MainVm @Inject constructor(
...
@@ -81,7 +86,12 @@ class MainVm @Inject constructor(
var
v2xStartBean
=
MutableLiveData
<
V2xStartBean
>()
var
v2xStartBean
=
MutableLiveData
<
V2xStartBean
>()
//联网车辆状态数据
//联网车辆状态数据
// var vehicleStat = MutableLiveData<VehicleStats>()
var
vehicleStat
=
MutableLiveData
<
VehicleStats
>()
//avp状态数据
var
avpStatu
=
MutableLiveData
<
AvpStatuBean
>()
//车位占用情况
var
spaceInfo
=
MutableLiveData
<
SpaceInfoBean
>()
//交通感知
//交通感知
// var trafficPerBean = MutableLiveData<TrafficPerBean>()
// var trafficPerBean = MutableLiveData<TrafficPerBean>()
...
@@ -116,20 +126,56 @@ class MainVm @Inject constructor(
...
@@ -116,20 +126,56 @@ class MainVm @Inject constructor(
//获取车辆详情 传{}就行,正常应该是传场地ID,但是亦庄这个和太和桥车是一样的
//获取车辆详情 传{}就行,正常应该是传场地ID,但是亦庄这个和太和桥车是一样的
fun
getVehDetail
(
id
:
String
=
""
)
{
fun
getVehDetail
(
id
:
String
=
""
)
:
LiveData
<
VehDetailBean
>
{
viewModelScope
.
launch
{
viewModelScope
.
launch
{
var
result
=
avpDataRepo
.
getVehDetail
(
id
)
var
result
=
avpDataRepo
.
getVehDetail
(
id
)
when
(
result
)
{
when
(
result
)
{
is
MyResult
.
Success
<
VehDetailBean
>
->
{
is
MyResult
.
Success
<
VehDetailBean
>
->
{
vehDetail
.
postValue
(
result
.
data
)
vehDetail
.
postValue
(
result
.
data
)
// println("-------时间差---- = ${result.data}")
}
}
else
->
{
else
->
{
// println("-------Error---- = ${result.msg}")
}
}
}
}
}
}
return
vehDetail
}
//HTTP获取车位占用情况
fun
getSpaceInfo
():
LiveData
<
SpaceInfoBean
>
{
viewModelScope
.
launch
{
var
result
=
avpDataRepo
.
getSpaceInfo
()
when
(
result
)
{
is
MyResult
.
Success
<
SpaceInfoBean
>
->
{
var
str
=
gson
.
toJson
(
result
)
FileIoUtils
.
writeToFile
(
str
,
"space_info.txt"
)
spaceInfo
.
postValue
(
result
.
data
)
}
else
->
{
}
}
}
return
spaceInfo
}
//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
)
}
else
->
{
}
}
}
return
avpStatu
}
}
...
@@ -162,8 +208,8 @@ class MainVm @Inject constructor(
...
@@ -162,8 +208,8 @@ class MainVm @Inject constructor(
/**感知目标物数据
/**感知目标物数据
*传入intersectionCode 拼接 代表获取某区域的感知物,目前没有数据
*传入intersectionCode
=17
拼接 代表获取某区域的感知物,目前没有数据
*
**
/
*/
fun
subTarget
():
LiveData
<
PerTarget
>
{
fun
subTarget
():
LiveData
<
PerTarget
>
{
if
(
isMock
)
{
if
(
isMock
)
{
mockVM
.
onSubTargetMock
(
targetPre
)
mockVM
.
onSubTargetMock
(
targetPre
)
...
@@ -213,35 +259,39 @@ class MainVm @Inject constructor(
...
@@ -213,35 +259,39 @@ class MainVm @Inject constructor(
}
}
//暂时用不到---------------------------------------------
/**
/**
* 网联车辆状态
* 网联车辆状态
* */
**/
/* fun subVehicleStatus(): LiveData<VehicleStats> {
/* fun subVehicleStatus(): LiveData<VehicleStats> {
try {
if (isMock) {
if (vehStatuWSClient == null) {
vehStatuWSClient = VehStatuWSClient(URI(MyContants.WS_VEH_STATU))
} else {
vehStatuWSClient?.connect()
try {
vehStatuWSClient.onDataCb = object : VehStatuWSClient.OnDataCb {
vehStatuWSClient?.onDataCb = object : VehStatuWSClient.OnDataCb {
override fun onMsg(str: String) {
override fun onMsg(str: String) {
viewModelScope.launch {
viewModelScope.launch {
FileIoUtils.writeToFile(str, "vehicleS.txt")
FileIoUtils.writeToFile(str, "vehicleS.txt")
var bean = gson.fromJson(str, VehicleStats::class.java)
// var bean = gson.fromJson(str, VehicleStats::class.java)
vehicleStat.postValue(bean)
// vehicleStat.postValue(bean)
}
}
}
}
}
}
if (vehStatuWSClient.isOpen == false) {
}
vehStatuWSClient.connect()
} catch (e: Exception) {
} else {
e.printStackTrace()
vehStatuWSClient.reconnect()
}
}
return vehicleStat
} catch (e: Exception) {
}
e.printStackTrace()
}
}
return vehicleStat
}*/
//暂时用不到---------------------------------------------
*/
/*** 交通(感知)事件**//*
/*** 交通(感知)事件**//*
fun subTrafficPre(): LiveData<TrafficPerBean> {
fun subTrafficPre(): LiveData<TrafficPerBean> {
try {
try {
...
...
app/src/main/java/com/sd/cavphmi/viewmodels/MockVM.kt
View file @
83c86d2f
...
@@ -65,10 +65,10 @@ class MockVM @Inject constructor(
...
@@ -65,10 +65,10 @@ class MockVM @Inject constructor(
parts
.
forEach
{
str
->
parts
.
forEach
{
str
->
delay
(
1000
)
delay
(
1000
)
var
bean
=
parseDataBean
(
str
,
PerTarget
::
class
.
java
)
var
bean
=
parseDataBean
(
str
,
PerTarget
::
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
}
}
}
}
...
...
app/src/main/java/com/sd/cavphmi/websockets/FeelTargetWSClient.kt
View file @
83c86d2f
...
@@ -21,7 +21,7 @@ class FeelTargetWSClient : WebSocketClient {
...
@@ -21,7 +21,7 @@ class FeelTargetWSClient : WebSocketClient {
)
)
override
fun
onOpen
(
handshakedata
:
ServerHandshake
?)
{
override
fun
onOpen
(
handshakedata
:
ServerHandshake
?)
{
//
send("Hello, it is me. Mario :)
")
println
(
TAG
+
"------------Hello, 感知目标物
"
)
// System.out.println(TAG + "new connection opened")
// System.out.println(TAG + "new connection opened")
}
}
...
@@ -35,17 +35,17 @@ class FeelTargetWSClient : WebSocketClient {
...
@@ -35,17 +35,17 @@ class FeelTargetWSClient : WebSocketClient {
}
}
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
?)
{
//
System.err.println(TAG + "an error occurred:" + ex)
System
.
err
.
println
(
TAG
+
"an error occurred:"
+
ex
)
}
}
...
...
app/src/main/java/com/sd/cavphmi/websockets/VehStatuWSClient.kt
View file @
83c86d2f
...
@@ -25,7 +25,7 @@ class VehStatuWSClient : WebSocketClient {
...
@@ -25,7 +25,7 @@ class VehStatuWSClient : WebSocketClient {
override
fun
onOpen
(
handshakedata
:
ServerHandshake
?)
{
override
fun
onOpen
(
handshakedata
:
ServerHandshake
?)
{
// send("Hello, it is me. Mario :)")
// send("Hello, it is me. Mario :)")
System
.
out
.
println
(
TAG
+
"
new connection opened
"
)
System
.
out
.
println
(
TAG
+
"
------------Hello 网联车辆状态
"
)
}
}
override
fun
onMessage
(
message
:
String
?)
{
override
fun
onMessage
(
message
:
String
?)
{
...
@@ -38,17 +38,17 @@ class VehStatuWSClient : WebSocketClient {
...
@@ -38,17 +38,17 @@ class VehStatuWSClient : WebSocketClient {
}
}
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
?)
{
//
System.err.println(TAG + "an error occurred:" + ex)
System
.
err
.
println
(
TAG
+
"an error occurred:"
+
ex
)
}
}
...
...
app/src/main/res/layout/activity_login.xml
View file @
83c86d2f
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
...
@@ -116,8 +115,20 @@
...
@@ -116,8 +115,20 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"获取车辆信息"
android:text=
"获取车辆信息"
android:visibility=
"
gon
e"
/>
android:visibility=
"
visibl
e"
/>
<Button
android:id=
"@+id/bt_spaceinfo"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"车位占用情况"
android:visibility=
"visible"
/>
<Button
android:id=
"@+id/bt_avpstatu"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"获取AVP状态信息"
android:visibility=
"visible"
/>
<Button
<Button
android:id=
"@+id/bt_main"
android:id=
"@+id/bt_main"
...
...
app/src/main/res/layout/activity_main.xml
View file @
83c86d2f
...
@@ -4,9 +4,9 @@
...
@@ -4,9 +4,9 @@
<data>
<data>
<!-- <variable-->
<!-- <variable-->
<!-- name="vm"-->
<!-- name="vm"-->
<!-- type="com.sd.cavphmi.viewmodels.MainVm" />-->
<!-- type="com.sd.cavphmi.viewmodels.MainVm" />-->
</data>
</data>
...
@@ -17,6 +17,14 @@
...
@@ -17,6 +17,14 @@
tools:context=
".ui.MainActivity"
>
tools:context=
".ui.MainActivity"
>
<!-- 高精地图放这里-->
<fragment
android:id=
"@+id/unityFragment"
class=
"com.sd.cavphmi.ui.fragment.UnityFragment"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
<!-- 车辆仪表-->
<!-- 车辆仪表-->
<FrameLayout
<FrameLayout
android:id=
"@+id/map_car_pan"
android:id=
"@+id/map_car_pan"
...
@@ -25,13 +33,6 @@
...
@@ -25,13 +33,6 @@
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginTop=
"@dimen/dp_10"
/>
android:layout_marginTop=
"@dimen/dp_10"
/>
<!-- 高精地图放这里-->
<fragment
android:id=
"@+id/map_main"
class=
"com.sd.cavphmi.ui.fragment.MapMainFragment"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
<!-- 预警气泡 从别的醒目扣过来的,就复用这个吧-->
<!-- 预警气泡 从别的醒目扣过来的,就复用这个吧-->
<fragment
<fragment
...
@@ -72,11 +73,12 @@
...
@@ -72,11 +73,12 @@
android:text=
"V2X预警开始"
/>
android:text=
"V2X预警开始"
/>
<!-- <Button-->
<Button
<!-- android:id="@+id/bt_status"-->
android:id=
"@+id/bt_status"
<!-- android:layout_width="wrap_content"-->
android:layout_width=
"wrap_content"
<!-- android:layout_height="wrap_content"-->
android:layout_height=
"wrap_content"
<!-- android:text="网联车辆状态" />-->
android:text=
"网联车辆状态"
android:visibility=
"gone"
/>
<!-- <Button-->
<!-- <Button-->
<!-- android:id="@+id/bt_tarpre"-->
<!-- android:id="@+id/bt_tarpre"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_width="wrap_content"-->
...
...
app/src/main/res/values/strings.xml
View file @
83c86d2f
<resources>
<resources>
<string
name=
"game_view_content_description"
>
Game view
</string>
<string
name=
"app_name"
>
C-adas AVP
</string>
<string
name=
"app_name"
>
C-adas AVP
</string>
<!-- TODO: Remove or change this placeholder text -->
<!-- TODO: Remove or change this placeholder text -->
<string
name=
"hello_blank_fragment"
>
Hello blank fragment
</string>
<string
name=
"hello_blank_fragment"
>
Hello blank fragment
</string>
...
...
gradle.properties
View file @
83c86d2f
...
@@ -20,4 +20,5 @@ kotlin.code.style=official
...
@@ -20,4 +20,5 @@ kotlin.code.style=official
# Enables namespacing of each library's R class so that its R class includes only the
# Enables namespacing of each library's R class so that its R class includes only the
# resources declared in the library itself and none from the library's dependencies,
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass
=
true
android.nonTransitiveRClass
=
true
\ No newline at end of file
unityStreamingAssets
=
.unity3d, google-services-desktop.json, google-services.json, GoogleService-Info.plist
\ No newline at end of file
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment