Android 上的 Unity GPS 位置不经常更新

Unity GPS location on Android infrequently updating

在统一应用程序中,我启动了定位服务

Input.location.Start(0,0); //tried various other values and default

然后像

一样不断地轮询它
Input.location.lastData

并对照最后一个位置的时间戳检查时间戳以查看更改。 Unity 自动请求精细位置访问,清单似乎没问题。

问题是位置很少更新。新地点之间的移动可能长达数公里和数分钟。 如果我然后启动 google 地图导航,它也使用 gps,我的应用程序将如预期的那样非常频繁地获取新的 gps 位置。

似乎 Unity 并没有真正打开 gps,但除了启动、轮询和拥有正确的清单之外,我看不出还有什么可以做的。

这个最小的例子显示了缓慢的更新。只有 ui 文本和此行为 运行 的应用程序将显示 gps 位置很少更新,除非某些其他应用程序(例如 google 地图导航)使用 gps。

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    public UnityEngine.UI.Text Info;
    void Start()
    {
        Input.location.Start(0.1f, 0.1f);
    }
    void Update()
    {
        Info.text = 
            Input.location.status.ToString() + System.Environment.NewLine +
            Input.location.lastData.timestamp.ToString();
    }
}

作为参考,找到了解决方案,这很愚蠢:关闭 "improving" 无线网络定位。

在 settings/locationaccess 底部 google 定位精度下,关闭 "make location more accurate using wifi"。

虽然我要求在即使是最小的移动后更新的准确位置,显然这个更准确的位置,补充 wifi,导致它不更新。

这是相当落后的,因为它显然意味着当您允许它使用 wifi 改善位置时,它将使用 wifi,而不是像预期的那样使用 gps wifi.

关闭此功能后,我会像预期的那样频繁收到更新。

如果这是 unity 或 android 的问题,那还不清楚,但它肯定是一个问题,尽管是可以解决的,只要你知道它。