2016-04-03 71 views
-1

我正在开发一个应用程序,该程序会在用户进入预定义区域后执行某些操作,即使GPS关闭或不可用。Android位置更新和单元格位置

问题:如何识别用户已进入该区域(半径或精度为500至700米)。

与利弊&缺点可能的解决方案:

  1. 地理栅栏:如果GPS在这只会工作,否则不会&即使GPS已开启,但没有与卫星没有连接这是最有可能的根据我的应用(在地下室,地下或隧道内)使用情况,地理围栏不会触发。所以不能完全依靠GPS。

优点

一个。如果GPS在&能够与卫星连接,将工作。

b。将工作,即使手机屏幕处于关闭状态(即睡眠模式)

缺点: 一个。如果GPS关闭,则无法使用。

b。在地下室,隧道等连接问题的情况下不起作用。

  • addProximityAlert:谁能请解释什么是addProximityAlert &地理围栏之间的差异?哪一个更好?在以下情况下是接近警报触发:
  • a。当屏幕关闭但GPS开启时。

    b。 GPS关闭时。

    从onCellLocationChanged
  • 小区ID():由于不能在GPS完全依靠(可以是关闭或没有连接)使用cellLocation的思想。所以我实施 MyPhoneStateListener延伸PhoneStateListener,注册与电话服务PhoneStateListener.LISTEN_CELL_LOCATION &重写onCellLocationChanged方法。
  • 我知道面积的小区ID或塔的ID,我想成为入执行的操作,所以当onCellLocationChanged方法被调用我从cellLocationobject & CID与存储小区ID进行比较。

    问题onCellLocationChanged方法不叫屏幕如果关闭。发现这个方法也是传入的情况下调用&传出呼叫,不知道它应该只在单元格位置被改变时调用它的原因。任何人都知道原因?

    优点

    一个。即使GPS关闭,也能工作。

    缺点

    一个。当屏幕关闭时(即休眠模式),不会调用onCellLocationChanged方法。它也被称为当传入呼叫&传出呼叫。

    尝试持有部分唤醒锁仍然此方法是不叫。有人写了一个服务&请求网络位置更新,即使屏幕关闭onCellLocationChanged方法将被调用。尝试但仍然onCellLocationChanged屏幕关闭时不会调用。

    1. 创建服务,请求每隔2分钟从网络进行位置更新&最小距离为500米。

      locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000 *60 *2,500,this); 
      

    查询的第4点:

    一个。如果屏幕关闭,我们是否可以从网络获取位置更新?

    b。当GPS正在从网络获取位置更新信息时,但是GPS关闭时没有从网络获取位置更新信息。关于这一点不是100%肯定需要检查更多。请让我知道当我们从网络请求位置更新时的行为& GPS关闭。

    在一篇帖子中被问及太多问题,但在探索10-12天的各种选项后,无法找到即使没有GPS也能正常工作的可靠解决方案。

    谢谢。

    回答

    0

    披露:我为Pathsense工作。尽管我没有测试Google的地理围栏或没有GPS的Android地理围栏(addProximityAlert()),但我已经广泛测试了Pathsense地理围栏,并且我知道它可以在没有GPS的情况下工作(虽然不尽如人意)。

    但是,如果有第三方库不可用,您可以设置位置更新请求(LocationManager.requestUpdates()),其中minTime至少为30秒。这将降低功耗,并且您只需在要监控的位置与LocationManager提供的位置之间执行distance calculation,并在您的监控区域内执行您所期望的任何操作。

    +0

    感谢您的回复@Pablo。 PathSense是否免费或付费? Pathsense的精度半径是多少?如果它有700至800米的精度,没有GPS将为我工作。 – napster

    +0

    是的,它是免费的,我没有看到它在这种尺寸的地理围栏上工作的问题。我们支持小到50米的地理栅栏,但我建议在这种情况下使用GPS。 –

    +0

    欣赏你的努力@Pablo。在将答案标记为有用之前,将尝试PathSense。其实,即使没有GPS接近700-800米,应用程序也应该能够正常工作。希望解决方案可行干杯。 – napster