Android 我的每次gps定位中使用了多少颗卫星?

Android 我的每次gps定位中使用了多少颗卫星?,android,gps,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_loca

在我的应用程序中,我如何知道使用了多少颗卫星/用于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);
}
public void ongpstatuschanged(int事件)
{
//Log.e(“Gps_状态”,“从Gps状态更改开始”);
如果(事件==GpsStatus.GPS\u事件\u卫星\u状态)
{
GpsStatus status=m_locationManager._myLocationManager.getGpsStatus(null);
Iterable sats=status.getSatellites();
//检查列表中的卫星数以确定固定状态
if(sats.iterator().hasNext())
{
GpsSatellite GpsSatellite=(GpsSatellite)sats.iterator().next();
if(gpsSatellite.usedInFix())
{
没有卫星++;
}
Toast.makeText(this,String.valueOf(NO_OF_SATELLITE),Toast.LENGTH_LONG);
}
//Log.e(“用于FIx”,String.valueOf(卫星号));
}
Log.v(“用于FIx”,String.valueOf(卫星号));
//Toast.makeText(this,String.valueOf(NO_OF_SATELLITE),Toast.LENGTH_LONG);
}
非常感谢您在这方面的任何帮助

谢谢
日本航空公司。

答案是3

要获取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;
}

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

嘿,我终于找到了我的解决方案,用于获取gps中使用的卫星数量

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

在得到回应后,你必须解析句子,最后你的工作就完成了

谢谢大家对这方面的评论


日本航空公司。

对不起,这完全是错误的。你需要至少3颗卫星才能获得2D定位,对吧,然而,卫星越多,定位的准确性就越好。如果你读了链接,它会清楚地说“至少3颗卫星”。嘿,我不想要gps卫星的数量。但我想知道有多少颗卫星能确定我的gps位置。while(it.hasNext()){GpsSatellite sat=(GpsSatellite)it.next();if(sat.usedInFix()i+=1;}gpsSatsAvailable是什么?它只是一个存储卫星计数结果的字段。稍后用于显示此数字。
@Override
public void onGpsStatusChanged(final int event) {
    switch( event ) {
        // ...
    case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
        updateSats();
        break;
    }
}