我对Step Counter Google fit API有一些问题

问题描述 投票:0回答:1

我目前正在尝试使用Google Fit API。我主要是通过遵循Google的文档进行的。

下面是我所拥有的似乎有问题的代码

我的问题是,它显示了我所有的步数。我想今天返回我的应用程序步数。这段代码返回了我[[550530步骤。我想显示今天的步骤数。

class MainActivity : AppCompatActivity(), OnDataPointListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private var authInProgress = false private var mApiClient: GoogleApiClient? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) if (savedInstanceState != null) { authInProgress = savedInstanceState.getBoolean(AUTH_PENDING) } mApiClient = GoogleApiClient.Builder(this) .addApi(Fitness.SENSORS_API) .addScope(Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE)) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build() } override fun onStart() { super.onStart() mApiClient!!.connect() } override fun onStop() { super.onStop() Fitness.SensorsApi.remove(mApiClient, this) .setResultCallback { status -> if (status.isSuccess) { mApiClient!!.disconnect() } } } private fun registerFitnessDataListener(dataSource: DataSource, dataType: DataType) { val request = SensorRequest.Builder() .setDataSource(dataSource) .setDataType(dataType) .setSamplingRate(3, TimeUnit.SECONDS) .build() Fitness.SensorsApi.add(mApiClient, request, this).setResultCallback { status -> if (status.isSuccess) { Log.e("GoogleFit", "SensorApi successfully added") } else { Log.e( "GoogleFit", "adding status: " + status.statusMessage ) } } } override fun onConnected(bundle: Bundle?) { val dataSourceRequest = DataSourcesRequest.Builder() .setDataTypes(DataType.TYPE_STEP_COUNT_CUMULATIVE) .setDataSourceTypes(DataSource.TYPE_RAW) .build() val dataSourcesResultCallback = ResultCallback<DataSourcesResult> { dataSourcesResult -> for (dataSource in dataSourcesResult.dataSources) { if (DataType.TYPE_STEP_COUNT_CUMULATIVE == dataSource.dataType) { registerFitnessDataListener( dataSource, DataType.TYPE_STEP_COUNT_CUMULATIVE ) } } } Fitness.SensorsApi.findDataSources( mApiClient, dataSourceRequest ) .setResultCallback(dataSourcesResultCallback) } override fun onConnectionFailed(connectionResult: ConnectionResult) { if (!authInProgress) { try { authInProgress = true connectionResult.startResolutionForResult( this, REQUEST_OAUTH ) } catch (e: IntentSender.SendIntentException) { Log.e("GoogleFit", "sendingIntentException " + e.message) } } else { Log.e("GoogleFit", "authInProgress") } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { //++++++++ super.onActivityResult(requestCode, resultCode, data) if (requestCode == REQUEST_OAUTH) { authInProgress = false if (resultCode == Activity.RESULT_OK) { if (!mApiClient!!.isConnecting && !mApiClient!!.isConnected) { mApiClient!!.connect() } } else if (resultCode == Activity.RESULT_CANCELED) { Log.e("GoogleFit", "RESULT_CANCELED") } } else { Log.e("GoogleFit", "requestCode NOT request_oauth") } } override fun onConnectionSuspended(i: Int) {} override fun onDataPoint(dataPoint: DataPoint) { for (field in dataPoint.dataType.fields) { val value = dataPoint.getValue(field) runOnUiThread { Toast.makeText( applicationContext, "Field: " + field.name + " Value: " + value, Toast.LENGTH_SHORT ).show() } } } companion object { private const val REQUEST_OAUTH = 1 private const val AUTH_PENDING = "auth_state_pending" } }
android api kotlin google-fit
1个回答
0
投票
由于您正在使用DataType.TYPE_STEP_COUNT_CUMULATIVE,所以代码正在返回

550530步骤,自计数开始起,CUMULATIVE将以总和的形式返回步数数据,或者您可以从头开始说。

您可以使用DataType.TYPE_STEP_COUNT_DELTA,它将为您提供每个数据点而不是全部的总和。

您可以从DataType中查看文档中的更多内容>

快乐编码!

© www.soinside.com 2019 - 2024. All rights reserved.