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

first

parent 0b4d4d4e
Pipeline #3217 failed with stages
in 0 seconds
{
"code": "1",
"msg": "执行成功",
"result": {
"vehicleId": "9",
"parkingPlaceId": "421",
"routes": [
{
"routeId": 1,
"origin": [
116.50254394816011,
39.809039362307594
],
"destination": [
116.50257504818846,
39.80900097735677
],
"gear": 3,
"polyline": [
[
116.50254394816011,
39.809039362307594,
0.5,
148.10218269263586
],
[
116.50254457016067,
39.80903859460858,
0.5,
148.10218229911192
],
[
116.50254519216124,
39.80903782690956,
0.5,
148.1021822250557
],
[
116.5025458141618,
39.80903705921054,
0.5,
148.10218183153174
],
[
116.50254643616238,
39.80903629151153,
0.5,
148.10218154449709
],
[
116.50254705816295,
39.80903552381251,
0.5,
148.10218115097314
],
[
116.50254768016352,
39.8090347561135,
0.5,
148.10218086393846
],
[
116.50254830216409,
39.809033988414484,
0.5,
148.10218194783928
],
[
116.50254892416464,
39.809033220715456,
0.5,
148.10217902542288
],
[
116.50254954616523,
39.80903245301645,
0.5,
148.10218126728074
],
[
116.50255016816578,
39.80903168531743,
0.5,
148.10218076726758
],
[
116.50255079016634,
39.809030917618415,
0.5,
148.10217964174365
],
[
116.50255141216691,
39.809030149919394,
0.5,
148.10217924821978
],
[
116.50255203416748,
39.80902938222038,
0.5,
148.10217885469592
],
[
116.50255265616805,
39.80902861452137,
0.5,
148.10217878063978
],
[
116.50255327816862,
39.809027846822346,
0.5,
148.10217943858373
],
[
116.50255390016918,
39.809027079123325,
0.5,
148.10217788710278
],
[
116.50255452216973,
39.80902631142431,
0.5,
148.1021780260252
],
[
116.50255514417032,
39.8090255437253,
0.5,
148.1021773130336
],
[
116.50255576617087,
39.80902477602628,
0.5,
148.1021772389775
],
[
116.50255638817144,
39.80902400832726,
0.5,
148.1021769519429
],
[
116.50255701017201,
39.80902324062825,
0.5,
148.10217677139758
],
[
116.5025576321726,
39.80902247292923,
0.5,
148.10217637787377
],
[
116.50255825417315,
39.809021705230215,
0.5,
148.10217598434994
],
[
116.50255887617372,
39.8090209375312,
0.5,
148.10217601678315
],
[
116.50255949817429,
39.80902016983218,
0.5,
148.10217635525942
],
[
116.50256012017485,
39.80901940213316,
0.5,
148.1021741782677
],
[
116.50256074217543,
39.80901863443415,
0.5,
148.10217620714738
],
[
116.50256136417599,
39.80901786673513,
0.5,
148.10217465566646
],
[
116.50256198617654,
39.80901709903611,
0.5,
148.10217426214265
],
[
116.50256260817713,
39.8090163313371,
0.5,
148.10217502657602
],
[
116.50256323017769,
39.809015563638084,
0.5,
148.10217400754144
],
[
116.50256385217826,
39.80901479593906,
0.5,
148.1021734010391
],
[
116.50256447417883,
39.80901402824005,
0.5,
148.10217300751535
],
[
116.50256509617938,
39.809013260541036,
0.5,
148.10217293345937
],
[
116.50256571817995,
39.809012492842015,
0.5,
148.10217264642492
],
[
116.50256634018052,
39.809011725143,
0.5,
148.1021734108583
],
[
116.50256696218108,
39.80901095744399,
0.5,
148.10217207235593
],
[
116.50256758418166,
39.80901018974497,
0.5,
148.10217210478928
],
[
116.50256820618223,
39.809009422045946,
0.5,
148.1021711788192
],
[
116.50256882818279,
39.80900865434693,
0.5,
148.10217121125254
],
[
116.50256945018336,
39.80900788664792,
0.5,
148.10217071123955
],
[
116.50257007218393,
39.809007118948905,
0.5,
148.10217127611924
],
[
116.50257069418448,
39.80900635124988,
0.5,
148.10217024365994
],
[
116.50257131618505,
39.809005583550864,
0.5,
148.10216995662552
],
[
116.50257193818562,
39.80900481585185,
0.5,
148.10216988256963
],
[
116.5025725601862,
39.80900404815283,
0.5,
148.10216948904593
],
[
116.50257318218677,
39.809003280453815,
0.5,
148.10216898903298
],
[
116.50257380418734,
39.8090025127548,
0.5,
148.10217017942364
],
[
116.50257442618789,
39.80900174505578,
0.5,
148.10216841496418
],
[
116.50257504818846,
39.80900097735677,
0.5,
148.10216841496418
]
]
},
{
"routeId": 2,
"origin": [
116.50257504818846,
39.80900097735677
],
"destination": [
116.5024625,
39.8090317
],
"gear": 1,
"polyline": [
[
116.50257504818846,
39.80900097735677,
0.5,
150.47794433755706
],
[
116.50257218918523,
39.80900485570903,
0.5,
154.27310728039356
],
[
116.5025697015945,
39.80900882155232,
0.5,
156.67295798187433
],
[
116.50256745223952,
39.80901282852125,
0.5,
157.8133738046629
],
[
116.50256532727003,
39.80901683117987,
0.5,
157.84012669821846
],
[
116.50256323087986,
39.80902078528453,
0.5,
156.88041033745833
],
[
116.50256108403372,
39.80902464804938,
0.5,
155.0349202584366
],
[
116.50255882320319,
39.80902837841471,
0.5,
152.37984099954474
],
[
116.50255639911234,
39.809031937318096,
0.5,
148.9730402515233
],
[
116.50255377549128,
39.80903528796794,
0.5,
144.86214711490197
],
[
116.50255092784093,
39.8090383961204,
0.5,
140.09356276594684
],
[
116.50254784220454,
39.80904123035833,
0.5,
134.7219998248488
],
[
116.50254451395082,
39.8090437623737,
0.5,
128.81951628621687
],
[
116.5025409465643,
39.80904596725211,
0.5,
122.48239643592717
],
[
116.50253715044603,
39.809047823760544,
0.5,
115.83350619337386
],
[
116.50253314172312,
39.80904931463762,
0.5,
109.01823320278112
],
[
116.50252894106745,
39.809050426886664,
0.5,
102.19391587555128
],
[
116.50252457252354,
39.80905115207155,
0.5,
95.5153521727076
],
[
116.50252006234572,
39.80905148661524,
0.5,
89.12084176468869
],
[
116.50251543784445,
39.80905143210117,
0.5,
83.12290608687363
],
[
116.50251072624177,
39.80905099557725,
0.5,
77.60560229976858
],
[
116.5025059535361,
39.80905018986276,
0.5,
72.62772394588927
],
[
116.50250114337594,
39.80904903385788,
0.5,
68.22973689932553
],
[
116.50249631594309,
39.80904755285604,
0.5,
64.44221270751927
],
[
116.50249148684485,
39.80904577885904,
0.5,
61.29429364132028
],
[
116.50248666601549,
39.8090437508948,
0.5,
58.821619453979906
],
[
116.50248185662682,
39.80904151533802,
0.5,
57.07376338261474
],
[
116.50247705400817,
39.809039126233515,
0.5,
56.12142584978807
],
[
116.50247224457523,
39.80903664562224,
0.5,
56.063314828195246
],
[
116.50246740476837,
39.8090341438702,
0.5,
57.03146193036804
],
[
116.5024625,
39.8090317,
0.5,
57.03146193036804
]
]
}
],
"points": null,
"execType": null,
"execTypeDesc": null,
"vehicleInfo": null,
"time": null,
"parkingPlace": null
}
}
\ No newline at end of file
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 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.
{"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}]}
[[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
1、【地图接口】SetTileInit()
目前程序内默认初始会调用"http://gz.tasks.city/3dtiles/4/Yizhuang_Unicom_Tree/tileset.json"这个链接下的地图
后续调用修改会先清除现有地图数据,重新加载新的地图数据。
2、【车辆位置更新接口】SetCarPosition()
目前,程序内修改了逻辑为根据发送频率自动判断车辆平滑插值时间(如:每1秒发送,则按照1秒平滑运动;每0.5秒发送,则按照0.5秒平滑运动)
目前运行卡顿可能是因为我们测试用的经纬度路径点排布不是很均匀。
3、【底部圆圈控制接口】SetCarBottomCircle()
目前仍为判断解析json格式参数 {"ison": true}
4、【雷达方向显示控制接口】SetCarRadarDirection()
目前仍为判断解析json格式参数 {"dirent":1}
5、【路径导航线 蓝色接口】SetCarNavPath()
目前问题较多,因不确定这个是不是按照固定频率来发送的,所有这边模拟调用暂时仅用了一条路径线,即发送过去是固定显示在地图上的。后续是否需要按特定频率更新或者移除线条,需再进一步确认修改
6、【感知物接口】SetPtcData()
目前效果逻辑为,每次接收到数据会先判断场景内是否有这条ID的感知物,若存在,则更新位置,若不存在,则创建对应类型感知物
目前按照以下这个逻辑来进行效果展示的 在单条数据中
{
isRed=true 车:变红 人:加红色方框
isRed=false 车:白色 人:不显示红色方框,显示白色
isFlash=true 车:闪烁(闪烁会默认变成红色)
isFlash=false 车:不闪烁(目前停止闪烁仍为红色,是否需要变成白色需再确定沟通)
aniTime 只作用于车(判断优先级比isFlash高,比如:若是5秒,则闪烁5秒后会停止闪烁,但仍为红色状态;若5秒内再次接收到这个id的感知物数据,会按照新的aniTIme重置闪烁时间。直到闪烁停止)
}
感知物车 可能的状态共计三种:白色、红色、红色闪烁
感知物人 可能的状态共计两种:白色、白色搭配红色方框
目前模拟测试仅用了两条数据,每条两个感知物一车一人;
7、【清除感知物接口】ClearAllPtcData()
这个因为是单独方法,不传参数也可以。效果会删除场景内所有感知物
8、【相机视角控制接口】SetCameraAngle()
直接传递float格式的数据即可,效果大致为在车辆正后方平滑调整相机俯视角度(以水平面为基准)
【程序右上角按钮均为开发测试阶段,为了方便模拟发送数据调试使用】
package com.sd.cavphmi;
public class Config {
public static String HOST = "minedata.cn";//证书校验,跟地图数据无关
public static String SCHEME = "https";//证书校验,跟地图数据无关
public static String MAP_TOK = "882391b74f344ec8b116305f2dd7340c";
public static String MAP_ID = "1022902036664512512";//白天
public static String MAP_NIGHT_TOK = "882391b74f344ec8b116305f2dd7340c";
public static String MAP_NIGHT_ID = "1022905981000577024";//黑夜
public static String MAP_BLUE_ID = "1022905736803942400";//极夜蓝
public static String BASE_URL = "https://service.minedata.cn/map/solu/style/";
public static String SATELLITE_URL = "http://218.2.231.245/mapjs2/rest/services/MapJS/js_yxdt_2016/MapServer/tile/{z}/{y}/{x}";//暂定
public static String OFFLINE_URL = "https://minedata.cn/lbsservice/mapdownload/datastore.json";//暂定
public static String OFFLINE_TOK = "882391b74f344ec8b116305f2dd7340c";//暂定
public static String API_BASE_URL = "https://sd-data.minedata.cn";
public static String API_DYNAMIC_DATA_URL = "https://service.minedata.cn";
public static String API_URL = "https://minemap.minedata.cn";
public static String API_VERSION = "v2.1.1";
//地图中心点
public static double mapCentrelat = 41.810246132876834;//41.80196;
public static double mapCentrelon = 123.4418114224643;//123.43326;
}
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 {
private lateinit var instance: MyAppcation
fun instance(): MyAppcation = instance
}
override fun onCreate() {
super.onCreate()
instance = this
AutoSizeConfig.getInstance().setLog(false)
val rootDir = MMKV.initialize(this)
// println("----MMKV root: " + rootDir)
}
}
\ No newline at end of file
package com.sd.cavphmi.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter4.BaseQuickAdapter
import com.sd.cavphmi.databinding.BindCarListBinding
class BindCarAdapter :
BaseQuickAdapter<String, BindCarAdapter.BcVh>() {
override fun onCreateViewHolder(
context: Context,
parent: ViewGroup,
viewType: Int
): BcVh {
return BcVh(parent)
}
override fun onBindViewHolder(
holder: BcVh,
position: Int,
item: String?
) {
holder.show(item!!)
}
inner class BcVh(
parent: ViewGroup,
val binding: BindCarListBinding = BindCarListBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
) : RecyclerView.ViewHolder(binding.root) {
private var tvPlate = binding.tvPlate
fun show(str: String) {
tvPlate.text = str
}
}
}
\ No newline at end of file
package com.sd.cavphmi.adapter
//import kotlinx.android.synthetic.main.poi_search_list_item.view.*
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter4.BaseQuickAdapter
import com.sd.cavphmi.bean.WarningBean
import com.sd.cavphmi.databinding.WarnListItemBinding
import javax.inject.Inject
/**
*预警适配器
*
*/
class WarnAdapter @Inject constructor() :
BaseQuickAdapter<WarningBean, WarnAdapter.WarnVH>() {
init {
// addChildClickViewIds(R.id.tv_fouc)
}
private var orientation = 0
fun setMyOrientation(orientation: Int) {
this.orientation = orientation
}
override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): WarnVH {
return WarnVH(parent)
}
override fun onBindViewHolder(
holder: WarnVH,
position: Int,
item: WarningBean?
) {
holder.show(item!!)
}
inner class WarnVH(
parent: ViewGroup,
val binding: WarnListItemBinding = WarnListItemBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
) : RecyclerView.ViewHolder(binding.root) {
private var roadWarn = binding.roadWarn
fun show(wb: WarningBean) {
roadWarn.setMyOrientation(orientation)
roadWarn.setWarnBean(wb)
}
fun setListener() {
// tv_fouc.clicks().throttleFirst(1, TimeUnit.SECONDS).subscribe {
// focusOn(layoutPosition)
// }
}
}
// override fun onBindViewHolder(holder: WarnVH, position: Int, item: WarnVH) {
// holder.show(item)
// }
}
\ No newline at end of file
package com.sd.cavphmi.base
import android.os.Bundle
import android.view.MenuItem
import android.view.View
import androidx.annotation.DrawableRes
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.sd.cavphmi.R
import com.sd.cavphmi.databinding.ActivityBaseBinding
import com.sd.cavphmi.net.NetLoadStatus
import com.sd.cavphmi.utils.ToastHelper
//import com.gyf.immersionbar.ImmersionBar
abstract class BaseActivity<Bind : ViewDataBinding, VM : MyBaseViewModel> : AppCompatActivity(),
IBinding<VM> {
protected lateinit var viewModel: VM
protected lateinit var binding: Bind
private lateinit var baseBind: ActivityBaseBinding
// private val loadDialogFragment by lazy { LoadDialogFragment.newInstance() }
// private var loadDialogFragment: LoadDialogFragment? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
initDataBinding()
baseBind =
DataBindingUtil.setContentView(this, R.layout.activity_base)
setContentView(baseBind.root)
setSupportActionBar(baseBind.toolbar)
baseBind.toolbar.visibility = View.GONE
supportActionBar?.run {
setDisplayShowTitleEnabled(false)
setDisplayHomeAsUpEnabled(true)
// setHomeAsUpIndicator()
}
baseBind.rootLayout.addView(binding.root)
baseBind.toolbarTitle.text = title.toString()
// viewModel.owner=this
initView()
initStatuBar()
setListener()
// requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
initListener()
getToData()
}
// private lateinit var bar: ImmersionBar
/**
* 初始化状态栏
*/
private fun initStatuBar() {
// var color = getStatuBarColor()
// if (color == -1) {
//
// } else {
// bar = ImmersionBar.with(this)
// .fitsSystemWindows(true)
// .statusBarColor(color)
// .autoStatusBarDarkModeEnable(isAutoStatusBarDarkModeEnable())
// bar.init()
// }
}
abstract fun getStatuBarColor(): Int
open fun isAutoStatusBarDarkModeEnable(): Boolean {
return true
}
private fun initDataBinding() {
binding = DataBindingUtil.setContentView(this, initContentView())
viewModel = initViewModel()
if (viewModel == null) {
viewModel = ViewModelProvider(this).get(MyBaseViewModel::class.java) as VM
}
binding.setVariable(initVariableId(), viewModel)
}
private fun setListener() {
viewModel.loadStatu.observe(this, Observer { t: NetLoadStatus ->
when (t) {
NetLoadStatus.LOADING -> loading()
NetLoadStatus.SUCCESS -> success()
NetLoadStatus.ERROR -> onError(t.getErrorMsg())
NetLoadStatus.TOAST -> onToast(t.getToastMsg())
NetLoadStatus.COMPLETE -> complete()
NetLoadStatus.EMPTY -> empty()
NetLoadStatus.NOMOREDATA -> noMoreData()
NetLoadStatus.LOGINTIMEOUT -> loginTimeOut()
}
})
}
fun setTootBarTitle(title: String) {
baseBind.toolbarTitle.text = title
}
fun setTootBarTitleColor(color: Int) {
baseBind.toolbarTitle.setTextColor(ContextCompat.getColor(this, color))
}
/**
* 设置头的颜色
*/
fun setToorbarColor(toolbar: Int) {
baseBind.toolbar.setBackgroundResource(toolbar)
}
/**
*设置返回箭头
*/
fun setBackImg(@DrawableRes resId: Int) {
supportActionBar?.setHomeAsUpIndicator(resId)
}
abstract fun initView()
open fun initListener() {
}
open fun getToData() {
}
open fun loading() {
// loadDialogFragment = LoadDialogFragment.newInstance()
// loadDialogFragment?.show(supportFragmentManager, "")
}
open fun success() {
// loadDialogFragment?.dismiss()
}
open fun complete() {
// loadDialogFragment?.dismiss()
}
open fun onError(msg: String) {
// loadDialogFragment?.dismiss()
ToastHelper.showShort(this, msg)
}
open fun onToast(msg: String) {
ToastHelper.showShort(this, msg)
}
open fun empty() {
}
open fun noMoreData() {
}
open fun loginTimeOut() {
// println("-------------BaseActivity.loginTimeOut")
ToastHelper.showShort(this, "登录超时")
// startActivity(Intent(this, LoginActivity::class.java).apply {
// putExtra(MyContants.IS_LOGIN_TIMEOUT, true)
// })
}
protected fun hideToolBar() {
baseBind.toolbar.visibility = View.GONE
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> {
finish()
return true
}
else -> {
return onClickOptions(item)
}
}
return super.onOptionsItemSelected(item)
}
open fun onClickOptions(item: MenuItem): Boolean {
return super.onOptionsItemSelected(item)
}
// fun jumpActivity(cls: Class<Activity>,parameMap:Map<String,String>) {
// var intent = Intent(this, cls)
// for ((k,v) in parameMap){
// intent.putExtra(k,v)
// }
// }
}
\ No newline at end of file
package com.sd.cavphmi.base
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import com.sd.cavphmi.utils.SystemUtils
open class BaseDialogFrament : DialogFragment() {
override fun onStart() {
super.onStart()
// var window = dialog?.window
// window?.setBackgroundDrawableResource(R.color.trans)
// setWidth()
}
/**
* 设置对话款高度
*/
fun setWidth(widthPer: Float = 0.8f) {
var dialogWidth = SystemUtils.getScreenWidth().times(widthPer).toInt()
dialog?.window?.setLayout(dialogWidth, ViewGroup.LayoutParams.WRAP_CONTENT)
}
}
\ No newline at end of file
package com.sd.cavphmi.base
import android.app.ProgressDialog
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.annotation.OptIn
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.media3.common.util.UnstableApi
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory
import androidx.media3.exoplayer.source.MediaSource
import com.sd.cavphmi.net.NetLoadStatus
import com.sd.cavphmi.utils.ToastHelper
//import com.gyf.immersionbar.ImmersionBar
//import com.gyf.immersionbar.components.ImmersionFragment
open abstract class BaseFragment<Bind : ViewDataBinding, VM : MyBaseViewModel> :
Fragment(),
IBinding<VM> {
protected lateinit var viewModel: VM
protected lateinit var binding: Bind
// private var loadDialogFragment: LoadDialogFragment? = null
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
initDataBinding(container)
return binding.root
}
// override fun initImmersionBar() {
// initStatuBar()
// }
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
setListener()
initView()
initListener()
getToData()
}
private fun initDataBinding(viewGroup: ViewGroup?) {
binding = DataBindingUtil.inflate(layoutInflater, initContentView(), viewGroup, false)
viewModel = initViewModel()
binding.setVariable(initVariableId(), viewModel)
}
// private lateinit var bar: ImmersionBar
/**
* 初始化状态栏
*/
// private fun initStatuBar() {
// var color = getStatuBarColor()
// if (color == -1) {
//
// } else {
// bar = ImmersionBar.with(this)
// .fitsSystemWindows(true)
// .statusBarColor(color)
// .autoStatusBarDarkModeEnable(isAutoStatusBarDarkModeEnable())
// bar.init()
// }
//
// }
abstract fun getStatuBarColor(): Int
open fun isAutoStatusBarDarkModeEnable(): Boolean {
return true
}
abstract fun initView()
private fun setListener() {
viewModel.loadStatu.observe(viewLifecycleOwner, Observer { t: NetLoadStatus ->
netLoad(t)
})
}
private fun netLoad(t: NetLoadStatus) {
when (t) {
NetLoadStatus.LOADING -> loading()
NetLoadStatus.SUCCESS -> success()
NetLoadStatus.ERROR -> onerror(t.getErrorMsg())
NetLoadStatus.TOAST -> onToast(t.getToastMsg())
NetLoadStatus.COMPLETE -> complete()
NetLoadStatus.EMPTY -> empty()
NetLoadStatus.LOGINTIMEOUT -> loginOutTime()
NetLoadStatus.NOMOREDATA -> TODO()
}
}
open fun initListener() {
}
open fun getToData() {
}
open fun loading() {
// loadDialogFragment?.dismiss()
// loadDialogFragment = LoadDialogFragment.newInstance("")
// loadDialogFragment?.show(childFragmentManager, "")
}
open fun success() {
// loadDialogFragment?.dismiss()
}
open fun onerror(msg: String) {
// loadDialogFragment?.dismiss()
if (!msg.isNullOrEmpty()) {
// ToastHelper.showShort(requireContext(), msg)
}
}
open fun onToast(msg: String) {
// ToastHelper.showShort(requireContext(), msg)
}
open fun complete() {
// loadDialogFragment?.dismiss()
}
open fun empty() {
}
open fun loginOutTime() {
// LogUtil.e("----------------登录超时")
ToastHelper.showShort(requireContext(), "登录超时")
// startActivity(Intent(context, LoginActivity::class.java).apply {
// putExtra(MyContants.IS_LOGIN_TIMEOUT, true)
// })
}
fun setOtherViewModel(viewModel: OtherBaseViewModel) {
viewModel.loadStatu.observe(viewLifecycleOwner, {
netLoad(it)
})
}
// fun setThridViewModel(viewModel: MyBaseViewModel) {
// viewModel.loadStatu.observe(this, {
// netLoad(it)
// })
// }
private var myDialog: ProgressDialog? = null
/**
* 加载等待
*/
fun showProgressDialog(tip:String="正在加载") {
myDialog = ProgressDialog(requireContext())
myDialog!!.setProgressStyle(ProgressDialog.STYLE_SPINNER)
myDialog!!.setMessage(tip)
myDialog!!.setIndeterminate(false)
myDialog!!.setCancelable(true)
myDialog!!.show()
}
fun disDiaLog() {
myDialog?.dismiss()
}
@OptIn(UnstableApi::class)
fun createMediaSourceFactory(): MediaSource.Factory{
return DefaultMediaSourceFactory(requireContext()).setLiveTargetOffsetMs(5000L)
}
}
\ No newline at end of file
package com.sd.cavphmi.base
interface IBinding<VM : MyBaseViewModel> {
/**
* 当期视图
*/
fun initContentView(): Int
/**
* 当期ViewModel 类型
*/
fun initViewModel(): VM
/**
* 初始化ViewModel的id
*
* @return layout 里BR的id
*/
fun initVariableId(): Int
}
\ No newline at end of file
package com.sd.cavphmi.base
//import javax.inject.Inject
open class MyBaseRepository {
// constructor()
// constructor(var onDataCallback: OnDataCallback<*>) : this()
// @Inject lateinit var onDataCallback: OnDataCallback<Any>
//
// init {
// this.onDataCallback = onDataCallback
// }
}
\ 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