在统一应用中,我启动位置服务
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();
}
}
答案 0 :(得分:0)
作为参考,发现了解决方案,这很愚蠢:通过wifi关闭“改善”位置。
在谷歌位置精度下方的底部设置/位置访问下,关闭“使用wifi使位置更准确”。
尽管我要求即使经过最小的移动也要提供准确的位置更新,但显然,这种更精确的位置(加上wifi)会导致其无法更新。
这是相当倒退的,因为当您允许它使用wifi改善位置时,它显然仅会使用wifi,而不是按预期使用gps和 > wifi。
关闭此功能后,我会按预期进行频繁的更新。
如果这是关于统一性还是与Android有关的问题,则尚不清楚,但这当然是一个问题,尽管它是可修复的,只要您对此有所了解。