Problem mit Arcore Echtzeit-Image-Tracking-Tracking-Status nicht zurückgesetztAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Problem mit Arcore Echtzeit-Image-Tracking-Tracking-Status nicht zurückgesetzt

Post by Anonymous »

Ich verwende derzeit Arcore für die Bildverfolgung von Echtzeit und stehe vor einem Problem, bei dem der Tracking-Status eines Objekts nicht mehr zurückgesetzt wird, selbst wenn ich die Kamera nicht mehr auf das verfolgte Bild zeige. /> Wenn ein Objekt erfolgreich erfasst und verfolgt wird, wird der Status von TrackingState. Anstatt auf TrackingState zu wechseln. Abhängigkeiten:

Code: Select all

core = "1.47.0"
core = { module = "com.google.ar:core", version.ref = "core" }

sceneformUx = "1.17.1"
sceneform-ux = { group = "com.google.ar.sceneform.ux", name = "sceneform-ux", version.ref = "sceneformUx" }
AR Szeneview XML: Arcore -Initialisierung:

Code: Select all

private lateinit var arFragment: ArFragment
arFragment = supportFragmentManager.findFragmentById(R.id.ar_scene_view) as ArFragment

private fun initializeAR() {
var exception: Exception? = null
try {
when (ArCoreApk.getInstance().requestInstall(this, true)) {
ArCoreApk.InstallStatus.INSTALLED -> setupSession()
ArCoreApk.InstallStatus.INSTALL_REQUESTED -> return
}
} catch (e: Exception) {
exception = e
}

if (exception != null || arSession == null) {
Toast.makeText(this, "ARCore failed to initialize", Toast.LENGTH_LONG).show()
finish()
}
}
Sitzung für Bildverfolgung:

Code: Select all

private fun setupSession() {
arFragment.planeDiscoveryController.hide()
arFragment.planeDiscoveryController.setInstructionView(null)

arSession = Session(this)
arConfig = Config(arSession)

setupImageDatabase {
arConfig?.setAugmentedImageDatabase(augmentedImageDatabase)
arSession?.configure(arConfig)
handler.post { Toast.makeText(this, "Database Sync Completed", Toast.LENGTH_SHORT).show() }
}

arConfig?.setFocusMode(Config.FocusMode.AUTO)
arConfig?.planeFindingMode = Config.PlaneFindingMode.DISABLED
arConfig?.imageStabilizationMode = Config.ImageStabilizationMode.OFF
arConfig?.setUpdateMode(Config.UpdateMode.LATEST_CAMERA_IMAGE)
arSession?.configure(arConfig)

arFragment.arSceneView?.setupSession(arSession)
}
Frame -Update, um Bilder zu verfolgen:

Code: Select all

override fun onUpdate(frameTime: FrameTime?) {
val frame = arFragment.arSceneView?.arFrame ?: return

val images = frame.getUpdatedTrackables(AugmentedImage::class.java)

for (image in images) {
when (image.trackingState) {
TrackingState.TRACKING -> {
if (!trackedImages.contains(image.name)) {
handleDetectedImage(image)
trackedImages.add(image.name)
}
}
TrackingState.PAUSED -> {
// Remove tracking if the image is no longer visible
trackedImages.remove(image.name)
runOnUiThread {
Toast.makeText(this, "Tracking lost for ${image.name}", Toast.LENGTH_SHORT).show()
}
}
TrackingState.STOPPED -> {
// Clear the image from tracking
trackedImages.remove(image.name)
}
}
}
}
< /code>

 verifiziert, dass ich den TrackingState in der Frame -Update -Schleife ordnungsgemäß aktualisiere und höre.  behält an.override fun onUpdate(frameTime: FrameTime?) {
val frame = arFragment.arSceneView?.arFrame ?: return

val images = frame.getUpdatedTrackables(AugmentedImage::class.java)

for (image in images) {
when (image.trackingState) {
TrackingState.TRACKING -> {
if (!trackedImages.contains(image.name)) {
handleDetectedImage(image)
trackedImages.add(image.name)
}
}
TrackingState.PAUSED -> {
// Remove tracking if the image is no longer visible
trackedImages.remove(image.name)
runOnUiThread {
Toast.makeText(this, "Tracking lost for ${image.name}", Toast.LENGTH_SHORT).show()
}
}
TrackingState.STOPPED -> {
// Clear the image from tracking
trackedImages.remove(image.name)
}
}
}
}
Erwartete Verhalten:

Wenn die Kamera nicht mehr auf das verfolgte Bild zeigt, sollte sich der TrackingState in die Pause ändern oder anhalten, anstatt im Tracking -Status zu bleiben.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post