(原文主要方法转载于百度文库:http://wenku.baidu.com/view/2220dde8172ded630b1cb6ee.html)
- importjava.io.BufferedReader;
- importjava.io.InputStreamReader;
- importorg.apache.http.HttpResponse;
- importorg.apache.http.HttpStatus;
- importorg.apache.http.client.methods.HttpPost;
- importorg.apache.http.entity.StringEntity;
- importorg.apache.http.impl.client.DefaultHttpClient;
- importorg.json.JSONArray;
- importorg.json.JSONObject;
- importandroid.app.Activity;
- importandroid.content.Context;
- importandroid.os.Bundle;
- importandroid.os.Handler;
- importandroid.os.Message;
- importandroid.telephony.TelephonyManager;
- importandroid.telephony.gsm.GsmCellLocation;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.widget.Button;
- importandroid.widget.LinearLayout;
- importandroid.widget.TextView;
- publicclassTestextendsActivity{
- Contextcontext=this;
- LinearLayoutmainView=null;
- Buttonbutton=null;
- TextViewtv=null;
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- this.setTitle("基站+联网+google数据库定位");
- mainView=newLinearLayout(this);
- mainView.setOrientation(LinearLayout.VERTICAL);
- button=newButton(this);
- button.setText("定位测试");
- button.setOnClickListener(newOnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- (newHttpThread(context)).start();
- }
- });
- mainView.addView(button,newLinearLayout.LayoutParams(-2,-2));
- tv=newTextView(this);
- tv.setText("Hello!\n");
- mainView.addView(tv);
- setContentView(mainView);
- }
- classHttpThreadextendsThread{
- TelephonyManagertm=null;
- GsmCellLocationgcl=null;
- intcid=0;
- intlac=0;
- intmcc=0;
- intmnc=0;
- StringBuffersb=null;
- Handlerhandler=newHandler(){
- publicvoidhandleMessage(Messagemsg){
- switch(msg.what){
- case1:
- tv.append(sb.toString());
- break;
- }
- super.handleMessage(msg);
- }
- };
- HttpThread(Contextcontext){
- tm=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
- gcl=(GsmCellLocation)tm.getCellLocation();
- cid=gcl.getCid();
- lac=gcl.getLac();
- mcc=Integer.valueOf(tm.getNetworkOperator().substring(0,3));
- mnc=Integer.valueOf(tm.getNetworkOperator().substring(3,5));
- sb=newStringBuffer();
- sb.append("cid:"+cid+"\n");
- sb.append("lac:"+lac+"\n");
- sb.append("mcc:"+mcc+"\n");
- sb.append("mnc:"+mnc+"\n");
- }
- publicvoidrun(){
- try{
- JSONObjectjObject=newJSONObject();
- jObject.put("version","1.1.0");
- jObject.put("host","maps.google.com");
- jObject.put("request_address",true);
- if(mcc==460){
- jObject.put("address_language","zh_CN");
- }else{
- jObject.put("address_language","en_US");
- }
- JSONArrayjArray=newJSONArray();
- JSONObjectjData=newJSONObject();
- jData.put("cell_id",cid);
- jData.put("location_area_code",lac);
- jData.put("mobile_country_code",mcc);
- jData.put("mobile_network_code",mnc);
- jArray.put(jData);
- jObject.put("cell_towers",jArray);
- DefaultHttpClientclient=newDefaultHttpClient();
- HttpPostpost=newHttpPost("http://www.google.com/loc/json");
- StringEntityse=newStringEntity(jObject.toString());
- post.setEntity(se);
- HttpResponseresp=client.execute(post);
- BufferedReaderbr=null;
- if(resp.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
- sb.append("联网成功\n");
- br=newBufferedReader(newInputStreamReader(resp.getEntity().getContent()));
- }else{
- sb.append("联网获取数据失败!\n");
- }
- Stringresult=br.readLine();
- while(result!=null){
- sb.append(result);
- result=br.readLine();
- }
- }catch(Exceptionex){
- sb.append(ex.getMessage());
- }
- Messagemsg=newMessage();
- msg.what=1;
- handler.sendMessage(msg);
- }
- }
- }
所需权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>