google fit api documentation states that
如果成功声明了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.");
}
}
答案 0 :(得分:0)
我认为这里的问题是 SensorsApi 只允许您访问在 WearOS 上运行的设备。据我所知,除 M600 之外的 Polar 手表在不同的设备上运行。我目前在使用三星 Galaxy Watch 时遇到了同样的问题。我认为唯一的方法是通过 Polar 应用程序将数据同步到 Google Fit 应用程序,然后请求 Google Fit 应用程序的历史数据。 如果您找到任何通过 SensorsAPI 使其工作的方法,请告诉我,因为我也在努力使其工作!