2016-03-27 39 views
1

我希望在Google健身會話開始或結束時在手機上啓動BroadcastReceiver。我有清單設置爲接收器:Android:Google Fit:會話開始/結束BroadcastReceivers不觸發

<receiver android:name=".YogaSessionStartedBroadcastReceiver" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="com.google.android.gms.fitness.session_start" /> 
      <data android:mimeType="vnd.google.fitness.activity_type/yoga" /> 
     </intent-filter> 
    </receiver> 

    <receiver android:name=".YogaSessionEndedBroadcastReceiver" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="com.google.android.gms.fitness.session_end" /> 
      <data android:mimeType="vnd.google.fitness.activity_type/yoga" /> 
     </intent-filter> 
    </receiver> 

而且我在我的應用程序開始活動類型YOGA會話:

mSession = new Session.Builder() 
      .setName(SESSION_NAME) 
      .setIdentifier(getString(R.string.app_name) + " " + System.currentTimeMillis()) 
      .setDescription("Yoga Session Description") 
      .setStartTime(Calendar.getInstance().getTimeInMillis(), TimeUnit.MILLISECONDS) 
      .setActivity(FitnessActivities.YOGA) 
      .build(); 

    PendingResult<Status> pendingResult = 
      Fitness.SessionsApi.startSession(mGoogleApiClient, mSession); 

不過的onReceive是從來沒有在我BroadcastReceivers調用。有什麼建議麼?

+0

不知道爲什麼這是被投票。這是一個合理的問題,我無法找到任何關於Google Fit如何使用廣播接收器的小問題的答案:https://developers.google.com/fit/android/using-sessions#session_start_intents –

回答

1

你註冊了會話嗎?

registerForSessions (GoogleApiClient client, PendingIntent intent) 

事情是這樣的:

Intent intent = new Intent(mContext,YogaSessionEndedBroadcastReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, alarmIntent, 0); 
Fitness.SessionsApi.registerForSessions(mClient,pendingIntent); 

哪個移動客戶端是你的GoogleApiClient和mContext是你的活動上下文。