1、DJI key是什么;
DJI Key是MSDK内部的一种机制,通过key和callback的组合实现一些更基础的控制功能。
MSDK的部分API方法是对DJI Key进行了上层封装,使其功能更加多样化,也更加方便开发者使用。
2、KeyManage类介绍
KeyManage分为这几个部分:DJIKey类、成员函数、Callback类。下面将分别介绍。
2.1 DJIKey
DJIKey应该是所有Key类的基类,它底下有很多的子类,例如BatteryKey。每个子类下面又有很多的成员,这些成员是一些特定的标识,而通过这些标识来实现具体的功能,例如BatteryKey下的VOLTAGE,就是用来获取电池电压的key。
在官方的文档中,每一个标识都有一个Access参数。它是跟KeyManage中的方法对应的,例如“GET”就表示这个key是gettable,即可以用getValue调用。
2.2 成员函数
getValue用来获取值,key参数必须是gettable的。setValue用来设置值,key参数必须是settable的。addListener用来监听参数变化。
2.3 Callback类
主要是成员函数中需要用到的callback参数。
3、用法介绍
示例代码已经有提供详细的示例了。大致的过程如下:
3.1 创建一个key;
3.2 创建一个Callback 函数;
3.3 调用getValue\setValue\addListener方法,将上面的参数传给该方法。
4、小技巧
4.1 接口存在Bug时不妨试试直接调用key来控制。
在MSDK 4.12版本上调用getRTKEnable()会出现没办法获得回调的问题。虽然它已经确定是bug,后续版本会修复。如果项目紧急,这个问题可以通过直接调用key来解决,也算是可以在关键时刻解燃眉之急。
4.2 使用key可以实现的功能更多。
随便举个例子,MSDK提供的API中没有设置飞机名称的方法。但是FlightcontrollerKey里面有AIRCRAFT_NAME的Key,因此就可以调用这个key给飞机命名,对不同飞机进行标识。
4.3 使用key,获取数据更加灵活。
使用key获取数据有
同步方法:@Nullable Object getValue(@NonNull DJIKey key)
异步方法:void getValue(@NonNull DJIKey key, @NonNull final GetCallback callback)
监听方法:void addListener(@NonNull DJIKey key, @NonNull final KeyListener listener)
MSDK提供的API接口往往只有一种默认方法。笔者之前想实时获取相机的焦距,但是API接口只提供了一个get方法,即调用一次获取一次焦距值。笔者此时想到可以通过调用key来解决这个问题。
在API页面也很容易查到API接口对应的key。
把这个key的获取方式改为监听
然后
评论
0 条评论
请登录写评论。