getLastKnownLocation의 대안

스티븐 97102

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사