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
Expand all
Hide whitespace changes
Inline
Side-by-side
app/libs/
MineNaviSDK
.aar
→
app/libs/
unityLibrary-release
.aar
View file @
83c86d2f
No preview for this file type
app/src/main/AndroidManifest.xml
View file @
83c86d2f
...
...
@@ -60,9 +60,12 @@
<activity
android:name=
".ui.MainActivity"
android:exported=
"true"
android:configChanges=
"fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:exported=
"false"
android:hardwareAccelerated=
"false"
android:launchMode=
"singleTask"
android:screenOrientation=
"landscape"
/>
android:resizeableActivity=
"false"
android:screenOrientation=
"fullUser"
/>
<!-- <activity-->
<!-- android:name=".ui.BootActivity"-->
...
...
app/src/main/assets/mock/CarVehicle.txt
View file @
83c86d2f
This diff is collapsed.
Click to expand it.
app/src/main/assets/mock/avp_status.txt
0 → 100644
View file @
83c86d2f
{"data":{}}
{"data":{}}
{"data":{"code":1,"msg":"操作成功","result":[{"businessStatus":"NIL","businessStatusCode":0,"businessType":"NIL","businessTypeCode":0,"vehicleId":1694264612474306561,"vehiclePlate":"苏EAVP001"},{"businessStatus":"NIL","businessStatusCode":0,"businessType":"NIL","businessTypeCode":0,"vehicleId":1826545465602543618,"vehiclePlate":"皖BDJ1106"}],"success":true}}
app/src/main/assets/mock/onStartV2x.txt
View file @
83c86d2f
This diff is collapsed.
Click to expand it.
app/src/main/assets/mock/space_info.txt
0 → 100644
View file @
83c86d2f
This diff is collapsed.
Click to expand it.
app/src/main/assets/mock/vehicleS.txt
0 → 100644
View file @
83c86d2f
{"vehicleStatistics":{"total":0,"minibus":0,"bus":0,"sweeper":0,"selling":1,"taxi":0,"brt":0,"patrol":0},"vehicleStatusList":[{"id":"267","type":"selling","status":0,"driveMode":1}]}
{"vehicleStatistics":{"total":0,"minibus":0,"bus":0,"sweeper":0,"selling":1,"taxi":0,"brt":0,"patrol":0},"vehicleStatusList":[{"id":"265","type":"selling","status":0,"driveMode":1}]}
{"vehicleStatistics":{"total":0,"minibus":0,"bus":0,"sweeper":0,"selling":1,"taxi":0,"brt":0,"patrol":0},"vehicleStatusList":[{"id":"263","type":"selling","status":0,"driveMode":1}]}
{"vehicleStatistics":{"total":0,"minibus":0,"bus":0,"sweeper":0,"selling":3,"taxi":0,"brt":0,"patrol":0},"vehicleStatusList":[{"id":"263","type":"selling","status":0,"driveMode":1},{"id":"265","type":"selling","status":0,"driveMode":1},{"id":"267","type":"selling","status":0,"driveMode":1}]}
{"vehicleStatistics":{"total":0,"minibus":0,"bus":0,"sweeper":0,"selling":1,"taxi":0,"brt":0,"patrol":0},"vehicleStatusList":[{"id":"257","type":"selling","status":1,"driveMode":1}]}
{"vehicleStatistics":{"total":0,"minibus":0,"bus":0,"sweeper":0,"selling":0,"taxi":0,"brt":0,"patrol":1},"vehicleStatusList":[{"id":"259","type":"patrol","status":1,"driveMode":1}]}
{"vehicleStatistics":{"total":0,"minibus":0,"bus":0,"sweeper":0,"selling":1,"taxi":0,"brt":0,"patrol":1},"vehicleStatusList":[{"id":"257","type":"selling","status":1,"driveMode":1},{"id":"259","type":"patrol","status":1,"driveMode":1}]}
app/src/main/assets/mock/感知数据 json(2).txt
0 → 100644
View file @
83c86d2f
This diff is collapsed.
Click to expand it.
app/src/main/assets/mock/终点停车轨迹.txt
0 → 100644
View file @
83c86d2f
[[125.13732331853795,43.836503807842064,2.1238200664520264,148.4593963623047],[125.13732456106733,43.83650234266057,2.1197010377305237,148.46122591367404],[125.1373259356782,43.836500721412406,2.1058173518285455,148.47023731725585],[125.1373271622247,43.83649927405063,2.0854163469578193,148.48763911477886],[125.13732850750527,43.836497685065595,2.0545205324242746,148.51908759613238],[125.13732982880497,43.83649612236514,2.015545349000081,148.552166675355],[125.13733112114255,43.83649459198604,1.9690383860750174,148.58376310334413],[125.13733237991389,43.836493099524986,1.9155906759919896,148.61487009617596],[125.13733372075089,43.83649150773015,1.8494878892184576,148.64892224504783],[125.13733501076648,43.83648997422776,1.7764887708149326,148.68287417429354],[125.13733624538061,43.83648850453908,1.6973816258109495,148.72038673474182],[125.13733762751319,43.836486856463566,1.597100930027932,148.76870231319646],[125.13733882479282,43.83648542615089,1.4990685641484547,148.81438364452077],[125.13734012165186,43.836483873905195,1.3794630711024702,148.86563499372005],[125.13734146722936,43.83648226004303,1.2378511377214343,148.91794334067754],[125.13734273362928,43.83648073812853,1.084230458962878,148.96614073396194],[125.1373440067006,43.83647920537114,0.9031891918246945,149.0106390975726],[125.13734527420314,43.83647767686824,0.6832684304725716,149.04650401421077],[125.13734655776086,43.83647612718491,0.38209293526429194,149.0690508870936],[125.13734737296731,43.83647514245712,4.464678881147032E-5,149.07354499750062],[125.1373473729682,43.836475142456045,0.0,149.07354499750062],[125.13734865114003,43.83647359839668,0.0,149.07354499750062],[125.13734992931177,43.836472054337314,0.0,149.07354499750062],[125.13735120748345,43.83647051027791,0.0,149.07354499750062],[125.13735248565507,43.836468966218504,0.0,149.07354499750062],[125.13735376382661,43.83646742215908,0.0,149.07354499750062],[125.1373550419981,43.83646587809965,0.0,149.07354499750062],[125.13735632016953,43.8364643340402,0.0,149.07354499750062],[125.1373575983409,43.83646278998074,0.0,149.07354499750062],[125.13735887651215,43.836461245921264,0.0,149.07354499750062],[125.13736015468339,43.83645970186176,0.0,149.07354499750062],[125.13736143285453,43.83645815780225,0.0,149.07354499750062],[125.13736271102565,43.836456613742726,0.0,149.07354499750062],[125.13736398919666,43.83645506968319,0.0,149.07354499750062],[125.13736526736761,43.83645352562363,0.0,149.07354499750062],[125.1373665455385,43.83645198156407,0.0,149.07354499750062],[125.13736782370934,43.83645043750448,0.0,149.07354499750062],[125.1373691018801,43.83644889344488,0.0,149.07354499750062],[125.1373703800508,43.836447349385274,0.0,149.07354499750062],[125.13737165822143,43.836445805325646,0.0,149.07354499750062],[125.13737293639198,43.836444261266,0.0,149.07354499750062],[125.13737421456248,43.83644271720636,0.0,149.07354499750062],[125.13737549273291,43.836441173146675,0.0,149.07354499750062],[125.13737677090329,43.836439629086996,0.0,149.07354499750062],[125.13737804907359,43.83643808502728,0.0,149.07354499750062]]
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/bean/AvpStatuBean.kt
0 → 100644
View file @
83c86d2f
package
com.sd.cavphmi.bean
/**
* Avp 状态信息
* {"code":1,"msg":"操作成功","result":[{"vehicleId":1694264612474306561,"vehiclePlate":"苏EAVP001","businessType":"NIL","businessTypeCode":0,"businessStatus":"NIL","businessStatusCode":0,"lines":null},{"vehicleId":1826545465602543618,"vehiclePlate":"皖BDJ1106","businessType":"NIL","businessTypeCode":0,"businessStatus":"NIL","businessStatusCode":0,"lines":null}],"success":true}
*/
data class
AvpStatuBean
(
val
code
:
Int
,
val
msg
:
String
,
val
result
:
List
<
AResult
>,
val
success
:
Boolean
)
data class
AResult
(
val
businessStatus
:
String
,
val
businessStatusCode
:
Int
,
val
businessType
:
String
,
val
businessTypeCode
:
Int
,
val
lines
:
Any
,
val
vehicleId
:
Long
,
val
vehiclePlate
:
String
)
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/bean/PerTarget.kt
View file @
83c86d2f
package
com.sd.cavphmi.bean
/**感知目标物
*
*
* ***/
/**
* 感知目标物
****/
data class
PerTarget
(
val
collectTime
:
Int
,
val
deviceId
:
String
,
val
id
:
String
,
val
message
:
Message
,
val
msgId
:
Any
,
val
msgType
:
String
,
val
receiveTime
:
Long
,
val
reportTime
:
Long
)
class
PerTarget
(
val
id
:
String
,
val
type
:
Int
,
val
typeName
:
String
,
val
levlel
:
Int
,
val
startTime
:
Long
,
val
reportTime
:
Long
,
val
typeList
:
ArrayList
<
PerTargetTypeItem
>
data class
Message
(
val
participants
:
List
<
Participant
>
)
data class
PerTargetTypeItem
(
val
id
:
String
,
val
name
:
String
,
val
longitude
:
Float
,
val
latitude
:
Float
,
val
startTime
:
Long
,
val
elevation
:
Int
data class
Participant
(
val
elevation
:
Any
,
val
heading
:
Double
,
val
latitude
:
Double
,
val
longitude
:
Double
,
val
ptcId
:
String
,
val
ptcType
:
String
,
val
speed
:
Double
,
val
vehicleColor
:
String
,
val
vehiclePlate
:
String
,
val
vehiclePlateColor
:
Any
,
val
vehicleType
:
String
)
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/bean/SpaceInfoBean.kt
0 → 100644
View file @
83c86d2f
package
com.sd.cavphmi.bean
/**
* 车位占用情况
* {"code":1,"msg":"操作成功","result":[{"id":307,"code":"B007","locationName":"B007","distance":null,"longitude":null,"latitude":null,"surface":"[[116.49722581116599,39.73156217155182],[116.497239837239803,39.731542530956666],[116.497186225555666,39.731520254990194],[116.497172199475997,39.73153989558011],[116.49722581116599,39.73156217155182]]","state":"FREE","placeId":3}]}
*/
data class
SpaceInfoBean
(
val
code
:
Int
,
val
msg
:
String
,
val
result
:
List
<
Result
>
)
data class
Result
(
val
code
:
String
,
val
distance
:
Any
,
val
id
:
Int
,
val
latitude
:
Any
,
val
locationName
:
String
,
val
longitude
:
Any
,
val
placeId
:
Int
,
val
state
:
String
,
val
surface
:
String
)
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/bean/VehicleStats.kt
View file @
83c86d2f
package
com.sd.cavphmi.bean
/***联网车辆状态数据
* {"vehicleStats":{"total":0,"avp":0},"vehicleStatusList":[],"wsTime":1750138623719}
* {"vehicleStats":{"total":1,"avp":1},"vehicleStatusList":[],"wsTime":1750301590009}
/**
*
* 联网车辆状态数据 (只有发生变化的数据才推送)
* {"vehicleStatistics":{"total":0,"minibus":0,"bus":0,"sweeper":0,"selling":3,"taxi":0,"brt":0,"patrol":0},"vehicleStatusList":[{"id":"263","type":"selling","status":0,"driveMode":1},{"id":"265","type":"selling","status":0,"driveMode":1},{"id":"267","type":"selling","status":0,"driveMode":1}]}
* **/
data class
VehicleStats
(
val
vehicleStats
:
VehicleStatsX
,
val
vehicleStatusList
:
List
<
VehicleStatusList
>,
val
wsTime
:
Long
data class
VehicleStats
(
val
vehicleStatistics
:
VehicleStatistics
,
val
vehicleStatusList
:
List
<
VehicleStatus
>
)
data class
VehicleStatsX
(
val
avp
:
Int
,
val
total
:
Int
data class
VehicleStatistics
(
val
brt
:
Int
,
val
bus
:
Int
,
val
minibus
:
Int
,
//小巴车在线数量
val
patrol
:
Int
,
val
selling
:
Int
,
val
sweeper
:
Int
,
val
taxi
:
Int
,
val
total
:
Int
//总的在线数量
)
data class
VehicleStatusList
(
var
driveMode
:
Int
)
\ No newline at end of file
// 状态变化的车辆,对象型数组
data class
VehicleStatus
(
val
driveMode
:
Int
,
val
id
:
String
,
val
status
:
Int
,
// 必填,int 类型,车辆状态编码:0-离线、1-在线
val
type
:
String
// 选填,字符串类型,车辆类型
)
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/net/httpmothod/ClientRetrofitMethod.kt
View file @
83c86d2f
package
com.sd.cavphmi.net.httpmothod
import
com.sd.cavphmi.bean.AvpStatuBean
import
com.sd.cavphmi.bean.LoginSuccBean
import
com.sd.cavphmi.bean.ParkLinePlan
import
com.sd.cavphmi.bean.SpaceInfoBean
import
com.sd.cavphmi.bean.SpaceNoBean
import
com.sd.cavphmi.bean.VehDetailBean
import
com.sd.cavphmi.net.MyBaseResource
import
okhttp3.RequestBody
import
retrofit2.http.Body
import
retrofit2.http.GET
import
retrofit2.http.POST
interface
ClientRetrofitMethod
{
...
...
@@ -17,15 +20,24 @@ interface ClientRetrofitMethod {
// @GET("http://59.175.163.12/serv-addr/server.json")
// fun getConfigurations(): Observable<List<ConfigurationBean>>
//
/***车辆详情***/
// @POST("api/perm/admin/auth/passLogin")
// @POST("api/perm/admin/auth/passLogin")
/**登录***/
@POST
(
"api/opr/login"
)
suspend
fun
login
(
@Body
body
:
RequestBody
):
LoginSuccBean
/***车辆详情***/
/**车辆详情***/
// @POST("v1/avp/overview/getVehicleInfo")
@POST
(
"api/avpweb/v1/avp/overview/getVehicleInfo"
)
suspend
fun
getVehDetail
(
@Body
body
:
RequestBody
):
VehDetailBean
/**车位占用情况***/
@POST
(
"api/avpweb/v1/avp/overview/listSpaceInfoByCondition"
)
suspend
fun
getSpaceInfo
(
@Body
body
:
RequestBody
):
SpaceInfoBean
/**车位占用情况***/
@POST
(
"api/avpweb/v1/avp/overview/listAvpStatus"
)
suspend
fun
getAvpStatus
(
@Body
body
:
RequestBody
):
AvpStatuBean
// /***车辆详情***/
// @POST("/v1/avp/overview/listAvpStatus")
// suspend fun getVehDetail(@Body body: RequestBody): VehDetailBean
...
...
app/src/main/java/com/sd/cavphmi/repositorys/AvpDataRepo.kt
View file @
83c86d2f
package
com.sd.cavphmi.repositorys
import
com.sd.cavphmi.bean.AvpStatuBean
import
com.sd.cavphmi.bean.SpaceInfoBean
import
com.sd.cavphmi.bean.VehDetailBean
import
com.sd.cavphmi.net.MyResult
import
com.sd.cavphmi.net.RequestBodyUtil
...
...
@@ -8,19 +10,16 @@ import com.sd.cavphmi.utils.MyContants
import
retrofit2.HttpException
import
javax.inject.Inject
/**
*
AVP 接口**/
/**AVP 接口**/
class
AvpDataRepo
@Inject
constructor
(
private
var
clientRetrofitMethod
:
ClientRetrofitMethod
)
{
/**
*
获取车辆详情
/**获取车辆详情
* @param id 正常应该是传场地ID,但是亦庄这个和太和桥车是一样的
* **/
suspend
fun
getVehDetail
(
id
:
String
=
""
):
MyResult
<
VehDetailBean
>
{
if
(
id
.
isNullOrEmpty
())
{
return
MyResult
.
Error
(
MyContants
.
HTTP_ERROR
,
"error"
)
}
// if (!orderCalled.getAndSet(true)) {
var
map
=
mapOf
(
"id"
to
id
)
var
body
=
RequestBodyUtil
.
toRequestBody
(
map
)
*/
suspend
fun
getVehDetail
(
id
:
String
=
""
):
MyResult
<
VehDetailBean
>
{
// var map = mapOf("id" to id)
// var map = mapOf()
var
body
=
RequestBodyUtil
.
toRequestBody
(
mapOf
())
try
{
var
bean
=
clientRetrofitMethod
.
getVehDetail
(
body
)
return
MyResult
.
Success
(
bean
)
...
...
@@ -30,13 +29,41 @@ class AvpDataRepo @Inject constructor(private var clientRetrofitMethod: ClientRe
}
catch
(
e
:
Exception
)
{
return
MyResult
.
Error
(
MyContants
.
HTTP_ERROR
,
e
.
message
?:
"error"
)
}
// } else {
// return MyResult.Error(MyContants.ALREADT_ONCE, "")
// }
}
/**
* 获取车位占用情况
*/
suspend
fun
getSpaceInfo
():
MyResult
<
SpaceInfoBean
>
{
try
{
var
body
=
RequestBodyUtil
.
toRequestBody
(
mapOf
())
var
bean
=
clientRetrofitMethod
.
getSpaceInfo
(
body
)
return
MyResult
.
Success
(
bean
)
}
catch
(
e
:
HttpException
)
{
// println("e.message = ${e.message}")
return
MyResult
.
Error
(
e
.
code
(),
e
.
message
()
?:
"error"
)
}
catch
(
e
:
Exception
)
{
return
MyResult
.
Error
(
MyContants
.
HTTP_ERROR
,
e
.
message
?:
"error"
)
}
}
/**
* 获取AVP状态信息
*/
suspend
fun
getAvpStatus
():
MyResult
<
AvpStatuBean
>
{
try
{
var
body
=
RequestBodyUtil
.
toRequestBody
(
mapOf
())
var
bean
=
clientRetrofitMethod
.
getAvpStatus
(
body
)
return
MyResult
.
Success
(
bean
)
}
catch
(
e
:
HttpException
)
{
// println("e.message = ${e.message}")
return
MyResult
.
Error
(
e
.
code
(),
e
.
message
()
?:
"error"
)
}
catch
(
e
:
Exception
)
{
return
MyResult
.
Error
(
MyContants
.
HTTP_ERROR
,
e
.
message
?:
"error"
)
}
}
suspend
fun
login
(
user
:
String
,
pwd
:
String
,
verifyCode
:
Int
):
MyResult
<
String
>
{
suspend
fun
login
(
user
:
String
,
pwd
:
String
,
verifyCode
:
Int
):
MyResult
<
String
>
{
// if (id.isNullOrEmpty()) {
// return MyResult.Error(MyContants.HTTP_ERROR, "error")
// }
...
...
app/src/main/java/com/sd/cavphmi/ui/BootActivity.kt
View file @
83c86d2f
...
...
@@ -3,10 +3,6 @@ package com.sd.cavphmi.ui
import
android.Manifest
import
android.content.Intent
import
androidx.lifecycle.ViewModelProvider
import
com.minedata.minenavi.SDKInitializer
import
com.minedata.minenavi.SDKInitializer.InitListener
import
com.minedata.minenavi.mapdal.CoordType
import
com.minedata.minenavi.poiquery.SearchUrlType
import
com.permissionx.guolindev.PermissionX
import
com.sd.cavphmi.BR
import
com.sd.cavphmi.R
...
...
@@ -25,7 +21,6 @@ class BootActivity : BaseActivity<ActivityBootBinding, MyBaseViewModel>() {
return
-
1
}
override
fun
initContentView
():
Int
{
return
R
.
layout
.
activity_boot
}
...
...
@@ -44,7 +39,6 @@ class BootActivity : BaseActivity<ActivityBootBinding, MyBaseViewModel>() {
// tcpUpVM.owner=this
// tcpUpVM.upWork()
// viewModel.testWork()
initMap
()
requestPers
()
}
...
...
@@ -65,29 +59,6 @@ class BootActivity : BaseActivity<ActivityBootBinding, MyBaseViewModel>() {
},
10
)
}
fun
initMap
()
{
// 隐私合规接口
SDKInitializer
.
setAgreePrivacy
(
true
)
// if (SDKInitializer.getServerHost().equals("mineservice.minedata.cn")) {
// SDKInitializer.setStyleUrl(
// MineMap.UrlType.basicMap,
// "https://service.minedata.cn/map/solu/style/1359221494104252416"
// )
// }
// 设置地图坐标系
SDKInitializer
.
setCoordType
(
CoordType
.
GCJ02
)
SDKInitializer
.
setSearchUrlType
(
SearchUrlType
.
v1
)
SDKInitializer
.
initialize
(
this
,
object
:
InitListener
{
override
fun
onInitSuccess
()
{
println
(
"---Map onInitSuccess map"
)
}
override
fun
onInitFailed
(
msg
:
String
?)
{
println
(
"---Map onInitFailed msg = ${msg}"
)
}
})
}
fun
requestPers
()
{
var
list
=
listOf
(
...
...
@@ -99,7 +70,12 @@ class BootActivity : BaseActivity<ActivityBootBinding, MyBaseViewModel>() {
PermissionX
.
init
(
this
)
.
permissions
(
list
)
.
onExplainRequestReason
{
scope
,
deniedList
->
scope
.
showRequestReasonDialog
(
deniedList
,
"Adas 需要同意以下授权才能正常使用"
,
"好的"
,
"取消"
)
scope
.
showRequestReasonDialog
(
deniedList
,
"Adas 需要同意以下授权才能正常使用"
,
"好的"
,
"取消"
)
}
// .onForwardToSettings { scope, deniedList ->
// scope.showForwardToSettingsDialog(deniedList, "您需要手动在‘设置’中允许必要的权限", "OK", "Cancel")
...
...
@@ -112,7 +88,7 @@ class BootActivity : BaseActivity<ActivityBootBinding, MyBaseViewModel>() {
ToastHelper
.
showShort
(
this
,
"权限被拒"
)
binding
.
root
.
postDelayed
({
finish
()
},
500
)
},
500
)
}
}
...
...
app/src/main/java/com/sd/cavphmi/ui/LoginActivity.kt
View file @
83c86d2f
...
...
@@ -38,18 +38,22 @@ class LoginActivity : AppCompatActivity() {
var
pp
=
SM4CryptoHelper
.
encryptECB
(
key
,
pwd
.
toByteArray
())
loginVm
.
login
(
user
,
pp
,
276135
).
observe
(
this
)
{
// startActivity(Intent(this,MainActivity::class.java))
}
}
loginVm
.
loginData
.
observe
(
this
){
startActivity
(
Intent
(
this
,
MainActivity
::
class
.
java
))
}
// HTTP获取车辆详情
binding
.
btVehinfo
.
setOnClickListener
{
mainVm
.
getVehDetail
()
}
// HTTP获取车位占用情况
binding
.
btSpaceinfo
.
setOnClickListener
{
mainVm
.
getSpaceInfo
()
}
// HTTP获取AVp状态信息 以后就用socket订阅了
binding
.
btAvpstatu
.
setOnClickListener
{
mainVm
.
getAvpStatus
()
}
//直接到首页
binding
.
btMain
.
setOnClickListener
{
startActivity
(
Intent
(
this
,
MainActivity
::
class
.
java
))
...
...
app/src/main/java/com/sd/cavphmi/ui/fragment/UnityFragment.kt
0 → 100644
View file @
83c86d2f
package
com.sd.cavphmi.ui.fragment
import
android.os.Bundle
import
android.util.Log
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
android.widget.FrameLayout
import
androidx.fragment.app.Fragment
import
com.unity3d.player.IUnityPlayerLifecycleEvents
import
com.unity3d.player.UnityPlayer
/**
* A simple [Fragment] subclass.
* Use the [UnityFragment.newInstance] factory method to
* create an instance of this fragment.
*/
class
UnityFragment
:
Fragment
(),
IUnityPlayerLifecycleEvents
{
// region Lifecycle Management - MUST BE FORWARDED TO UnityPlayer
override
fun
onResume
()
{
super
.
onResume
()
mUnityPlayer
.
onResume
()
}
override
fun
onStart
()
{
super
.
onStart
()
mUnityPlayer
.
onStart
()
}
override
fun
onPause
()
{
super
.
onPause
()
mUnityPlayer
.
onPause
()
}
override
fun
onStop
()
{
super
.
onStop
()
mUnityPlayer
.
onStop
()
}
override
fun
onDestroy
()
{
super
.
onDestroy
()
this
.
mUnityPlayer
.
destroy
()
}
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?
):
View
?
{
// 创建一个简单的 FrameLayout 作为 Fragment 的根视图
val
frameLayout
=
FrameLayout
(
requireContext
())
frameLayout
.
layoutParams
=
ViewGroup
.
LayoutParams
(-
1
,
-
1
)
// // 将 UnityPlayer 的视图添加到 FrameLayout 中
mUnityPlayer
.
let
{
unityPlayer
->
// val playerView = unityPlayer
val
layoutParams
=
ViewGroup
.
LayoutParams
(-
1
,
-
1
)
frameLayout
.
addView
(
unityPlayer
,
layoutParams
)
}
return
frameLayout
// return inflater.inflate(R.layout.fragment_unity, container, false)
}
override
fun
onUnityPlayerUnloaded
()
{
Log
.
d
(
"UnityFragment"
,
"-----------------onUnityPlayerUnloaded"
)
// Unity 玩家未加载时调用
activity
?.
finish
()
}
override
fun
onUnityPlayerQuitted
()
{
Log
.
d
(
"UnityFragment"
,
"-----------------onUnityPlayerQuitted"
)
}
// UnityPlayer 实例
private
lateinit
var
mUnityPlayer
:
UnityPlayer
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
mUnityPlayer
=
UnityPlayer
(
requireContext
(),
this
)
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
// 视图创建完成后,可以在这里进行最终设置
mUnityPlayer
.
windowFocusChanged
(
true
)
// mUnityPlayer.requestFocus()
}
// 可选:向 Unity 发送消息的方法
fun
sendMessageToUnity
(
gameObjectName
:
String
,
methodName
:
String
,
message
:
String
)
{
// mUnityPlayer?.sendMessage(gameObjectName, methodName, message)
// UnityPlayer.UnitySendMessage()
}
companion
object
{
@JvmStatic
fun
newInstance
()
=
UnityFragment
()
}
}
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/ui/fragment/WarnFragment.kt
View file @
83c86d2f
...
...
@@ -32,7 +32,7 @@ import kotlinx.coroutines.launch
//private const val ARG_PARAM2 = "param2"
/**
* 预警
* 预警
气泡
*/
@AndroidEntryPoint
class
WarnFragment
:
BaseFragment
<
FragmentWarnBinding
,
MyBaseViewModel
>()
{
...
...
app/src/main/java/com/sd/cavphmi/utils/DateUtils.kt
View file @
83c86d2f
...
...
@@ -5,8 +5,8 @@ import android.text.SpannableString
import
android.text.style.ForegroundColorSpan
import
android.text.style.RelativeSizeSpan
import
androidx.core.text.set
import
com.minedata.minenavi.addons.DistanceBean
import
com.minedata.minenavi.util.MineNaviUtil
//
import com.minedata.minenavi.addons.DistanceBean
//
import com.minedata.minenavi.util.MineNaviUtil
import
java.text.ParseException
import
java.text.SimpleDateFormat
import
java.time.LocalTime
...
...
@@ -54,7 +54,7 @@ object DateUtils {
* @param speed 米/秒
* @param dis 米
**/
fun
getExpectedTime
(
speed
:
Int
,
dis
:
Int
):
String
{
/*
fun getExpectedTime(speed: Int, dis: Int): String {
if (speed == 0 || dis == 0)
return "剩余0分"
var mUtils = Utils()
...
...
@@ -79,9 +79,9 @@ object DateUtils {
stringBuilder.append("预计").append(s_arriveTime).append("到达")
}
return stringBuilder.toString()
}
}
*/
fun
getExpectedTime
(
speed
:
Int
,
distanceBean
:
DistanceBean
):
String
{
/*
fun getExpectedTime(speed: Int, distanceBean: DistanceBean): String {
if (speed == 0 || distanceBean.distanceValue.toFloat() == 0f)
return "剩余0.0分"
var dis = 0//单位米
...
...
@@ -110,7 +110,7 @@ object DateUtils {
stringBuilder.append("预计").append(s_arriveTime).append("到达")
}
return stringBuilder.toString()
}
}
*/
/**
...
...
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