Table of Contents

Class MegaGoTracker

命名空间
easyar

提供设备端定位功能。 MegaGoTracker 占用 2 个相机缓冲区。

MegaGoTracker

方法

isAvailable

检查组件是否可用。在 Android 上要求 API Level 24 或更高;所有平台均需满足必要的运行时依赖。

bool easyar_MegaGoTracker_isAvailable(void)
static bool isAvailable()
public static boolean isAvailable()
companion object fun isAvailable(): Boolean
+ (bool)isAvailable
public static func isAvailable() -> Bool
public static bool isAvailable()

返回

类型 描述
Boolean

inputFrameSink

输入帧输入端口。输入帧必须包含图像、相机参数和时间戳。6DoF 空间信息必须包含 cameraTransform 和 trackingStatus。参考 InputFrameSink

void easyar_MegaGoTracker_inputFrameSink(easyar_MegaGoTracker * This, easyar_InputFrameSink * * Return)
std::shared_ptr<InputFrameSink> inputFrameSink()
public @Nonnull InputFrameSink inputFrameSink()
fun inputFrameSink(): InputFrameSink
- (easyar_InputFrameSink *)inputFrameSink
public func inputFrameSink() -> InputFrameSink
public virtual InputFrameSink inputFrameSink()

返回

类型 描述
InputFrameSink

accelerometerResultSink

加速度计结果输入端口。参考 AccelerometerResultSink

void easyar_MegaGoTracker_accelerometerResultSink(easyar_MegaGoTracker * This, easyar_AccelerometerResultSink * * Return)
std::shared_ptr<AccelerometerResultSink> accelerometerResultSink()
public @Nonnull AccelerometerResultSink accelerometerResultSink()
fun accelerometerResultSink(): AccelerometerResultSink
- (easyar_AccelerometerResultSink *)accelerometerResultSink
public func accelerometerResultSink() -> AccelerometerResultSink
public virtual AccelerometerResultSink accelerometerResultSink()

返回

类型 描述
AccelerometerResultSink

bufferRequirement

当前组件占用的相机缓冲区数量。

int easyar_MegaGoTracker_bufferRequirement(const easyar_MegaGoTracker * This)
int bufferRequirement()
public int bufferRequirement()
fun bufferRequirement(): Int
- (int)bufferRequirement
public func bufferRequirement() -> Int32
public virtual int bufferRequirement()

返回

类型 描述
Int32

outputFrameSource

输出帧输出端口。参考 OutputFrameSource

void easyar_MegaGoTracker_outputFrameSource(easyar_MegaGoTracker * This, easyar_OutputFrameSource * * Return)
std::shared_ptr<OutputFrameSource> outputFrameSource()
public @Nonnull OutputFrameSource outputFrameSource()
fun outputFrameSource(): OutputFrameSource
- (easyar_OutputFrameSource *)outputFrameSource
public func outputFrameSource() -> OutputFrameSource
public virtual OutputFrameSource outputFrameSource()

返回

类型 描述
OutputFrameSource

create

创建实例。

void easyar_MegaGoTracker_create(easyar_MegaGoTracker * * Return)
static std::shared_ptr<MegaGoTracker> create()
public static @Nonnull MegaGoTracker create()
companion object fun create(): MegaGoTracker
+ (easyar_MegaGoTracker *)create
public static func create() throws -> MegaGoTracker
public static MegaGoTracker create()

返回

类型 描述
MegaGoTracker

extractBlockInfoFromFile

从地图文件中提取 block 信息。

void easyar_MegaGoTracker_extractBlockInfoFromFile(easyar_String * path, easyar_OptionalOfMegaGoBlockInfo * Return)
static std::optional<std::shared_ptr<MegaGoBlockInfo>> extractBlockInfoFromFile(std::string path)
public static @Nullable MegaGoBlockInfo extractBlockInfoFromFile(java.lang.@Nonnull String path)
companion object fun extractBlockInfoFromFile(path: String): MegaGoBlockInfo?
+ (easyar_MegaGoBlockInfo *)extractBlockInfoFromFile:(NSString *)path
public static func extractBlockInfoFromFile(_ path: String) -> MegaGoBlockInfo?
public static Optional<MegaGoBlockInfo> extractBlockInfoFromFile(string path)

