You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Wear OS中使用HealthServices仅获取到心率作为支持数据类型,无法读取步数的问题求助

Wear OS中使用HealthServices仅获取到心率作为支持数据类型,无法读取步数的问题求助

我正在尝试用Java读取Wear OS设备过去一天的步数,目的是当用户达到一定步数时给他们奖励。

为了实现这个功能,我尝试使用HealthServices,跟着官方Android开发者指南做了配置:在AndroidManifest里添加了必需的ACTIVITY_RECOGNITION权限,也在Java代码中做了运行时权限请求。

但现在遇到了问题:当我尝试获取支持的数据类型列表时,返回的集合里只有心率这一种DataType。我已经在Wear OS模拟器(API 34)和实体设备Galaxy Watch 5 Pro上都测试过了。模拟器那边我还更新到了最新版Android Studio,开启了Wear Health Services选项,并且把所有可用功能都打开了,但情况还是没有变化。

想请教大家:这个问题可能是什么原因导致的?另外,用这种方式获取过去一天的步数是不是正确的做法?

public void setupMeasureClient() {
    measureClient = HealthServices.getClient(context).getMeasureClient();
}
public void loadSupportedDataTypes() {
    if (measureClient == null) return;

    if (!permissionHandler.hasPermission(ACTIVITY_RECOGNITION_PERMISSION)) return;

    try {
        ListenableFuture<MeasureCapabilities> future = measureClient.getCapabilitiesAsync();
        future.addListener(() -> {
            try {
                MeasureCapabilities measureCapabilities = future.get();
                Set<DeltaDataType<?, ?>> dataTypes =  measureCapabilities.getSupportedDataTypesMeasure();
                System.out.println("[HealthServices] Available data types:");
                for (final DeltaDataType<?, ?> dataType: dataTypes) {
                    System.out.println("[HealthServices] Data type: " + dataType.getName());
                }
                setDataTypes(dataTypes);
            } catch (Exception e) {
                System.err.println("[HealthServices] Error occurred while resolving future: " + e.getMessage());
            }
        }, Executors.newSingleThreadExecutor());
    } catch (Exception e) {
        System.out.println("[HealthServices] Couldn't get list of capabilities: " + e.getMessage());
    }
}

备注:内容来源于stack exchange,提问作者Andrej

火山引擎 最新活动