Android健身API未从可穿戴传感器读取数据

Android健身API未从可穿戴传感器读取数据,android,wear-os,google-fit,google-fit-sdk,Android,Wear Os,Google Fit,Google Fit Sdk,我一直在阅读Google Fit API,特别是Sensors API(),它说:Sensors API提供了对原始传感器数据流的访问,这些原始传感器数据流来自Android设备上可用的传感器以及可穿戴设备等配套设备上可用的传感器。 此外,在观看谷歌的示例视频时,他们说“它们可能是安卓设备上可用的传感器,也可能是配套设备上可用的传感器。例如,对于steps,Fit将使用手机上的steps计数器或任何连接的可穿戴设备,以其认为最准确的为准” 读了这篇文章,我知道Fit API将读取可用的最佳传感器

我一直在阅读Google Fit API,特别是Sensors API(),它说:Sensors API提供了对原始传感器数据流的访问,这些原始传感器数据流来自Android设备上可用的传感器以及可穿戴设备等配套设备上可用的传感器。

此外,在观看谷歌的示例视频时,他们说“它们可能是安卓设备上可用的传感器,也可能是配套设备上可用的传感器。例如,对于steps,Fit将使用手机上的steps计数器或任何连接的可穿戴设备,以其认为最准确的为准”

读了这篇文章,我知道Fit API将读取可用的最佳传感器,但以他们的例子来说,在连接可穿戴设备的情况下,我只能从一个数据源读取步骤:来自Android手机的数据源

我添加代码:

Fitness.SensorsApi.findDataSources(mClient, new DataSourcesRequest.Builder()
                // At least one datatype must be specified.
                .setDataTypes(DataType.TYPE_STEP_COUNT_DELTA)
                // Can specify whether data type is raw or derived.
                .setDataSourceTypes(DataSource.TYPE_RAW)
                .build())
                .setResultCallback(new ResultCallback<DataSourcesResult>() {
                    @Override
                    public void onResult(DataSourcesResult dataSourcesResult) {
                        Log.i(TAG, "Result: " + dataSourcesResult.getStatus().toString());

                        for (DataSource dataSource : dataSourcesResult.getDataSources()) {
                            Log.i(TAG, "Data source found: " + dataSource.toString());
                            Log.i(TAG, "Data Source type: " + dataSource.getDataType().getName());

                            //Let's register a listener to receive Activity data!
                            if (dataSource.getDataType().equals(DataType.TYPE_STEP_COUNT_DELTA)
                                    && mListener == null) {
                                Log.i(TAG, "Data source for LOCATION_SAMPLE found!  Registering.");
                                registerFitnessDataListener(dataSource,
                                        DataType.TYPE_STEP_COUNT_DELTA);
                            }
                        }
                    }
                });
Fitness.SensorsApi.findDataSources(mClient,newdatasourcerequest.Builder())
//必须至少指定一个数据类型。
.setDataTypes(数据类型.TYPE\u步骤\u计数\u增量)
//可以指定数据类型是原始数据类型还是派生数据类型。
.setDataSourceTypes(DataSource.TYPE_原始)
.build())
.setResultCallback(新的ResultCallback(){
@凌驾
public void onResult(DataSourcesResult DataSourcesResult){
Log.i(标记,“Result:+datasourceresult.getStatus().toString());
对于(DataSource DataSource:dataSourcesResult.getDataSources()){
Log.i(标记“找到的数据源:”+dataSource.toString());
Log.i(标记“数据源类型:”+dataSource.getDataType().getName());
//让我们注册一个侦听器来接收活动数据!
if(dataSource.getDataType().equals(DataType.TYPE\u STEP\u COUNT\u DELTA)
&&mListener==null){
Log.i(标记“找到位置的数据源”\u样本!正在注册”);
registerFitnessDataListener(数据源,
数据类型。类型\步骤\计数\增量);
}
}
}
});
在这里,我只从我的Android设备获取数据源,而不是从我的手机和我的可穿戴设备(Moto 360 2gen)获取数据源

你们有什么线索可以解释为什么我没有在结果中得到我的可穿戴数据源吗


谢谢。

SensorsApi.findDataSources方法从运行活动的设备(在您的情况下,是移动设备)获取原始和派生的传感器。如果您想将可穿戴设备用作数据源,则首先需要通过蓝牙连接。试着用这个!希望这有帮助