有没有办法听DJI SDK中的宽高比变化?

时间:2018-08-10 09:07:38

标签: dji-sdk

是否有办法通过委托或事件侦听器在dji-sdk中针对目标c侦听图像尺寸/纵横比的变化?

我的情况是,当通过DUXCameraSettingsController或运行dji go应用程序的辅助遥控器更改了宽高比时,我找不到适应视频供稿的当前视口的功能。

我正在使用DJI-SDK-iOS 4.6.1,DJI-UXSDK-iOS 4.6.0和Mavic Pro无人机。

1 个答案:

答案 0 :(得分:3)

您可以通过几种不同的方式收听长宽比更改的事件。纯粹使用SDK的第一种方法是执行以下操作:

1。)我们创建了我们想听的钥匙。

DJIFlightControllerKey *aspectRatioKey = [DJICameraKey keyWithParam:DJICameraParamPhotoAspectRatio];

2。)从那里,我们在这样的键上注册一个侦听器:

[[DJISDKManager keyManager] startListeningForChangesOnKey: aspectRatioKey withListener:self andUpdateBlock:^(DJIKeyedValue * _Nullable oldValue, DJIKeyedValue * _Nullable newValue) { }];

3。)您可以使用以下方法在更新块中获得新的长宽比:(DJICameraPhotoAspectRatio)newValue.unsignedIntegerValue

关于此方法的一件事要注意的是,在更新之前,它不会返回AspectRatio的当前值,因此,如果需要当前值,则需要在此之前立即执行getValueForKey。

第二种方法使用在UXSDK DUXObjectProtocol中声明的协议,并且还将立即以及在密钥更新时返回密钥的当前值。

1。)让您要接收更新的类符合DUXObjectProtocol。

2。)在实现中,您现在必须实现2种方法:

- (nonnull NSArray <__kindof DJIKey *> *)dependentKeys

- (void)transformValue:(nonnull DUXSDKModelValue *)value forKey:(nonnull __kindof DJIKey *)key;

3。)在DependedKeys内部,您返回要更新的任何键的数组,因此您可以返回:

return @[[DJICameraKey keyWithParam:DJICameraParamPhotoAspectRatio]];

4。)在transformValue:ForKey内:当它更新时,您可以获取AspectRatio的值,如下所示:

if ([key.param isEqualToString: DJICameraParamPhotoAspectRatio]) {
    self.aspectRatio = (DJICameraPhotoAspectRatio)[value unsignedIntegerValue];
}

5。)(可选)您还可以实现- (void)update方法。在调用了transform值之后将调用此方法,因此您可以在此处编写逻辑来更新用户界面或其他任何内容。

6。)最后要做的是在符合您需要调用的DUXObjectProtocol的类的初始值设定项内:

[[DUXSDKModel defaultSDKModel] registerDependentKeys:[self dependentKeys] forObject:self];

以及dealloc调用内:

[[DUXSDKModel defaultSDKModel] unregisterDependentKeysForObject:self];

让我知道这是否有帮助!