WEB开发网
开发学院手机开发Android 开发 Android Wifi定位 阅读

Android Wifi定位

 2010-08-23 01:31:00 来源:WEB开发网   
核心提示:Broncho A1还不支持基站和WIFI定位,Android的老版本里是有NetworkLocationProvider的,Android Wifi定位,它实现了基站和WIFI定位,但从 android 1.5之后就被移除了,当服务状态、信号强度和基站变化时,就会用下面代码获取小区信息:1 RadioData rad

Broncho A1还不支持基站和WIFI定位,Android的老版本里是有NetworkLocationProvider的,它实现了基站和WIFI定位,但从 android 1.5之后就被移除了。本来想在broncho A1里自己实现NetworkLocationProvider的,但一直没有时间去研究。我知道 gears(http://code.google.com/p/gears/)是有提供类似的功能,昨天研究了一下Gears的代码,看能不能移植到 android中来

1.下载源代码

svn checkout http://gears.googlecode.com/svn/trunk/ gears-read-only

定位相关的源代码在gears/geolocation目录中。

2.关注android平台中的基站位置变化

JAVA类AndroidRadioDataProvider是 PhoneStateListener的子类,用来监听Android电话的状态变化。当服务状态、信号强度和基站变化时,

就会用下面代码获取小区信息:

1 RadioData radioData = new RadioData(); 2 GsmCellLocation gsmCellLocation = (GsmCellLocation) cellLocation; 3 4 // Extract the cell id, LAC, and signal strength. 5 radioData.cellId = gsmCellLocation.getCid(); 6 radioData.locationAreaCode = gsmCellLocation.getLac(); 7 radioData.signalStrength = signalStrength; 8 9 // Extract the home MCC and home MNC. 10 String operator = telephonyManager.getSimOperator(); 11 radioData.setMobileCodes(operator, true); 12 13 if (serviceState != null) { 14 // Extract the carrier name. 15 radioData.carrierName = serviceState.getOperatorAlphaLong(); 16 17 // Extract the MCC and MNC. 18 operator = serviceState.getOperatorNumeric(); 19 radioData.setMobileCodes(operator, false); 20 } 21 22 // Finally get the radio type. 23 int type = telephonyManager.getNetworkType(); 24 if (type == TelephonyManager.NETWORK_TYPE_UMTS) { 25 radioData.radioType = RADIO_TYPE_WCDMA; 26 } else if (type == TelephonyManager.NETWORK_TYPE_GPRS 27 || type == TelephonyManager.NETWORK_TYPE_EDGE) { 28 radioData.radioType = RADIO_TYPE_GSM; 29 } 30

然后再调用用C代码实现的onUpdateAvailable函数。

2.Native函数onUpdateAvailable是在 radio_data_provider_android.cc里实现的。

1 2 3 4 5 6  下一页

Tags:Android Wifi 定位

编辑录入:coldstar [复制链接] [打 印]
赞助商链接