本文,是根据自己在开始lbs定位时,出现的
TelephonyManager mTelNet = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation location = (GsmCellLocation) mTelNet.getCellLocation();。
报错,第二句说是对象转换失败。
的问题所写。
文档参考网络。
首先。对于lbs的定位,主要是先获取本地gps所在的基站的id。等一些信息包括地区编号。等等。
然后提交到google上,google会根据这些信息返回所在地详细的信息。因为只需要能联网就可以定位。可以补缺gps定位慢。和不能在室定位的弊端。
对于google返回的信息是以json的格式。
可以通过getString的方式获取。
其中,radio_type通过TelephonyManager.getNetworkType()获取;signal_strength在PhoneStateListener的回调方法onSignalStrengthChanged中可以得到,mobile_country_code:取telephonyManager.getSimOperator()的前3位数字。剩下的cell_id、location_area_code和mobile_network_code根据网络类型不同而不同:
GSM
cell_id: gsmCellLocation.getCid()
location_area_code:gsmCellLocation.getLac()
mobile_network_code:telephonyManager.getSimOperator()第4位以后的数字
CDMA
cell_id 用 BID值替换 cdmaCellLocation.getBaseStationId()
location_area_code 用NID值替换 cdmaCellLocation.getNetworkId()
mobile_network_code用SID值替换 cdmaCellLocation.getSystemId()
WIFI数据可以通过ScanResult获取:
mac_address: scanResult.BSSID
signal_strength: scanResult.level
ssid: scanResult.SSID
通过Android平台上的相关接口获取到这些数据之后可以用JSONString组织JSON串:
过getString的方法获取。
其中,radio_type通过TelephonyManager.getNetworkType()获取;signal_strength在PhoneStateListener的回调方法onSignalStrengthChanged中可以得到,mobile_country_code:取telephonyManager.getSimOperator()的前3位数字。剩下的cell_id、location_area_code和mobile_network_code根据网络类型不同而不同:
GSM
cell_id: gsmCellLocation.getCid()
location_area_code:gsmCellLocation.getLac()
mobile_network_code:telephonyManager.getSimOperator()第4位以后的数字
CDMA
cell_id 用 BID值替换 cdmaCellLocation.getBaseStationId()
location_area_code 用NID值替换 cdmaCellLocation.getNetworkId()
mobile_network_code用SID值替换 cdmaCellLocation.getSystemId()
WIFI数据可以通过ScanResult获取:
mac_address: scanResult.BSSID
signal_strength: scanResult.level
ssid: scanResult.SSID
通过Android平台上的相关接口获取到这些数据之后可以用JSONString组织JSON串: