2016-03-27 54 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是你的活动上下文。