2016-09-06 1 views
0

GPS 수정 사항에 사용 된 위성을 가져 와서 자세한 정보를 얻으려고하지만 GpsStatus.getSatellites() 메소드는 위치의 위도/경도를 가져올 수 있지만 항상 빈 반복기를 반환합니다. 경도/고도는 괜찮습니다. Android GpsStatus는 항상 제로 위성을 가지고 있습니다.

LocationManager locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE); 
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

if (location != null) { 

    //get location coordinates 
    mLatitude = location.getLatitude(); 
    mLongitude = location.getLongitude(); 
    double altitude = location.getAltitude(); 
    Log.d("test2", "lat : " + mLatitude); 
    Log.d("test2", "long : " + mLongitude); 

    //get satellite data 
    GpsStatus gpsStatus = locationManager.getGpsStatus(null); 

    int satellites = 0; 
    int satellitesInFix = 0; 
    int timetofix = gpsStatus.getTimeToFirstFix(); 
    Log.d("test2", "Time to first fix = " + timetofix); 
    for (GpsSatellite sat : gpsStatus.getSatellites()) { 
     if(sat.usedInFix()) { 
      satellitesInFix++; 
     } 
     satellites++; 
    } 
    Log.d("test2", "Satellites: " + satellitesInFix + "/" + satellites); 
} 

내가 디버그 로그에 들어갈 모든

은 또 다시, 다음과 같다 :

09-06 18:42:48.093 6842-6842/com.android.example.gpstest D/test2: lat : 39.509401143731274 
09-06 18:42:48.093 6842-6842/com.android.example.gpstest D/test2: long : -9.064780960816815 
09-06 18:42:48.094 6842-6842/com.android.example.gpstest D/test2: Time to first fix = 0 
09-06 18:42:48.095 6842-6842/com.android.example.gpstest D/test2: Satellites: 0/0 

나는 이미 특정 모델과 몇 가지 특질 수 있습니다 생각에 여러 장치를 시도하지만, 모두 동일한 문제가 있으므로 내 코드가 옳지 않은 것 같습니다. 인공위성을 얻으려면 내가 무엇을해야합니까?

답변

2

GPS를 시작하지 않았기 때문에. getLastKnownLocation은 GPS를 켜지 않으며 캐시 된 값이있는 경우에만 반환합니다. 그렇게하려면 LocationUpdates를 요청해야합니다.

+0

나는 활동의 onResume 메서드에 대해 requestLocationUpdates()를 호출하고 있으며 내가 게시 한 코드는 onLocationChanged 메서드 내에 있습니다. – SVM

+0

왜 onLocationChanged에서 getLastKnownLocation을 호출하겠습니까? 마지막 위치 인 –

+0

getGpsStatus 문서에서 다음을 수행합니다. "GPS 엔진의 현재 상태에 대한 정보를 검색합니다.이 데이터는 onGpsStatusChanged (int) 콜백에서 호출해야만 데이터가 원자 적으로 복사됩니다. GpsStatus 객체를 전달하여 최신 상태 정보로 설정하거나 null을 전달하여 새 GpsStatus 객체를 만듭니다. " –

관련 문제