androidx.core.uwb多对等方组播模式下UWB测距无法启动的问题求助
androidx.core.uwb多对等方组播模式下UWB测距无法启动的问题求助
我正在开发一个基于androidx.core.uwb库的Android UWB应用,遇到了一个卡壳的问题:当我往设备列表里添加多个对等方(peers)并使用组播模式时,测距流程完全无法启动;但如果只添加单个对等方,测距就能正常运行,也能收到预期的距离、方位角等结果。我的测试设备是三星S24 Ultra,系统是Android 15。
问题细节
多对等方组播模式的配置代码
下面是我构建多对等方测距参数的代码,以及启动测距会话的逻辑:
// 构建多对等方设备列表 List<UwbDevice> devices = new ArrayList<>(); devices.add(new UwbDevice(new UwbAddress(Utils.hexStringToByteArray("2222")))); devices.add(new UwbDevice(new UwbAddress(Utils.hexStringToByteArray("3333")))); // 构建测距参数 RangingParameters params = new RangingParameters( RangingParameters.CONFIG_MULTICAST_DS_TWR, sessionID, 0, sessionKeyInfo, null, new UwbComplexChannel(9, 10), devices, RangingParameters.RANGING_UPDATE_RATE_AUTOMATIC ); // 启动测距会话并订阅结果 Flowable<RangingResult> rangingResultFlowable = UwbClientSessionScopeRx.rangingResultsFlowable(controleeSessionScope, params); disposable = rangingResultFlowable.subscribeWith(new DisposableSubscriber<RangingResult>() { @Override public void onNext(RangingResult rangingResult) { if (rangingResult instanceof RangingResult.RangingResultPosition) { RangingResult.RangingResultPosition pos = (RangingResult.RangingResultPosition) rangingResult; if (pos.getPosition().getDistance() != null) { float distance = pos.getPosition().getDistance().getValue(); Log.d("UWB", "Distance: " + distance); } if (pos.getPosition().getAzimuth() != null) { float azimuth = pos.getPosition().getAzimuth().getValue(); Log.d("UWB", "Azimuth: " + azimuth); } if (pos.getPosition().getElevation() != null) { float elevation = pos.getPosition().getElevation().getValue(); Log.d("UWB", "Elevation: " + elevation); } } request(1); } @Override public void onError(Throwable t) { Log.e("UWB", "Error: " + t.getMessage()); } @Override public void onComplete() { Log.i("UWB", "Ranging session completed"); } });
相关日志输出
这是测试多对等方组播模式时的日志:
2025-08-22 14:35:03.829 6414-6495 Glide_UwbRangingService com.example.rtlsapp I Connected successfully! 2025-08-22 14:35:03.832 6414-6495 Glide_UwbRangingService com.example.rtlsapp D Initiating Device as controlee.. 2025-08-22 14:35:03.879 6414-6495 Glide_UwbRangingService com.example.rtlsapp I Local Address: D758 2025-08-22 14:35:04.221 6414-6501 Glide_UwbRangingService com.example.rtlsapp I Message published: {"currentMac":"D758"} 2025-08-22 14:35:08.688 6414-6490 Glide_UwbRangingService com.example.rtlsapp I 2222 : Starting Session... 2025-08-22 14:35:08.690 6414-6490 Glide_UwbRangingService com.example.rtlsapp D 2222 : Configure controlee flowable 2025-08-22 14:35:08.738 6414-6490 Glide_UwbRangingService com.example.rtlsapp D 2222 : UWB Disposable started
从日志看,会话似乎启动了,但完全没有收到任何RangingResult的回调。
已尝试的操作
- 单个对等方测试:仅添加一个
UwbDevice时,测距正常启动,能在onNext中收到距离、方位角等数据 - 多对等方组播模式:多次尝试配置不同的sessionID、通道参数,结果都一样,测距无响应
我想请教的问题
- 目前Android UWB的
androidx.core.uwb库是否支持在组播模式下与多个对等方进行测距? - 如果支持,我的代码中存在哪些问题,需要做哪些修改才能让多对等方组播测距正常工作?
- 如果不支持,这是不是当前
androidx.core.uwbAPI的已知限制?
希望有经验的开发者能给我一些指导,非常感谢!
内容来源于stack exchange
相关产品推荐
相关产品推荐

