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
Nested ClassesModifier and TypeClassDescriptionstatic interface위치 기능의 활성화에 대한 후킹 인터페이스.Nested classes/interfaces inherited from interface com.naver.maps.map.LocationSource
LocationSource.OnLocationChangedListener -
Constructor Summary
ConstructorsConstructorDescriptionFusedLocationSource(android.app.Activity activity, int permissionRequestCode) Activity를 사용하는 생성자.FusedLocationSource(androidx.fragment.app.Fragment fragment, int permissionRequestCode) Fragment를 사용하는 생성자. -
Method Summary
Modifier and TypeMethodDescriptionvoidNaverMap의 위치 추적 기능이 활성화되면 호출되는 메서드.voidNaverMap의 위치 추적 기능이 비활성화되면 호출되는 메서드.위치 기능의 활성화에 대한 훅 객체를 반환합니다.android.location.Location마지막 위치를 반환합니다.boolean활성화 여부를 반환합니다.boolean나침반의 활성화 여부를 반환합니다.booleanonRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) voidsetActivationHook(FusedLocationSource.ActivationHook activationHook) 위치 기능의 활성화에 대한 훅 객체를 지정합니다.voidsetCompassEnabled(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:
deactivatein 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:
- 마지막 위치.
-