Android基站定位

  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import org.apache.http.HttpResponse;
  4. import org.apache.http.HttpStatus;
  5. import org.apache.http.client.methods.HttpPost;
  6. import org.apache.http.entity.StringEntity;
  7. import org.apache.http.impl.client.DefaultHttpClient;
  8. import org.json.JSONArray;
  9. import org.json.JSONObject;
  10. import android.app.Activity;
  11. import android.content.Context;
  12. import android.os.Bundle;
  13. import android.os.Handler;
  14. import android.os.Message;
  15. import android.telephony.TelephonyManager;
  16. import android.telephony.gsm.GsmCellLocation;
  17. import android.view.View;
  18. import android.view.View.OnClickListener;
  19. import android.widget.Button;
  20. import android.widget.LinearLayout;
  21. import android.widget.TextView;
  22. public class Test extends Activity {
  23. Context context=this;
  24. LinearLayout mainView=null;
  25. Button button=null;
  26. TextView tv=null;
  27. public void onCreate(Bundle savedInstanceState) {
  28. super.onCreate(savedInstanceState);
  29. this.setTitle("基站+联网+google数据库定位");
  30. mainView=new LinearLayout(this);
  31. mainView.setOrientation(LinearLayout.VERTICAL);
  32. button=new Button(this);
  33. button.setText("定位测试");
  34. button.setOnClickListener(new OnClickListener(){
  35. @Override
  36. public void onClick(View v) {
  37. (new HttpThread(context)).start();
  38. }
  39. });
  40. mainView.addView(button,new LinearLayout.LayoutParams(-2,-2));
  41. tv=new TextView(this);
  42. tv.setText("Hello!\n");
  43. mainView.addView(tv);
  44. setContentView(mainView);
  45. }
  46. class HttpThread extends Thread{
  47. TelephonyManager tm=null;
  48. GsmCellLocation gcl=null;
  49. int cid=0;
  50. int lac=0;
  51. int mcc = 0;
  52. int mnc =0;
  53. StringBuffer sb=null;
  54. Handler handler=new Handler(){
  55. public void handleMessage(Message msg) {
  56. switch (msg.what) {
  57. case 1:
  58. tv.append(sb.toString());
  59. break;
  60. }
  61. super.handleMessage(msg);
  62. }
  63. };
  64. HttpThread(Context context){
  65. tm=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
  66. gcl=(GsmCellLocation) tm.getCellLocation();
  67. cid=gcl.getCid();
  68. lac=gcl.getLac();
  69. mcc = Integer.valueOf(tm.getNetworkOperator().substring(0,3));
  70. mnc = Integer.valueOf(tm.getNetworkOperator().substring(3,5));
  71. sb=new StringBuffer();
  72. sb.append("cid:"+cid + "\n");
  73. sb.append("lac:"+lac + "\n");
  74. sb.append("mcc:"+mcc + "\n");
  75. sb.append("mnc:"+mnc + "\n");
  76. }
  77. public void run(){
  78. try {
  79. JSONObject jObject = new JSONObject();
  80. jObject.put("version", "1.1.0");
  81. jObject.put("host", "maps.google.com");
  82. jObject.put("request_address", true);
  83. if (mcc == 460) {
  84. jObject.put("address_language", "zh_CN");
  85. } else {
  86. jObject.put("address_language", "en_US");
  87. }
  88. JSONArray jArray = new JSONArray();
  89. JSONObject jData = new JSONObject();
  90. jData.put("cell_id", cid);
  91. jData.put("location_area_code", lac);
  92. jData.put("mobile_country_code", mcc);
  93. jData.put("mobile_network_code", mnc);
  94. jArray.put(jData);
  95. jObject.put("cell_towers", jArray);
  96. DefaultHttpClient client = new DefaultHttpClient();
  97. HttpPost post = new HttpPost("http://www.google.com/loc/json");
  98. StringEntity se = new StringEntity(jObject.toString());
  99. post.setEntity(se);
  100. HttpResponse resp = client.execute(post);
  101. BufferedReader br = null;
  102. if (resp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
  103. sb.append("联网成功\n");
  104. br = new BufferedReader(new InputStreamReader(resp.getEntity().getContent()));
  105. }else{
  106. sb.append("联网获取数据失败!\n");
  107. }
  108. String result = br.readLine();
  109. while (result != null) {
  110. sb.append(result);
  111. result = br.readLine();
  112. }
  113. }catch(Exception ex){
  114. sb.append(ex.getMessage());
  115. }
  116. Message msg=new Message();
  117. msg.what=1;
  118. handler.sendMessage(msg);
  119. }
  120. }
  121. }

 

所需权限
<uses-permission android:name=”android.permission.INTERNET”></uses-permission>
< uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION”></uses-permission>

版权声明:本文为blogsme原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/blogsme/archive/2013/01/28/2920146.html