广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    Android基站定位原理及实现代码

    2018-04-06 10:41:24 次阅读 稿源:互联网
    广告
    代码如下:

    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>

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告