LocationManager locationManager;
String context = Context.LOCATION_SERVICE;
locationManager = (LocationManager)getSystemService(context);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
Location location =
locationManager.getLastKnownLocation(provider);
여기서 맨 마지막 locationManager.getLastKnownLocation(provider) 이 부분에서 자꾸 exception 이 발생합니다...
될때가 있고 안될때가 있는데..... 이유가 궁금하네요....
저 마지막에 들어가는 provider는 GPS_PROVIDER 이거나 NETWORK_PROVIDER를 갖고 있지 않나요?
실내에 개발하고 있어서 GPS가 잡히지 않는다면 NETWORK로 값을 갖고 있어 현재 위치를 AP의 위치로 받을텐데.....
꼭 답변 부탁드립니다....
저도 여기서 한참을 해맸습니다 --;;;;
진짜 짜증나게 lastknownlocation을 쓸떄는 반드시 location ==null인 상황에 대해서 처리를 해줘야만합니다
그 이유는 lastknownlocation을 불러올떄 반드시 그 전에 gps를 받은값이 있어야 처리가 되는데 만약에 없으면 location==null이 되어 버리고
나중에 location.lattitude() 같은 작업을 할때 오류를 뿜어 내게 됩니다.
lastknownlocation쓰고난후 null값에 대한것을 예외처리 하면 아마 해결될거 같네요.
->휴대폰을 재부팅한후 처음켰을때 lastknowlocation을 켜면 null값이 나오고, 한번이라도 gps를 켜고난뒤 lastknownlocation을 쓰면 괜찮아 집니다.
글쓴분이 이걸 물은신건지 확실히는 모르겟지만 도움되셧으면좋겟네요
GeoPoint currentGPS = null;String provider = locationManager.getBestProvider(criteria, true);if(provider!=null){ Location location =locationManager.getLastKnownLocation(provider); if(location!=null){ currentGPS = new GeoPoint(locatoin.getLatitue,location.getLongitude) }}This can be done without starting the provider. 이거는 gps를 받아올때 프로바이더에서 gps값을 가져오든 말든 lastknownlocation은 null값 혹은 예전에 가지고있는 gps값을 내는 작업을 한다는 뜻같네요.
실제로 코딩해보면 lastknownlocation값을 쓰면 gps가 작동하든 안하든 null이나 gps값을 내 놓습니다. 그러므로 반드시 예외값 처리 해줘야한단 말인듯 ㅋㅋ
아항! provider가 작동을 하던 안하던(Provider is able or disable) 무조건 getLastKnown작업이 시행되니까 null값 반환에 대한 Exception처리를 반드시 하라는 의미로군요! 감사합니다. 코코뿅뿅님.... 걍 눌값 처리 하세여 하지 왜 돌려말하는지 흑흑 이놈의 난독증 ㅠㅠ
위의 답변에 참고로 제가 짠 소스의 경우, onCreate에서 GPS읽기를 한번 시도해보고(to getLastKnown) 안되면 locationChangeListener에 등록(to getCurrentGPS) 후 BackRunnable에서 GPS_PROVIDER(0순위)와 NETWORK_PROVIDER(1순위)와 etc_PROVIDER(2순위)에서 읽어오도록 처리하였습니다.
짜면 짤 수록 뭔놈의 변수가 왜이리 많고 복잡한지 한숨이 절로 나오지만 -ㅅ- 나름 재밌기도 하네요... 즐코딩 합시다.




저게 실제로 GPS를 써서 좌표를 받아오던가요? 상단부 GPS사용중 여부가 표시되던가요?