CrKeyManager.kt 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package com.cr.common
  2. import dji.sdk.keyvalue.key.DJIActionKeyInfo
  3. import dji.sdk.keyvalue.key.DJIKey
  4. import dji.sdk.keyvalue.key.DJIKey.ActionKey
  5. import dji.sdk.keyvalue.key.DJIKeyInfo
  6. import dji.sdk.keyvalue.key.KeyTools
  7. import dji.sdk.keyvalue.value.common.EmptyMsg
  8. import dji.v5.common.callback.CommonCallbacks
  9. import dji.v5.common.error.IDJIError
  10. import dji.v5.manager.KeyManager
  11. /**
  12. * 操作系统:MAC系统
  13. * 创建者:王成
  14. * 创建日期:2023/8/5 08:51
  15. * 描述:大疆动作或参数执行管理
  16. */
  17. class CrKeyManager {
  18. /**
  19. * 完成回调
  20. */
  21. interface ICompletion<T> {
  22. /**
  23. * 成功回调
  24. */
  25. fun onSuccess(t:T)
  26. /**
  27. * 错误回调
  28. * @param error String 错误消息
  29. */
  30. fun onFailure(error: String)
  31. }
  32. /**
  33. * 静态方法
  34. */
  35. companion object {
  36. /**
  37. * 执行不带参的动作
  38. * @param keyInfo DJIActionKeyInfo<P, R>
  39. * @param callback ICompletion?
  40. */
  41. fun <P,R> performAction(keyInfo:DJIActionKeyInfo<P,R>, callback: ICompletion<R>?) {
  42. var key:ActionKey<P,R> = KeyTools.createKey(keyInfo)
  43. KeyManager.getInstance().performAction(key,
  44. object : CommonCallbacks.CompletionCallbackWithParam<R> {
  45. // todo: 2023/8/5 执行成功
  46. override fun onSuccess(t: R) {
  47. callback?.let {
  48. it.onSuccess(t)
  49. }
  50. }
  51. // todo: 2023/8/5 执行错误
  52. override fun onFailure(error: IDJIError) {
  53. callback?.let {
  54. it.onFailure(error.description())
  55. }
  56. }
  57. })
  58. }
  59. /**
  60. * 设置参数
  61. * @param keyInfo DJIKeyInfo<P> DJI KEY
  62. * @param param P 参数
  63. * @param callback ICompletion<String>? 回调
  64. */
  65. fun <P> setValue(keyInfo:DJIKeyInfo<P>,param:P,callback:ICompletion<String>?){
  66. // todo: 2023/8/5 创建Key
  67. var key = KeyTools.createKey(keyInfo)
  68. // todo: 2023/8/5 设置参数
  69. KeyManager.getInstance().setValue(key,param,object:CommonCallbacks.CompletionCallback{
  70. // todo: 2023/8/5 设置成功
  71. override fun onSuccess() {
  72. callback?.let {
  73. it.onSuccess("成功")
  74. }
  75. }
  76. // todo: 2023/8/5 设置失败
  77. override fun onFailure(error: IDJIError) {
  78. callback?.let {
  79. it.onFailure(error.description())
  80. }
  81. }
  82. })
  83. }
  84. /**
  85. * 异步从硬件获取参数
  86. * @param keyInfo DJIKeyInfo<P> DJI KEY
  87. * @param callback ICompletion<P>? 回调
  88. */
  89. fun <P> getValue(keyInfo:DJIKeyInfo<P>,callback:ICompletion<P>?){
  90. var key = KeyTools.createKey(keyInfo)
  91. KeyManager.getInstance().getValue(key,object:CommonCallbacks.CompletionCallbackWithParam<P>{
  92. // todo: 2023/8/5 获取成功
  93. override fun onSuccess(t: P) {
  94. callback?.let {
  95. it.onSuccess(t)
  96. }
  97. }
  98. // todo: 2023/8/5 获取失败
  99. override fun onFailure(error: IDJIError) {
  100. callback?.let {
  101. it.onFailure(error.description())
  102. }
  103. }
  104. })
  105. }
  106. }
  107. }