<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
AndroidManifest.xml에서 <manifest>와 <application> 태그 사이에 위 코드 작성한다.
Activity.java 코드
public class MainActivity extends AppCompatActivity {
// 위치 관련 클래스
LocationManager locationManager;
// 위치 관련 이벤트리스너
LocationListener locationListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 위치를 가져오기 위해서는 시스템서비스로부터 로케이션 매니저를 받아온다.
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
// 위치가 변할때마다 호출되는 함수 작성
locationListener = new LocationListener() {
@Override
public void onLocationChanged(@NonNull Location location) {
// 위도, 경도값을 뽑아서 우리에 맞는 코드를 작성한다.
// 위도
double lat = location.getLatitude();
// 경도
double lng = location.getLongitude();
Log.i("AAAAAAA", "위도 : " + lat);
Log.i("AAAAAAA", "위도 : " + lng);
Log.i("AAAAAAA", " ");
}
};
// 권한 허용하는 코드
if (ActivityCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED ||
ActivityCompat.checkSelfPermission(MainActivity.this,
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;
}
// 밀리세컨즈라 3초 = 3000, 사용안할거면 -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 (requestCode == 100){
// 허용하지 않았으면, 다시 허용하라는 alert 띄운다.
if (ActivityCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED ||
ActivityCompat.checkSelfPermission(MainActivity.this,
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);
finish();
return;
}
// 허용했으면, GPS 정보 가져오는 코드 넣는다.
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000,
-1, locationListener);
}
}
}
onRequestPermissionsResult() 함수는 onCreate() 함수 밖에 써야 한다.
위 코드 작성 후 실행하면 logcat에 현재 위치(위도, 경도)값이 나온다.
'Android Studio' 카테고리의 다른 글
[Android Studio] 구글 맵 API (Maps SDK for Android) 사용하기 (2) | 2024.01.10 |
---|---|
[Android Studio] 안드로이드 에뮬레이터 GPS 설정하는 법 (0) | 2024.01.10 |
[Android Studio] TabBar Fragment 사용하기 (1) | 2024.01.10 |
[Android Studio] TabBar 만들기 (2) | 2024.01.09 |
[Android Studio] 글로벌 표준시(UTC)를 로컬의 시간으로 변경하기 (1) | 2024.01.08 |