我正在制作一个应用程序,使用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分钟。因此,我很犹豫是否使用它。
我以前也在这里看到过很多类似的问题,但我没有找到任何明确的答案。
我建议采用不同的方法。Google Activity recognition API的问题在于,在其可信度达到
实际上,只有请求和删除活动更新时才需要连接的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方法所示)。我认为
自从在macOS上升级到Android Studio4.0后,我一直有这个问题。当我试图从Android Studio启动我的应用程序时,我会得到以下错误: 我的项目有一点独特之处在于,默认活动是在我的项目使用的另一个库的清单中定义的,而不是项目本身。在升级之前,这一切都很好,但现在不适合我。当我打开包含依赖项的项目时,它可以正常构建和运行。我已经尝试了以下步骤: 清理项目,重建 使缓存无效并重新