`
rocky_lei
  • 浏览: 43025 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android通过基站获取地理位置

 
阅读更多

     /**
* 获取基站信息
* @return
* @throws Exception
*/
public SCell getCellInfo() throws Exception {
SCell cell = new SCell();
TelephonyManager mTelNet = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation location = (GsmCellLocation) mTelNet.getCellLocation();
if (location == null)
throw new Exception("基站信息为空");
String operator = mTelNet.getNetworkOperator();
int mcc = Integer.parseInt(operator.substring(0, 3));
int mnc = Integer.parseInt(operator.substring(3));
int cid = location.getCid();
int lac = location.getLac();
cell.MCC = mcc;
cell.MNC = mnc;
cell.LAC = lac;
cell.CID = cid;
return cell;
}

/**
* 通过基站信息获取经纬度
* @param cell
* @return
* @throws Exception
*/
private SItude getItude(SCell cell) throws Exception {
SItude itude = new SItude();

HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.google.com/loc/json");
try {
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", "gsm");
holder.put("carrier", "HTC");

JSONObject tower = new JSONObject();
tower.put("mobile_country_code", cell.MCC);
tower.put("mobile_network_code", cell.MNC);
tower.put("cell_id", cell.CID);
tower.put("location_area_code", cell.LAC);

JSONArray towerarray = new JSONArray();
towerarray.put(tower);
holder.put("cell_towers", towerarray);

StringEntity query = new StringEntity(holder.toString());
post.setEntity(query);

HttpResponse response = client.execute(post);
HttpEntity entity = response.getEntity();
BufferedReader buffReader = new BufferedReader(
new InputStreamReader(entity.getContent()));
StringBuffer strBuff = new StringBuffer();
String result = null;
while ((result = buffReader.readLine()) != null) {
strBuff.append(result);
}
JSONObject json = new JSONObject(strBuff.toString());
JSONObject subjosn = new JSONObject(json.getString("location"));

itude.latitude = subjosn.getString("latitude");
itude.longitude = subjosn.getString("longitude");

Log.i("Itude", itude.latitude + itude.longitude);

} catch (Exception e) {
Log.e(e.getMessage(), e.toString());
throw new Exception("" + e.getMessage());
} finally {
post.abort();
client = null;
}

return itude;
}

/**
* 通过经纬度到Google map上获取地理位置
* @param itude
* @return
* @throws Exception
*/
private String getLocation(SItude itude) throws Exception {
String resultString = "";
String urlString = String.format(
itude.latitude, itude.longitude);
Log.i("URL", urlString);
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(urlString);
try {
HttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
BufferedReader buffReader = new BufferedReader(
new InputStreamReader(entity.getContent()));
StringBuffer strBuff = new StringBuffer();
String result = null;
while ((result = buffReader.readLine()) != null) {
strBuff.append(result);
}
resultString = strBuff.toString();
if (resultString != null && resultString.length() > 0) {
JSONObject jsonobject = new JSONObject(resultString);
JSONArray jsonArray = new JSONArray(jsonobject.get("Placemark")
.toString());
resultString = "";
for (int i = 0; i < jsonArray.length(); i++) {
resultString = jsonArray.getJSONObject(i).getString(
"address");
}
}
} catch (Exception e) {
throw new Exception("sd:" + e.getMessage());
} finally {
get.abort();
client = null;
}
return resultString;
}

public class SCell {
public int MCC;
public int MNC;
public int LAC;
public int CID;
}

public class SItude {
public String latitude;
public String longitude;
}
分享到:
评论

相关推荐

    获取基站信息android

    在 Android 中,获取基站信息和 GPS 信息都是非常重要的功能,它们可以用来实现许多实用的应用程序,例如导航、地理位置服务等。然而,在使用这些功能时,需要注意权限的申请和电量的消耗,以免对用户造成不良的影响...

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

    GPS定位是通过接收多个卫星信号来确定设备的精确地理位置。在Android中,我们可以使用`LocationManager`服务来请求GPS定位服务。首先,需要在AndroidManifest.xml文件中添加必要的权限: ```xml ...

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

    总结起来,Android平台提供了丰富的API和工具,支持开发者通过多种途径获取地理位置信息。结合GPS、基站、WiFi和网络信息,可以实现更准确和灵活的定位功能,满足不同场景下的需求。然而,实现这些功能时也需要注意...

    从google的json接口获取地理位置信息的Java代码

    【标题】: 使用Java通过Google JSON接口获取地理位置信息 【描述】: 在Android开发中,有时需要获取设备的地理位置信息,Google提供了公开的JSON接口,允许开发者通过GPS、基站信息或WiFi热点信息来获取这些数据。...

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

    5. **基站信息**:基站信息通常由运营商提供,Android本身并不直接提供基站数据,但可以通过第三方服务或者网络API获取。例如,OpenCellID或Google的Cell ID数据库。 6. **处理位置信息**:在`LocationListener`的`...

    androidgps基站与WIFI定位源码.zip

    在Android平台上,定位服务是应用程序开发中的重要组成部分,它允许应用获取设备的位置信息,以便提供导航、社交网络更新、地理围栏等功能。本资源“androidgps基站与WIFI定位源码.zip”提供了一套实现GPS、基站和Wi...

    android基站定位

    每个基站都有一个唯一的识别码(例如,在GSM系统中是小区ID,在LTE中是eNodeB ID),并且知道其精确的地理位置。当手机与基站建立连接时,手机会接收到多个基站的信号,包括信号强度和时间差信息。通过计算手机到...

    IOS和Android平台下地理位置信息带来的个人隐私问题

    即使手机被锁定,恶意用户也可以通过USB接口获取这些包含地理位置信息的文件,揭示用户的行踪。同时,当WIFI连接时,如果设备的GPS硬件获取到位置信息,相应的GPS坐标也会被记录,进一步增加了隐私泄露的风险。 总...

    Android GPS和基站定位 Android studio开发

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

    android定位(基站,GPS,wifi)齐全

    在Android平台上,定位服务是应用程序开发中的重要组成部分,它允许用户获取设备的地理位置信息。本文将详细介绍基于Android的三种定位方式:GPS(全球定位系统)、WiFi网络定位和基站定位,并结合提供的源码资源...

    Android 百度 基站定位

    在Android平台上,百度基站定位是一种常见的地理定位方法,它结合了网络信号和GPS信号来获取设备的位置信息。本文将深入探讨这一技术,并基于提供的资源,包括相关jar包和示例项目,来阐述如何在Android应用中集成并...

    android 3G基站定位(完整源码实例)

    1. **LocationManager**:这是Android系统中用于定位服务的核心组件,它可以获取来自各种定位提供者的地理位置信息,如GPS、Wi-Fi和移动网络基站。 2. **CellInfo**类:该类代表了手机连接到的移动网络基站信息,...

    android定位之基站定位

    通过这个类可以获取基站信息。 - **GsmCellLocation**:封装了从TelephonyManager获取到的基站信息。 - **JSONObject、JSONArray**:用于构建JSON格式的数据对象,方便进行数据交换。 - **联网相关的类**:用于发起...

    Android的基站、WIFI、GPS定位集合【源码】.zip

    在Android系统中,实现位置定位是一项关键功能,它允许应用获取设备当前的地理位置信息,用于导航、社交、本地服务搜索等各种用途。基站、WIFI和GPS是三种主要的定位技术,每种都有其特点和适用场景。这篇内容将详细...

    获取移动基站LAC CELLID 以及基站经纬度,国家,省会,城市,详细地址代码

    3. **基站经纬度**:通过获取基站的地理位置信息,可以更精确地定位用户。基站的经纬度数据通常是通过三角定位或者网络数据库查询得到的,对于公众用户来说,这通常是运营商内部数据,但一些第三方服务或API可能提供...

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

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

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

    在Android平台上,定位服务是应用程序开发中的重要组成部分,它允许用户获取设备的地理位置信息,用于导航、社交、健康管理等各种用途。本源码包专注于三种主要的定位技术:GPS(全球定位系统)、WiFi和基站定位。 ...

    android手机获取gps和基站的经纬度地址

    首先,Android提供了LocationManager服务,用于获取地理位置信息。开发者可以通过以下步骤来使用这个服务: 1. **请求权限**: 在AndroidManifest.xml文件中,必须声明使用GPS和网络定位的权限: ```xml ...

Global site tag (gtag.js) - Google Analytics