参数

名称 类型 描述
path String

返回

类型 描述
Optional<MegaGoBlockInfo>

extractBlockInfoFromBuffer

从地图内存数据中提取 block 信息。

void easyar_MegaGoTracker_extractBlockInfoFromBuffer(easyar_Buffer * buffer, easyar_OptionalOfMegaGoBlockInfo * Return)
static std::optional<std::shared_ptr<MegaGoBlockInfo>> extractBlockInfoFromBuffer(std::shared_ptr<Buffer> buffer)
public static @Nullable MegaGoBlockInfo extractBlockInfoFromBuffer(@Nonnull Buffer buffer)
companion object fun extractBlockInfoFromBuffer(buffer: Buffer): MegaGoBlockInfo?
+ (easyar_MegaGoBlockInfo *)extractBlockInfoFromBuffer:(easyar_Buffer *)buffer
public static func extractBlockInfoFromBuffer(_ buffer: Buffer) -> MegaGoBlockInfo?
public static Optional<MegaGoBlockInfo> extractBlockInfoFromBuffer(Buffer buffer)

参数

名称 类型 描述
buffer Buffer

返回

类型 描述
Optional<MegaGoBlockInfo>

setEnableStatelessLocalization

设置是否启用无状态定位。启用无状态定位时,定位时不会使用上一次定位结果。默认为 false。

void easyar_MegaGoTracker_setEnableStatelessLocalization(easyar_MegaGoTracker * This, bool enableStatelessLocalization)
void setEnableStatelessLocalization(bool enableStatelessLocalization)
public void setEnableStatelessLocalization(boolean enableStatelessLocalization)
fun setEnableStatelessLocalization(enableStatelessLocalization: Boolean): Unit
- (void)setEnableStatelessLocalization:(bool)enableStatelessLocalization
public func setEnableStatelessLocalization(_ enableStatelessLocalization: Bool) -> Void
public virtual void setEnableStatelessLocalization(bool enableStatelessLocalization)

参数

名称 类型 描述
enableStatelessLocalization Boolean

返回

类型 描述
Void

setResultAsyncMode

设置结果异步模式。如果结果通过 outputFrameSource 输出,应设置为 true;如果结果通过 getSyncResult 获取,应设置为 false。默认值为 true。同步模式仅在使用 XR License 时可用。请求的模式成功应用时返回 true;不支持同步模式时返回 false,并保持异步模式。

bool easyar_MegaGoTracker_setResultAsyncMode(easyar_MegaGoTracker * This, bool enableAsync)
bool setResultAsyncMode(bool enableAsync)
public boolean setResultAsyncMode(boolean enableAsync)
fun setResultAsyncMode(enableAsync: Boolean): Boolean
- (bool)setResultAsyncMode:(bool)enableAsync
public func setResultAsyncMode(_ enableAsync: Bool) -> Bool
public virtual bool setResultAsyncMode(bool enableAsync)

参数

名称 类型 描述
enableAsync Boolean

返回

类型 描述
Boolean

status

返回 MegaGoTracker 当前的运行状态。

easyar_MegaGoTrackerStatus easyar_MegaGoTracker_status(const easyar_MegaGoTracker * This)
MegaGoTrackerStatus status()
public int status()
fun status(): Int
- (easyar_MegaGoTrackerStatus)status
public func status() -> MegaGoTrackerStatus
public virtual MegaGoTrackerStatus status()

返回

类型 描述
MegaGoTrackerStatus

error

返回 MegaGoTracker 当前的错误。没有错误时为空。

easyar_OptionalOfMegaGoTrackerError easyar_MegaGoTracker_error(const easyar_MegaGoTracker * This)
std::optional<MegaGoTrackerError> error()
public @Nullable Integer error()
fun error(): Int?
- (NSNumber *)error
public func error() -> MegaGoTrackerError?
public virtual Optional<MegaGoTrackerError> error()

