Android上的Unity GPS位置很少更新

时间:2019-04-15 07:28:15

标签: unity3d android-gps

在统一应用中,我启动位置服务

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

然后像

那样连续轮询
Input.location.lastData

,并对照上一个位置的时间戳检查时间戳以查看更改。 Unity自动请求精确的位置访问,清单似乎很好。

问题是位置很少更新。在新位置之间的移动可能长达数公里,而且时间长达数分钟。 如果随后我启动​​了也使用gps的google maps导航,我的应用程序将按预期非常频繁地获取新的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();
    }
}

1 个答案:

答案 0 :(得分:0)

作为参考,发现了解决方案,这很愚蠢:通过wifi关闭“改善”位置。

在谷歌位置精度下方的底部设置/位置访问下,关闭“使用wifi使位置更准确”。

尽管我要求即使经过最小的移动也要提供准确的位置更新,但显然,这种更精确的位置(加上wifi)会导致其无法更新。

这是相当倒退的,因为当您允许它使用wifi改善位置时,它显然仅会使用wifi,而不是按预期使用gps和 > wifi。

关闭此功能后,我会按预期进行频繁的更新。

如果这是关于统一性还是与Android有关的问题,则尚不清楚,但这当然是一个问题,尽管它是可修复的,只要您对此有所了解。