0

我試圖使用Google活動識別API,並且只在活動發生變化時或每30分鐘獲得一次結果(如果活動未更改,則爲+ - 10分鐘或更多)。相反,當我打電話了一塊下面的代碼,我得到活動的識別結果經常在我IntentService,就像每一分鐘:Google活動識別API調用頻率過高

ActivityRecognition 
      .ActivityRecognitionApi 
      .requestActivityUpdates(mGoogleApiClient, 60000 * 30, getSensingServicePendingIntent()) 
      .setResultCallback(this); 

的方法來創建PendingIntent對象:

private PendingIntent getSensingServicePendingIntent(Integer userLabel) { 
    Intent i = new Intent(mContext, SenseDataIntentService.class); 

    return PendingIntent 
      .getService(mContext, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); 
} 

的方法,得到GoogleApiClient

private GoogleApiClient buildGoogleApiClient() { 
    mGoogleApiClient = new GoogleApiClient.Builder(mContext) 
      .addApi(ActivityRecognition.API) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .build(); 
    return mGoogleApiClient; 
} 

我知道the official documentation這樣說:

如果另一個應用程序還以更快的速度請求活動更新,則可能比detectIntervalMillis參數更頻繁地接收活動。當活動檢測服務收到當前活動可能發生變化的信號時,它可能也會更快地收到更新,例如設備長時間處於靜止狀態,然後從手機充電器上拔下插頭。

但我只是覺得我得到的更新太頻繁(即使活動沒有改變)。任何解決方案,因爲我想節省一些電池排水。

+0

可能的重複:http://stackoverflow.com/questions/27500602/android-activityrecognitionapi-requestactivityupdates-are-too-frequent-how-can –

回答

0

我想我已經想通了。 Google Fit正在後臺運行,並且不斷監聽活動更改。因此,我也得到了所有這些結果(因爲它是在文檔中寫的)。