【发布时间】:2018-03-26 12:00:09
【问题描述】:
我已成功尝试使用 SDK 示例从传感器 API(步数)中提取数据。但是,当我尝试从服务中做同样的事情时,我没有收到步数增量回调。我看到的所有示例代码总是谈论使用 Activity 的“this”值创建 GoogleApiClient,而不是使用服务的“this”值。知道是否支持通过服务访问?
【问题讨论】:
标签: android google-fit google-fit-sdk
我已成功尝试使用 SDK 示例从传感器 API(步数)中提取数据。但是,当我尝试从服务中做同样的事情时,我没有收到步数增量回调。我看到的所有示例代码总是谈论使用 Activity 的“this”值创建 GoogleApiClient,而不是使用服务的“this”值。知道是否支持通过服务访问?
【问题讨论】:
标签: android google-fit google-fit-sdk
我已经实现了来自粘性服务的传感器和历史 API 调用。您唯一需要该活动的是在连接失败或需要登录时向用户提示。 (我认为)
所以我所做的是我分别为传感器和历史函数创建了类,然后我使用本地广播,你也可以使用绑定来完成,然后在 onConnectionFail() 中告诉活动它应该提示用户。
fit-api 有其他问题,但服务部分工作正常。
【讨论】:
这并不难,但需要做很多工作。
基本上,这种方法“GooglePlayServicesUtil.getErrorDialog”在服务中不起作用。 (这才是真正的问题。为什么不呢?谁设计了这个 shXt?完全没有任何意义。)
但是如果你再检查一下,你会发现ConnectionResult中有一个方法“startResolutionForResult”。
你可以用它来替换“GooglePlayServicesUtil.getErrorDialog”。
还有……抱歉,这无法解决您的问题。
因为您仍然需要一个 Activity 及其方法“onActivityResult”。即使你可以得到一个静态 Activity,它仍然无法工作,除非你给这个 Activity 一个自定义的“onActivityResult”方法。
所以?使用自定义的“onActivityResult”方法设计一个活动并将其扩展到您的所有活动? ... 开玩笑。
就我而言,我让我的所有 Activity 能够在其生命周期中执行动态工作。这就是我的活动:
public abstract class HTBaseActivity extends FragmentActivity {
public static Activity ACT = null;
public CallByActivityResult callByResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
ACT = this;
}
@Override
protected void onActivityResult(int value1, int value2, Intent intent) {
// TODO Auto-generated method stub
super.onActivityResult(value1, value2, intent);
if(callByResult != null){
callByResult.onActivityResult(value1, value2, intent);
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
ACT = this;
}
此活动是为了其他目的,而不是“在服务中使用健身 API”。但它确实有效。
附:
CallByActivityResult 是一个带有方法“onActivityResult(int value1, int value2, Intent intent)”的接口。
【讨论】: