利用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

posted @ 2012-04-24 23:47  周文  阅读(448)  评论(0编辑  收藏  举报