- 浏览: 224927 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
gya_xiner:
FTPClient不用判断文件夹是否存在,直接使用chdir( ...
利用FTPClient类实现文件的上传下载功能 -
qianzhiyong:
不错,刚好用到,谢谢!
java SSL https -
55757353:
很实用,感谢.
知识分享 -
JavaJ2me:
没能实现,求结果啊,我是在tabhost中跳Activity, ...
设置activity 跳转动画 -
liuxian13183:
能不能把详细的代码或者demo发一下,jackie.new@1 ...
DatePickerDialog 修改,只显示月日,隐藏年
集合了gps、wifi、基站定位。
其中GPS定位首先是GpsTask类异步返回GPS经纬度信息
IAddressTask封装了获取地理位置的方法,具体代码如下:
其中GPS定位首先是GpsTask类异步返回GPS经纬度信息
01.GpsTask gpstask = new GpsTask(GpsActivity.this,new GpsTaskCallBack() { @Override 02.public void gpsConnectedTimeOut() { 03.gps_tip.setText("获取GPS超时了"); 04.} 05.@Override 06.public void gpsConnected(GpsData gpsdata) { 07.do_gps(gpsdata); 08.} 09.}, 3000); 10.gpstask.execute();其中3000是设置获取gps数据timeout时间。GpsTask是根据
01.locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);获取最后一次GPS信息,如果返回为Null则是根据监听获取Location信息发生改变时返回的GPS信息。因为手机获取GPS信息时间比较长,所以这个类实际使用时可能还存在一些BUG。
IAddressTask封装了获取地理位置的方法,具体代码如下:
01.package com.maxtech.common.gps; 02. 03.import java.io.BufferedReader; 04.import java.io.InputStreamReader; 05.import org.apache.http.HttpEntity; 06.import org.apache.http.HttpResponse; 07.import org.json.JSONArray; 08.import org.json.JSONObject; 09.import android.app.Activity; 10.import android.content.Context; 11.import android.net.wifi.WifiManager; 12.import android.telephony.TelephonyManager; 13.import android.telephony.gsm.GsmCellLocation; 14. 15.public abstract class IAddressTask { 16. protected Activity context; 17. 18. public IAddressTask(Activity context) { 19. this.context = context; 20. } 21. 22. public abstract HttpResponse execute(JSONObject params) throws Exception; 23. 24. public MLocation doWifiPost() throws Exception { 25. return transResponse(execute(doWifi())); 26. } 27. 28. public MLocation doApnPost() throws Exception { 29. return transResponse(execute(doApn())); 30. } 31. 32. public MLocation doGpsPost(double lat, double lng) throws Exception { 33. return transResponse(execute(doGps(lat, lng))); 34. } 35. 36. private MLocation transResponse(HttpResponse response) { 37. MLocation location = null; 38. if (response.getStatusLine().getStatusCode() == 200) { 39. location = new MLocation(); 40. HttpEntity entity = response.getEntity(); 41. BufferedReader br; 42. try { 43. br = new BufferedReader(new InputStreamReader( 44. entity.getContent())); 45. StringBuffer sb = new StringBuffer(); 46. String result = br.readLine(); 47. while (result != null) { 48. sb.append(result); 49. result = br.readLine(); 50. } 51. JSONObject json = new JSONObject(sb.toString()); 52. JSONObject lca = json.getJSONObject("location"); 53. location.Access_token = json.getString("access_token"); 54. if (lca != null) { 55. if (lca.has("accuracy")) 56. location.Accuracy = lca.getString("accuracy"); 57. if (lca.has("longitude")) 58. location.Latitude = lca.getDouble("longitude"); 59. if (lca.has("latitude")) 60. location.Longitude = lca.getDouble("latitude"); 61. if (lca.has("address")) { 62. JSONObject address = lca.getJSONObject("address"); 63. if (address != null) { 64. if (address.has("region")) 65. location.Region = address.getString("region"); 66. if (address.has("street_number")) 67. location.Street_number = address 68. .getString("street_number"); 69. if (address.has("country_code")) 70. location.Country_code = address 71. .getString("country_code"); 72. if (address.has("street")) 73. location.Street = address.getString("street"); 74. if (address.has("city")) 75. location.City = address.getString("city"); 76. if (address.has("country")) 77. location.Country = address.getString("country"); 78. } 79. } 80. } 81. } catch (Exception e) { 82. e.printStackTrace(); 83. location = null; 84. } 85. } 86. return location; 87. } 88. 89. private JSONObject doGps(double lat, double lng) throws Exception { 90. JSONObject holder = new JSONObject(); 91. holder.put("version", "1.1.0"); 92. holder.put("host", "maps.google.com"); 93. holder.put("address_language", "zh_CN"); 94. holder.put("request_address", true); 95. JSONObject data = new JSONObject(); 96. data.put("latitude", lat); 97. data.put("longitude", lng); 98. holder.put("location", data); 99. return holder; 100. } 101. 102. private JSONObject doApn() throws Exception { 103. JSONObject holder = new JSONObject(); 104. holder.put("version", "1.1.0"); 105. holder.put("host", "maps.google.com"); 106. holder.put("address_language", "zh_CN"); 107. holder.put("request_address", true); 108. TelephonyManager tm = (TelephonyManager) context 109. .getSystemService(Context.TELEPHONY_SERVICE); 110. GsmCellLocation gcl = (GsmCellLocation) tm.getCellLocation(); 111. int cid = gcl.getCid(); 112. int lac = gcl.getLac(); 113. int mcc = Integer.valueOf(tm.getNetworkOperator().substring(0, 3)); 114. int mnc = Integer.valueOf(tm.getNetworkOperator().substring(3, 5)); 115. JSONArray array = new JSONArray(); 116. JSONObject data = new JSONObject(); 117. data.put("cell_id", cid); 118. data.put("location_area_code", lac); 119. data.put("mobile_country_code", mcc); 120. data.put("mobile_network_code", mnc); 121. array.put(data); 122. holder.put("cell_towers", array); 123. return holder; 124. } 125. 126. private JSONObject doWifi() throws Exception { JSONObject holder = new JSONObject(); holder.put("version", "1.1.0"); holder.put("host", "maps.google.com"); holder.put("address_language", "zh_CN"); holder.put("request_address", true); WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); if(wifiManager.getConnectionInfo().getBSSID() == null) { throw new RuntimeException("bssid is null"); } JSONArray array = new JSONArray(); JSONObject data = new JSONObject(); data.put("mac_address", wifiManager.getConnectionInfo().getBSSID()); data.put("signal_strength", 8); data.put("age", 0); array.put(data); holder.put("wifi_towers", array); return holder; } public static class MLocation { 127. public String Access_token; 128. public double Latitude; 129. public double Longitude; 130. public String Accuracy; 131. public String Region; 132. public String Street_number; 133. public String Country_code; 134. public String Street; 135. public String City; 136. public String Country; 137. 138. @Override 139. public String toString() { 140. StringBuffer buffer = new StringBuffer(); 141. buffer.append("Access_token:" + Access_token + "\n"); 142. buffer.append("Region:" + Region + "\n"); 143. buffer.append("Accuracy:" + Accuracy + "\n"); 144. buffer.append("Latitude:" + Latitude + "\n"); 145. buffer.append("Longitude:" + Longitude + "\n"); 146. buffer.append("Country_code:" + Country_code + "\n"); 147. buffer.append("Country:" + Country + "\n"); 148. buffer.append("City:" + City + "\n"); 149. buffer.append("Street:" + Street + "\n"); 150. buffer.append("Street_number:" + Street_number + "\n"); 151. return buffer.toString(); 152. } 153. } 154.}
01.package com.maxtech.common; 02. 03.import com.maxtech.common.gps.GpsTask; 04.import com.maxtech.common.gps.GpsTaskCallBack; 05.import com.maxtech.common.gps.GpsTask.GpsData; 06.import com.maxtech.common.gps.IAddressTask.MLocation; 07.import android.app.Activity; 08.import android.app.AlertDialog; 09.import android.app.ProgressDialog; 10.import android.os.AsyncTask; 11.import android.os.Bundle; 12.import android.util.Log; 13.import android.view.View; 14.import android.view.View.OnClickListener; 15.import android.widget.TextView; 16. 17.public class GpsActivity extends Activity implements OnClickListener { 18. private TextView gps_tip = null; 19. private AlertDialog dialog = null; 20. 21. @Override 22. public void onCreate(Bundle savedInstanceState) { 23. super.onCreate(savedInstanceState); 24. setContentView(R.layout.main); 25. gps_tip = (TextView) findViewById(R.id.gps_tip); 26. findViewById(R.id.do_gps).setOnClickListener(GpsActivity.this); 27. findViewById(R.id.do_apn).setOnClickListener(GpsActivity.this); 28. findViewById(R.id.do_wifi).setOnClickListener(GpsActivity.this); 29. dialog = new ProgressDialog(GpsActivity.this); 30. dialog.setTitle("请稍等..."); 31. dialog.setMessage("正在定位..."); 32. } 33. 34. @SuppressWarnings("unchecked") 35. @Override 36. public void onClick(View v) { 37. gps_tip.setText(""); 38. switch (v.getId()) { 39. case R.id.do_apn: 40. do_apn(); 41. break; 42. case R.id.do_gps: 43. GpsTask gpstask = new GpsTask(GpsActivity.this, 44. new GpsTaskCallBack() { 45. @Override 46. public void gpsConnectedTimeOut() { 47. gps_tip.setText("获取GPS超时了"); 48. } 49. 50. @Override 51. public void gpsConnected(GpsData gpsdata) { 52. do_gps(gpsdata); 53. } 54. }, 3000); 55. gpstask.execute(); 56. break; 57. case R.id.do_wifi: 58. do_wifi(); 59. break; 60. } 61. } 62. 63. private void do_apn() { 64. new AsyncTask<Void, Void, String>() { 65. @Override 66. protected String doInBackground(Void... params) { 67. MLocation location = null; 68. try { 69. location = new AddressTask(GpsActivity.this, 70. AddressTask.DO_APN).doApnPost(); 71. } catch (Exception e) { 72. e.printStackTrace(); 73. } 74. if (location == null) 75. return null; 76. return location.toString(); 77. } 78. 79. @Override 80. protected void onPreExecute() { 81. dialog.show(); 82. super.onPreExecute(); 83. } 84. 85. @Override 86. protected void onPostExecute(String result) { 87. if (result == null) { 88. gps_tip.setText("基站定位失败了..."); 89. } else { 90. gps_tip.setText(result); 91. } 92. dialog.dismiss(); 93. super.onPostExecute(result); 94. } 95. }.execute(); 96. } 97. 98. private void do_gps(final GpsData gpsdata) { 99. new AsyncTask<Void, Void, String>() { 100. @Override 101. protected String doInBackground(Void... params) { 102. MLocation location = null; 103. try { 104. Log.i("do_gpspost", "经纬度:" + gpsdata.getLatitude() + "----" 105. + gpsdata.getLongitude()); 106. location = new AddressTask(GpsActivity.this, 107. AddressTask.DO_GPS).doGpsPost( 108. gpsdata.getLatitude(), gpsdata.getLongitude()); 109. } catch (Exception e) { 110. e.printStackTrace(); 111. } 112. if (location == null) 113. return "GPS信息获取错误"; 114. return location.toString(); 115. } 116. 117. @Override 118. protected void onPreExecute() { 119. dialog.show(); 120. super.onPreExecute(); 121. } 122. 123. @Override 124. protected void onPostExecute(String result) { 125. gps_tip.setText(result); 126. dialog.dismiss(); 127. super.onPostExecute(result); 128. } 129. }.execute(); 130. } 131. 132. private void do_wifi() { 133. new AsyncTask<Void, Void, String>() { 134. @Override 135. protected String doInBackground(Void... params) { 136. MLocation location = null; 137. try { 138. location = new AddressTask(GpsActivity.this, 139. AddressTask.DO_WIFI).doWifiPost(); 140. } catch (Exception e) { 141. e.printStackTrace(); 142. } 143. if (location == null) 144. return null; 145. return location.toString(); 146. } 147. 148. @Override 149. protected void onPreExecute() { 150. dialog.show(); 151. super.onPreExecute(); 152. } 153. 154. @Override 155. protected void onPostExecute(String result) { 156. if (result != null) { 157. gps_tip.setText(result); 158. } else { 159. gps_tip.setText("WIFI定位失败了..."); 160. } 161. dialog.dismiss(); 162. super.onPostExecute(result); 163. } 164. }.execute(); 165. } 166.}
01.package com.maxtech.common; 02.import org.apache.http.HttpHost; 03.import org.apache.http.HttpResponse; 04.import org.apache.http.client.HttpClient; 05.import org.apache.http.client.methods.HttpPost; 06.import org.apache.http.conn.params.ConnRouteParams; 07.import org.apache.http.entity.StringEntity; 08.import org.apache.http.impl.client.DefaultHttpClient; 09.import org.apache.http.params.HttpConnectionParams; 10.import org.json.JSONObject; 11.import android.app.Activity; 12.import android.database.Cursor; 13.import android.net.Uri; 14.import com.maxtech.common.gps.IAddressTask; 15.public class AddressTask extends IAddressTask { 16. public static final int DO_APN = 0; 17. public static final int DO_WIFI = 1; 18. public static final int DO_GPS = 2; 19. private int postType = -1; 20. public AddressTask(Activity context, int postType) { 21. super(context); 22. this.postType = postType; 23. } 24. @Override 25. public HttpResponse execute(JSONObject params) throws Exception { 26. HttpClient httpClient = new DefaultHttpClient(); 27. HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 20 * 1000); 28. HttpConnectionParams.setSoTimeout(httpClient.getParams(), 20 * 1000); 29. HttpPost post = new HttpPost("http://74.125.71.147/loc/json"); // 设置代理 30. if (postType == DO_APN) { 31. Uri uri = Uri.parse("content://telephony/carriers/preferapn"); // 获取当前正在使用的APN接入点 32. Cursor mCursor = context.getContentResolver().query(uri, null,null, null, null); 33. if (mCursor != null) { 34. if(mCursor.moveToFirst()) { 35. String proxyStr = mCursor.getString(mCursor.getColumnIndex("proxy")); 36. if (proxyStr != null && proxyStr.trim().length() > 0) { 37. HttpHost proxy = new HttpHost(proxyStr, 80); 38. httpClient.getParams().setParameter( 39. ConnRouteParams.DEFAULT_PROXY, proxy); 40. } 41. } 42. } 43. } 44. StringEntity se = new StringEntity(params.toString()); 45. post.setEntity(se); 46. HttpResponse response = httpClient.execute(post); 47. return response; 48. } 49. } 50. } 51. } 52.}
相关推荐
本源码包专注于三种主要的定位技术:GPS(全球定位系统)、WiFi和基站定位。 GPS(全球定位系统)是最常见的定位方式,它通过接收多个卫星信号来计算设备的位置。在Android中,我们可以使用LocationManager类来请求...
在Android系统中,GPS(全球定位系统)和WIFI基站定位是两种常见的定位技术,用于获取设备的地理位置信息。这份“androidGPS及WIFI基站定位坐标源码.zip”压缩包包含了一些实现这两种定位方式的源代码,对于学习...
这个压缩包“安卓Android源码——androidGPS及WIFI基站定位坐标源码.zip”提供了一个实践示例,展示了如何在Android平台上实现基于GPS和WIFI的定位功能。下面将详细讲解这两个定位技术及其在源码中的应用。 1. GPS...
本文将深入探讨“GPS及WIFI基站定位坐标源码”这一主题,主要关注Android平台下的GPS和WiFi基站定位技术。 首先,我们要理解GPS(全球定位系统)的工作原理。GPS是一种基于卫星导航的全球定位系统,它通过接收至少...
这份"Android应用源码之androidGPS及WIFI基站定位坐标源码"提供了实现这两种定位方式的详细示例,帮助开发者更好地理解和运用到自己的项目中。 一、Android GPS定位 Android系统通过Google Play服务提供的Location ...
在Android开发中,GPS(全球定位系统)和基站定位是两种常见的定位技术,它们用于获取设备的地理位置信息。本文将详细讲解这两种定位方式,并结合Android Studio的开发实践,阐述如何在实际应用中实现它们。 首先,...
在Android应用开发中,GPS(全球定位系统)和WIFI基站定位是常见的定位技术,用于获取设备的地理位置信息。这份毕业设计源码提供了一个深入理解这两种定位方式的实践平台。以下将详细介绍这两种定位方法及其在...
本压缩包"安卓Android源码——GPS及WIFI基站定位坐标源码.zip"包含了实现GPS(全球定位系统)和WIFI基站定位的源代码示例,这将有助于开发者深入理解这两种定位机制的工作原理及其在实际应用中的集成。 GPS定位是...
在Android操作系统中,GPS(全球定位系统)和WIFI基站定位是两种常见的定位技术,用于获取设备的地理位置信息。这份名为“安卓Andriod源码——GPS及WIFI基站定位坐标源码.zip”的压缩包文件可能包含了一套完整的示例...
本主题主要关注三种定位方法:GPS(全球定位系统)、GPS与Java的结合、WiFi定位以及基站定位。以下是对这些知识点的详细阐述: 1. GPS(全球定位系统): GPS是一种全球性的卫星导航系统,由美国建立并维护。它...
本资源包含的"androidGPS及WIFI基站定位坐标源码"提供了实现这些功能的具体代码实现,对于开发者来说是很好的学习和参考材料。 GPS定位是通过接收来自多个GPS卫星的信号来计算设备的位置。Android系统提供了...
本源码压缩包“GPS及WIFI基站定位坐标源码.zip”显然提供了实现这两种定位方式的代码示例,主要适用于Android平台。下面将详细探讨这两种定位方法以及可能包含的源码知识点。 1. GPS(全球定位系统)定位: GPS是...
基站定位和WIFI定位是移动设备定位技术中的两种主要方法,它们在许多现代应用程序和服务中起着关键作用,如导航、紧急救援、社交网络和广告定向。本项目源码提供了将这两种定位方式完美结合的解决方案。 基站定位是...
此压缩包"androidGPS及WIFI基站定位坐标源码.zip"包含了一个示例项目,用于演示如何利用GPS和WiFi基站数据进行定位。下面将详细介绍这两个定位方法及其在Android中的实现。 1. GPS(全球定位系统)定位: GPS是...
androidGPS及WIFI基站定位坐标源码.zip项目安卓应用源码下载androidGPS及WIFI基站定位坐标源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
这份“androidGPS及WIFI基站定位坐标源码.zip”源码资源将帮助我们深入理解这两种定位方式的工作原理以及如何在实际应用中实现它们。 一、GPS定位 GPS定位依赖于天空中的多个卫星,通过测量地面设备与卫星之间的...
这份"Android应用源码之androidGPS及WIFI基站定位坐标源码.zip"压缩包包含了实现这两种定位方式的源代码示例,非常适合初学者深入理解和实践Android定位系统的工作原理。 首先,我们要了解GPS定位。GPS定位是通过...
这份“androidGPS及WIFI基站定位坐标源码.7z”压缩包文件很可能是包含了实现这两种定位方式的Android应用源代码。下面我们将详细探讨这两种定位方法及其相关知识点。 1. GPS定位: GPS是全球卫星导航系统,通过...