Google지도 v2를 사용하고 있으며 때로는 getLastKnownLocation ()이 NULL을 반환합니다. 효과는 같지만 안정성이 더 높은 대안이 있습니까? 도움 감사합니다
우선 getLastKnownLocation ()은 사용자가 앱 (Marshmallow)의 위치를 끄거나 모든 앱 (Lollipop 이하)의 위치를 끈 경우에만 null을 반환해야합니다. 또한 getLastKnownLocation을 호출하기 전에 locationManager.requestSingleUpdate ()를 호출해야합니다.
이것은 꽤 신뢰할 수있는 코드입니다 (5 번의 시도 내에 위치를 얻지 못하면 위치를 얻을 수 없다고 가정합니다) :
if (ContextCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED
&& locMan != null) {
String provider;
provider = locMan.getProvider(LocationManager.NETWORK_PROVIDER).getName();
if (Looper.myLooper() == null) {
Looper.prepare();
}
int count = 5;
for (int i = 0; i < count; i++) {
locMan.requestSingleUpdate(provider, null, Looper.myLooper());
location = locMan.getLastKnownLocation(provider);
if (location != null) {
break;
} else {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
또는 locationManager.requestLocationUpdates ()를 사용하여 위치 업데이트를 신청하고 LocationListener를 제공 할 수 있습니다. OS가 위치 업데이트를 받으면 리스너가 실행됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다