geolocation
geolocation 는 HSP 에서 기본으로 제공하는 API 로 AndroidManifest.xml 내 uses-permission 을 추가하면 사용 가능 하다.
Example
<uses-feature android:name="android.hardware.location.gps" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
geolocation 는 Android 에서 제공하는 Geolocation 기능의 Wrapper class 이며 geolocation 을 통해 전달되는 위치 정보는 LocationData 에 담아 전달되며 아래의 클래스 형태로 구성되어 있으며 세부 내용은 하단을 참조한다.
LocationData Class
public static class LocationData implements Serializable {
String error;
final GpsData coords;
final long timestamp;
}
String error;
final GpsData coords;
final long timestamp;
}
GpsData Class
static class GpsData implements Serializable {
final double latitude;
final double longitude;
final double altitude;
final double accuracy;
final double altitudeAccuracy;
}
final double latitude;
final double longitude;
final double altitude;
final double accuracy;
final double altitudeAccuracy;
}
LocationData
필드 | 필드 | 설명 |
coords | latitude | 위도 |
longitude | 경도 | |
altitude | 높이 | |
accuracy | 위경도의 정확도(meter법) | |
altitudeAccuracy | 높이의 정확도(meter법) | |
timestamp | 정보를 수집한 시간 | |
error | 오류 발생 시 오류에 대한 설명 | |
getCurrentPosition
getCurrentPosition 은 현재 단말의 위치를 정보를 얻어 그 정보를 LocationData 형태로 반환 한다.
options
필드 | 설명 | M/O |
---|---|---|
observer | 위치정보 관찰자 | M |
Example
val observer = DAPGeolocation.LocationObserver(this@MainActivity)
DAPGeolocation.getCurrentPosition(this@MainActivity, observer, {
//TODO
}) {
//TODO
}
DAPGeolocation.getCurrentPosition(this@MainActivity, observer, {
//TODO
}) {
//TODO
}
LocationObserver observer = new LocationObserver(MainActivity.this);
DAPGeolocation.getCurrentPosition(MainActivity.this, observer, result -> {
// TODO
}, e -> {
// TODO
});
DAPGeolocation.getCurrentPosition(MainActivity.this, observer, result -> {
// TODO
}, e -> {
// TODO
});
watchPosition
watchPosition 은 3번째 인자인 interval 값을 참조하여 주기적으로 단말의 위치 정보를 LocationData 형태로 전달 받는데, Android 에서 제공 하는 GPS 정보 특성 때문에 이동 거리가 없는 경우 지정한 시간에 맞춰 데이터가 반환 되지 않을 수도 있다.
options
필드 | 설명 | 비고 | M/O |
---|---|---|---|
observer | 위치정보 관찰자 | M | |
interval | 정보 갱신 시간 (ms) | M | |
watchId | watch 아이디 | 임의의 문자열 | M |
Example
val observer = DAPGeolocation.LocationObserver(this@MainActivity)
DAPGeolocation.watchPosition(this@MainActivity, observer, "1", 1000, {
//TODO
}) {
//TODO
}
DAPGeolocation.watchPosition(this@MainActivity, observer, "1", 1000, {
//TODO
}) {
//TODO
}
LocationObserver observer = new LocationObserver(MainActivity.this);
DAPGeolocation.watchPosition(MainActivity.this, observer, "1", 1000, result -> {
// TODO
}, e -> {
// TODO
});
DAPGeolocation.watchPosition(MainActivity.this, observer, "1", 1000, result -> {
// TODO
}, e -> {
// TODO
});
clearWatch
clearWatch 는 watchPosition 을 clear 하는 기능으로 watchPosition 을 요청할 때 등록하였던 첫 번째 인자인 observer, 두 번째 인자인 watchId 와 동일한 값을 입력해야 한다.
options
필드 | 설명 | 비고 | M/O |
---|---|---|---|
observer | 위치정보 관찰자 | watchPosition 에서 생성한 observer 사용 | M |
watchId | watch 아이디 | 임의의 문자열 watchPosition 에서 생성한 watchId 사용 | M |
Example
val observer = DAPGeolocation.LocationObserver(this@MainActivity)
DAPGeolocation.clearWatch(this@MainActivity, observer, "1", {
//TODO
}) {
//TODO
}
DAPGeolocation.clearWatch(this@MainActivity, observer, "1", {
//TODO
}) {
//TODO
}
LocationObserver observer = new LocationObserver(MainActivity.this);
DAPGeolocation.clearWatch(MainActivity.this, observer, "1", result -> {
// TODO
}, e -> {
// TODO
});
DAPGeolocation.clearWatch(MainActivity.this, observer, "1", result -> {
// TODO
}, e -> {
// TODO
});
Error Code
Code | Cause | Comment |
---|---|---|
E10500 | 파라메터 값이 잘못되어 있을 경우 | |
E10501 | 전달된 액션 값이 알 수 없는 액션일 경우 | |
E10502 | 정보 갱신 시간 정보가 잘못되어 있을 경우 | |
E10503 | watch 아이디 값이 null 이거나 빈 값인 경우 | |
E10550 | 실행 중 오류가 발생 되었을 경우 | |
E10551 | watchPosition 요청 시 watch 아이디 값이 존재하는 경우 | |
E10552 | clearWatch 요청 시 watch 아이디 값을 찾을 수 없는 경우 | |
E10553 | 위치 정보을 얻기위한 서비스가 지원하지 않는 경우 | |
E10599 | 알 수없는 오류가 발생 되었을 경우 | |