좌표 표시하는 라이브러리로 코드 작성하기
환경변수 설정하기
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
MainActivity.java
package com.~.gps;
import android.Manifest;
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.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import java.util.List;
public class MainActivity extends AppCompatActivity {
LocationListener locationListener;
LocationManager locationManager;
@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. 로케이션 매니저에, 우리가 작성한 함수를 적용한다.
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); //minTimeMs초마다 한번씩 또는 minDistanceM미터가 변경될 때마다 한번씩 실행 시킨다.
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 100) { // 요청 코드가 100일 때만 처리
// grantResults 배열의 길이를 확인하여 IndexOutOfBoundsException 방지
if (grantResults.length > 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
// 위치 권한이 승인되었을 때
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
if (locationManager != null) { // locationManager가 null이 아닌지 확인
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
3000,
-1,
locationListener); // minTimeMs초마다 한 번씩 또는 minDistanceM미터가 변경될 때마다 한 번씩 실행
}
}
}
}
}
}
실행시키면, 로그캣에서 현재 기기에 등록된 나의 위치의 위도 경도를 알려준다.
실행시킨 상태에서, 아래와 같은 버튼을 누르면 새 창으로 GPS가 뜬다.
지정하고 싶은 위치를 클릭하고 SavePoint를 한 뒤, import GPX/KML 눌러준다
그리고 Set Location 하면 된다.
'Android' 카테고리의 다른 글
키워드 입력하면 내 주변에 있는 장소 검색하여 지도 띄워주는 앱(app) 만들기 (nearbysearch API 사용) (0) | 2024.06.19 |
---|---|
안드로이드 스튜디오에서 구글 맵 사용하기 (0) | 2024.06.18 |
안드로이드 스튜디오 탭 바(Tab Bar) 구현하기 (0) | 2024.06.18 |
사진을 포스팅하는 어플리케이션(App) 개발하기 (0) | 2024.06.17 |
(안드로이드 스튜디오) 카메라 촬영 사진 업로드 권한 설정, 이미지 업로드하는 기능 만들기 (2) | 2024.06.14 |