ARSession
ARSessio的属性及其实例方法
//ARSession类在设备上配置并运行不同的增强现实技术。
API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(macos, watchos, tvos)
@interface ARSession : NSObject
//用于接收ARSession更新的代表。代理属性
@property (nonatomic, weak) id <ARSessionDelegate> delegate;
/**
执行委托调用的调度队列。
@discussion如果没有提供或没有,将在主队列上执行委托呼叫。
*/
@property (nonatomic, strong, nullable) dispatch_queue_t delegateQueue;
/**
会话的当前帧。
*/
@property (nonatomic, copy, nullable, readonly) ARFrame *currentFrame;
//会话正在使用的ARConfiguration。
@property (nonatomic, copy, nullable, readonly) ARConfiguration *configuration;
/**
使用提供的配置运行会话。
@discussion在已经开始的会话上调用运行
过渡到立即使用新的配置。
@param配置要使用的配置。
*/
- (void)runWithConfiguration:(ARConfiguration *)configuration NS_SWIFT_UNAVAILABLE("Use run(_:options:) instead");
/**
使用提供的配置和选项运行会话。
@discussion在已经开始的会话上调用运行过渡到立即使用新的配置。选项可用于在转换配置时更改默认行为。
@param配置要使用的配置。
@param选项要使用的运行选项。
*/
- (void)runWithConfiguration:(ARConfiguration *)configuration options:(ARSessionRunOptions)options NS_SWIFT_NAME(run(_:options:));
/**
暂停会话
@discussion一旦暂停,将不会收到更多的更新
会话直到再次调用。
*/
- (void)pause;
/**
在会话中添加一个锚点。
@discussion锚将被添加到下一帧更新中。
@param anchor要添加的锚点。
*/
- (void)addAnchor:(ARAnchor *)anchor NS_SWIFT_NAME(add(anchor:));
/**
从会话中删除一个锚点。
@discussion锚将从后续的帧更新中删除。
@param anchor要移除的锚点。
*/
- (void)removeAnchor:(ARAnchor *)anchor NS_SWIFT_NAME(remove(anchor:));
ARSession观察者协议方法
/**
会话失败时调用。
@discussion失败时,会话将暂停。
@param session失败的会话。
@param错误正在报告的错误(请参阅ARError.h)
*/
- (void)session:(ARSession *)session didFailWithError:(NSError *)error;
/**
当相机的跟踪状态发生变化时,会调用此功能。
@param session正在运行的会话。
@param相机更改跟踪状态的相机。
*/
- (void)session:(ARSession *)session cameraDidChangeTrackingState:(ARCamera *)camera;
/**
当会话中断时调用此方法。
@discussion会话将被中断,不再能跟踪什么时候
它无法接收所需的传感器数据。 当视频捕获中断时,
例如当应用程序被发送到后台或当有的时候
多个前台应用程序(请参阅AVCaptureSessionInterruptReason)。
在中断结束之前,不会传送额外的帧更新。
@param session中断的会话。
*/
- (void)sessionWasInterrupted:(ARSession *)session;
/**
当会话中断结束时调用。
@discussion会话将从最后一次已知的状态继续运行一次
中断已经结束。 如果设备移动,锚点将不对齐。
为避免这种情况,一些应用程序可能想要重置跟踪(请参阅ARSessionRunOptions)。
@param session中断的会话。
*/
- (void)sessionInterruptionEnded:(ARSession *)session;
/**
当会话输出新的音频采样缓冲区时,这被称为。
@param session正在运行的会话。
@param audioSampleBuffer捕获的音频采样缓冲区。
*/
- (void)session:(ARSession *)session didOutputAudioSampleBuffer:(CMSampleBufferRef)audioSampleBuffer;
@end
ARSessionDelegate 代理方法
/**
当新的帧被更新时调用。
@param session正在运行的会话。
@param frame已更新的框架。
*/
- (void)session:(ARSession *)session didUpdateFrame:(ARFrame *)frame;
/**
当新的锚点被添加到会话时,这被称为。
@param session正在运行的会话。
@param anchors一个添加的锚的数组。
*/
- (void)session:(ARSession *)session didAddAnchors:(NSArray<ARAnchor*>*)anchors;
/**
当锚更新时调用。
@param session正在运行的会话。
@param anchors一组更新的锚点。
*/
- (void)session:(ARSession *)session didUpdateAnchors:(NSArray<ARAnchor*>*)anchors;
/**
当从会话中删除锚时,会调用此方法。
@param session正在运行的会话。
@param anchors已删除的锚点的数组。
*/
- (void)session:(ARSession *)session didRemoveAnchors:(NSArray<ARAnchor*>*)anchors;