检查ARSession是否正在运行(ARKit)

时间:2018-05-02 00:45:25

标签: ios swift scenekit arkit arscnview

我有一个ARSCNView,偶尔会根据情况暂停其session。有没有办法检查其class myARView: ARSCNView { ... func foo() { if(session.running) { // do stuff } } ... } 是否正在运行?

这样的事情:

@OneToMany(mappedBy = "course",fetch=FetchType.EAGER)
@JsonIgnoreProperties("course")
private Set<Student> students;

1 个答案:

答案 0 :(得分:3)

此时,似乎无法通过ARSession对象本身检查会话是否正在运行。但是,通过实施ARSCNViewDelegate,您可以在会话中断或中断结束时收到通知。

实现目标的一种方法是设置布尔值并在暂停/恢复会话时更新它,并在函数中检查其值。

class ViewController: UIViewController, ARSCNViewDelegate {

    var isSessionRunning: Bool

    func foo() {
        if self.isSessionRunning {
            // do stuff
        }
    }

    func pauseSession() {
        self.sceneView.session.pause()
        self.isSessionRunning = false
    }

    func runSession() {
        let configuration = ARWorldTrackingConfiguration()
        sceneView.session.run(configuration)
        self.isSessionRunning = true
    }

    // ARSCNViewDelegate:
    func sessionWasInterrupted(_ session: ARSession) {
        self.isSessionRunning = false
    }

    func sessionInterruptionEnded(_ session: ARSession) {
        self.isSessionRunning = true
    }
}