我正在开发一个应用程序,该程序会在用户进入预定义区域后执行某些操作,即使GPS关闭或不可用。Android位置更新和单元格位置
问题:如何识别用户已进入该区域(半径或精度为500至700米)。
与利弊&缺点可能的解决方案:
- 地理栅栏:如果GPS在这只会工作,否则不会&即使GPS已开启,但没有与卫星没有连接这是最有可能的根据我的应用(在地下室,地下或隧道内)使用情况,地理围栏不会触发。所以不能完全依靠GPS。
优点:
一个。如果GPS在&能够与卫星连接,将工作。
b。将工作,即使手机屏幕处于关闭状态(即睡眠模式)
缺点: 一个。如果GPS关闭,则无法使用。
b。在地下室,隧道等连接问题的情况下不起作用。
- addProximityAlert:谁能请解释什么是addProximityAlert &地理围栏之间的差异?哪一个更好?在以下情况下是接近警报触发:
- 小区ID():由于不能在GPS完全依靠(可以是关闭或没有连接)使用cellLocation的思想。所以我实施 MyPhoneStateListener延伸PhoneStateListener,注册与电话服务PhoneStateListener.LISTEN_CELL_LOCATION &重写onCellLocationChanged方法。
创建服务,请求每隔2分钟从网络进行位置更新&最小距离为500米。
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000 *60 *2,500,this);
a。当屏幕关闭但GPS开启时。
b。 GPS关闭时。
-
从onCellLocationChanged
我知道面积的小区ID或塔的ID,我想成为入执行的操作,所以当onCellLocationChanged方法被调用我从cellLocationobject & CID与存储小区ID进行比较。
问题是onCellLocationChanged方法不叫当屏幕如果关闭。发现这个方法也是传入的情况下调用&传出呼叫,不知道它应该只在单元格位置被改变时调用它的原因。任何人都知道原因?
优点:
一个。即使GPS关闭,也能工作。
缺点:
一个。当屏幕关闭时(即休眠模式),不会调用onCellLocationChanged方法。它也被称为当传入呼叫&传出呼叫。
尝试持有部分唤醒锁仍然此方法是不叫。有人写了一个服务&请求网络位置更新,即使屏幕关闭onCellLocationChanged方法将被调用。尝试但仍然onCellLocationChanged屏幕关闭时不会调用。
查询的第4点:
一个。如果屏幕关闭,我们是否可以从网络获取位置更新?
b。当GPS正在从网络获取位置更新信息时,但是GPS关闭时没有从网络获取位置更新信息。关于这一点不是100%肯定需要检查更多。请让我知道当我们从网络请求位置更新时的行为& GPS关闭。
在一篇帖子中被问及太多问题,但在探索10-12天的各种选项后,无法找到即使没有GPS也能正常工作的可靠解决方案。
谢谢。
感谢您的回复@Pablo。 PathSense是否免费或付费? Pathsense的精度半径是多少?如果它有700至800米的精度,没有GPS将为我工作。 – napster
是的,它是免费的,我没有看到它在这种尺寸的地理围栏上工作的问题。我们支持小到50米的地理栅栏,但我建议在这种情况下使用GPS。 –
欣赏你的努力@Pablo。在将答案标记为有用之前,将尝试PathSense。其实,即使没有GPS接近700-800米,应用程序也应该能够正常工作。希望解决方案可行干杯。 – napster