歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android獲取解析GPS數據

Android獲取解析GPS數據

日期:2017/3/1 10:41:32   编辑:Linux編程

Android獲取解析GPS數據:

  1. package title.navi.Location.Impl;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. import org.apache.http.HttpResponse;
  5. import org.apache.http.client.methods.HttpGet;
  6. import org.apache.http.impl.client.DefaultHttpClient;
  7. import org.apache.http.util.EntityUtils;
  8. import android.content.Context;
  9. import android.location.Location;
  10. import android.location.LocationListener;
  11. import android.location.LocationManager;
  12. import android.location.GpsStatus.NmeaListener;
  13. import android.location.LocationProvider;
  14. import android.os.Bundle;
  15. import android.util.Log;
  16. import android.widget.Toast;
  17. public class NaviLocation {
  18. Context m_ctx;
  19. LocationManager m_locationManager;
  20. Location m_location;
  21. private boolean m_nmea_started = false;
  22. private NaviApp m_naviApp;
  23. class LocationDebug {
  24. }
  25. public NaviLocation(Context ctx, NaviApp naviApp) {
  26. m_ctx = ctx;
  27. m_naviApp = naviApp;
  28. }
  29. /**
  30. * 初始化
  31. *
  32. * @return
  33. */
  34. public int initialize() {
  35. // 創建LocationManger對象
  36. m_locationManager = (LocationManager) m_ctx
  37. .getSystemService(Context.LOCATION_SERVICE);
  38. // 獲取最後一次GPS定位的位置並上傳
  39. m_location = m_locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
  40. if( null != m_location )
  41. {
  42. UploadPos(m_location);
  43. }
  44. // 綁定監聽,有4個參數
  45. // 參數1,設備:有GPS_PROVIDER和NETWORK_PROVIDER兩種
  46. // 參數2,位置信息更新周期,單位毫秒
  47. // 參數3,位置變化最小距離:當位置距離變化超過此值時,將更新位置信息
  48. // 參數4,監聽
  49. // 備注:參數2和3,如果參數3不為0,則以參數3為准;參數3為0,則通過時間來定時更新;兩者為0,則隨時刷新
  50. // 1秒更新一次,或最小位移變化超過1米更新一次;
  51. // 注意:此處更新准確度非常低,推薦在service裡面啟動一個Thread
  52. // 在run中sleep(10000);然後執行handler.sendMessage(),更新位置
  53. m_locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
  54. 0, mLocationListener);
  55. return 0;
  56. }
  57. /**
  58. * 釋放
  59. *
  60. * @return
  61. */
  62. public int uninitialize() {
  63. return 0;
  64. }
  65. /**
  66. * 開始nmea接收標志
  67. */
  68. public void start_receive_nmea() {
  69. m_nmea_started = true;
  70. }
  71. // LocationListener,位置監聽,監聽位置變化,監聽設備開關與狀態
  72. LocationListener mLocationListener = new LocationListener() {
  73. /**
  74. * 位置信息變化時觸發
  75. */
  76. @Override
  77. public void onLocationChanged(Location location) {
  78. // 上傳當前位置
  79. if (location != null) {
  80. m_location = location;
  81. UploadPos(location);
  82. }
  83. }
  84. /**
  85. * GPS禁用時觸發
  86. */
  87. @Override
  88. public void onProviderDisabled(String provider) {
  89. }
  90. /**
  91. * GPS開啟時觸發
  92. */
  93. @Override
  94. public void onProviderEnabled(String provider) {
  95. // Location location=lm.getLastKnownLocation(provider);
  96. }
  97. /**
  98. * GPS狀態變化時觸發
  99. */
  100. @Override
  101. public void onStatusChanged(String provider, int status, Bundle extras) {
  102. switch (status) {
  103. // GPS狀態為可見時
  104. case LocationProvider.AVAILABLE:
  105. Log.i("NavJava", "當前GPS狀態為可見狀態");
  106. break;
  107. // GPS狀態為服務區外時
  108. case LocationProvider.OUT_OF_SERVICE:
  109. Log.i("NavJava", "當前GPS狀態為服務區外狀態");
  110. break;
  111. // GPS狀態為暫停服務時
  112. case LocationProvider.TEMPORARILY_UNAVAILABLE:
  113. Log.i("NavJava", "當前GPS狀態為暫停服務狀態");
  114. break;
  115. }
  116. }
  117. };
  118. private boolean UploadPos(Location location)
  119. {
  120. return true;
  121. }
  122. private String getGPSTime(Location location)
  123. {
  124. String str = "0";
  125. Date date = new Date(location.getTime());
  126. SimpleDateFormat dataFormat = new SimpleDateFormat("yyyyMMddHHmmss");
  127. str=dataFormat.format(date);
  128. return str;
  129. }
  130. }
Copyright © Linux教程網 All Rights Reserved