ARCoreCameraDevice Class

Description

ARCoreCameraDevice实现了一个基于ARCore的camera设备,输出 InputFrame (包含图像、摄像机参数、时间戳、6DOF位置信息和跟踪状态)。

使用时需要先使用java.lang.System.loadLibrary加载libarcore_sdk_c.so。

创建之后,可以调用start/stop来开始和停止采集视频流数据。

当不再需要该设备时,可以调用close对其进行关闭。close之后不应继续使用。

ARCoreCameraDevice通过inputFrameSource输出 InputFrame ,应将inputFrameSource连接到 InputFrameSink 上进行使用。参考 概览 _ 。

bufferCapacity表示 InputFrame 缓冲的容量,如果有超过此数量的 InputFrame 从该设备中输出并且没有被释放,该设备将不再输出新的 InputFrame ,直到之前的 InputFrame 被释放。这可能造成画面卡住等问题。参考 概览 _ 。

注意:当前ARCore(v1.13.0)的实现在创建和销毁session时存在内存泄漏,多次创建和销毁会导致内存占用不断增长且销毁后也不释放。

Constructor

C: void easyar_ARCoreCameraDevice__ctor(easyar_ARCoreCameraDevice * * Return)
C++17: ARCoreCameraDevice()
Traditional C++: ARCoreCameraDevice()
Java: public ARCoreCameraDevice()
Kotlin: constructor()
Objective-C: + (easyar_ARCoreCameraDevice *) create
Swift: public convenience init()
C#: public ARCoreCameraDevice()

isAvailable

检查是否可用。只在Android系统上并安装了ARCore时返回true。

在没有加载libarcore_sdk_c.so时调用会返回false。

注意:如果设备不支持ARCore,但却通过旁加载方式安装了ARCore的apk,则该函数会返回true,但ARCore不能正常使用。

C: bool easyar_ARCoreCameraDevice_isAvailable(void)
C++17: static bool isAvailable()
Traditional C++: static bool isAvailable()
Java: public static boolean isAvailable()
Kotlin: companion object fun isAvailable(): Boolean
Objective-C: + (bool)isAvailable
Swift: public static func isAvailable() -> Bool
C#: public static bool isAvailable()

bufferCapacity

InputFrame 缓冲的容量,默认值为8。

C: int easyar_ARCoreCameraDevice_bufferCapacity(const easyar_ARCoreCameraDevice * This)
C++17: int bufferCapacity()
Traditional C++: int bufferCapacity()
Java: public int bufferCapacity()
Kotlin: fun bufferCapacity(): Int
Objective-C: - (int)bufferCapacity
Swift: public func bufferCapacity() -> Int32
C#: public virtual int bufferCapacity()

setBufferCapacity

设置 InputFrame 缓冲的容量。

C: void easyar_ARCoreCameraDevice_setBufferCapacity(easyar_ARCoreCameraDevice * This, int capacity)
C++17: void setBufferCapacity(int capacity)
Traditional C++: void setBufferCapacity(int capacity)
Java: public void setBufferCapacity(int capacity)
Kotlin: fun setBufferCapacity(capacity: Int): Unit
Objective-C: - (void)setBufferCapacity:(int)capacity
Swift: public func setBufferCapacity(_ capacity: Int32) -> Void
C#: public virtual void setBufferCapacity(int capacity)

inputFrameSource

InputFrame 输出端口。

C: void easyar_ARCoreCameraDevice_inputFrameSource(easyar_ARCoreCameraDevice * This, easyar_InputFrameSource * * Return)
C++17: std::shared_ptr<InputFrameSource> inputFrameSource()
Traditional C++: void inputFrameSource(InputFrameSource * * Return)
Java: public @Nonnull InputFrameSource inputFrameSource()
Kotlin: fun inputFrameSource(): InputFrameSource
Objective-C: - (easyar_InputFrameSource *)inputFrameSource
Swift: public func inputFrameSource() -> InputFrameSource
C#: public virtual InputFrameSource inputFrameSource()

start

开始采集视频流数据。

C: bool easyar_ARCoreCameraDevice_start(easyar_ARCoreCameraDevice * This)
C++17: bool start()
Traditional C++: bool start()
Java: public boolean start()
Kotlin: fun start(): Boolean
Objective-C: - (bool)start
Swift: public func start() -> Bool
C#: public virtual bool start()

stop

停止采集视频流数据。

C: void easyar_ARCoreCameraDevice_stop(easyar_ARCoreCameraDevice * This)
C++17: void stop()
Traditional C++: void stop()
Java: public void stop()
Kotlin: fun stop(): Unit
Objective-C: - (void)stop
Swift: public func stop() -> Void
C#: public virtual void stop()

close

关闭。close之后不应继续使用。

C: void easyar_ARCoreCameraDevice_close(easyar_ARCoreCameraDevice * This)
C++17: void close()
Traditional C++: void close()
Java: public void close()
Kotlin: fun close(): Unit
Objective-C: - (void)close
Swift: public func close() -> Void
C#: public virtual void close()