[Unity] 안드로이드 기기에서 GPS값 가져오기

잘생김·2024년 3월 19일

참고 : Unity Android #GPS #Foundation

안드로이드 기기에서 위치정보값을 가져오는것을 테스트하기로 한다.

using System;
using System.Collections;
using TMPro;
using UnityEngine;
using UnityEngine.Android;

public class GpsTest : MonoBehaviour
{

    public TextMeshProUGUI[] data = new TextMeshProUGUI[4];
    public float delay;
    public float maxtime = 5f;

    // Start is called before the first frame update
    void Start()
    {
        StartCoroutine(Gps_manger());
    }
    IEnumerator Gps_manger()
    {
        if(!Permission.HasUserAuthorizedPermission(Permission.FineLocation))
        {
            Permission.RequestUserPermission(Permission.FineLocation); 
            while(!Permission.HasUserAuthorizedPermission(Permission.FineLocation))
            {
                yield return null;
            }
        }

        if(Input.location.isEnabledByUser)
        {
            data[3].text = "Gps 장치가 꺼져있음.";
        }

        Input.location.Start();

        while(Input.location.status == LocationServiceStatus.Initializing && delay < maxtime) 
        {
            yield return new WaitForSeconds(1.0f);
            delay++;
        }

        if(Input.location.status == LocationServiceStatus.Failed || Input.location.status == LocationServiceStatus.Stopped)
        {
            data[3].text = "위치정보를 가져오는데 실패함.";
        }

        if ( delay >= maxtime ) 
        {
            data[3].text = "지연시간 초과.";
        }

        data[0].text = "위도 :" + Input.location.lastData.latitude.ToString();
        data[1].text = "경도 :" + Input.location.lastData.longitude.ToString();
        data[2].text = "고도 :" + Input.location.lastData.altitude.ToString();
        data[3].text = "위치 정보 수신완료";
        yield return new WaitForSeconds(5.0f);
    }

빌드 후 문제점이 순차적으로 2개가 나왔다.

  1. UI에서 위도/경도/고도/로그 텍스트가 표시 안됨.
  • erachy->XR-> UI Canvas로 만들지 않았기 때문이었음.
  • 그리고 TextMeshPro에서 한글을 지원해주는 폰트로 변경함.
  1. UI에서 위도/경도/고도/로그값이 0으로 뜨고 변경되지 않음.
  • 이것은 실내라서 GPS값을 못 받아온다는 말도 있었으나 기기에 잡히는 와이파이 문제였던 것 같다. 테스트 기기는 안드로이드 테블릿이었는데 셀룰러로 데이터 연결 후 실외에서 작동시키니 GPS값이 잡혔다.
profile
비전공자가 개발자로 취업하기 위해

0개의 댓글