四、获取卫星信息
本段代码参考http://www.ophonesdn.com/article/show/46,本以为可以看到模拟器上的卫星信息,没想到都是空的。只能在真机上看到卫星信息。
mLoc = mService.getLastKnownLocation(LocationManager.GPS_PROVIDER);
String mLongitude,mLatitude,mAltitude,mSpeed,mBearing,mTime,mAccuracy,mSatelliteInfo;
mSatelliteInfo = "";
if (mLoc != null) {
// 经度
mLongitude = String.valueOf(mLoc.getLongitude());
// 纬度
mLatitude = String.valueOf(mLoc.getLatitude());
// 高度
mAltitude = String.valueOf(mLoc.getAltitude());
// 速度
mSpeed = String.valueOf(mLoc.getSpeed());
// 方位 0 - 360度
mBearing = String.valueOf(mLoc.getBearing());
// 世界戳 从1970/1/1起始,单位: 毫秒
mTime = String.valueOf(mLoc.getTime());
// 定位精度,单位: 米
if (mLoc.hasAccuracy())
mAccuracy = String.valueOf(mLoc.getAccuracy());
else
mAccuracy = "no accuracy";
Bundle bundle = mLoc.getExtras();
if (null != bundle){
// 首次定位时间 TTFF = Time to First Fix,单位: 秒
int ttff = bundle.getInt("TTFF", 0);
String mTTFF = String.valueOf(ttff);
// 参与定位的卫星个数
int numSatellite = bundle.getInt("NumSatellite", 0);
String mNumSatellite = String.valueOf(numSatellite);
if (numSatellite != 0) {
for (int m = 0; m < numSatellite; m++) {
// 卫星的ID
mSatelliteInfo += String.valueOf(m + 1) + ": " + "ID " + String.valueOf(bundle.getInt("SatelliteID" + m, 0)) + ", ";
// 卫星的信号强度 C/NO
mSatelliteInfo += "Strength: " + String.valueOf(bundle.getInt("SignalStrength" + m, 0)) + ", ";
// 方位角
mSatelliteInfo += "Azimuth: " + String.valueOf(bundle.getInt("Azimuth" + m, 0)) + ", ";
// 标高
mSatelliteInfo += "ElevationAngle: " + String.valueOf(bundle.getInt("ElevationAngle" + m, 0)) + "\n";} } }
tv.setText("longtitude:"+mLongitude+";"+"\n"+"latitude:"+mLatitude+";"+"\n"+"altitude:"+mAltitude+"\n"+"speed:"+mSpeed+"\n"+"bearing:"+mBearing+"\n"+"time:"+mTime+"\n"+"Accuracy:"+mAccuracy+"\n"+"satinfo:"+mSatelliteInfo);
}
String mLongitude,mLatitude,mAltitude,mSpeed,mBearing,mTime,mAccuracy,mSatelliteInfo;
mSatelliteInfo = "";
if (mLoc != null) {
// 经度
mLongitude = String.valueOf(mLoc.getLongitude());
// 纬度
mLatitude = String.valueOf(mLoc.getLatitude());
// 高度
mAltitude = String.valueOf(mLoc.getAltitude());
// 速度
mSpeed = String.valueOf(mLoc.getSpeed());
// 方位 0 - 360度
mBearing = String.valueOf(mLoc.getBearing());
// 世界戳 从1970/1/1起始,单位: 毫秒
mTime = String.valueOf(mLoc.getTime());
// 定位精度,单位: 米
if (mLoc.hasAccuracy())
mAccuracy = String.valueOf(mLoc.getAccuracy());
else
mAccuracy = "no accuracy";
Bundle bundle = mLoc.getExtras();
if (null != bundle){
// 首次定位时间 TTFF = Time to First Fix,单位: 秒
int ttff = bundle.getInt("TTFF", 0);
String mTTFF = String.valueOf(ttff);
// 参与定位的卫星个数
int numSatellite = bundle.getInt("NumSatellite", 0);
String mNumSatellite = String.valueOf(numSatellite);
if (numSatellite != 0) {
for (int m = 0; m < numSatellite; m++) {
// 卫星的ID
mSatelliteInfo += String.valueOf(m + 1) + ": " + "ID " + String.valueOf(bundle.getInt("SatelliteID" + m, 0)) + ", ";
// 卫星的信号强度 C/NO
mSatelliteInfo += "Strength: " + String.valueOf(bundle.getInt("SignalStrength" + m, 0)) + ", ";
// 方位角
mSatelliteInfo += "Azimuth: " + String.valueOf(bundle.getInt("Azimuth" + m, 0)) + ", ";
// 标高
mSatelliteInfo += "ElevationAngle: " + String.valueOf(bundle.getInt("ElevationAngle" + m, 0)) + "\n";} } }
tv.setText("longtitude:"+mLongitude+";"+"\n"+"latitude:"+mLatitude+";"+"\n"+"altitude:"+mAltitude+"\n"+"speed:"+mSpeed+"\n"+"bearing:"+mBearing+"\n"+"time:"+mTime+"\n"+"Accuracy:"+mAccuracy+"\n"+"satinfo:"+mSatelliteInfo);
}
运行结果如图所示:
