Android手动启动ActivityRecognition

时间:2014-04-17 08:56:32

标签: android google-play-services activity-recognition android-intentservice

我的Android App需要检测当前的Activity(正在运行,行走......)。

我按照Android Dev页面上的说明操作: http://developer.android.com/reference/com/google/android/gms/location/ActivityRecognitionClient.html

// Connect to the ActivityRecognitionService
ActivityRecognitionClient mActivityRecognitionClient =
       new ActivityRecognitionClient(this, this, this);
mActivityRecognitionClient.connect();

// Called when a connection to the ActivityRecognitionService has been established.
public void onConnected(Bundle connectionHint) {
   Intent intent = new Intent(this, MyIntentService.class);
   PendingIntent callbackIntent = PendingIntent.getService(this, 0, intent,
           PendingIntent.FLAG_UPDATE_CURRENT);
   mActivityRecognitionClient.requestActivityUpdates(30000, callbackIntent);
}

在我的意图服务中:

protected void onHandleIntent(Intent intent) {
   if (ActivityRecognitionResult.hasResult(intent)) {
       ActivityRecognitionResult result = ActivityRecognitionResult.extractResult(intent);
       // Put your application specific logic here (i.e. result.getMostProbableActivity())
   }
}

这是我的问题:我想自己开始活动识别。 Android Dev Page中的代码似乎就像它应该这样做。但如果我不将服务添加到AndroidManifest,它将不会做任何事情。调用onConnected()方法,但不调用onHandleIntent()。

所以我想我可能只需要将它添加到Manifest中。现在我收到活动,但我一直收到它们。这也不是我想要的。我做错了什么?

提前致谢, Steff

1 个答案:

答案 0 :(得分:0)

或者,您可以“手动”执行此操作,而无需google-play-services。 请参阅我的回答here。主要思想是检测当前的顶级Activity,即外部应用程序的Activity。您可以创建Service,以监控热门活动。