`

Android基站+联网+google数据库定位

阅读更多
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>
分享到:
评论

相关推荐

    Android GPS+基站+WiFi热点多渠道定位模块的Demo,采用Google Geo Location API+谷歌gcm SDK,Android定位方式,请翻墙后期测试效果.zip

    Android GPS+基站+WiFi热点多渠道定位模块的Demo,采用Google Geo Location API+谷歌gcm SDK/Android定位方式,请翻墙后期测试效果Alx位置管理器Android GPS+基站+WiFi热点多渠道定位的Demo,使用Google Geo ...

    全国基站lbs定位库 基站定位 lbs定位数据库

    全国基站LBS定位库是一个重要的数据资源,它包含了中国移动、中国联通和中国电信全网的基站位置信息,总计84万条数据。LBS,即Location Based Services,基于位置的服务,是利用移动通信网络和卫星定位系统(如GPS)...

    android 基站定位程序

    在Android平台上,基站定位是一种基于移动通信网络的定位技术,主要利用手机与周围基站之间的信号交互来确定设备的位置。此技术对于那些GPS信号无法获取或者信号弱的环境(如室内)尤其有用。以下是对"android 基站...

    android基站定位

    在Android系统中,基站定位是一种基于移动通信网络的定位技术,它通过获取手机与周围基站之间的信号强度和角度信息来确定设备的位置。基站定位在没有GPS信号或者GPS信号较弱的情况下,仍然能够提供一定程度的位置...

    android 基站定位 返回定位的城市

    在Android开发中,基站定位是一种常见的获取用户地理位置的方法,它主要依赖于移动设备与周围基站之间的信号强度来确定位置。这种技术尤其适用于GPS信号不佳或者无法接收到GPS信号的环境,如室内。在这个名为...

    全国基站lbs定位库包含全国移动联通电信全网lbs位置数据,94万条

    全国基站lbs定位库包含全国移动联通电信全网lbs位置数据,94万条

    Android 基站定位例子

    在Android系统中,基站定位是一种基于移动通信网络的定位方式,它通过获取手机与周围基站的距离来估算设备的位置。这种定位方法尤其适用于GPS信号不可用或者较弱的环境,如室内或城市高楼之间。本节将深入探讨...

    android基于Gps 定位和基站定位获取经纬度

    提供的博文链接指向了一个ITeye上的博客文章,作者分享了关于Android定位的一些实践经验和源码示例。博主可能详细介绍了如何集成上述代码并进行实际应用,包括错误处理、位置精度优化等方面。 5. 文件名"Location3...

    移动基站联通基站全国基站数据库(基站查询)

    在“移动基站联通基站全国基站数据库(基站查询)”这个资源中,包含了中国移动、中国联通两大运营商的全国基站信息,这对于网络规划、信号分析、故障排查、无线覆盖优化等多个方面都有极高的价值。 首先,基站查询...

    Android GPS和基站定位 Android studio开发

    在Android开发中,GPS(全球定位系统)和基站定位是两种常见的定位技术,它们用于获取设备的地理位置信息。本文将详细讲解这两种定位方式,并结合Android Studio的开发实践,阐述如何在实际应用中实现它们。 首先,...

    免费全国移动联通电信基站数据库,基站查询

    3. **故障定位与排除**:当用户报告通信问题时,基站数据库可迅速定位问题基站,快速排查故障,缩短修复时间。 4. **信号覆盖分析**:对基站覆盖范围进行分析,能帮助评估信号强度和干扰情况,为用户提供更好的通话...

    最新全国基站lbs定位库 基站定位 lbs定位数据库

    最新全国基站lbs定位库包含全国移动联通电信全网lbs位置数据

    android基站手动查询定位系统

    在Android平台上,基站手动查询定位系统是一种利用移动通信基站数据进行定位的技术。这种技术主要依赖于手机接收的基站信号来确定设备的位置。基站定位的工作原理是通过获取手机连接的基站的逻辑区域码(LAC,...

    android定位之基站定位

    ### Android定位之基站定位 #### 一、概述 在Android应用开发中,定位技术是非常重要的一个环节。通常情况下,我们可以通过GPS(全球定位系统)来实现精准定位,但当设备处于室内或没有GPS信号覆盖的地方时,GPS...

    Android 基站定位源码.zip

    在Android系统中,基站定位是一种常见的移动设备定位技术,它基于手机接收到来自周围基站的无线电信号强度来确定设备的位置。本压缩包"Android 基站定位源码.zip"包含了一个实现这一功能的源代码示例。下面将详细...

    基站定位和WIFI定位完美结合项目源码

    基站定位和WIFI定位是移动设备定位技术中的两种主要方法,它们在许多现代应用程序和服务中起着关键作用,如导航、紧急救援、社交网络和广告定向。本项目源码提供了将这两种定位方式完美结合的解决方案。 基站定位是...

    全国基站数据库

    全国移动基站数据库代码

    创新组合皮基站+直放站, 实现 4G 网络低成本快速部署.pdf

    创新组合皮基站+直放站,实现 4G 网络低成本快速部署 本文主要介绍了创新组合皮基站+直放站的解决方案,旨在实现 4G 网络的低成本快速部署。该方案通过组合皮基站和直放站,利用皮基站的优势,解决了直放站的光缆...

Global site tag (gtag.js) - Google Analytics