마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

LocationManager가 일부 기기에서 제대로 작동을 안합니다. [closed]

0 추천

GPS를 통해 현재 위치의 좌표와 좌표값에 대한 주소를 자동으로 받아오고, 구글지도에 현재위치를 표시해주는 기능을 구현하고 있는데 제대로 작동을 안합니다.

 

테스트해본 안드로이드 기기는 각각 안드로이드 6.0.1(API 23) 과 안드로이드 4.4.4(API 19) 입니다.

 

안드로이드 6.0.1(API 23)에서는 정상적으로 현재위치의 좌표와 주소를 불러오는데

안드로이드 4.4.4(API 19)에서는 현재 좌표를 불러오지 못합니다.

(두 기기 모두 구글지도에 현재 위치는 표시해줍니다)

 

안드로이드 4.4.4 스마트폰 상단에 GPS마크가 깜빡깜빡 하는걸 보면 GPS가 작동은 하고 있는거 같은데 좌표를 못불러옵니다.

 

 

유저 퍼미션
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

 

 

안드로이드 소스
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
                    0, 
                    0, 
                    mLocationListener);

lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 
                    0, 
                    0, 
                    mLocationListener);
private final LocationListener  mLocationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {

            Log.d("gps테스트", "onLocationChanged, location:" + location);
            assert location != null;
            double longitude = location.getLongitude(); //경도
            double latitude = location.getLatitude();   //위도
            double altitude = location.getAltitude();   //고도
            float accuracy = location.getAccuracy();    //정확도
            String provider = location.getProvider();   //위치제공자

            gps.setText(latitude + ", " + longitude);
            if ((activeNetwork.getType() == ConnectivityManager.TYPE_WIFI && activeNetwork.isConnectedOrConnecting()) || (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE && activeNetwork.isConnectedOrConnecting()))
               getAddress(latitude, longitude);
        }
        @Override
        public void onProviderDisabled(String provider) {
            // gps 설정 Disabled시
            gps.setText("gps설정이 꺼져있습니다.");
        }

        public void onProviderEnabled(String provider) {
            // gps 설정 Enabled시
        }
    };

 

안드로이드 4.4.4에선 Log.d("gps테스트", "onLocationChanged, location:" + location); 가 logcat에 안찍히는걸 봐선 아에 실행이 안되는데 어떻게 해야 하나요??

 

검색을 해봐도 퍼미션을 확인해보라는 글밖에 못찾아서 이렇게 도움을 구합니다...

질문을 종료한 이유: 문제의 핸드폰을 껏다가 키니까 정상적으로 작동하네요...
입문개발자 님이 2017년 11월 2일 질문
2017년 11월 3일 closed
...