2015-02-08 56 views
1

我已成功尝试使用SDK示例从传感器API(步数)中提取数据。但是,当我尝试从服务执行相同的操作时,我不会收到步数三角洲回调。我看到的所有示例代码都始终在讨论如何使用Activity“this”值创建GoogleApiClient,而不是服务的“this”值。是否支持通过服务访问的任何想法?Google Fitness API:从Android服务访问

回答

0

我已经实现了粘性服务的传感器和历史API调用。您需要的唯一活动是在连接失败时提示用户,或者需要登录。 (我认为)

所以我所做的是,我分别为传感器和历史功能分类,然后我使用本地广播,你可以做一个绑定以及然后在onConnectionFail()我告诉它应该提示用户的活动。

我对fit-api有其他问题,但服务部分工作正常。

0

这并不困难,但需要做很多工作。

基本上,此方法“GooglePlayServicesUtil.getErrorDialog”在服务中不起作用。 (这是真正的问题,为什么不呢?谁来设计这个shXt?完全没有任何意义。) 但是如果你再次检查,你会发现在ConnectionResult中有一个“startResolutionForResult”方法。你可以用它来代替“GooglePlayServicesUtil.getErrorDialog”。

而且......抱歉,那不能解决你的问题。

因为你仍然需要一个Activity及其方法“onActivityResult”。即使你可以得到一个静态的Activity,它仍然不会工作,除非你给这个Activity定制了一个“onActivityResult”方法。

那么,用定制的“onActivityResult”方法设计一个活动并将其扩展到所有活动中? ... 开玩笑。

就我而言,我给予我的所有活动在其生命周期中做出动态工作的能力。这就是我的活动:

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服务。”但它确实有效。

P.S. CallByActivityResult是一个带有“onActivityResult(int value1,int value2,Intent intent)”方法的接口。