WEB开发网
开发学院手机开发Android 开发 Gears Android WIFI/基站定位源代码分析 阅读

Gears Android WIFI/基站定位源代码分析

 2010-03-18 16:11:00 来源:WEB开发网   
核心提示:Broncho A1还不支持基站和WIFI定位,Android的老版本里是有NetworkLocationProvider的,Gears Android WIFI/基站定位源代码分析,它实现了基站和WIFI定位,但从 android 1.5之后就被移除了,用来监听Android电话的状态变化,当服务状态、信号强度和基站

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电话的状态变化。当服务状态、信号强度和基站变化时,就会用下面代码获取小区信息:

RadioData radioData = new RadioData();

GsmCellLocation gsmCellLocation = (GsmCellLocation) cellLocation;

// Extract the cell id, LAC, and signal strength.

radioData.cellId = gsmCellLocation.getCid();

radioData.locationAreaCode = gsmCellLocation.getLac();

radioData.signalStrength = signalStrength;

// Extract the home MCC and home MNC.

String operator = telephonyManager.getSimOperator();

radioData.setMobileCodes(operator, true);

if (serviceState != null) {

// Extract the carrier name.

radioData.carrierName = serviceState.getOperatorAlphaLong();

// Extract the MCC and MNC.

operator = serviceState.getOperatorNumeric();

radioData.setMobileCodes(operator, false);

}

// Finally get the radio type.

int type = telephonyManager.getNetworkType();

if (type == TelephonyManager.NETWORK_TYPE_UMTS) {

radioData.radioType = RADIO_TYPE_WCDMA;

} else if (type == TelephonyManager.NETWORK_TYPE_GPRS

|| type == TelephonyManager.NETWORK_TYPE_EDGE) {

radioData.radioType = RADIO_TYPE_GSM;

}

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

1 2 3 4 5 6  下一页

Tags:Gears Android WIFI

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