Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在ArCore中获取跟踪状态_Android_Kotlin_Arcore_Sceneform - Fatal编程技术网

Android 如何在ArCore中获取跟踪状态

Android 如何在ArCore中获取跟踪状态,android,kotlin,arcore,sceneform,Android,Kotlin,Arcore,Sceneform,我正在构建一个AR Android应用程序,每当用户的位置发生变化时,我都想在其中生成一个箭头。但是,当我尝试创建锚点时,会出现NotTrackingException。我怎么知道ARCore探测到了一架飞机,这样我就可以添加我的锚了 我唯一能找到的是,但我从中得到的不多 fun onLocationChanged(location: Location) { val session = arFragment.arSceneView.session var arrowViewRen

我正在构建一个AR Android应用程序,每当用户的位置发生变化时,我都想在其中生成一个箭头。但是,当我尝试创建锚点时,会出现NotTrackingException。我怎么知道ARCore探测到了一架飞机,这样我就可以添加我的锚了

我唯一能找到的是,但我从中得到的不多

fun onLocationChanged(location: Location) {
    val session = arFragment.arSceneView.session
    var arrowViewRenderable:ViewRenderable
    val pos = floatArrayOf(0f,0f,-1f)
    val rotation = floatArrayOf(0f,0f,0f,1f)
    val anchor = session!!.createAnchor(Pose(pos,rotation))
    val anchorNode = AnchorNode(anchor)
    anchorNode.setParent(arFragment.arSceneView.scene)
    ViewRenderable.builder()
        .setView(this, R.layout.arrow)
        .setSizer(DpToMetersViewSizer(400  ))
        .build()
        .thenAccept { renderable -> arrowViewRenderable = renderable
                        anchorNode.renderable = arrowViewRenderable
                    }
}

可以从当前帧的摄影机检索TrackingState

val frame = session.update()
if (frame.camera.trackingState == TrackingState.tracking) {
    // place anchor
}
val frame = session.update()
if (frame.camera.trackingState == TrackingState.tracking) {
    // place anchor
}