在运行时更改融合位置优先级
Posted
技术标签:
【中文标题】在运行时更改融合位置优先级【英文标题】:Change Fused Location priority during runtime 【发布时间】:2015-07-11 15:04:56 【问题描述】:我有两个意图服务: 1. 使用 Fused Location API 在后台接收位置更新。 2. 使用Activity Recognition API在后台接收Activity Recognition。
每当我检测到用户静止不动时,我希望能够将融合位置的优先级从 PRIORITY_HIGH_ACCURACY 更改为 PRIORITY_BALANCED_POWER_ACCURACY。
我听说过 removeLocationUpdates() 然后调用 requestLocationUpdates() 但我不能使用它,因为我只在后台运行没有活动的意图服务。
任何帮助都会有所帮助。
【问题讨论】:
为什么不能在活动识别IntentService
中调用requestLocationUpdates()
?
因为 GoogleApiClient 没有在那里连接,并且意图服务根本不知道 GoogleApiClient 对象......有什么办法可以将该对象从活动发送到意图服务?
【参考方案1】:
您的应用可以同时在多个地方连接到GoogleApiClient
。在您的活动识别IntentService
中使用blockingConnect()
连接到GoogleApiClient
会更容易,这样您可以在需要时直接调用requestLocationUpdates()
。
注意requestLocationUpdates()
Javadoc 上的评论:
任何先前注册的具有相同 PendingIntent(由equals(Object) 定义)的请求都将被此请求替换。
所以应该不需要打电话给removeLocationUpdates()
。
【讨论】:
谢谢...所以您是说要在 Activity Recognition Intent 服务中与 GoogleApiClient 建立新连接,并在我需要时请求?以上是关于在运行时更改融合位置优先级的主要内容,如果未能解决你的问题,请参考以下文章