我正在寻找一个位置感知的通知最先进的技术。
我的第一次尝试是使用的LocationManager的addProximityAlert但它需要ACCESS_FINE_LOCATION(COARSE_LOCATION给了我一个SecurityException),并保持GPS并且总是有效(至少在果冻豆),它很快消耗电池电量。 它也似乎并不尊重检查一次,每4分钟的时候,屏幕是睡着了( addProximityAlert )。
我想与PASSIVE_PROVIDER合作,收集其他应用程序的位置信息,并可能使用服务每隔一段时间(索要COARSE_LOCATION像每4分钟的时候,屏幕关闭,并更频繁地在屏幕上,并该装置被插入)。
该要求是当用户去附近的一些地方,应用程序将触发一个通知。
任何人都已经实现或有任何建议,以有效和电池效率的方式来实现这一点?
我建立这样的应用程序(因此我的问题在办公时间Q&A关于如何测量的LocationManager的电力消耗),同时它的工作真的很好。 我最初打算使用内置的接近警报,但奋斗在相同的问题,因为你并认为它不够灵活。
相反,我建立它使用LocationProvider轮询位置使用NETWORK_PROVIDER每五分钟服务,计算距离到所需位置(一个或多个),如果距离内,触发一个通知。 在有大量WiFi网络的城市,这给了我50米(报道)的精度。
我也用PASSIVE_PROVIDER从其他应用的位置请求中受益。
如果我在附近一所希望的位置和报道的准确性是太粗,以决定我是否在指定邻近范围内与否,我使用的是单一的GPS位置请求作为备份。 我也用,如果NETWORK_PROVIDER超时单一的GPS位置请求。 要没有,而我使用的地铁GPS提供商耗尽电池,也有指数退避超时。
虽然我连接到WiFi网络,我认为我不动,在此期间禁止位置提供。
我的最后一次更改是使用15分钟(“不精确重复”)计时器的NETWORK_PROVIDER如果我能决定,我将无法在15分钟内就做出任何的保存位置(所以轮询为5分钟INTERVALL没有意义)。 这有助于节省电力。
我想使用甚至更长的时间间隔,以节省更多的电力,但它不容易在这里找到启发,决定我是否能够达到这个时间内我储存的位置或没有,因为我不能总是假设同样的行驶速度(步行,乘坐火车或汽车旅行)。 但因为我不能够测量由我的应用程序中的LocationManager的功率损耗,我不知道如何在每一天的场景评估功耗。
我不会介意内置的API将提供所有的逻辑,但我得出的结论是没有,所以我建这个我自己。
希望这可以帮助你。
我使用下面库做到这一点。 https://code.google.com/p/little-fluffy-location-library/
这是很容易使用,但它并没有给太多的灵活性。 你不能改变即时比如更新频率。 但它的来源是可用的,你可以把它转换。