在我的应用程序中,我怎么知道使用了多少卫星/没有。用于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。
答案 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