2015-02-08 60 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)」方法的接口。