返回

类型 描述
Optional<MegaGoTrackerError>

setLocalizationCallback

设置定位回调。当运行状态为 Detecting 或 Tracking 时,每次有效且未取消的定位响应都会报告其是否更新了输出,以及对应输入帧的时间戳。

void easyar_MegaGoTracker_setLocalizationCallback(easyar_MegaGoTracker * This, easyar_CallbackScheduler * callbackScheduler, easyar_FunctorOfVoidFromMegaGoTrackerLocalizationResponse callback)
void setLocalizationCallback(std::shared_ptr<CallbackScheduler> callbackScheduler, std::function<void(std::shared_ptr<MegaGoTrackerLocalizationResponse>)> callback)
public void setLocalizationCallback(@Nonnull CallbackScheduler callbackScheduler, @Nonnull FunctorOfVoidFromMegaGoTrackerLocalizationResponse callback)
fun setLocalizationCallback(callbackScheduler: CallbackScheduler, callback: FunctorOfVoidFromMegaGoTrackerLocalizationResponse): Unit
- (void)setLocalizationCallback:(easyar_CallbackScheduler *)callbackScheduler callback:(void (^)(easyar_MegaGoTrackerLocalizationResponse * response))callback
public func setLocalizationCallback(_ callbackScheduler: CallbackScheduler, _ callback: @escaping (MegaGoTrackerLocalizationResponse) -> Void) -> Void
public virtual void setLocalizationCallback(CallbackScheduler callbackScheduler, Action<MegaGoTrackerLocalizationResponse> callback)

参数

名称 类型 描述
callbackScheduler CallbackScheduler
callback Action<MegaGoTrackerLocalizationResponse>

返回

类型 描述
Void

setCameraPositionOverride

设置相机位置相对于地图 block 的覆盖值。设置之后,MegaGoTracker 会输出覆盖值,而不使用输入帧数据中的对应坐标。可用于在已知地图信息且传感器有限的情况下提高输出位姿的精度。

void easyar_MegaGoTracker_setCameraPositionOverride(easyar_MegaGoTracker * This, easyar_OptionalOfFloat x, easyar_OptionalOfFloat y, easyar_OptionalOfFloat z)
void setCameraPositionOverride(std::optional<float> x, std::optional<float> y, std::optional<float> z)
public void setCameraPositionOverride(java.lang.@Nullable Float x, java.lang.@Nullable Float y, java.lang.@Nullable Float z)
fun setCameraPositionOverride(x: Float?, y: Float?, z: Float?): Unit
- (void)setCameraPositionOverride:(NSNumber *)x y:(NSNumber *)y z:(NSNumber *)z
public func setCameraPositionOverride(_ x: Float?, _ y: Float?, _ z: Float?) -> Void
public virtual void setCameraPositionOverride(Optional<float> x, Optional<float> y, Optional<float> z)

参数

名称 类型 描述
x Optional<Single>
y Optional<Single>
z Optional<Single>

返回

类型 描述
Void

loadTargetFromFile

从文件异步加载一个 target。target 只有在成功加载后才能用于定位。 同时只能有一个 target 生效。调用本方法会立即清除 Tracker 当前定位到的 block 实例和累积的跟踪状态。如果本次加载失败或被取消,之前的 target 和定位实例不会恢复。 调用本方法会取代尚未完成的加载请求。正在进行的加载可能无法立即停止;被取代请求的 callback 会在操作结束后调用,其结果状态为 MegaGoTargetLoadStatus.Canceled。 target 无法解析或内容损坏时,结果状态为 MegaGoTargetLoadStatus.InvalidTarget。 本方法会立即返回。加载完成后,callback 会在 CallbackScheduler 指定的线程上调用;成功时结果中包含加载的 block 信息。MegaGoTargetLoadStatus.Success 仅表示 target 数据加载成功。后续校验仍可能进行或失败,应通过 status 和 error 检查 MegaGoTracker 当前的处理状态和错误。关闭 MegaGoTracker 后不会再调用尚未执行的 callback。

