zoukankan      html  css  js  c++  java
  • 利用Google接口实现基站定位

    LocationAct.java
    001 package lab.sodino.location;
    002
    003 import java.io.BufferedReader;
    004 import java.io.IOException;
    005 import java.io.InputStream;
    006 import java.io.InputStreamReader;
    007 import java.io.UnsupportedEncodingException;
    008 import org.apache.http.HttpEntity;
    009 import org.apache.http.HttpResponse;
    010 import org.apache.http.client.ClientProtocolException;
    011 import org.apache.http.client.methods.HttpPost;
    012 import org.apache.http.entity.StringEntity;
    013 import org.apache.http.impl.client.DefaultHttpClient;
    014 import org.json.JSONArray;
    015 import org.json.JSONException;
    016 import org.json.JSONObject;
    017 import android.app.Activity;
    018 import android.content.Context;
    019 import android.os.Bundle;
    020 import android.telephony.TelephonyManager;
    021 import android.telephony.gsm.GsmCellLocation;
    022 import android.view.View;
    023 import android.widget.Button;
    024 import android.widget.TextView;
    025
    026 /**
    027 * Google定位的实现.<br/>
    028 * Geolocation的详细信息请参见:<br/>
    029 * <a
    030 * href="http://code.google.com/apis/gears/geolocation_network_protocol.html">
    031 * http://code.google.com/apis/gears/geolocation_network_protocol.html</a>
    032 */
    033 public class LocationAct extends Activity {
    034 private TextView txtInfo;
    035 public void onCreate(Bundle savedInstanceState) {
    036 super.onCreate(savedInstanceState);
    037 setContentView(R.layout.main);
    038 Button btn = (Button) findViewById(R.id.btnStart);
    039 txtInfo = (TextView) findViewById(R.id.txtInfo);
    040 btn.setOnClickListener(new Button.OnClickListener() {
    041 public void onClick(View view) {
    042 getLocation();
    043 }
    044 });
    045 }
    046 private void getLocation() {
    047 TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    048 GsmCellLocation gsmCell = (GsmCellLocation) tm.getCellLocation();
    049 int cid = gsmCell.getCid();
    050 int lac = gsmCell.getLac();
    051 String netOperator = tm.getNetworkOperator();
    052 int mcc = Integer.valueOf(netOperator.substring(0, 3));
    053 int mnc = Integer.valueOf(netOperator.substring(3, 5));
    054 JSONObject holder = new JSONObject();
    055 JSONArray array = new JSONArray();
    056 JSONObject data = new JSONObject();
    057 try {
    058 holder.put("version", "1.1.0");
    059 holder.put("host", "maps.google.com");
    060 holder.put("address_language", "zh_CN");
    061 holder.put("request_address", true);
    062 holder.put("radio_type", "gsm");
    063 holder.put("carrier", "HTC");
    064 data.put("cell_id", cid);
    065 data.put("location_area_code", lac);
    066 data.put("mobile_countyr_code", mcc);
    067 data.put("mobile_network_code", mnc);
    068 array.put(data);
    069 holder.put("cell_towers", array);
    070 } catch (JSONException e) {
    071 e.printStackTrace();
    072 }
    073 DefaultHttpClient client = new DefaultHttpClient();
    074 HttpPost httpPost = new HttpPost("http://www.google.com/loc/json");
    075 StringEntity stringEntity = null;
    076 try {
    077 stringEntity = new StringEntity(holder.toString());
    078 } catch (UnsupportedEncodingException e) {
    079 e.printStackTrace();
    080 }
    081 httpPost.setEntity(stringEntity);
    082 HttpResponse httpResponse = null;
    083 try {
    084 httpResponse = client.execute(httpPost);
    085 } catch (ClientProtocolException e) {
    086 e.printStackTrace();
    087 } catch (IOException e) {
    088 e.printStackTrace();
    089 }
    090 HttpEntity httpEntity = httpResponse.getEntity();
    091 InputStream is = null;
    092 try {
    093 is = httpEntity.getContent();
    094 } catch (IllegalStateException e) {
    095 e.printStackTrace();
    096 } catch (IOException e) {
    097 // TODO Auto-generated catch block
    098 e.printStackTrace();
    099 }
    100 InputStreamReader isr = new InputStreamReader(is);
    101 BufferedReader reader = new BufferedReader(isr);
    102 StringBuffer stringBuffer = new StringBuffer();
    103 try {
    104 String result = "";
    105 while ((result = reader.readLine()) != null) {
    106 stringBuffer.append(result);
    107 }
    108 } catch (IOException e) {
    109 e.printStackTrace();
    110 }
    111 System.out.println("[sodino]" + stringBuffer.toString());
    112 txtInfo.setText(stringBuffer.toString());
    113 }
    114 }

    [代码] 权限设定

    1 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    2 <uses-permission android:name="android.permission.INTERNET"></uses-permission>

    [图片] 1.jpg

  • 相关阅读:
    微信——获取用户基本信息及openid 、access_token、code
    Java中的标记接口(zz)
    深入理解Java的注解(Annotation):注解处理器(3)
    深入理解Java的注解(Annotation):自定义注解入门(2)
    深入理解Java的注解(Annotation):基本概念(1)
    TCP 粘包及其解决方案(zz)
    TCP,UDP,IP包头格式及说明(zz)
    python 如何将JSON数据原封不动的转为字符串(顺序不能变动)?
    mysql:functional dependency
    什么是“几何级数”?什么是“算数级数”?有啥区别?
  • 原文地址:https://www.cnblogs.com/tuncaysanli/p/2469103.html
Copyright © 2011-2022 走看看