Package com.naver.maps.map.util
Class FusedLocationSource
java.lang.Object
com.naver.maps.map.util.FusedLocationSource
- All Implemented Interfaces:
LocationSource
Google Play 서비스의 Fused Location Provider를 사용하는
이 구현체를 사용하려면
LocationSource
구현체.
이 구현체를 사용하려면
build.gradle
에 play-services-location
21.0.1 이상에 대한 의존성을
추가해야 합니다.
dependencies { implementation("com.google.android.gms:play-services-location:21.0.1") }또한
AndroidManifest.xml
에 ACCESS_COARSE_LOCATION
또는 ACCESS_FINE_LOCATION
권한을 명시해야 합니다.
<manifest> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> </manifest>이 클래스는 런타임 권한 처리 기능을 내장하고 있으므로, 생성자에
Activity
또는 Fragment
객체를
전달하고 권한 요청 코드를 지정해야 합니다. 또한 onRequestPermissionResult()
의 결과를
onRequestPermissionsResult(int, String[], int[])
에 전달해야 합니다.
public class LocationSourceActivity extends Activity { private static final int LOCATION_PERMISSION_REQUEST_CODE = 1000; private FusedLocationSource locationSource; private NaverMap naverMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); locationSource = new FusedLocationSource(this, LOCATION_PERMISSION_REQUEST_CODE); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (locationSource.onRequestPermissionsResult(requestCode, permissions, grantResults)) { if (!locationSource.isActivated()) { // 권한 거부됨 naverMap.setLocationTrackingMode(LocationTrackingMode.None); } return; } super.onRequestPermissionsResult(requestCode, permissions, grantResults); } }
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
위치 기능의 활성화에 대한 후킹 인터페이스.Nested classes/interfaces inherited from interface com.naver.maps.map.LocationSource
LocationSource.OnLocationChangedListener
-
Constructor Summary
ConstructorDescriptionFusedLocationSource
(android.app.Activity activity, int permissionRequestCode) Activity
를 사용하는 생성자.FusedLocationSource
(androidx.fragment.app.Fragment fragment, int permissionRequestCode) Fragment
를 사용하는 생성자. -
Method Summary
Modifier and TypeMethodDescriptionvoid
NaverMap
의 위치 추적 기능이 활성화되면 호출되는 메서드.void
NaverMap
의 위치 추적 기능이 비활성화되면 호출되는 메서드.위치 기능의 활성화에 대한 훅 객체를 반환합니다.android.location.Location
마지막 위치를 반환합니다.boolean
활성화 여부를 반환합니다.boolean
나침반의 활성화 여부를 반환합니다.boolean
onRequestPermissionsResult
(int requestCode, String[] permissions, int[] grantResults) void
setActivationHook
(FusedLocationSource.ActivationHook activationHook) 위치 기능의 활성화에 대한 훅 객체를 지정합니다.void
setCompassEnabled
(boolean enabled) 나침반의 활성화 여부를 지정합니다.
-
Constructor Details
-
FusedLocationSource
public FusedLocationSource(@NonNull androidx.fragment.app.Fragment fragment, int permissionRequestCode) Fragment
를 사용하는 생성자.- Parameters:
fragment
- 권한을 요청할Fragment
객체.permissionRequestCode
- 권한 요청 코드.
-
FusedLocationSource
public FusedLocationSource(@NonNull android.app.Activity activity, int permissionRequestCode) Activity
를 사용하는 생성자.- Parameters:
activity
- 권한을 요청할Activity
객체.permissionRequestCode
- 권한 요청 코드.
-
-
Method Details
-
onRequestPermissionsResult
public boolean onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) - Parameters:
requestCode
-onRequestPermissionsResult()
로 전달받은requestCode
.permissions
-onRequestPermissionsResult()
로 전달받은permissions
.grantResults
-onRequestPermissionsResult()
로 전달받은grantResults
.- Returns:
- 권한 처리 여부.
requestCode
가 생성자에 지정한permissionRequestCode
와 같을 경우true
, 그렇지 않을 경우false
.
-
isActivated
public boolean isActivated()활성화 여부를 반환합니다. 연결된 지도 객체가 위치 추적 기능을 사용하면 활성화됩니다. 위치 권한이 부여되지 않았다면 비활성화된 것으로 간주됩니다.- Returns:
- 활성화된 경우
true
, 그렇지 않은 경우false
.
-
getActivationHook
위치 기능의 활성화에 대한 훅 객체를 반환합니다.- Returns:
- 훅 객체. 지정된 훅 객체가 없을 경우
null
.
-
deactivate
public void deactivate()NaverMap
의 위치 추적 기능이 비활성화되면 호출되는 메서드. 비활성화되면 이전에 지정되었던listener
의LocationSource.OnLocationChangedListener.onLocationChanged(Location)
가 더 이상 호출돼서는 안 됩니다.- Specified by:
deactivate
in interfaceLocationSource
-
isCompassEnabled
public boolean isCompassEnabled()나침반의 활성화 여부를 반환합니다. 활성화할 경우 장치의 가속, 지자기 센서를 이용해 사용자가 바라보는 방위를 측정하고, 측정된 방위를Location
에 반영합니다.
기본값은false
입니다.- Returns:
- 활성화된 경우
true
, 그렇지 않을 경우false
.
-
setCompassEnabled
public void setCompassEnabled(boolean enabled) 나침반의 활성화 여부를 지정합니다. 활성화할 경우 장치의 가속, 지자기 센서를 이용해 사용자가 바라보는 방위를 측정하고, 측정된 방위를Location
에 반영합니다. 센서는 전력을 소모하므로 다음과 같이LocationTrackingMode
가LocationTrackingMode.Follow
나LocationTrackingMode.Face
일 경우에만 활성화하는 것이 권장됩니다.naverMap.addOnOptionChangeListener(() -> { fusedLocationSource.setCompassEnabled(mode == LocationTrackingMode.Follow || mode == LocationTrackingMode.Face); });
기본값은false
입니다.- Parameters:
enabled
- 활성화할 경우true
, 그렇지 않을 경우false
.
-
getLastLocation
@Nullable public android.location.Location getLastLocation()마지막 위치를 반환합니다. 아직 위치를 수신하기 전이라면null
이 반환됩니다.- Returns:
- 마지막 위치.
-