4、显示位置信息以及卫星信息
当底层获得位置的时候,会通过LocationListener的onLocationChanged来通知上层的应用。应用可以获得当前位置的经纬度,高度,速度,方位已经卫星信息。
public void onLocationChanged(Location location) {
// 经度
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);
mTTFF = String.valueOf(ttff);
// 参与定位的卫星个数
int numSatellite = bundle.getInt("NumSatellite", 0);
mNumSatellite = String.valueOf(numSatellite);
if (numSatellite != 0) {
mSatelliteInfo = "";
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";
}
}
}
}
// 经度
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);
mTTFF = String.valueOf(ttff);
// 参与定位的卫星个数
int numSatellite = bundle.getInt("NumSatellite", 0);
mNumSatellite = String.valueOf(numSatellite);
if (numSatellite != 0) {
mSatelliteInfo = "";
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";
}
}
}
}
如果底层在一定时间内无法获得位置,则会通过LocationListener的onStatusChanged接口通知上层应用,应用程序可以通知用户进行相应的处理。