`
fortunate179
  • 浏览: 8971 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过基站,wifi 获取手机位置

阅读更多
  潜水,换名字,免得被人认出来

最近需要对手机进行定位,可是如果用gps的话,室内的话获取不到,获取速度也是个问题.
so,使用基站获取,或者使用wifi获取是个不错的途径(精确度稍微差了点,不过可以接受).
  采用如上两种方式可以很方便的获取,只需要向google发送基站信息就可以了.
地址是www.google.com/loc/json如果想返回xml格式将json替换为xml.
更详细情况可以看
http://code.google.com/p/gears/wiki/GeolocationAPI

手机的网络类型包括gsm,cdma,wcdma,wifi,四种方式.gsm,cdma这两种类型我已经测试通过了,另外两中因为不需要,所以我也没有测试,如果有兴趣可以自己测试

里面有请求的格式已经请求字段的说明.具体代码网上搜索一大把.
此处大概贴出测试代码,经测试还是不错的阿
HttpClient client = new DefaultHttpClient();
/** 采用POST方法 */
HttpPost post = new HttpPost("http://www.google.com/loc/json");

JSONObject holder = new JSONObject();
holder.put("version", "1.1.0");
holder.put("host", "maps.google.com");
holder.put("address_language", "zh_CN");
holder.put("request_address", true);
holder.put("radio_type", cell.getType());

JSONObject tower = new JSONObject();
JSONArray towerarray = new JSONArray();
towerarray.add(tower);
if ("gsm".equals(cell.getType())) {
// gsm
tower.put("cell_id", cell.getCID());
tower.put("location_area_code", cell.getLAC());

tower.put("mobile_country_code", cell.getMCC());
tower.put("mobile_network_code", cell.getMNC());
holder.put("cell_towers", towerarray);
} else if ("cdma".equals(cell.getType())) {
// cdma
tower.put("cell_id", cell.getBid());
tower.put("location_area_code", cell.getNid());

tower.put("mobile_country_code", cell.getMCC());
tower.put("mobile_network_code", cell.getSid());
holder.put("cell_towers", towerarray);
} else if ("wcdma".equals(cell.getType())) {
// wcdma
// holder.put("cell_towers", towerarray);
} else if ("wifi".equals(cell.getType())) {
// wifi
// holder.put("wifi_towers", towerarray);
}

HttpEntity entity = new StringEntity(holder.toJSONString());
post.setEntity(entity);

/** 发出POST数据并获取返回数据 */
HttpResponse response = client.execute(post);
HttpEntity responseEntity = response.getEntity();
BufferedReader buffReader = new BufferedReader(new InputStreamReader(
responseEntity.getContent()));
StringBuffer strBuff = new StringBuffer();
String result = null;
while ((result = buffReader.readLine()) != null) {
strBuff.append(result);
System.out.println(strBuff);
}

下面的是单元测试的代码:
Cell cell = new Cell();
// gsm
// cell.setCID("39990");
// cell.setLAC("4303");
// cell.setMCC("460");
// cell.setMNC("0");
// cell.setType("gsm");

// cdma
cell = new Cell();
cell.setSid("13824");// mnc
cell.setNid("2");// lac
cell.setBid("30737");// cid
cell.setMCC("460");
cell.setType("cdma");
分享到:
评论

相关推荐

    android 基于基站,apn,gps,wifi,network 根据不同手机sim卡获取经纬度

    标题提到的“基于基站,APN,GPS,WiFi,Network 根据不同手机SIM卡获取经纬度”涉及了多种定位技术,每种都有其特性和应用场景。下面将详细介绍这些技术以及如何在Android中实现。 首先,我们来了解几种主要的定位...

    百度地图wifi定位获取地理位置最新版

    【标题】:“百度地图WiFi定位获取地理位置最新版”是指百度地图提供的一种服务,它通过结合WiFi信号和GPS(全球定位系统)以及基站信息,来精确地确定用户所在位置。这项技术在移动应用中广泛使用,尤其对于那些...

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

    基站定位是利用手机接收到来自周围多个移动通信基站的信号来确定位置的技术。它基于三角测量原理,通过测量到不同基站的信号强度和时间差,可以计算出设备与基站之间的距离,进而推算出设备的大致位置。在城市环境中...

    iOS-OC-获取WiFi信息

    但是,你可以通过一种间接的方式获取到WiFi状态。比如,你可以利用`Reachability`库来检测网络连接的状态,虽然它不能告诉你具体的WiFi名称,但能确定设备是否连接到了WiFi: ```objective-c #import "Reachability...

    最新的经纬度获取!wifi,基站,gps定位

    3. **基站定位**:通过分析手机连接的移动通信基站信号,可以估算出设备的位置。基站定位在没有Wi-Fi或GPS信号时依然有效,但精度通常低于GPS,可能在几百米到几千米之间。 为了使用百度定位服务,开发者需要集成...

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

    通过这个数据库,用户可以查询到具体的基站位置、基站编号、频段信息、发射功率、天线高度等关键参数。这些信息对于网络优化工程师来说至关重要,他们可以根据这些数据进行网络覆盖评估,找出信号盲区,优化网络布局...

    在Android里完美实现基站和WIFI定位

    在Android系统中,基站和WIFI定位是两种重要的位置服务技术,它们可以帮助应用程序获取设备的地理位置信息,即使在没有GPS的情况下也能实现定位。对于OPhone和部分国产Android定制机,由于默认不支持基站和WIFI定位...

    androidgps基站与WIFI定位源码.zip

    5. **基站定位**:Android系统内部集成了CellInfo类来处理基站信息,开发者可以通过LocationManager获取CellInfo,然后进行位置计算。基站定位通常需要处理多个小区的信息,通过三角定位或多边形算法估算设备位置。 ...

    android系统的wifi和基站地理信息定位完整代码实现

    而基站定位则是根据手机接收到的移动通信基站信号,通过计算与多个基站的距离或角度来确定位置。这两种定位方式通常结合使用,以提高定位精度。 在Android中,我们可以利用`LocationManager`服务来获取WiFi和基站...

    android gps wifi 基站 定位齐全。源码

    Android系统通过CellInfo接口来获取手机当前连接的基站信息,然后通过运营商的网络服务进行位置计算。 在实际应用中,为了提高定位精度和响应速度,通常会结合这三种方法,使用 fused location provider(融合定位...

    android 基站、WIFI、GPS定位集合【源码】

    - **原理**:基站定位基于手机与周围多个移动通信基站的距离来估算设备位置。通过测量信号强度和时间差,计算出到每个基站的大致距离,然后通过三角定位方法确定位置。 - **API**:在Android中,`android....

    android google 定位程序 wifi基站GPS定位

    2. **Wi-Fi基站定位**:Wi-Fi定位是通过识别周围的Wi-Fi接入点并匹配已知的Wi-Fi热点数据库来确定位置。这种方法在室内特别有用,因为GPS信号可能较弱或无法接收。开发者可以调用`FusedLocationProviderClient`的`...

    Android实例之获取安卓手机WIFI信息

    在Android平台上,获取手机WIFI信息是常见的需求,这通常涉及到网络编程和设备API的交互。这个"Android实例之获取安卓手机WIFI信息"的项目就是教你如何利用Android SDK中的WIFI服务来获取相关的网络状态。以下是这个...

    LBS基站定位完整源码(分为客户端和服务器端)

    源码分析方面,客户端部分可能涉及到Android或iOS的开发,需要理解移动平台的网络通信接口,如HTTP/HTTPS请求,以及如何获取手机与基站的交互数据。服务器端则可能使用Java、Python或C++等后端语言,需要掌握网络...

    gps.rar_GPS_GPS java_wifi定位_基站定位_定位

    WiFi定位是通过识别周围可用的WiFi接入点的MAC地址,结合预先收集的WiFi热点位置数据库进行定位。由于城市环境中WiFi热点分布广泛,WiFi定位在室内特别有用。Android和iOS系统都提供了相应的API,如Android的...

    Android应用源码之androidGPS及WIFI基站定位坐标源码-IT计算机-毕业设计.zip

    1. 基站定位原理:通过分析手机接收到的多个基站的信号强度,利用三角测量法估算设备的位置。这种方法依赖于网络覆盖,精度受基站密度影响。 2. Android API支持:同样使用`LocationManager`,但需要选择网络定位...

    安卓GPS地图导航定位指南相关-基于高德地图的gpswifi基站的智能选择定位.zip

    基站定位则是通过连接到移动网络的基站来确定设备的位置。每个基站都有一个独特的标识符,手机会自动连接到信号最强的基站。根据手机与多个基站的距离和信号强度,可以三角定位设备。 在“JavaApk源码说明.txt”中...

    Android GPS和基站定位 Android studio开发

    它通过计算手机与多个基站之间的信号强度和角度,估算出设备的大致位置。基站定位的优点是室内也能工作,但精度相对较低,且可能受到基站覆盖范围、信号干扰等因素的影响。在Android中,我们同样通过LocationManager...

    androidGPS及WIFI基站定位坐标源码_地图定位.zip

    在Android平台上,GPS(全球定位系统)和Wi-Fi基站定位是两种常见的位置获取技术,用于为用户提供精确的位置信息。这两种技术结合使用,可以提高定位的准确性和效率,尤其是在城市环境中,建筑物可能会阻挡GPS信号。...

    基站定位的实现(百度)

    通过三角测量法或者多边形定位法,结合基站的位置信息,计算出手机的大致位置。由于信号传播速度已知(光速),根据手机接收到不同基站信号的时间差,也能计算出精确的距离,进一步提升定位精度。 **百度LBS服务** ...

Global site tag (gtag.js) - Google Analytics