我已经成功地尝试使用 SDK 示例从传感器 API(步数)中提取数据。但是,当我尝试从服务中做同样的事情时,我没有收到步数增量回调。我看到的所有示例代码总是谈论使用 Activity 的“this”值创建 GoogleApiClient,而不是使用服务的“this”值。知道是否支持通过服务访问?
2 回答
我已经实现了来自粘性服务的传感器和历史 API 调用。您唯一需要该活动的是在连接失败或需要登录时向用户提示。(我认为)
所以我所做的是我分别为传感器和历史函数创建了类,然后我使用本地广播,你也可以使用绑定来完成,然后onConnectionFail()
我告诉活动它应该提示用户。
我对 fit-api 有其他问题,但服务部分工作正常。
这并不难,但需要做很多工作。
基本上,这个方法“ GooglePlayServicesUtil.getErrorDialog
”在Service中是行不通的。(这才是真正的问题。为什么不呢?谁设计了这个shXt?完全没有任何意义。)但是如果你再检查一下,你会发现有一个方法“ startResolutionForResult
”在ConnectionResult
。
你可以用它来代替“ 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”。但它确实有效。
PS
CallByActivityResult
是一个带有方法“ onActivityResult(int value1, int value2, Intent intent)
”的接口。