Android获取解析GPS数据


Android获取解析GPS数据:

  1. package title.navi.Location.Impl;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5.   
  6. import org.apache.http.HttpResponse;  
  7. import org.apache.http.client.methods.HttpGet;  
  8. import org.apache.http.impl.client.DefaultHttpClient;  
  9. import org.apache.http.util.EntityUtils;  
  10.   
  11.   
  12. import android.content.Context;  
  13. import android.location.Location;  
  14. import android.location.LocationListener;  
  15. import android.location.LocationManager;  
  16. import android.location.GpsStatus.NmeaListener;  
  17. import android.location.LocationProvider;  
  18. import android.os.Bundle;  
  19. import android.util.Log;  
  20. import android.widget.Toast;  
  21.   
  22. public class NaviLocation {  
  23.   
  24.     Context m_ctx;  
  25.     LocationManager m_locationManager;  
  26.     Location m_location;  
  27.     private boolean m_nmea_started = false;  
  28.       
  29.     private NaviApp m_naviApp;  
  30.   
  31.     class LocationDebug {  
  32.   
  33.     }  
  34.   
  35.     public NaviLocation(Context ctx, NaviApp naviApp) {  
  36.         m_ctx = ctx;  
  37.         m_naviApp = naviApp;  
  38.     }  
  39.   
  40.     /** 
  41.      * 初始化 
  42.      *  
  43.      * @return 
  44.      */  
  45.     public int initialize() {  
  46.         // 创建LocationManger对象   
  47.         m_locationManager = (LocationManager) m_ctx  
  48.                 .getSystemService(Context.LOCATION_SERVICE);  
  49.           
  50.         // 获取最后一次GPS定位的位置并上传   
  51.         m_location = m_locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);  
  52.           
  53.         ifnull != m_location )  
  54.         {  
  55.             UploadPos(m_location);  
  56.         }  
  57.           
  58.           
  59.         // 绑定监听,有4个参数   
  60.         // 参数1,设备:有GPS_PROVIDER和NETWORK_PROVIDER两种   
  61.         // 参数2,位置信息更新周期,单位毫秒   
  62.         // 参数3,位置变化最小距离:当位置距离变化超过此值时,将更新位置信息   
  63.         // 参数4,监听   
  64.         // 备注:参数2和3,如果参数3不为0,则以参数3为准;参数3为0,则通过时间来定时更新;两者为0,则随时刷新   
  65.         // 1秒更新一次,或最小位移变化超过1米更新一次;   
  66.         // 注意:此处更新准确度非常低,推荐在service里面启动一个Thread   
  67.         // 在run中sleep(10000);然后执行handler.sendMessage(),更新位置   
  68.         m_locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,  
  69.                 0, mLocationListener);  
  70.   
  71.   
  72.         return 0;  
  73.     }  
  74.   
  75.     /** 
  76.      * 释放 
  77.      *  
  78.      * @return 
  79.      */  
  80.     public int uninitialize() {  
  81.         return 0;  
  82.     }  
  83.   
  84.     /** 
  85.      * 开始nmea接收标志 
  86.      */  
  87.     public void start_receive_nmea() {  
  88.         m_nmea_started = true;  
  89.     }  
  90.   
  91.     // LocationListener,位置监听,监听位置变化,监听设备开关与状态   
  92.     LocationListener mLocationListener = new LocationListener() {  
  93.   
  94.         /** 
  95.          * 位置信息变化时触发 
  96.          */  
  97.         @Override  
  98.         public void onLocationChanged(Location location) {  
  99.   
  100.             // 上传当前位置   
  101.             if (location != null) {  
  102.                 m_location = location;  
  103.                 UploadPos(location);  
  104.             }  
  105.         }  
  106.   
  107.         /** 
  108.          * GPS禁用时触发 
  109.          */  
  110.         @Override  
  111.         public void onProviderDisabled(String provider) {  
  112.         }  
  113.   
  114.         /** 
  115.          * GPS开启时触发 
  116.          */  
  117.         @Override  
  118.         public void onProviderEnabled(String provider) {  
  119.             // Location location=lm.getLastKnownLocation(provider);   
  120.         }  
  121.   
  122.         /** 
  123.          * GPS状态变化时触发 
  124.          */  
  125.         @Override  
  126.         public void onStatusChanged(String provider, int status, Bundle extras) {  
  127.             switch (status) {  
  128.             // GPS状态为可见时   
  129.             case LocationProvider.AVAILABLE:  
  130.                 Log.i("NavJava""当前GPS状态为可见状态");  
  131.                 break;  
  132.             // GPS状态为服务区外时   
  133.             case LocationProvider.OUT_OF_SERVICE:  
  134.                 Log.i("NavJava""当前GPS状态为服务区外状态");  
  135.                 break;  
  136.             // GPS状态为暂停服务时   
  137.             case LocationProvider.TEMPORARILY_UNAVAILABLE:  
  138.                 Log.i("NavJava""当前GPS状态为暂停服务状态");  
  139.                 break;  
  140.             }  
  141.         }  
  142.     };  
  143.       
  144.     private boolean UploadPos(Location location)  
  145.     {  
  146.   
  147.         return true;  
  148.     }  
  149.       
  150.     private String getGPSTime(Location location)  
  151.     {  
  152.         String str = "0";  
  153.           
  154.         Date date = new Date(location.getTime());  
  155.         SimpleDateFormat dataFormat = new SimpleDateFormat("yyyyMMddHHmmss");  
  156.         str=dataFormat.format(date);          
  157.         return str;   
  158.     }  
  159.   
  160. }  

相关内容