2016-07-05 76 views
3

我试图在数据更新到Google健身服务时实施Google Fit监听器。Google Fit监听数据更新无法正常工作

在这个link of Google Fit documentation有一个简单的例子,但它不是100%清楚。出于这个原因,我有两个问题:

  1. 我不知道如何实现mResultCallback变量(不会有任何的例子在本文档中)。
  2. 当我定义了一个简单的ResultCallback(它似乎工作,但我不知道),我启动应用程序,它给了我一个结果错误代码:java.lang.SecurityException异常:签名检查失败

回答

2

HistortyApi中的代码列出了android.permission.ACCESS_FINE_LOCATION或android.permission.BODY_SENSORS中的一个,因为它是必需的。

虽然将这些权限添加到我的代码中仍未解决同样的问题。

确认Google Fit服务中的错误。请参阅https://plus.google.com/110141422948118561903/posts/Lqri4LVR7cD的讨论

+0

这是怎么回事... –

0

mResultCallback是一个ResultCallback <状态>因此您需要实现该类型的类。文档here,但只有一个需要实现的方法:

public abstract void onResult (Status result) 

的标准方法是做到这一点使用匿名类要么在声明mResultCallback或当你使用它作为一个参数。下面是谷歌的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) { 
     ... 
    } 
}); 

当然,你可以定义一个非匿名类,但如果你为每个回调做了这些,你最终会创建很多类。