void easyar_MegaGoTracker_loadTargetFromFile(easyar_MegaGoTracker * This, easyar_String * path, easyar_CallbackScheduler * callbackScheduler, easyar_FunctorOfVoidFromMegaGoTargetLoadResult callback)
void loadTargetFromFile(std::string path, std::shared_ptr<CallbackScheduler> callbackScheduler, std::function<void(std::shared_ptr<MegaGoTargetLoadResult>)> callback)
public void loadTargetFromFile(java.lang.@Nonnull String path, @Nonnull CallbackScheduler callbackScheduler, @Nonnull FunctorOfVoidFromMegaGoTargetLoadResult callback)
fun loadTargetFromFile(path: String, callbackScheduler: CallbackScheduler, callback: FunctorOfVoidFromMegaGoTargetLoadResult): Unit
- (void)loadTargetFromFile:(NSString *)path callbackScheduler:(easyar_CallbackScheduler *)callbackScheduler callback:(void (^)(easyar_MegaGoTargetLoadResult * result))callback
public func loadTargetFromFile(_ path: String, _ callbackScheduler: CallbackScheduler, _ callback: @escaping (MegaGoTargetLoadResult) -> Void) -> Void
public virtual void loadTargetFromFile(string path, CallbackScheduler callbackScheduler, Action<MegaGoTargetLoadResult> callback)

参数

名称 类型 描述
path String
callbackScheduler CallbackScheduler
callback Action<MegaGoTargetLoadResult>

返回

类型 描述
Void

loadTargetFromBuffer

从内存异步加载一个 target。target 只有在成功加载后才能用于定位。 同时只能有一个 target 生效。调用本方法会立即清除 Tracker 当前定位到的 block 实例和累积的跟踪状态。如果本次加载失败或被取消,之前的 target 和定位实例不会恢复。 调用本方法会取代尚未完成的加载请求。正在进行的加载可能无法立即停止;被取代请求的 callback 会在操作结束后调用,其结果状态为 MegaGoTargetLoadStatus.Canceled。 target 无法解析或内容损坏时,结果状态为 MegaGoTargetLoadStatus.InvalidTarget。 本方法会立即返回。加载完成后,callback 会在 CallbackScheduler 指定的线程上调用;成功时结果中包含加载的 block 信息。MegaGoTargetLoadStatus.Success 仅表示 target 数据加载成功。后续校验仍可能进行或失败,应通过 status 和 error 检查 MegaGoTracker 当前的处理状态和错误。关闭 MegaGoTracker 后不会再调用尚未执行的 callback。

void easyar_MegaGoTracker_loadTargetFromBuffer(easyar_MegaGoTracker * This, easyar_Buffer * buffer, easyar_CallbackScheduler * callbackScheduler, easyar_FunctorOfVoidFromMegaGoTargetLoadResult callback)
void loadTargetFromBuffer(std::shared_ptr<Buffer> buffer, std::shared_ptr<CallbackScheduler> callbackScheduler, std::function<void(std::shared_ptr<MegaGoTargetLoadResult>)> callback)
public void loadTargetFromBuffer(@Nonnull Buffer buffer, @Nonnull CallbackScheduler callbackScheduler, @Nonnull FunctorOfVoidFromMegaGoTargetLoadResult callback)
fun loadTargetFromBuffer(buffer: Buffer, callbackScheduler: CallbackScheduler, callback: FunctorOfVoidFromMegaGoTargetLoadResult): Unit
- (void)loadTargetFromBuffer:(easyar_Buffer *)buffer callbackScheduler:(easyar_CallbackScheduler *)callbackScheduler callback:(void (^)(easyar_MegaGoTargetLoadResult * result))callback
public func loadTargetFromBuffer(_ buffer: Buffer, _ callbackScheduler: CallbackScheduler, _ callback: @escaping (MegaGoTargetLoadResult) -> Void) -> Void
public virtual void loadTargetFromBuffer(Buffer buffer, CallbackScheduler callbackScheduler, Action<MegaGoTargetLoadResult> callback)

