技术开发 频道

OPhone OS上的位置服务

  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";
              }
            }
    }
}

  如果底层在一定时间内无法获得位置,则会通过LocationListener的onStatusChanged接口通知上层应用,应用程序可以通知用户进行相应的处理。

0
相关文章