我正在尝试在将数据更新到Google健身服务时实施Google健身倾听器。
在这个link of Google Fit documentation中有一个简单的例子,但并不是100%清楚。出于这个原因,我有两个问题:
mResultCallback
变量(本文档中没有任何示例)。ResultCallback
(它似乎工作但我不确定)并启动应用程序时,它会给我一个结果错误代码: java.lang.SecurityException:签名检查失败 答案 0 :(得分:2)
HistortyApi中的代码列出了android.permission.ACCESS_FINE_LOCATION或android.permission.BODY_SENSORS中的一个。
将这些权限添加到我的代码中并没有解决同样的问题。
Google健身服务中确认的错误。请参阅https://plus.google.com/110141422948118561903/posts/Lqri4LVR7cD
中的讨论答案 1 :(得分:0)
mResultCallback是ResultCallback< Status>所以你需要实现一个这种类的类。文档为here,但您只需要实现一种方法:
public abstract void onResult (Status result)
标准方法是在声明mResultCallback或将其用作参数时使用匿名类来执行此操作。以下是Google的BasicRecordingAPI示例中的示例:
Fitness.RecordingApi.subscribe(mClient, DataType.TYPE_ACTIVITY_SAMPLE)
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
if (status.isSuccess()) {
if (status.getStatusCode()
== FitnessStatusCodes.SUCCESS_ALREADY_SUBSCRIBED) {
Log.i(TAG, "Existing subscription for activity detected.");
} else {
Log.i(TAG, "Successfully subscribed!");
}
} else {
Log.i(TAG, "There was a problem subscribing.");
}
}
});
如果你想使用一个成员变量,你可以简单地做一个作业:
ResultCallback<Status> mResultCallback = new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
...
}
});
当然你可以定义一个非匿名类,但是如果你为每次回调都做了那么你最终会创建很多类。