我正在开发Android原生应用程序。我的要求是获取设备的当前活动,如running,in_vehicle,still等。我使用ActivityRecognitionAPI并将pendingintent设置为通过IntentService接收活动更改。我给每个更新的时间间隔为5秒。它未能在一定时间内提供活动变化,并再次开始提供活动。之后我更喜欢Awareness SnapshotAPI来获取活动状态。它也同样的结果,未能定期提供活动。这两种API有时提供,有时不提供。我使用GooglePlayServices 10.2.0版本进行开发。任何人都知道这些事情的原因和解决方案,以获得定期的活动更新..
提前致谢。
我正在尝试展示我的应用用户的活动,比如他正在走路,跑步等等。这是我的要求。
方式1:
//使用ActivityRecognition.API的Google API客户端
Measurement
**我尝试过这种方式来获取活动更新。它开始提供活动信息,但有时不调用Intent服务,并再次启动触发意图。所以我无法显示正确的活动信息。
方式2:
//使用Awareness.API的Google API客户端
Value
**我尝试了另一种方式,使用此Api,我们可以递归调用此方法并经常获取活动信息。但它也有时提供并且有时检测到的ActivityResult.getStatus()没有成功。如果我想获取状态代码和状态消息,状态代码将返回15并且状态消息将为空。
这两种方式都无法定期更新活动,而且我使用的是GooglePlayService 10.2.0版本。我已经从Github测试了ActivityScognition的GoogleSamples。这也是同样的结果。我不知道如何达到我的要求。希望你现在能理解我的要求和我所面对的事情。
答案 0 :(得分:0)
获得回复后再次调用此方法:
我建议将detectIntervalMillis设置为0.这将导致尽快获取数据。(注意电池消耗)
ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(googleApiClient,o, callbackIntent);
答案 1 :(得分:0)
Google的ActivityRecognitionAPI并不定期提供更新。根据我的注意,如果活动的置信度或活动完全改变,那么它会发送更新。即使这样,它也需要时间来确保数据读取不仅仅是某种噪音。
我不确定您为什么需要定期更新,但我建议更改逻辑以接受最后一个给定的活动作为当前活动,并仅根据更改进行操作(即STILL
- &gt ; IN_VEHICLE
)。
答案 2 :(得分:0)
如果长时间没有变化,它将不会发送更新,直到发生变化......