2016-08-21 1 views
0

LocationManager를 사용하여 로그인 한 사용자의 lat 및 long을 가져 오려고합니다. Permissions 화면을 볼 수있게 된 후 텍스트보기에서 위도와 경도를보고 싶습니다. 하지만 텍스트보기에서 아무 것도 볼 수 없습니다.LocationManager에서 Lat Long을 가져올 수 없습니다.

protected void getLocation() { 
     Log.v(TAG, "GetLocation"); 
     int LOCATION_REFRESH_TIME = 1000; 
     int LOCATION_REFRESH_DISTANCE = 5; 

     if (!(checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)) { 
      Log.v("WEAVER_", "Has permission"); 
      mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
      mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_REFRESH_TIME, 
        LOCATION_REFRESH_DISTANCE, mLocationListener); 

     } else { 
      Log.v("WEAVER_", "Does not have permission"); 
     } 

    } 

이제는 mLocationListener를 호출하지만 어떤 결과도 얻지 못했습니다. OnLocationChanged() 메서드가 호출되지 않습니다.

private final LocationListener mLocationListener = new LocationListener() { 
     @Override 
     public void onLocationChanged(Location location) { 
      Log.v("WEAVER_", "Location Change"); 
      double latitude = location.getLatitude(); 
      textView.setText(String.valueOf(latitude) + "latitude"); 
      textView.setText(String.valueOf(updates) + " updates"); 
     } 

여기서 textView는 아무 것도 표시하지 않으며 로그는 위치 변경 이벤트로 업데이트되지 않습니다.

로그 결과는 다음과 같습니다

08-21 14:35:29.336 3390-3390/daveytree.geo2 V/WEAVER_: GetLocation 
08-21 14:35:29.337 3390-3390/daveytree.geo2 V/WEAVER_: Has permission 
08-21 14:35:29.362 3390-3526/daveytree.geo2 D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true 

이를 캡처하는 다른 이벤트가 있습니다. 도와주세요

+0

확인 장치가 비행기에있는 경우 모드 및/또는 포 장치에서 위치 검출기가 비활성화되어 있습니다. – Vyacheslav

+0

LocationManager는 이전 Android 위치 프레임 워크의 일부이므로 Google Play 위치 서비스로 이전하는 것이 좋습니다 (앱에서 사용 중이며 모든 것이 잘 작동 함). 자세한 내용은 https://developer.android.com/training/location/index.html을 참조하십시오. – Krzysiek

답변

2

SO question에서 GPS_PROVIDERNETWORK_PROVIDER으로 변경할 수 있습니다. GPS_PROVIDER은 위성을 사용하여 위치를 결정하므로 조건에 따라이 제공자는 위치 정보를 반환하는 데 약간의 시간이 걸릴 수 있습니다.

자세한 내용은, 당신은 또한이 관련 SO 질문을 확인할 수 있습니다

관련 문제