개발학습일지

[Android Studio] 위치 기반 서비스 _ 로그로 위치 확인 ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION 본문

Android Studio

[Android Studio] 위치 기반 서비스 _ 로그로 위치 확인 ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION

처카푸 2024. 6. 18. 17:20

위치 기반 서비스 _ 로그로 위치 확인하기

=> ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION

 

1. app/manifests/AndroidManifest.xml 권한 설정하기

    ...
    xmlns:tools="http://schemas.android.com/tools">
	
    // 기본 : 세밀한 위치
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    // 추가 : 기지국 위치
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <application
    ...

 

 

2. GPS 사용 방법 : 좌표 정보 표시

- 로그로 찍어서 위치 정보 확인하기

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() + ", 경도 : " + location.getLongitude());
            }
        };
        // 3. 로케이션 매니저에, 우리가 작성한 함수를 적용한다.
        // 3000 3초마다 바꿔고, 3미터마다 알려줘(-1 거리는 사용안하겠다.)
        // 권한 체크
        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[] {android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION},
                    100);
            return;
        }
        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(requestCode == 100){
            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);
        }

    }
}

- 안드로이드 앱 좌표 설정하기

- 점점점을 누르면 새로운 페이지로 열린다.