안드로이드 개발 질문/답변
(글 수 45,052)
아래와 같은 식으로 프로그래밍 했고요,,
<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_MOCK_LOCATION" />
LocationListener mlocListener = new DispLocListener();
LocationManager mLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30000L, 500.0f, mlocListener);
Location location = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
......
private class DispLocListener implements LocationListener {
public void onLocationChanged(Location location) {
if (location != null) {
...
}
}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
requestLocationUpdates 를 호출 한 다음 부터는
Log에는04-13 16:51:31.709: DEBUG/libloc_api(1260): loc_event_cb, client = 0, loc_event = 0x2 (SatReport)
04-13 16:51:31.709: DEBUG/libloc_api(1260): Event RPC_LOC_EVENT_SATELLITE_REPORT (client 0)
04-13 16:51:31.709: DEBUG/libloc_api(1260): sv count: 0
04-13 16:51:31.709: DEBUG/libloc_api(1260): loc_eng_report_sv: valid_mask = 0x30, num of sv = 0
04-13 16:51:31.709: DEBUG/libloc_api(1260): HDOP in loc_eng_report_sv: 0.0
04-13 16:51:32.627: DEBUG/libloc_api(1260): loc_event_cb, client = 0, loc_event = 0x1 (PosReport)
04-13 16:51:32.627: DEBUG/libloc_api(1260): Event RPC_LOC_EVENT_PARSED_POSITION_REPORT (client 0)
04-13 16:51:32.627: DEBUG/libloc_api(1260): Session status: RPC_LOC_SESS_STATUS_IN_PROGESS Valid mask: 0x606D
04-13 16:51:32.627: DEBUG/libloc_api(1260): Latitude: 36.0499996 (intermediate)
04-13 16:51:32.627: DEBUG/libloc_api(1260): Longitude: 127.3300034
04-13 16:51:32.627: DEBUG/libloc_api(1260): Accuracy: 0.0000000
이렇게 나와요.
그런데 location 값을 보면 계속 null을 반환합니다...
Log상에 저렇게 나오는 것 보면 값을 가져온 것 같은데,, 왜 null을 반환 하는 걸까요?...
제가 뭘 잘못하고 있는건지 알려주세요~
이건, 다음의 의미를 가집니다. 500 을 입력했다면, 500m 을 이동했을 경우에만 Location 정보를 업뎃할 수 있도록 Location Framework 가 구성이 되어 있답니다.
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 0, mlocListener); 으로 해 보세요.