/**
*
获取基站信息
*
@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();
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 中,获取基站信息和 GPS 信息都是非常重要的功能,它们可以用来实现许多实用的应用程序,例如导航、地理位置服务等。然而,在使用这些功能时,需要注意权限的申请和电量的消耗,以免对用户造成不良的影响...
GPS定位是通过接收多个卫星信号来确定设备的精确地理位置。在Android中,我们可以使用`LocationManager`服务来请求GPS定位服务。首先,需要在AndroidManifest.xml文件中添加必要的权限: ```xml ...
总结起来,Android平台提供了丰富的API和工具,支持开发者通过多种途径获取地理位置信息。结合GPS、基站、WiFi和网络信息,可以实现更准确和灵活的定位功能,满足不同场景下的需求。然而,实现这些功能时也需要注意...
【标题】: 使用Java通过Google JSON接口获取地理位置信息 【描述】: 在Android开发中,有时需要获取设备的地理位置信息,Google提供了公开的JSON接口,允许开发者通过GPS、基站信息或WiFi热点信息来获取这些数据。...
5. **基站信息**:基站信息通常由运营商提供,Android本身并不直接提供基站数据,但可以通过第三方服务或者网络API获取。例如,OpenCellID或Google的Cell ID数据库。 6. **处理位置信息**:在`LocationListener`的`...
在Android平台上,定位服务是应用程序开发中的重要组成部分,它允许应用获取设备的位置信息,以便提供导航、社交网络更新、地理围栏等功能。本资源“androidgps基站与WIFI定位源码.zip”提供了一套实现GPS、基站和Wi...
每个基站都有一个唯一的识别码(例如,在GSM系统中是小区ID,在LTE中是eNodeB ID),并且知道其精确的地理位置。当手机与基站建立连接时,手机会接收到多个基站的信号,包括信号强度和时间差信息。通过计算手机到...
即使手机被锁定,恶意用户也可以通过USB接口获取这些包含地理位置信息的文件,揭示用户的行踪。同时,当WIFI连接时,如果设备的GPS硬件获取到位置信息,相应的GPS坐标也会被记录,进一步增加了隐私泄露的风险。 总...
在Android开发中,GPS(全球定位系统)和基站定位是两种常见的定位技术,它们用于获取设备的地理位置信息。本文将详细讲解这两种定位方式,并结合Android Studio的开发实践,阐述如何在实际应用中实现它们。 首先,...
在Android平台上,定位服务是应用程序开发中的重要组成部分,它允许用户获取设备的地理位置信息。本文将详细介绍基于Android的三种定位方式:GPS(全球定位系统)、WiFi网络定位和基站定位,并结合提供的源码资源...
在Android平台上,百度基站定位是一种常见的地理定位方法,它结合了网络信号和GPS信号来获取设备的位置信息。本文将深入探讨这一技术,并基于提供的资源,包括相关jar包和示例项目,来阐述如何在Android应用中集成并...
1. **LocationManager**:这是Android系统中用于定位服务的核心组件,它可以获取来自各种定位提供者的地理位置信息,如GPS、Wi-Fi和移动网络基站。 2. **CellInfo**类:该类代表了手机连接到的移动网络基站信息,...
通过这个类可以获取基站信息。 - **GsmCellLocation**:封装了从TelephonyManager获取到的基站信息。 - **JSONObject、JSONArray**:用于构建JSON格式的数据对象,方便进行数据交换。 - **联网相关的类**:用于发起...
在Android系统中,实现位置定位是一项关键功能,它允许应用获取设备当前的地理位置信息,用于导航、社交、本地服务搜索等各种用途。基站、WIFI和GPS是三种主要的定位技术,每种都有其特点和适用场景。这篇内容将详细...
3. **基站经纬度**:通过获取基站的地理位置信息,可以更精确地定位用户。基站的经纬度数据通常是通过三角定位或者网络数据库查询得到的,对于公众用户来说,这通常是运营商内部数据,但一些第三方服务或API可能提供...
在Android开发中,基站定位是一种常见的获取用户地理位置的方法,它主要依赖于移动设备与周围基站之间的信号强度来确定位置。这种技术尤其适用于GPS信号不佳或者无法接收到GPS信号的环境,如室内。在这个名为...
在Android平台上,定位服务是应用程序开发中的重要组成部分,它允许用户获取设备的地理位置信息,用于导航、社交、健康管理等各种用途。本源码包专注于三种主要的定位技术:GPS(全球定位系统)、WiFi和基站定位。 ...
首先,Android提供了LocationManager服务,用于获取地理位置信息。开发者可以通过以下步骤来使用这个服务: 1. **请求权限**: 在AndroidManifest.xml文件中,必须声明使用GPS和网络定位的权限: ```xml ...