我一直在阅读有关GpsStatus的问题,但被一个问题弄糊涂:当我从由我的GpsStatus更新的GpsStatusListener对象中检索上次修复中使用的卫星数量时,我怎么知道这与我的LocatonListener记录的修复程序相同吗?记录修复程序中使用的卫星数量的第一种方法是在onGpsStatusChanged的GpsStatusListener方法中对其进行计数,然后将其传递给一个变量,然后在LocationListener的顶部访问该变量。 onLocationChanged方法。但是我经常会报告为GPS修复报告的卫星数量为零,当我记录正在发生的事情时,我发现我的GpsStatusListener正在发射大量不同的卫星数量,之后我的然后抓取最后一个-即使前一个更高,但通常为零。我的假设是这是一个时间问题:在LocationListener记录卫星数的时间与GpSStatusListener开始其LocationListener方法的时间之间,最新的修订已更改。我尝试的第二种方法是简单地更新onLocationChanged中的GpsStatus对象,然后在GpsStatusListener的LocationListener方法的顶部(参见下文)对来自该对象的卫星进行计数。但是,这似乎也不能解决问题。有谁有更好的方法?还是担心这个计时问题我错了吗?这是第二种方法所使用的代码的相关部分: //. . .private class GpsStatusListener implements GpsStatus.Listener { @Override public void onGpsStatusChanged(int event) { if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS) { if (gpsStatus != null) { locationManager.getGpsStatus(gpsStatus); } } }}private class mLocationListener implements LocationListener { public void onLocationChanged(Location location) { GpsStatus thisFixGpsStatus = gpsStatus; Iterator<GpsSatellite> sats = thisFixGpsStatus.getSatellites() .iterator(); satCount = 0; while (sats.hasNext()) { GpsSatellite gpsSatellite = (GpsSatellite) sats.next(); if (gpsSatellite.usedInFix()) { satCount++; } } // . . . 最佳答案 尽管这可能无法完全回答您的问题,但是一些背景信息:GPS芯片通常不会提供(使用的)卫星数据的数量。典型值为5或10秒。原因是卫星星座每秒钟不会改变。因此,可能无法将num sats同步到android手机上的coresponding修复程序。关于android - 如何将从GpsStatus检索到的卫星数量链接到LocationListener记录的特定定位?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15290718/ 10-12 01:29