package my.pack;

  import java.util.Iterator;

  import android.app.Activity;
  import android.content.Context;
  import android.location.GpsSatellite;
  import android.location.GpsStatus;
  import android.location.GpsStatus.NmeaListener;
  import android.location.Location;
  import android.location.LocationListener;
  import android.location.LocationManager;
  import android.os.Bundle;
  import android.util.Log;
  import android.widget.Toast;

  public class SatellitesActivity extends Activity {
LocationManager locMgr;
double lat;
double lon;
  /** Called when the activity is first created. */
  @Override
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

     locMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
     MyGpsListener listener = new MyGpsListener();
     MyLocationListener locListener = new MyLocationListener();
     locMgr.addGpsStatusListener(listener);
     locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener);
     locMgr.addNmeaListener(new NmeaListener() {

        @Override
        public void onNmeaReceived(long timestamp, String nmea) {
            // TODO Auto-generated method stub
            Log.e("Test!", nmea);
        }
    });

   }



  public class MyGpsListener implements GpsStatus.Listener{
    @Override
    public void onGpsStatusChanged(int event) {
        // TODO Auto-generated method stub
        switch(event){
        case GpsStatus.GPS_EVENT_STARTED:Log.e("Started", "");
            break;
        case GpsStatus.GPS_EVENT_FIRST_FIX:Log.e("FirstFix", "");
            break;
        case GpsStatus.GPS_EVENT_STOPPED:Log.e("Sopped", "");
            break;
        case GpsStatus.GPS_EVENT_SATELLITE_STATUS:GpsStatus xGpsStatus = locMgr.getGpsStatus(null) ;
        Iterable<GpsSatellite> iSatellites = xGpsStatus.getSatellites() ;
        Iterator<GpsSatellite> it = iSatellites.iterator() ;
        while ( it.hasNext() )
        {
                GpsSatellite oSat = (GpsSatellite) it.next() ;
                if(oSat.usedInFix()){
                    Log.e("A fost folosit ", "int fix!");
                }
                if(oSat.toString()!=null){

                    Log.e("Test", "SNR:"+oSat.getSnr()+"; Azimuth:"+oSat.getAzimuth()+"; Elevation:"+oSat.getElevation()+" "+oSat.toString()+"; PRN:"+oSat.getPrn());
                }
        }
        break ;


        }
    }
    }

public class MyLocationListener implements LocationListener{

    @Override
    public void onLocationChanged(Location location) {
        // TODO Auto-generated method stub

        if(location!=null){
            lat = location.getLatitude();
            lon = location.getLongitude();
            Toast.makeText(getApplicationContext(), ""+lat+"\n"+lon, Toast.LENGTH_LONG).show();
        }
    }

    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }}


}

最佳答案

卫星实际上并没有您可以掌握的名称。您可以获得的最好的是PRN,您的代码已经显示了它。

编辑
经过更多阅读后,我发现有些人试图映射PRN编号,即使有时这是不正确的。尝试http://www.losangeles.af.mil/shared/media/document/AFD-070530-036.pdf

10-05 20:36
查看更多