Служба Unity Location отключается в одном приложении, но не в другом - PullRequest
1 голос
/ 18 мая 2019

Я делаю приложение на основе определения местоположения, которое имеет компас, указывающий на некоторые координаты Long и Lat.Мне нужно получить доступ к своим собственным координатам, чтобы иметь возможность рассчитать поворот, в котором нуждается мой компас, но проблема в том, что мой сервис определения местоположения истекает.Чувствительность этого приложения составляет 3 метра.

Я создал второе приложение, которое просто показывает ваши координаты Long и Lat с чувствительностью местоположения 5 метров, и оно работает почти мгновенно.Вот код моего первого проекта:

IEnumerator Start()
{
    // First, check if user has location service enabled
    if (!Input.location.isEnabledByUser)
    {
        ErrorHandler.ShowMessageError("Location service not enabled");
        isLoopAllowed = false;
        yield break;
    }

    // Start service before querying location
    Input.location.Start(Storage.LOCATION_SENSITIVITY, Storage.LOCATION_SENSITIVITY);

    // Wait until service initializes
    int maxWait = 20;
    while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
    {
        yield return new WaitForSeconds(1);
        maxWait--;
    }

    // Service didn't initialize in 20 seconds
    if (maxWait < 1)
    {
        ErrorHandler.ShowMessageError("Timed out");
        isLoopAllowed = false;
        yield break;
    }

    // Connection has failed
    if (Input.location.status == LocationServiceStatus.Failed)
    {
        ErrorHandler.ShowMessageError("Can't locate your device");
        isLoopAllowed = false;
        yield break;
    }
    else
    {
        // Access granted and location value could be retrieved
        //print("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);
        Storage.USER_LATITUDE = Input.location.lastData.latitude;
        Storage.USER_LONGITUDE = Input.location.lastData.longitude;
        Storage.LOCATION_READY = true;
    }
}

Некоторое введение в скрипт:

Переменная isLoopKeyAllowed предназначена для остановки цикла в случае ошибки.

Хранениекласс - это просто класс с глобальными переменными.

В классе ErrorHandler есть функция ShowMessageError (), которая просто выводит ошибку на экран.

LOCATION_READY - это переменная, используемая компасомсценарий.

и это все.Я не знаю в чем проблема.Может быть, это вызвано тем, что чувствительность слишком высока?

(РЕДАКТИРОВАТЬ): Проблема в том, что отображается ошибка тайм-аута и цикл завершен.

...