Android GpsStatus 始终有零颗卫星
Android GpsStatus always has zero satellites
我正在尝试获取 GPS 定位中使用的卫星以获得更多信息,但是 GpsStatus.getSatellites() 方法总是 returns 一个空迭代器,即使我可以获得位置的latitude/longitude/altitude就好了。
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
我已经尝试过多种设备,认为这可能是特定型号的一些怪癖,但它们都有同样的问题,所以我的代码似乎不正确。我需要做什么才能获得卫星?
因为你还没有开启GPS。 getLastKnownLocation 不会打开 GPS,它只是 returns 一个缓存值(如果有的话)。您需要请求位置更新才能执行此操作。
我正在尝试获取 GPS 定位中使用的卫星以获得更多信息,但是 GpsStatus.getSatellites() 方法总是 returns 一个空迭代器,即使我可以获得位置的latitude/longitude/altitude就好了。
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
我已经尝试过多种设备,认为这可能是特定型号的一些怪癖,但它们都有同样的问题,所以我的代码似乎不正确。我需要做什么才能获得卫星?
因为你还没有开启GPS。 getLastKnownLocation 不会打开 GPS,它只是 returns 一个缓存值(如果有的话)。您需要请求位置更新才能执行此操作。