gpt4 book ai didi

android - 从 google fit 获取步数

转载 作者:行者123 更新时间:2023-11-29 01:33:09 28 4
gpt4 key购买 nike

我正在为我的应用程序使用 google fit 并尝试获取步数。注册和身份验证都可以。您的谷歌帐户出现,您选择它,然后出现谷歌权限对话框并选择是。在那之后,将调用以下方法,该方法使用监听器注册来自计步器、数据资源选择等的实时更新。然而步数有点滑稽。有时它会上下波动。也许我没有使用任何正确的录音东西。有什么建议吗?

    private void invokeFitnessAPIs() {

// Create a listener object to be called when new data is available
OnDataPointListener listener = new OnDataPointListener() {
@Override
public void onDataPoint(DataPoint dataPoint) {

for (Field field : dataPoint.getDataType().getFields()) {
Value val = dataPoint.getValue(field);
updateTextViewWithStepCounter(val.asInt());
}
}
};

//Specify what data sources to return
DataSourcesRequest req = new DataSourcesRequest.Builder()
.setDataSourceTypes(DataSource.TYPE_DERIVED)
.setDataTypes(DataType.TYPE_STEP_COUNT_DELTA)
.build();

// Invoke the Sensors API with:
// - The Google API client object
// - The data sources request object
PendingResult<DataSourcesResult> pendingResult =
Fitness.SensorsApi.findDataSources(mClient, req);

// Build a sensor registration request object
SensorRequest sensorRequest = new SensorRequest.Builder()
.setDataType(DataType.TYPE_STEP_COUNT_CUMULATIVE)
.setSamplingRate(1, TimeUnit.SECONDS)
.build();

// Invoke the Sensors API with:
// - The Google API client object
// - The sensor registration request object
// - The listener object
PendingResult<Status> regResult =
Fitness.SensorsApi.add(mClient,
new SensorRequest.Builder()
.setDataType(DataType.TYPE_STEP_COUNT_DELTA)
.setSamplingRate(1,TimeUnit.SECONDS)
.build(),
listener);


// 4. Check the result asynchronously
regResult.setResultCallback(new ResultCallback<Status>()
{
@Override
public void onResult(Status status) {
if (status.isSuccess()) {
Log.d(TAG, "listener registered");
// listener registered
} else {
Log.d(TAG, "listener not registered");
// listener not registered
}
}
});
}

// Update the Text Viewer with Counter of Steps..
private void updateTextViewWithStepCounter(final int numberOfSteps) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getBaseContext(), "On Datapoint!",
Toast.LENGTH_SHORT);

if(mFirstCount && (numberOfSteps != 0)) {
mInitialNumberOfSteps = numberOfSteps;
mFirstCount = false;
}
if(textView != null){
textView.setText(String.valueOf(numberOfSteps));
}
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(AUTH_PENDING, authInProgress);
}

}

最佳答案

您正在为数据源和传感器请求使用不同的数据类型

关于android - 从 google fit 获取步数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30129784/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com