From 4375e01b087ea9b3377da693c65f5386ad91a062 Mon Sep 17 00:00:00 2001 From: Zhifei Ge Date: Thu, 11 Jun 2026 15:16:03 +0800 Subject: [PATCH] Fix SDK panel bridge compatibility after runtime merge --- app/libs/unity-bridge.aar | Bin 22118 -> 22619 bytes .../controlpanel/data/BridgeRepository.kt | 55 ++++++++++++++++-- 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/app/libs/unity-bridge.aar b/app/libs/unity-bridge.aar index 3ac499fd99eeab18398e4699dcd9083a77cae35e..4ba3da3e34264ee5325ce9319f48286bb2a2e41b 100644 GIT binary patch delta 21978 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 MSP%w0RR9100Kh~`fdBvi diff --git a/app/src/main/java/com/kiwii/controlpanel/data/BridgeRepository.kt b/app/src/main/java/com/kiwii/controlpanel/data/BridgeRepository.kt index 3903fc2..89930b6 100644 --- a/app/src/main/java/com/kiwii/controlpanel/data/BridgeRepository.kt +++ b/app/src/main/java/com/kiwii/controlpanel/data/BridgeRepository.kt @@ -36,23 +36,31 @@ class BridgeRepository { fun getLatestPoseFrameJson(): String = KiwiiRuntimeClientBridge.getLatestPoseFrameJson() fun getLatestBodyPoseFrameJson(): String = KiwiiRuntimeClientBridge.getLatestBodyPoseFrameJson() - fun getLeftHandleIMULatest(): FloatArray = KiwiiRuntimeClientBridge.getLatestLeftHandleIMU() + fun getLeftHandleIMULatest(): FloatArray = KiwiiRuntimeClientBridge.getLeftHandleIMULatest() + fun getLeftHandleIMUQueue(): Array { - val latest = KiwiiRuntimeClientBridge.getLatestLeftHandleIMU() + val queue = readHandleImuQueueCompat("getLeftHandleIMUQueue") + if (queue.isNotEmpty()) return queue + val latest = getLeftHandleIMULatest() return if (latest.isEmpty()) emptyArray() else arrayOf(latest) } + fun submitLeftStaticEffect(effectId: Int): String = KiwiiRuntimeClientBridge.submitLeftStaticEffect(effectId) fun submitLeftHeStream(streamId: Int, payload: String): String = - KiwiiRuntimeClientBridge.submitLeftHeStream(buildHeStreamPatternJson(streamId, payload)) + KiwiiRuntimeClientBridge.submitLeftHeStream(streamId, buildHeStreamPatternJson(streamId, payload)) + + fun getRightHandleIMULatest(): FloatArray = KiwiiRuntimeClientBridge.getRightHandleIMULatest() - fun getRightHandleIMULatest(): FloatArray = KiwiiRuntimeClientBridge.getLatestRightHandleIMU() fun getRightHandleIMUQueue(): Array { - val latest = KiwiiRuntimeClientBridge.getLatestRightHandleIMU() + val queue = readHandleImuQueueCompat("getRightHandleIMUQueue") + if (queue.isNotEmpty()) return queue + val latest = getRightHandleIMULatest() return if (latest.isEmpty()) emptyArray() else arrayOf(latest) } + fun submitRightStaticEffect(effectId: Int): String = KiwiiRuntimeClientBridge.submitRightStaticEffect(effectId) fun submitRightHeStream(streamId: Int, payload: String): String = - KiwiiRuntimeClientBridge.submitRightHeStream(buildHeStreamPatternJson(streamId, payload)) + KiwiiRuntimeClientBridge.submitRightHeStream(streamId, buildHeStreamPatternJson(streamId, payload)) fun getHandleStateJson(): String = KiwiiRuntimeClientBridge.getHandleStateJson() @@ -92,6 +100,41 @@ class BridgeRepository { fun submitDeviceCommandDryRun(command: String): String = KiwiiRuntimeClientBridge.submitDeviceCommandDryRun(command) fun getDeviceCommandStateJson(): String = KiwiiRuntimeClientBridge.getDeviceCommandStateJson() + private fun readHandleImuQueueCompat(methodName: String): Array { + return try { + val method = KiwiiRuntimeClientBridge::class.java.getMethod(methodName) + when (val value = method.invoke(null)) { + is Array<*> -> { + @Suppress("UNCHECKED_CAST") + value.filterIsInstance().toTypedArray() + } + is FloatArray -> splitFlatImuQueue(value) + else -> emptyArray() + } + } catch (_: Throwable) { + emptyArray() + } + } + + private fun splitFlatImuQueue(flat: FloatArray): Array { + if (flat.isEmpty()) return emptyArray() + val sampleSize = when { + flat.size % 10 == 0 -> 10 + flat.size % 9 == 0 -> 9 + flat.size % 7 == 0 -> 7 + else -> flat.size + } + if (sampleSize <= 0) return emptyArray() + val out = ArrayList() + var offset = 0 + while (offset < flat.size) { + val end = minOf(offset + sampleSize, flat.size) + out.add(flat.copyOfRange(offset, end)) + offset = end + } + return out.toTypedArray() + } + private fun buildHeStreamPatternJson(streamId: Int, payload: String): String { val trimmed = payload.trim() if (trimmed.startsWith("{")) return trimmed