我正在尝试为我的论文项目构建一个bpm计数器。我是一个关于googlefitness api的新手,所以我首先从git克隆google的step计数器示例(如果感兴趣,请链接[here][1])。我设置了一切,我授权了我的帐户,将其连接到一个云项目,使用keytool获得sha-1证书,但我仍然无法得到我所要求的数据的响应,无论是bpm还是steps。我在xml文件中根据需要设置每个权限,但仍然面临这个问题。下面,我给你一些我的代码的一部分,如果你需要任何其他lmk。提前感谢您的回复。
xml清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
登录功能:
private fun fitSignIn(requestCode: FitActionRequestCode) {
if (oAuthPermissionsApproved()) {
performActionForRequestCode(requestCode)
} else {
requestCode.let {
GoogleSignIn.requestPermissions(
this,
requestCode.ordinal,
getGoogleAccount(), fitnessOptions)
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (resultCode) {
RESULT_OK -> {
val postSignInAction = FitActionRequestCode.values()[requestCode]
postSignInAction.let {
performActionForRequestCode(postSignInAction)
}
}
else -> oAuthErrorMsg(requestCode, resultCode)
}
}
选择我的帐户时的代码请求:
private fun performActionForRequestCode(requestCode: FitActionRequestCode) = when (requestCode) {
FitActionRequestCode.READ_DATA -> readData()
FitActionRequestCode.SUBSCRIBE -> subscribe()
}
private fun oAuthErrorMsg(requestCode: Int, resultCode: Int) {
val message = """
There was an error signing into Fit. Check the troubleshooting section of the README
for potential issues.
Request code was: $requestCode
Result code was: $resultCode
""".trimIndent()
Log.e(TAG, message)
}
private fun oAuthPermissionsApproved() = GoogleSignIn.hasPermissions(getGoogleAccount(), fitnessOptions)
private fun getGoogleAccount() = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
在请求数据时,我总是以结果0结束。
[![模拟器][2]][2]
这是我的帐户云设置[gcloud][3]][3]
我已经三次检查了googlefit的faq中的所有操作是否正确,并且我已经为我的项目启用了fitness api,但是我仍然没有得到任何结果。如果有人能给我指出正确的方向,我将不胜感激。提前感谢[1]:https://github.com/android/fit-samples/tree/master/stepcounterkotlin [2]: https://i.stack.imgur.com/zvtni.png [3]: https://i.stack.imgur.com/ubtpb.png
1条答案
按热度按时间gopyfrb31#
回答我自己的问题。经过4次痛苦的搜索,解决方法太简单了。android studio在部署debug apk时使用debug.keystore文件。以便将其更改为您用于签署sha-1的文件。为此,请转到:
文件->项目结构->模块->应用->签名配置并编辑调试配置以使用您创建的密钥库文件。输入密码和别名并重建apk。这次fit api将连接!