CrLinkVM.kt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package com.cr.viewmodel
  2. import androidx.lifecycle.MutableLiveData
  3. import com.cr.common.CrLinkInfo
  4. import com.cr.cruav.R
  5. import com.cr.data.CrUtil
  6. import com.cr.data.DEFAULT_STR
  7. import dji.sdk.keyvalue.key.AirLinkKey
  8. import dji.sdk.keyvalue.value.airlink.FrequencyBand
  9. import dji.v5.et.create
  10. import dji.v5.et.listen
  11. import dji.v5.utils.common.ContextUtil
  12. import dji.v5.utils.common.StringUtils
  13. /**
  14. * 操作系统:MAC系统
  15. * 创建者:王成
  16. * 创建日期:2023/3/14 16:24
  17. * 描述:链路模型
  18. */
  19. class CrLinkVM :CrViewModel(){
  20. var linkInfo = MutableLiveData<CrLinkInfo>()
  21. /**
  22. * 初始化
  23. */
  24. init {
  25. linkInfo.postValue(CrLinkInfo(false))
  26. linkInfo.value?.signalQuality = 0
  27. linkInfo.value?.frequencyBand = DEFAULT_STR
  28. }
  29. // todo: 2023/3/14 初始化监听
  30. override fun initListener() {
  31. // todo: 2023/3/14 链路链接监听
  32. AirLinkKey.KeyConnection.create().listen(this){
  33. it?.let {
  34. if(it){
  35. linkInfo.value?.isConnection = true
  36. }else{
  37. CrUtil.print("链路信息重置")
  38. reset()
  39. }
  40. refresh(linkInfo)
  41. }
  42. }
  43. // todo: 2023/3/14 链路信号质量监听
  44. AirLinkKey.KeyLinkSignalQuality.create().listen(this){
  45. it?.let {
  46. linkInfo.value?.signalQuality = it*10
  47. CrUtil.print("链路质量" + linkInfo.value?.signalQuality)
  48. refresh(linkInfo)
  49. }
  50. }
  51. // todo: 2023/3/14 工作频段监听
  52. AirLinkKey.KeyFrequencyBand.create().listen(this){
  53. it?.let {
  54. when(it){
  55. FrequencyBand.BAND_DUAL->
  56. linkInfo.value?.frequencyBand = StringUtils.getResStr(ContextUtil.getContext(),
  57. R.string.value_link_frequency_band_dual)
  58. FrequencyBand.BAND_2_DOT_4G->
  59. linkInfo.value?.frequencyBand = StringUtils.getResStr(ContextUtil.getContext(),
  60. R.string.value_link_frequency_band_24)
  61. FrequencyBand.BAND_1_DOT_4G->
  62. linkInfo.value?.frequencyBand = StringUtils.getResStr(ContextUtil.getContext(),
  63. R.string.value_link_frequency_band_14)
  64. FrequencyBand.BAND_5_DOT_7G->
  65. linkInfo.value?.frequencyBand = StringUtils.getResStr(ContextUtil.getContext(),
  66. R.string.value_link_frequency_band_57)
  67. FrequencyBand.BAND_5_DOT_8G->
  68. linkInfo.value?.frequencyBand = StringUtils.getResStr(ContextUtil.getContext(),
  69. R.string.value_link_frequency_band_58)
  70. FrequencyBand.BAND_5_DOT_2G->
  71. linkInfo.value?.frequencyBand = StringUtils.getResStr(ContextUtil.getContext(),
  72. R.string.value_link_frequency_band_52)
  73. else->
  74. linkInfo.value?.frequencyBand = StringUtils.getResStr(ContextUtil.getContext(),
  75. R.string.cr_string_default_value)
  76. }
  77. refresh(linkInfo)
  78. }
  79. }
  80. }
  81. /**
  82. * 覆写重置
  83. */
  84. override fun reset() {
  85. linkInfo.value?.isConnection = false
  86. linkInfo.value?.signalQuality = 0
  87. linkInfo.value?.frequencyBand = DEFAULT_STR
  88. refresh(linkInfo)
  89. }
  90. }