Android位置更新&单元格位置

时间:2016-04-03 14:00:58

标签: android gps geolocation android-geofence

我正在开发一个应用程序,即使GPS已关闭或无法使用,也会在用户进入预定义区域后执行某些操作。

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

专业人士可能的解决方案缺点:

  1. 地理围栏:只有在GPS开启的情况下才会起作用,否则不会即使GPS打开但是没有与卫星的连接,这很可能是根据我的应用的用例(在地下室,地下或隧道中),地理围栏也不会触发。所以不能完全依赖GPS。
  2. 优点

    一个。如果GPS开启,将会工作吗?能够与卫星连接。

    湾即使手机屏幕关闭(即睡眠模式)也能正常工作

    缺点 : 一个。如果GPS关闭,则无效。

    湾在地下室,隧道等连接问题的情况下不会工作。

    1. addProximityAlert :任何人都可以解释一下addProximityAlert& amp;地理界线?哪一个更好?在以下情况下是接近警报触发器:
    2. 一个。当屏幕关闭但GPS已开启时。

      湾当GPS关闭时。

      1. 来自onCellLocationChanged()的单元ID :由于无法完全依赖GPS(可以关闭或无连接),因此想到使用cellLocation。所以我实现 MyPhoneStateListener扩展 PhoneStateListener ,使用PhoneStateListener.LISTEN_CELL_LOCATION& amp;覆盖onCellLocationChanged方法。
      2. 我知道我希望在输入时执行操作的区域的单元ID或塔ID,所以当调用onCellLocationChanged方法时,我从cellLocationobject&获取cid。将其与存储的细胞ID进行比较。

        问题 onCellLocationChanged 方法屏幕 屏幕如果关闭。发现这个方法在传入&的情况下也被调用拨出电话,不知道是什么原因只应在小区位置改变时调用。谁知道原因?

        优点

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

        缺点

        一个。如果关闭屏幕(即睡眠模式),则不调用onCellLocationChanged方法。在传入&的情况下也会调用它。打电话。

        尝试保持部分唤醒锁此方法未调用。有人写过开始服务&请求从网络更新位置,然后即使屏幕关闭onCellLocationChanged方法也将被调用。当屏幕关闭时,尝试但仍然在onCellLocationChanged上调用。

        1. 每隔2分钟创建一次请求从网络更新位置的服务。最小距离是500米。

          locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000 *60 *2,500,this);
          
        2. 第4点查询:

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

          湾当GPS正在从网络获取位置更新但GPS关闭时没有从网络获取位置更新。不是100%肯定这一点需要检查更多。当我们从网络和网站请求位置更新时,请告诉我们的行为。 GPS关闭。

          在一篇文章中提出了太多问题,但在探索了10-12天的各种选项之后,即使没有GPS也无法找到可靠的解决方案。

          感谢。

1 个答案:

答案 0 :(得分:0)

披露:我为Pathsense工作。

虽然我没有测试Google的地理围栏或Android的地理围栏(addProximityAlert())没有使用GPS,但我已经广泛测试了Pathsense地理围栏,而且我知道它可以在没有GPS的情况下工作(尽管不是很准确)。

但是,如果无法使用第三方库,则可以使用minTime至少30秒设置位置更新请求(LocationManager.requestUpdates())。这样可以降低功耗,您可以在您监控的位置和LocationManager给出的位置之间进行distance calculation,并且如果它大于您的监控区域,则执行您想要的任何操作。