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