
위치를 잡아주는 LocationManager 사용법

안드로이드에서 위치정보를 얻는
LocationManger을 사용하기 위해서는
먼저 AndroidManifest.xml 퍼미션 설정을
해줘야 하는데요.
AndroidManifest.xml 에
아래 2개의 코드를 추가해 줍니다.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
RERMISSION_DENIED : 퍼미션이 부여되지 않은 상태
PERMISSION_GRANTED : 퍼미션이 부여되어 있는 상태
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.graphene911.location">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Location"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
MainActivity.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) this.getSystemService(LOCATION_SERVICE);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(@NonNull Location location) {
Log.i("myLocation", "위도 : " + location.getLatitude());
Log.i("myLocation", "경도 : " + location.getLongitude());
}
};
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(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;
}
// locationManager.requestLocationUpdates 파라미터 참고
// 첫번째는 gps를 사용하겠다
// 두번째는 위치정보를 가져올건데 내가 지정한 만큼의 시간 마다 정보를 받아온다. 초를 사용하지 않으면 -1을 기재
// 세번째는 내가 지정한 만큼의 움직이는 거리마다 gps정보를 받아오는데 단위는 미터단위. 미터를사용하지 않겠다면 -1을 기재
// 네번째는 locationListener 변수에서 좌표정보를 가져와라
// 위의 퍼미션은 아래 코드 작성 후 알트엔터
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
3000,
3,
locationListener);
}
// 퍼미션에대한 응답 함수
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == 100){
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;
}
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
3000,
3,
locationListener);
}
}
}
Logcat 확인

힐링아무의 코딩일기!!
'Back End > Android(' 카테고리의 다른 글
Android/ 안드로이드 스튜디오 구글맵 API 프로젝트 설정 (0) | 2022.07.29 |
---|---|
Andorid/ Retrofit 에서 Multipart form으로 데이터를 보내기 (0) | 2022.07.26 |
Andoid/ Retrofit2 라이브러리를 이용한 POST 로 API 호출하여 처리하는 방법 (0) | 2022.07.21 |
Android/ Retrofit2 라이브러리 사용을 위한 설정 방법 (0) | 2022.07.21 |
Android/ 카메라 & 앨범 처리 (0) | 2022.07.21 |
댓글