Android Studio/기능 사용법

Android Studio : GPS 사용하기 위한 설정 방법

신강희 2024. 6. 18. 17:35
728x90

< GPS 사용하기 위한 설정 방법 >

 

# 안드로이드 스튜디오에서 MAP 기능을 사용하기전 GPS 기능을 연동하기 위한 설정 방법!

- 우선 AndroidManifest.xml 파일안에 권한 추가 필요!

- 위치 중요! <application> 상단에 작성해 주어야 한다.

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

 

# 이제 MainActivity 작성

- 작성중 LocationListener = new LocationListener() 부분에서 에러 방생됨.

- 항목 한가지만 임플리먼트 해주면됨

package com.ksg.gps;

import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;

import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import java.util.List;

import android.Manifest;


public class MainActivity extends AppCompatActivity {

    LocationManager locationManager;
    LocationListener locationListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 1. 위치를 가져오기 위해서는,
        // 시스템 서비스로부터, 로케이션 매니저를 받아온다.
        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        // 2. 위치가 바뀔때마다, 우리가 처리해야 할 함수 작성!
        locationListener = new LocationListener() {
            @Override
            public void onLocationChanged(@NonNull Location location) {
                Log.i("GPS MAIN", "위도 : " + location.getLatitude() + " , rudeh : " + location.getLongitude());
            }
        };

        // 3. 로케이션 매니저에, 우리가 작성한 함수를 적용한다.
        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            ActivityCompat.requestPermissions(MainActivity.this,
                    new String[] {Manifest.permission.ACCESS_FINE_LOCATION,
                            Manifest.permission.ACCESS_COARSE_LOCATION} ,
                    100);

            return;
        }

        // 몇초마다 체크할지
        // 위치 설정 인데 에뮬레이터이므로 위치설정못하므로 그냥 -1로 설정함. 정수로 설정하면 미터단위로 거리 섲렁가능
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                3000,
                -1,
                locationListener);

    }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            ActivityCompat.requestPermissions(MainActivity.this,
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION,
                            Manifest.permission.ACCESS_COARSE_LOCATION},
                    100);

            return;
        }

        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                3000,
                -1,
                locationListener);

    }
}

 

# 메인 엑티비티 실행!

- 실행후 에뮬레이터 위에 ... 을 클릭

- 실행창에서 Location 위치를 검색하고 저장후에 앱을 재실행 하면

- 로그에 현재 위치 경도,위도가 출력됨


다음 게시글로 계속~!

 

반응형