You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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、通道参数,结果都一样,测距无响应

我想请教的问题

  1. 目前Android UWB的androidx.core.uwb库是否支持在组播模式下与多个对等方进行测距?
  2. 如果支持,我的代码中存在哪些问题,需要做哪些修改才能让多对等方组播测距正常工作?
  3. 如果不支持,这是不是当前androidx.core.uwb API的已知限制?

希望有经验的开发者能给我一些指导,非常感谢!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 08:29:30