java - Polar 心率传感器不可用作 google fit api (xamarin android) 中的数据源
问题描述
google fit api 文档指出
如果成功声明 BLE 设备,您可以像使用任何其他传感器一样使用 Recording API 和 Sensors API 访问它。例如,您可以通过 SensorsClient.findDataSources 方法获取 BLE 设备的数据源对象。
但我无法找到以 Polar H10 传感器为源的数据源。我所能找到的只是我正在调试我的应用程序的手机的数据源。
在成功声明心率传感器等可穿戴设备后,有人知道如何使用 Google Fit Sensors API 将侦听器注册到正确的数据源吗?
下面是我使用 Xamarin 在 C# 中声明 ble 传感器 (Polar H10) 的代码:
var pending_result = await FitnessClass.BleApi.ClaimBleDeviceAsync(mClient, device);
if (pending_result.IsSuccess)
{
mActivity.RunOnUiThread(() =>
{
releaseButton.Enabled = true;
});
FindFitnessDataSources();
}
下面是我用来查找 heartrate_bpm 数据源的代码:
private async void FindFitnessDataSources()
{
var dataSourcesResult = await FitnessClass.SensorsApi.FindDataSourcesAsync(mClient, new DataSourcesRequest.Builder()
.SetDataTypes(Android.Gms.Fitness.Data.DataType.TypeHeartRateBpm)
.SetDataSourceTypes(DataSource.TypeRaw)
.Build());
Console.WriteLine("Result: " + dataSourcesResult.Status);
foreach (DataSource dataSource in dataSourcesResult.DataSources)
{
Console.WriteLine("Data source found: " + dataSource.Name);
Console.WriteLine("Data Source type: " + dataSource.DataType);
////Let's register a listener to receive Activity data!
if (dataSource.DataType == Android.Gms.Fitness.Data.DataType.TypeHeartRateBpm)
{
Console.WriteLine("Registering Listener for " + dataSource.Name);
RegisterFitnessDataListener(dataSource, Android.Gms.Fitness.Data.DataType.TypeHeartRateBpm);
}
}
}
下面是我为上面找到的数据源注册侦听器的代码:
private async void RegisterFitnessDataListener(DataSource dataSource, Android.Gms.Fitness.Data.DataType dataType)
{
mListener = new OnDataPointListener();
var status = await FitnessClass.SensorsApi.AddAsync(mClient, new SensorRequest.Builder()
.SetDataSource(dataSource) // Optional but recommended for custom data sets.
.SetDataType(dataType) // Can't be omitted.
.SetSamplingRate(1, TimeUnit.Seconds)
.Build(),
mListener);
if (status.IsSuccess)
{
Console.WriteLine("Listener registered!");
}
else
{
Console.WriteLine("Listener not registered.");
}
}
解决方案
我认为这里的问题是 SensorsApi 只允许您访问在 WearOS 上运行的设备。据我所知,除了 M600 之外的 Polar 手表在不同的设备上运行。我目前在使用三星 Galaxy Watch 时遇到同样的问题。我认为唯一的方法是通过 Polar 应用程序将数据同步到 Google Fit 应用程序,然后请求 Google Fit 应用程序的历史数据。如果您找到任何通过 SensorsAPI 使其工作的方法,请告诉我,因为我也尝试使其工作!
推荐阅读
- android - BrowserStack Jenkins Pipeline AppUploader“找不到文件”错误
- javascript - 如何确定元素是否属于某种组件类型?
- angular - 如何在角度的两个组件之间共享数据?
- oauth - 使用 Google 的 OAuth 2.0 撤销端点会使用户的所有其他令牌无效
- mysql - 带有多个嵌套选择的 LEFT JOIN
- mongodb - MongoDB未注册的身份验证错误Centos 7
- excel - Excel 公式 - 用第三列映射两列值
- c# - 在 WPF TextBlock 中插入内嵌图像
- ionic-framework - 使用 ionic v3 从 TS 获取值 ion-select
- c# - 具有多个字段的 Word 互操作页眉和页脚