private static CdmaCellLocation location = null; private static TelephonyManager tm; private static GetBaseLocation get; get = new GetBaseLocation(); tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); getData(); private static void getData() { // mLocationManager.getLocation(activity, 1); int type = tm.getNetworkType(); // 在中国,移动的2G是EGDE,联通的2G为GPRS,电信的2G为CDMA,电信的3G为EVDO // String OperatorName = tm.getNetworkOperatorName(); Location loc = null; ArrayList<CellIDInfo> CellID = new ArrayList<CellIDInfo>(); // 中国电信为CTC // NETWORK_TYPE_EVDO_A是中国电信3G的getNetworkType // NETWORK_TYPE_CDMA电信2G是CDMA if (type == TelephonyManager.NETWORK_TYPE_EVDO_A || type == TelephonyManager.NETWORK_TYPE_CDMA || type == TelephonyManager.NETWORK_TYPE_1xRTT) { try { location = (CdmaCellLocation) tm.getCellLocation(); if (location == null) { return; } int cellIDs = location.getBaseStationId(); int networkID = location.getNetworkId(); StringBuilder nsb = new StringBuilder(); nsb.append(location.getSystemId()); CellIDInfo info = new CellIDInfo(); info.cellId = cellIDs; info.locationAreaCode = networkID; // ok info.mobileNetworkCode = nsb.toString(); info.mobileCountryCode = tm.getNetworkOperator() .substring(0, 3); info.radioType = "cdma"; CellID.add(info); } catch (Exception e) { Log.e("network get the latitude and longitude ocurr Exception error", e.toString()); } } // 移动2G卡 + CMCC + 2 // type = NETWORK_TYPE_EDGE else if (type == TelephonyManager.NETWORK_TYPE_EDGE) { try { GsmCellLocation location = (GsmCellLocation) tm .getCellLocation(); if (location == null) { return; } int cellIDs = location.getCid(); int lac = location.getLac(); CellIDInfo info = new CellIDInfo(); info.cellId = cellIDs; info.locationAreaCode = lac; info.mobileNetworkCode = tm.getNetworkOperator() .substring(3, 5); info.mobileCountryCode = tm.getNetworkOperator() .substring(0, 3); info.radioType = "gsm"; CellID.add(info); } catch (Exception e) { Log.e("network get the latitude and longitude ocurr Exception error", e.toString()); } } // 联通的2G经过测试 China Unicom 1 NETWORK_TYPE_GPRS else if (type == TelephonyManager.NETWORK_TYPE_GPRS) { try { GsmCellLocation location = (GsmCellLocation) tm .getCellLocation(); if (location == null) { return; } int cellIDs = location.getCid(); int lac = location.getLac(); CellIDInfo info = new CellIDInfo(); info.cellId = cellIDs; info.locationAreaCode = lac; // 经过测试,获取联通数据以下两行必须去掉,否则会出现错误,错误类型为JSON Parsing Error // info.mobileNetworkCode = // tm.getNetworkOperator().substring(0, 3); // info.mobileCountryCode = // tm.getNetworkOperator().substring(3); info.radioType = "gsm"; CellID.add(info); } catch (Exception e) { Log.e("network get the latitude and longitude ocurr Exception error", e.toString()); } } else { Commons.LNG = "" + 0; Commons.LAT = "" + 0; } try { loc = get.callGear(CellID); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); Log.e("Exception", e.getStackTrace().toString()); System.out.println(e.getStackTrace().toString()); } if (loc != null) { try { Commons.LNG = "" + loc.getLongitude(); Commons.LAT = "" + loc.getLatitude(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { Commons.LNG = "" + 0; Commons.LAT = "" + 0; } }
相关推荐
在Android平台上,获取设备位置信息是一项关键功能,通常可以通过GPS(全球定位系统)和基站定位两种方式实现。本文将深入探讨这两种方法,并结合提供的源码分析其工作原理和实现细节。 1. GPS定位: GPS定位是...
在Android平台上,基站定位是一种基于移动通信网络的定位技术,主要利用手机与周围基站之间的信号交互来确定设备的位置。此技术对于那些GPS信号无法获取或者信号弱的环境(如室内)尤其有用。以下是对"android 基站...
在Android平台上,百度基站定位是一种常见的地理定位方法,它结合了网络信号和GPS信号来获取设备的位置信息。本文将深入探讨这一技术,并基于提供的资源,包括相关jar包和示例项目,来阐述如何在Android应用中集成并...
在Android平台上,3G基站定位是一种利用移动网络中的基站信息来确定设备位置的技术。相比于GPS,它在室内或城市峡谷等GPS信号弱的地方仍能提供定位服务。本项目提供了完整的源码实例,经过多次测试,确保了其稳定性...
在Android系统中,基站定位是一种基于移动通信网络的定位技术,它通过获取手机与周围基站之间的信号强度和角度信息来确定设备的位置。基站定位在没有GPS信号或者GPS信号较弱的情况下,仍然能够提供一定程度的位置...
在Android开发中,GPS(全球定位系统)和基站定位是两种常见的定位技术,它们用于获取设备的地理位置信息。本文将详细讲解这两种定位方式,并结合Android Studio的开发实践,阐述如何在实际应用中实现它们。 首先,...
在Android开发中,基站定位是一种常见的获取用户地理位置的方法,它主要依赖于移动设备与周围基站之间的信号强度来确定位置。这种技术尤其适用于GPS信号不佳或者无法接收到GPS信号的环境,如室内。在这个名为...
### Android定位之基站定位 #### 一、概述 在Android应用开发中,定位技术是非常重要的一个环节。通常情况下,我们可以通过GPS(全球定位系统)来实现精准定位,但当设备处于室内或没有GPS信号覆盖的地方时,GPS...
在Android系统中,基站定位是一种基于移动通信网络的定位方式,它通过获取手机与周围基站的距离来估算设备的位置。这种定位方法尤其适用于GPS信号不可用或者较弱的环境,如室内或城市高楼之间。本节将深入探讨...
在Android系统中,基站定位是一种常见的移动设备定位技术,它基于手机接收到来自周围基站的无线电信号强度来确定设备的位置。本压缩包"Android 基站定位源码.zip"包含了一个实现这一功能的源代码示例。下面将详细...
总的来说,Google基站定位Java代码涉及到的主要知识点包括:Android系统的TelephonyManager类,Google Maps Geolocation API的使用,基站信息的获取,以及API请求和响应的处理。在实际开发中,还需要考虑API调用频率...
在Android系统中,GPS(全球定位系统)和WIFI基站定位是两种常见的定位技术,用于获取设备的地理位置信息。这份“androidGPS及WIFI基站定位坐标源码.zip”压缩包包含了一些实现这两种定位方式的源代码,对于学习...
在Android系统中,基站定位是一种常见的移动设备定位方式,它依赖于手机与周围移动通信基站之间的信号交互来确定设备的大致位置。基站定位通常用于没有GPS信号或GPS信号较弱的环境中,例如室内或者城市高楼区。以下...
在Android中,基站定位主要由`TelephonyManager`类提供,通过调用`getNeighboringCellInfo()`方法获取周围基站的信息。这种方法的优点是室内也能工作,但精度相对较低,通常在几百米到几公里之间。 2. WIFI定位:...
在Android平台上,GPS(全球定位系统)和Wi-Fi基站定位是两种常见的位置获取技术,用于为用户提供精确的位置信息。这份"Android应用源码之androidGPS及WIFI基站定位坐标源码"提供了实现这两种定位方式的详细示例,...
本资源“androidgps基站与WIFI定位源码.zip”提供了一套实现GPS、基站和Wi-Fi定位功能的源代码,非常适合Android开发者学习和参考。 首先,我们要理解Android系统中的定位机制。Android提供了Location API,这是一...
总的来说,这个源码包提供了学习和实践Android定位服务的宝贵资源,涵盖了从基础的GPS定位到更复杂的WiFi和基站定位,以及可能的融合定位策略。对于任何想要提升Android定位技能的开发者来说,这是一个很好的学习...