当前位置: 首页 > 知识库问答 >
问题:

后台活动识别

党源
2023-03-14

我正在制作一个应用程序,使用ActivityRecognition API跟踪用户在后台的活动,如果用户在指定的时间段(例如1小时)内保持在同一位置,则系统会推送通知,告诉用户散步。我已经实现了活动识别,但仅适用于打开应用程序的情况。显然,Google API客户端需要保持连接才能发送活动更新。我的问题是-对于后台活动跟踪,什么是更好的解决方案

1)在主活动(或单独活动)中实现警报管理器,该活动在30秒内唤醒一次活动,将Google API客户端连接到Play Services,然后将PendingIntent发送到IntentService进行活动分析

2)创建一个单独的服务(不是IntentService)以在后台(单独的线程)上持续运行,这将保持API Client连接,并将活动更新发送到IntentService。因此,系统将有2项服务:1)服务以保持API客户端连接到Play Services并将定期活动更新发送到IntentService进行分析;2)IntentService用于接收来自Service的活动更新,并分析数据

3) 其他一些解决方案(由你们提供)

备注:我的导师建议我使用AlarmManager,但您通常会将其用于网络更新之类的事情,因此间隔通常超过10分钟,而我需要30秒-1分钟。因此,我很犹豫是否使用它。

我以前也在这里看到过很多类似的问题,但我没有找到任何明确的答案。

共有2个答案

蒙墨竹
2023-03-14

我建议采用不同的方法。Google Activity recognition API的问题在于,在其可信度达到

邢飞昂
2023-03-14

实际上,只有请求和删除活动更新时才需要连接的GoogleAppClient—您不需要连接的GoogleAppClient来接收活动更新。

实际上,留档中特别提到了在后台工作:

一个常见的用例是,应用程序希望在后台监视活动,并在检测到特定活动时执行操作。要做到这一点,而不需要在后台始终打开的服务消耗资源,检测到的活动是通过意图传递的。应用程序指定PendingIntent回调(通常是IntentService),当检测到活动时,将使用意图调用该回调。意图接收者可以使用extResult(android.content.Intent)提取活动识别结果。有关更多详细信息,请参阅PendingIntent的留档。

 类似资料:
  • 我正在处理活动识别API,试图使其在后台运行。因此,我创建了一个连接到Play Services的服务,并且一直处于活动状态。当服务被销毁并重新创建时,我要干杯了。问题是,一段时间后,即使服务正在运行,它也会停止检测活动。 下面是该服务的一些代码。 我还覆盖了onConnectionSuspend 这段代码正常工作了一段时间,然后突然停止了。有人知道为什么吗? 谢谢。

  • 在最近的Google Play服务更新中,有人对活动识别API有问题吗? 我已经在一个应用程序中实现了它。在5.0更新之前,它工作得非常好。现在,当用户走路或坐着不动时,它会在车内返回:/ 并且根本不返回、或。 我应该知道的活动识别API是否有任何更改? 如果你需要更多的细节,请告诉我。

  • 在我的应用程序中,当我从后台回来时,我的活动会自动接近,并且它总是显示以前的活动。示例:我用活动A启动应用程序 }

  • 我正在开发android原生应用程序。我的要求是获取设备的当前活动,如运行,in_vehicle,静止等等。我使用Activity识别API并设置了通过IntentService接收活动更改的挂起意图。我给每个更新5秒的间隔。它未能在某段时间内提供活动更改并再次开始提供活动。之后我更喜欢Awareness SnapshotAPI来获取活动状态。它也是同样的结果,未能定期提供活动。两个API有时提供

  • 我将使用google play services活动识别api编写一个应用程序。android开发者网站上的培训是直接进行的,但在过去的几个小时里,我编写了一个简单的应用程序,但没有得到任何结果。更新:实际上,我将在5秒钟的时间间隔内以toast消息的形式显示用户的当前活动(如ActivityRecognitionService-Intent服务中的OnIntentHandler方法所示)。我认为

  • 好吧,所以我有点困惑该怎么处理这个。因此,我有了主活动,从那里可以启动一个活动到DegreePlan活动,从那里可以启动另一个活动到EditDegreeplan。我已经将EditDegreeplan设置为在Android清单中没有历史记录。问题是在他们保存EditDegreeplan后,它会启动一个活动到Degreeplan。因此,如果用户按下后退键,他们必须按两次才能再次进入主活动。我想摆脱它,