【问题标题】:Android start ActivityRecognition ManuallyAndroid手动启动ActivityRecognition
【发布时间】:2014-04-17 08:56:32
【问题描述】:

我的 Android 应用需要检测当前的 Activity(跑步、步行等)。

我按照 Android 开发页面上的说明进行操作: 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);
}

在我的 Intent-Service 中:

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()。

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

提前致谢, 斯特夫

【问题讨论】:

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


    【解决方案1】:

    或者,您可以“手动”执行此操作,无需google-play-services。 请参阅我的回答here。主要思路是检测当前topActivity,也就是外部应用的Activity。您可以创建Service,它将监控热门活动。

    【讨论】:

    • 谢谢,但我还是希望能找到一个解决方案,可以使用Android给出的逻辑。如果没有机会以编程方式开始识别,我为什么要打电话给mActivityRecognitionClient.connect();。如果我将服务添加到清单中,我什至不调用该函数,它仍然可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    相关资源
    最近更新 更多