`

基站定位代码封装

阅读更多
在真机上测试:
要点一: 一定要插手机卡  ---得到cid通过移动
要点二: 一定要能上网    ----得到经纬度---通过google

public class BaseStationManager {
Context c;
private  TelephonyManager phoneService;
String json = "aaa";
private static volatile BaseStationManager bsManager ;
private BaseStationManager(Context c){
this.c = c;
}

public static BaseStationManager getInstance(Context c){
if(bsManager == null){
synchronized(BaseStationManager.class){
if(bsManager == null){
bsManager = new BaseStationManager(c);
}
}
}//if
return bsManager;
}

//=======================================================================================
public void init(){

phoneService = (TelephonyManager)c.getSystemService(Context.TELEPHONY_SERVICE);
update();
}

public String getLatitude(){
String latitude = "null";
Pattern p = Pattern.compile("latitude\":[^,]+");
Matcher m = p.matcher(json);
if(m.find()){
latitude = m.group().split(":")[1];
}

return latitude;
}

public String getLongitude(){
String latitude = "null";
Pattern p = Pattern.compile("longitude\":[^,]+");
Matcher m = p.matcher(json);
if(m.find()){
latitude = m.group().split(":")[1];
}

return latitude;
}





public void update(){
GsmCellLocation gcl = (GsmCellLocation) phoneService.getCellLocation();

int cid = gcl.getCid();//CID for GSM
int lac = gcl.getLac();

int mcc = Integer.valueOf(phoneService.getNetworkOperator().substring(0,3));

int mnc = Integer.valueOf(phoneService.getNetworkOperator().substring(3,5));
json = "bbb";
try {
//组装JSON查询字符串
JSONObject holder = new JSONObject();
holder.put("version", "1.1.0");
holder.put("host", "maps.google.com");
holder.put("request_address", true);

JSONArray array = new JSONArray();
JSONObject data = new JSONObject();
data.put("cell_id", cid);
data.put("location_area_code", lac);
data.put("mobile_country_code", mcc);
data.put("mobile_network_code", mnc);
array.put(data);
holder.put("cell_towers", array);

//=============json封装成StringEntity,StringEntity让入post, post让client执行

// 创建连接,发送请求并接受回应
DefaultHttpClient client = new DefaultHttpClient();

HttpPost post = new HttpPost(
"http://www.google.com/loc/json");

StringEntity se = new StringEntity(holder.toString());

post.setEntity(se);
HttpResponse resp = client.execute(post);

HttpEntity entity = resp.getEntity();
BufferedReader br = new BufferedReader(
new InputStreamReader(entity.getContent()));
StringBuffer sb = new StringBuffer();

String l = null;
while ((l=br.readLine()) != null) {
sb.append(l);
}
json = sb.toString();
}catch(Exception e){

}

}

}
分享到:
评论

相关推荐

    基站定位代码

    基站定位是一种移动设备定位技术,尤其在GPS信号不强或者无法获取的情况下,它成为了一种重要的定位手段。本文将深入探讨基于Android系统的基站定位技术,包括其原理、实现方法以及如何利用提供的“帮助类.java”和...

    android定位之基站定位

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

    Android应用源码之androidGPS及WIFI基站定位坐标源码_androidGPS.zip

    - 可能还会有自定义的定位服务管理类,用于封装上述操作,提高代码可复用性和可维护性。 通过对这些源码的学习,开发者能够理解Android位置服务的工作原理,掌握如何获取和处理位置信息,这对于开发地图导航、社交...

    百度定位封装

    网络定位主要依赖于基站信息,适合室内或GPS信号弱的环境;GPS定位则利用卫星信号,精度较高,但可能受天气等因素影响;混合定位结合两者,力求在准确性和实时性间找到平衡。 封装百度定位服务主要是为了简化开发...

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

    这个“androidGPS及WIFI基站定位坐标源码.zip”压缩包包含了一个Android应用项目的源代码,提供了GPS和Wi-Fi基站定位的具体实现,适合开发者参考和学习。以下是关于这两个定位技术及其在Android中的应用的详细知识点...

    KGPS 基站虚拟GPS

    开发者需要对Windows Mobile平台有深入理解,熟悉C++编程,并具备GPS和基站定位的理论基础。此外,源代码还涉及到错误处理、日志记录和性能优化等软件工程实践。通过学习和分析这些源代码,可以提升在移动设备上开发...

    基站码获取地址或经纬度

    总的来说,这个项目为C#开发者提供了一种便捷的方式,通过Google的基站定位服务来获取地理位置信息,简化了开发流程,提高了效率。在实际应用中,需要注意的是,使用此类服务时要尊重用户隐私,遵守相关法律法规,并...

    Android GPS定位源码

    本教程将深入探讨Android GPS定位的源码实现,包括GPS定位、基站定位和WiFi定位。 一、GPS定位 1. GPS API:Android提供了LocationManager服务来管理各种位置提供者,包括GPS。首先,我们需要在AndroidManifest.xml...

    matlab代码实现TDOA定位_TDOA_TDOA定位_matlab代码实现TDOA定位_matlab实现TDOA_matla

    TDOA(Time Difference of Arrival,到达时间差)定位是一种基于多基站的无线通信系统中的定位技术,常用于移动通信、物联网设备跟踪以及导航系统。MATLAB作为一种强大的数学计算和编程环境,是实现TDOA定位算法的...

    Android_GPS_WIFI_网络定位

    最后,网络定位结合了GPS和WiFi定位,同时考虑移动网络基站信息,提高了定位效率和覆盖率。在网络条件良好时,网络定位可以快速提供粗略的位置信息,适合应用场景如推送基于位置的服务。然而,由于依赖网络,其隐私...

    STM32MC20基站GPS定位http连接onenet

    STM32MC20基站GPS定位通过HTTP连接到OneNet是一项在嵌入式系统中实现物联网(IoT)应用的技术。STM32是意法半导体(STMicroelectronics)推出的一系列基于ARM Cortex-M内核的微控制器,MC20可能是其中特定型号或模块...

    stm32 sim800c定位http协议发送定位信息给服务器.7z

    在基站定位模式下,SIM800C模块会根据接收到的信号强度,通过三角定位原理估算设备的位置。这种方法虽然精度不如GPS,但在室内或者GPS信号弱的地方仍能提供一定的定位能力。 HTTP(超文本传输协议)是一种用于...

    Android系统手机基站信息库开发与设计.docx

    在Menu中添加基站定位、GPS定位和相邻基站等选项,并分别为每个菜单项设置图标和事件监听器。例如,当用户选择GPS定位时,启动新的活动展示当前GPS位置。 6. **功能演示**: - **基站定位**:在地图上显示基站的...

    Agilla导入模块java部分

    5. **封装代码**:此步骤负责将处理后的代码封装为特定格式的消息包,以便于传输。 6. **发送状态消息**:将封装好的消息通过串口发送出去。 7. **收到状态消息确认**:节点程序接收到状态消息后返回确认消息。 8. *...

    安卓百度地图定位--从百度地图中剥离出来的

    封装通常包括错误处理、定位精度控制、定位状态监听等,提高了代码的可维护性和复用性。 4. **权限配置**:在安卓应用中使用定位功能,需要在`AndroidManifest.xml`文件中添加相应的权限声明,如`ACCESS_FINE_...

    高德定位Demo

    它基于GPS(全球定位系统)、Wi-Fi、基站等多元化的定位方式,结合A-GPS(辅助全球定位系统)技术,提供快速且精确的定位服务。在高精度模式下,系统会综合运用这些定位源,以提高定位的准确性和实时性。 在"高德...

    百度定位的一个小Demo

    百度定位服务支持GPS、WiFi、基站等多种定位方式,确保在不同环境下都能获得相对准确的位置信息。 在"百度定位的一个小Demo"中,我们可以看到以下几个关键知识点: 1. **API接入**:首先,开发者需要在百度地图...

    google基站码获取经纬度

    `Micgle.LACCI`可能是实现基站码定位逻辑的类库,而`Micgle.Test`则可能包含相关的测试代码,用于验证基站码到经纬度以及经纬度到地址转换的正确性。 总的来说,这个项目提供了一种利用Google Maps API在C#环境中...

    pb完整代码(联通机站管理)

    "联通机站管理"可能是指一个特定的项目或系统,用于管理中国联通公司的基站设施。这个系统的源码被包含在这个压缩包中,提供了一个学习PowerBuilder实际应用的实例。 在描述中提到的“好例题”,意味着这是一个很好...

Global site tag (gtag.js) - Google Analytics