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




