java - Polar 心率传感器不可用作 google fit api 中的数据源 (xamarin android)

标签 java c# android xamarin google-fit

google fit api documentation states that

If the BLE device is claimed successfully, you can access it like any other sensor using the Recording API and the Sensors API. For example, you can obtain a data source object for the BLE device with the SensorsClient.findDataSources method.

但我找不到以 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 watch 在不同的设备上运行。我目前在使用 Samsung Galaxy Watch 时遇到了同样的问题。我认为唯一的方法是通过 Polar 应用程序将数据同步到 Google Fit 应用程序,然后请求 Google Fit 应用程序的历史数据。 如果您找到任何方法通过 SensorsAPI 使它工作,请告诉我,因为我也在努力让它工作!

关于java - Polar 心率传感器不可用作 google fit api 中的数据源 (xamarin android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51487183/

相关文章:

java - SimpleDateFormat 正则表达式格式

java - 为什么我不能在需要 List<X> 的地方使用实现 List<X> 的类?

java - 使用 RequestScoped (faces) 和 RequestScoped (context) 有什么区别

java - 为什么 android studio 会警告我有关类型化条目的通用数组创建的问题

java - logcat 中出现错误 "isDataSchedulerEnabled():false"

C# - 与 SQL Server 2005 的公共(public)全局连接

字符串数组上的 Java 8 流

java - 验证后重新提交表单的问题

c# - BackgroundWorker 完成事件 - 哪个线程?

c# - Linq to SQL - 通过一个查询返回两个值