package com.casic.smarttube.view import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult import com.amap.api.services.geocoder.GeocodeSearch import com.amap.api.services.geocoder.RegeocodeQuery import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.utils.DialogHelper import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_device_detail.* import kotlinx.android.synthetic.main.include_base_title.* class DeviceDetailActivity : KotlinBaseActivity() { private lateinit var deviceViewModel: DeviceViewModel private val geocoderSearch by lazy { GeocodeSearch(this) } override fun initLayoutView(): Int = R.layout.activity_device_detail override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) titleView.text = "设备详情" leftBackView.setOnClickListener { finish() } } override fun initData() { val tubeId = intent.getStringExtra(Constant.INTENT_PARAM)!! deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) deviceViewModel.obtainDeviceDetail(tubeId) deviceViewModel.deviceDetailModel.observe(this, { if (it.code == 200) { val device = it.data deviceCodeView.text = device.devcode deviceNameView.text = device.deviceName projectGroupView.text = String.format("项目${device.groupId}") if (device.latGaode.isBlank() || device.lngGaode.isBlank()) { locationView.text = "经纬度异常,无法查看具体位置" } else { val queryParam = RegeocodeQuery( LatLonPoint(device.latGaode.toDouble(), device.lngGaode.toDouble()), 200f, GeocodeSearch.AMAP ) geocoderSearch.getFromLocationAsyn(queryParam) geocoderSearch.setOnGeocodeSearchListener(object : GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { locationView.text = result?.regeocodeAddress?.formatAddress } } override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { } }) } densityView.text = device.stregnth lastDataView.text = device.uptime deviceStateView.text = if (device.onlineState == "0") { "离线" } else { "在线" } deviceRsrpView.text = device.rsrp deviceBatteryView.text = device.cell } }) deviceViewModel.loadState.observe(this, { when (it) { LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中...") else -> DialogHelper.dismissLoadingDialog() } }) } override fun initEvent() { } }