繁体   English   中英

Android Fused Location API - 如何在一个应用程序中使用PRIORITY_BALANCED_POWER_ACCURACY和PRIORITY_HIGH_ACCURACY?

[英]Android Fused Location API - how to use PRIORITY_BALANCED_POWER_ACCURACY and PRIORITY_HIGH_ACCURACY in one application?

Android Fused Location API - 如何在一个应用程序中使用PRIORITY_BALANCED_POWER_ACCURACYPRIORITY_HIGH_ACCURACY

嗨,我正在开发一个需要定期发送位置更新的应用程序。 我已经使用Fused Location API和locaiton待定意图。 (更新间隔60秒,最小间隔100米)。 我已使用PRIORITY_BALANCED_POWER_ACCURACY和意向服务注册了locationclient待定意图。 当locaiton发生变化时,IntentService被调用,这对于少数测试驱动器来说效果很好。 但这只会有效。 当它不起作用时,我希望使用PRIORITY_HIGH_ACCURACY

我注意到当我使用PRIORITY_HIGH_ACCURACY ,它提供了良好的位置,但电池使用率非常高。 所以我决定同时使用PRIORITY_HIGH_ACCURACYPRIORITY_BALANCED_POWER_ACCURACY以及ActivityRecognition。

最初程序使用LocationPendingIntent以PRIORITY_BALANCED_POWER_ACCURACY开始,当没有2分钟更新时,我使用LocationListener(和onLocationChanged方法)实现PRIORITY_BALANCED_POWER_ACCURACY ,如果仍然没有位置,我调用PRIORITY_HIGH_ACCURACY

我在这里所面临的问题,一旦这种切换到PRIORITY_HIGH_ACCURACY ,LocationPendingIntent(与注册PRIORITY_BALANCED_POWER_ACCURACY总是使用) PRIORITY_HIGH_ACCURACY在此之后。 我通过调用.removeupdates(locationListener)删除onLocationChanged方法末尾的位置更新; 然而GPS图标每分钟都会出现。

我想过为onLocationChanged方法使用静态方法,但我知道这不是一个Android应用程序的好习惯。 同时使用PendingIntent和onLocationChanged还有任何已知问题吗? 你能建议解决我的问题吗?

权限设置为:

uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

任何有关这方面的帮助将非常感谢。

谢谢。

(我意识到这是一个非常晚的回应,但刚刚解决了这个问题,也许这些信息对某人有利)。 我想做一些非常相似的事情,我有两个问题:

  • 当我使用与我最初请求更新完全相同的参数时,我发现removeLocationUpdates失败 - 也就是说,我没有收到任何错误,结果回调表明取消已经正常工作。 但在调用removeLocationUpdates后,位置更新才会继续发生。 我发现使用参数0和null,因为这里的代码为我成功地停止了更新:

    Intent selfIntent = new Intent(ACTION_CHECK_LOCATION, null, getApplicationContext(), <ServiceClass>.class); PendingIntent selfPendingIntent = PendingIntent.getService(getApplicationContext(), 0, selfIntent, 0);

  • 我对requestLocationUpdates和removeLocationUpdates的调用之间可能存在冲突。 我不想意外地停止我刚刚请求的更新,所以我最终得到了两个单独的类,一个用于处理每种类型的更新。

在我的情况下,我没有一个预先的应用程序,而是我使用服务进行后台更新。 你可以在这里看到我的代码 - https://github.com/Esri/arcgis-runtime-demos-android/tree/master/2015-DS/LocalGeofence - 请注意我正在使用另一个SDK(Esri ArcGIS Runtime for Android) SDK,我为Esri工作)但你可以忽略这一点,只看两个服务GeofenceServiceNormal和GeofenceServiceFast,以及他们如何与Fused Location API进行交互。

我最终得到了两个服务类(以避免requestLocationUpdates和removeLocationUpdates冲突)。 每个服务都会识别它何时必须更改为其他服务(请参阅handleActionChangeToFastUpdates和handleActionChangeToNormalUpdates); 然后它为自己调用removeLocationUpdates,并为其他服务类调用requestLocationUpdates。 这项服务对我很有用 - 也许你可以使用类似的结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM