是否有办法通过委托或事件侦听器在dji-sdk中针对目标c侦听图像尺寸/纵横比的变化?
我的情况是,当通过DUXCameraSettingsController或运行dji go应用程序的辅助遥控器更改了宽高比时,我找不到适应视频供稿的当前视口的功能。
我正在使用DJI-SDK-iOS 4.6.1,DJI-UXSDK-iOS 4.6.0和Mavic Pro无人机。
答案 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];
让我知道这是否有帮助!