gpt4 book ai didi

android - 哪个是检查用户位置(android 应用程序)是否在多边形内的更好方法

转载 作者:行者123 更新时间:2023-12-04 09:36:04 25 4
gpt4 key购买 nike

我正在构建一个 android 应用程序(地理围栏),其中我需要检查用户的位置是否在给定的多边形内。应用程序可以容忍检测中的一些延迟,但必须具有电池效率。
我目前正在做的如下 - 设置一个回调,当用户的位置改变 50 米(变量)时触发该回调。在回调中,使用点入多边形算法检查当前位置是否在多边形内,并相应地更新共享首选项。
现在,我试图通过使用 Google 的地理围栏 API 对其进行优化,但它仅适用于圆形地理围栏。这是我的想法 -

  • 计算可以覆盖整个多边形的最小圆
  • 使用Google的Geofence API设置用户进入和退出圈子时触发的回调
  • 当用户进入圈子时,设置一个与当前实现类似的回调(即每 50 米更新一次并存储校内/校外共享首选项)
  • 当用户退出圈子时,移除回调。

  • 因此,在这种情况下,当用户根本不在圈子中时,我会避免进行更新。但是,问题是,与融合位置提供程序相比,google 的 Geofence API 好多少?

    最佳答案

    虽然我对 Geofence API 一无所知,但我非常相信它基于融合位置提供程序 (FLP)。
    当设置了地理围栏并且设备注册了运动时,FLP 会请求位置并根据地理围栏进行检查。
    这种机制的一些证据可以在 Android 错误报告 (https://developer.android.com/topic/performance/power/setup-battery-historian) 中找到。例如,我在使用地理围栏(Galaxy S9、Android 10)时发现了以下行:

    Request[PRIORITY_BALANCED_POWER_ACCURACY requested=1800000ms fastest=5000ms] tag=geofencing moduleId=com.google.android.gms.location.geofencing hideAppOps=true clients=[my_app] forceCoarseLocation=false exemptFromBackgroundThrottle
    从本质上讲,这意味着我的应用程序设置的地理围栏每 30 分钟以平衡精度(即 wifi 精度)请求位置。这是地理围栏触发器的最长可能延迟。其他源触发的位置以最小5s的间隔被动定位。
    如果位置请求未根据运动计时,则将您自己的位置请求与多边形点检查相结合可能会消耗更多电池。

    关于android - 哪个是检查用户位置(android 应用程序)是否在多边形内的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62580724/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com