Android基站定位

Android基站定位

import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class Test extends Activity {
    
    Context context=this;
    LinearLayout mainView=null;
    Button button=null;
    TextView tv=null;
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setTitle("基站+联网+google数据库定位");
        mainView=new LinearLayout(this);
        mainView.setOrientation(LinearLayout.VERTICAL);
        button=new Button(this);
        button.setText("定位测试");
        button.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                (new HttpThread(context)).start();
            }
        });
        mainView.addView(button,new LinearLayout.LayoutParams(-2,-2));
        tv=new TextView(this);
        tv.setText("Hello!\n");
        mainView.addView(tv);
        setContentView(mainView);
    }
        
    class HttpThread extends Thread{
        
        TelephonyManager tm=null;
        GsmCellLocation gcl=null;
        int cid=0;
        int lac=0;
        int mcc = 0;
        int mnc =0;
        StringBuffer sb=null;
        
        Handler handler=new Handler(){
            public void handleMessage(Message msg) {   
                switch (msg.what) {     
                case 1:
                    tv.append(sb.toString());
                    break;
                }
                super.handleMessage(msg);
           }   
        };
        
        HttpThread(Context context){
            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=new StringBuffer();
            sb.append("cid:"+cid + "\n");
            sb.append("lac:"+lac + "\n");
            sb.append("mcc:"+mcc + "\n");
            sb.append("mnc:"+mnc + "\n");
        }
        
        public void run(){
            try {
                JSONObject jObject = new JSONObject();
                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");
                }
                JSONArray jArray = new JSONArray();
                JSONObject jData = new JSONObject();
                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);
                
                DefaultHttpClient client = new DefaultHttpClient();
                HttpPost post = new HttpPost("http://www.google.com/loc/json");
                StringEntity se = new StringEntity(jObject.toString());
                post.setEntity(se);
                HttpResponse resp = client.execute(post);
                BufferedReader br = null;
                if (resp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                    sb.append("联网成功\n");
                    br = new BufferedReader(new InputStreamReader(resp.getEntity().getContent()));
                }else{
                    sb.append("联网获取数据失败!\n");
                }
                
                String result = br.readLine();
                while (result != null) {
                    sb.append(result);
                    result = br.readLine();
                }
            }catch(Exception ex){
                sb.append(ex.getMessage());
            }
            Message msg=new Message();
            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>

原文地址:https://www.cnblogs.com/blogsme/p/2920146.html