我的每次gps修复使用了多少卫星?

时间:2012-03-29 11:49:37

标签: android gps

在我的应用程序中,我怎么知道使用了多少卫星/没有。用于gps修复的卫星。

我尝试下面的代码,但每次都返回零。

public void onGpsStatusChanged(int event)
{
    //Log.e("Gps_Status", "From on gps status changed");

    if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS) 
    {
        GpsStatus status = m_locationManager._myLocationManager.getGpsStatus(null);
        Iterable<GpsSatellite> sats = status.getSatellites();
        // Check number of satellites in list to determine fix state

        if (sats.iterator().hasNext())
        {
            GpsSatellite gpsSatellite=(GpsSatellite)sats.iterator().next();

            if(gpsSatellite.usedInFix())
            {
                NO_OF_SATELLITE++;

            }

            Toast.makeText(this, String.valueOf(NO_OF_SATELLITE), Toast.LENGTH_LONG);
        }

        //Log.e("Used In FIx", String.valueOf(NO_OF_SATELLITE));
    }
    Log.v("Used In FIx", String.valueOf(NO_OF_SATELLITE));
    // Toast.makeText(this, String.valueOf(NO_OF_SATELLITE), Toast.LENGTH_LONG);
}

对此的任何帮助都非常感谢。

由于 Jalp。

3 个答案:

答案 0 :(得分:2)

获得不。 GPS看到的卫星使用此代码:

/**
 * Set the no. of available satellites.
 */
public void updateSats() {
    final GpsStatus gs = this.locationManager.getGpsStatus(null);
    int i = 0;
    final Iterator<GpsSatellite> it = gs.getSatellites().iterator();
    while( it.hasNext() ) {
        it.next();
        i += 1;
    }
    this.gpsSatsAvailable = i;
}

GpsStatusListener

@Override
public void onGpsStatusChanged(final int event) {
    switch( event ) {
        // ...
    case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
        updateSats();
        break;
    }
}

我不检查上次修复中是否使用了sats。

答案 1 :(得分:1)

嘿,我终于找到了解决方案。用于gps的卫星。

为此,您必须使用android.location包中提供的MNEA监听器,该监听器与卫星通信并在其NMEA标准句子中返回响应,如$ GPGSA。

收到回复后,你必须解析句子,最后你的工作完成了。

感谢所有人对此的评论。

Jalp。

答案 2 :(得分:0)

答案只是3 .... How GPS Phones Work