参数

名称 类型 描述
buffer Buffer
callbackScheduler CallbackScheduler
callback Action<MegaGoTargetLoadResult>

返回

类型 描述
Void

unloadTarget

卸载当前 target,并清除当前定位实例和累积的跟踪状态。target 的逻辑状态会立即变为未加载。 调用本方法还会取代所有尚未完成的加载请求。正在进行的加载可能无法立即停止;被取代请求的 callback 会在操作结束后调用,其结果状态为 MegaGoTargetLoadStatus.Canceled。 本方法没有 callback,并且不会等待卸载操作完成。如果没有已加载或正在加载的 target,调用本方法不会产生额外效果。

void easyar_MegaGoTracker_unloadTarget(easyar_MegaGoTracker * This)
void unloadTarget()
public void unloadTarget()
fun unloadTarget(): Unit
- (void)unloadTarget
public func unloadTarget() -> Void
public virtual void unloadTarget()

返回

类型 描述
Void

start

开始处理输入帧并输出结果。调用成功时返回 true;MegaGoTracker 已关闭时返回 false。重复调用不会产生额外效果。 stop 后调用本方法会继续使用已加载的 target,无需重新加载。

bool easyar_MegaGoTracker_start(easyar_MegaGoTracker * This)
bool start()
public boolean start()
fun start(): Boolean
- (bool)start
public func start() -> Bool
public virtual bool start()

返回

类型 描述
Boolean

stop

停止处理输入帧,并清除当前定位到的 block 实例和累积的跟踪状态。尚未完成的处理结果会被丢弃。 已加载的 target 不会卸载,尚未完成的 target 加载也不会取消,其 callback 仍会被调用。此时运行状态为 Idle;调用 start 可继续使用已加载的 target。

void easyar_MegaGoTracker_stop(easyar_MegaGoTracker * This)
void stop()
public void stop()
fun stop(): Unit
- (void)stop
public func stop() -> Void
public virtual void stop()

返回

类型 描述
Void

close

永久关闭 MegaGoTracker,停止处理输入帧,清除当前定位到的 block 实例和累积的跟踪状态,卸载 target,并释放相关资源。重复调用不会产生额外效果。 所有尚未完成的定位和 target 加载操作都会被取消,尚未执行的 callback 不会再被调用。本方法可能等待正在进行的操作结束后返回。close 之后不应继续使用 MegaGoTracker,调用 start 将返回 false。

void easyar_MegaGoTracker_close(easyar_MegaGoTracker * This)
void close()
public void close()
fun close(): Unit
- (void)close
public func close() -> Void
public virtual void close()

返回

类型 描述
Void

getSyncResult

获得同步输出结果。motionInputData 必须非空,并且需要通过 setResultAsyncMode 启用同步模式。当 MegaGoTracker 已暂停、已关闭、处于错误状态或当前无法生成同步结果时,返回值为空。

void easyar_MegaGoTracker_getSyncResult(easyar_MegaGoTracker * This, easyar_MotionInputData * motionInputData, easyar_OptionalOfMegaGoTrackerResult * Return)
std::optional<std::shared_ptr<MegaGoTrackerResult>> getSyncResult(std::shared_ptr<MotionInputData> motionInputData)
public @Nullable MegaGoTrackerResult getSyncResult(@Nonnull MotionInputData motionInputData)
fun getSyncResult(motionInputData: MotionInputData): MegaGoTrackerResult?
- (easyar_MegaGoTrackerResult *)getSyncResult:(easyar_MotionInputData *)motionInputData
public func getSyncResult(_ motionInputData: MotionInputData) -> MegaGoTrackerResult?
public virtual Optional<MegaGoTrackerResult> getSyncResult(MotionInputData motionInputData)

参数

名称 类型 描述
motionInputData MotionInputData

返回

类型 描述
Optional<MegaGoTrackerResult>