- 1 -
中国科技论文在线
基于历史数据的周边接入网络推荐
邓习海,张琳**
作者简介:邓习海(1989-),男,工学硕士,移动互联网
通信联系人:张琳(1974-),男,教授,研究方向:LTE,车联网,移动互联网
(北京邮电大学信息与通信工程学院,北京市 100876)
摘要:针对移动网络用户接入移动互联网的服务质量差异,利用接入节点历史数据进行分析,5
设计了一个对周围可接入网络的推荐平台。通过对历史测量数据进行处理和分析,获得某一
地区接入网络评分,通过使用百度地图 SDK技术,在手机地图上显示周围网络信息,并给
出网络质量评价,方便用户对周围网络覆盖情况有客观了解。实验证明,该平台设计简单、
可靠性好、易于部署、经济实用。
关键词:智能手机;移动网络;Android;网络推荐;百度地图 10
中图分类号:
Nearby Access Network Recommendation Based on
Historical Data
DENG Xihai, ZHANG Lin 15
(School of Information and Communication Engineering,Beijing University of Posts and
Telecommunications, Beijing 100876)
Abstract: Aiming to optimize the network access options in multi-wireless-network environment, this
paper design a recommendation platform of accessible wireless network around the mobile terminal,
which make use of the historical data access node analysis. By using Baidu Maps SDK technology, the 20
information of the wireless network around the mobile phone can be
displayed on the mobile map. The platform has been proved to be simple-designed, reliable, easy to
deploy,economical and pratical.
Key words: Smartphone; mobile network; Android; network recommendation; Baidu Map
25
0 引言
随着移动互联网的迅猛发展,通过手机等移动终端实现移动互联网信息服务已经成为互
联网接入的主要方式。第 32次中国互联网络发展状况统计报告显示[1],截至到 2013年 6月,
我国手机网民规模超过 亿。同时在人均上网时长上,移动互联网在 2012年第三季度超
过 PC互联网后延续了快速增长态势[2],截至到 2013年 3月两者差距扩大到 29%。移动通30
信技术的发展在这个过程中起到了至关重要作用,2G/GPRS、3G(WCDMA,CDMA2000和
TD-SCDMA)、Wi-Fi以及即将商用的 LTE等各种接入技术在为用户提供方便的同时也提供
了多样化的选择。
用户在使用各种接入技术进行移动互联网访问的同时,也越来越关心网络的服务质量。
用户周围往往存在多种网络服务,如多个Wi-Fi热点覆盖;随着运营商服务差异化,市场上35
出现越来越多的多模终端设备,某些移动终端多模制式能支持多种移动网络接入。因而,有
必要给用户提供其周围的网络覆盖、服务质量等信息,便于用户对周围无线网络有较为客观
认识,并为其进行网络接入提供方便。本平台根据用户所处位置,对其周围网络覆盖以及服
务质量进行计算和推送;用户在手机终端能够查看周围网络相关信息,并对可接入的网络进
行连接。 40
- 2 -
中国科技论文在线
1 数据源与相关工作
手机网络质量测试平台
混合网络(Heterogeneous network)的网络服务质量测量[3]:传统的移动网络服务质量
测量主要是基于信令或者物理信号指标的测量。网络接入方式的多样化造成测量标准的复杂
性,因而在我们之前的研究中提出了一种基于用户体验的网络质量测量平台,通过模拟常见45
的用户上网行为,测量并收集其网络质量信息,对其进行分析。我们在测量算法以及信息收
集方面进行了深入的研究,并在大规模测试中针对性的收集了测试接入点(基站和 Wi-Fi
热点)的信息。针对不同的接入网络速度,我们将网络质量分为 7个等级,具体如下表 1,
每一级是对其上部分补集的补充。
表 1 网络等级 50
网络等级 上行速度(KB/s) 关系 下行速度(KB/s) 网络描述
rocket speed >=300 AND >=300 手游、在线视频
plane speed >=50 AND >=100 能满足大部分应用
train speed >=30 AND >=80 网络音乐,下载
car speed >=20 AND >=50 阅读,微博
surfing speed 上下行速度相差 100 网速不稳定
trolley speed 其余情况 网速较低
数据源
手机网络质量测试平台收集信息主要通过两种方式,规模测试和随机分发测试。随机分
发测试是指通过 Android APP平台推广,经由用户下载安装之后,自发进行测试;测试完成
之后经用户同意上传到我们数据服务器中进行保存和处理。其数据特点是数量较大,但是地55
域较为分散。截止到 2013年 5月 15日,我们共取得 8648个有效测试点。这些测试点分散
在全国各个省市,作为周边网络推荐的数据源不太合适。
规模测试指的是安排专人或者志愿者于某特定地区在一定时间内进行网络质量测量,其
特点是能够较好覆盖被测地区。我们于 2012年 10月 9日到 2012年 10月 12日期间对北京
邮电大学校园地区进行规模测试,测量获得 1000 多个数据,主要为 51 个 Wi-Fi 热点和 5560
个基站。这些测试数据较为集中,能较好反映某一地区网络覆盖情况。针对特定研究的特定
场景,我们选用这部分数据作为周围网络推荐数据源,并在此基础上进行数据加权和网络评
分[4]。
表 2 数据源 65
序号 名称 值
1 总测量数目 1258
2 测试人员 29
3 Wi-Fi个数 51
4 基站个数 55
- 3 -
中国科技论文在线
2 百度 SDK简介
SDK(Software Development Kit, 即软件开发工具包)一般是一些被软件工程师用于为
特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。百度地70
图 SDK是百度地图 API的主要产品之一,包括 Android版和 IOS版,本平台客户端主要基
于 Android 进行设计,因而选择 Android SDK 进行开发和实现。
百度地图 Android SDK是一套基于 及以上版本设备的地图开发工具,它主
要提供地图底板、搜索与定位、位置标注、路线规划和地理编码等服务。通过其提供的丰富
功能,能较好的展示用户周围网络覆盖和服务信息。开发者在应用软件中导入所需的.SO库75
以及接口文件 JAR,就能方便进行使用;用户在使用推荐软件的时候,无需安装或者添加其
他软件或者控件。
3 周边网络推荐平台结构
周围网络推荐平台结构如图 1所示,主要包括两个部分,服务器部分和手机应用程序部80
分。
服务器服务器端有两个任务:1.分析和处理原始数据,对基站、Wi-Fi 热点以及测试区
域进行网络服务质量评分;2.处理手机端的请求,将相关数据传输给用户。
手机端应用程序 Android终端应用程序也有两个任务:1.周围Wi-Fi热点推荐,对手机
能够搜索到的Wi-Fi热点进行收集显示,在与服务器端进行交互之后显示其排名,并对用户85
接入进行推荐;2.附近网络服务质量情况展示,手机端与服务器交互之后,对用户周围网络
覆盖、网络服务质量进行显示。
手机端应用程序在开启之后,首先获取用户所在地理位置信息,并获取周围可用的网络
信息(主要是Wi-Fi网络的 BSSID),在网络允许情况下,应用程序将与服务器进行交互,
获得周围网络评分以及覆盖情况。对于Wi-Fi热点信息,应用将以列表形式,见图 2;对于90
网络覆盖以及基站等信息,将在地图上进行显示。用户可以点击查看地图上附着点详细信息,
见图 3。
图 1 网络推荐平台结构
95
- 4 -
中国科技论文在线
图 2 Wi-Fi数据处理流图
图 3 附近网络推荐流图
4 服务器设计与手机软件实现 100
周边网络推荐涉及 Android手机软件与服务器之间的通信交互,服务器端需要对测试数
据进行分析和处理,并实时处理手机端应用的请求;手机端软件需要收集地理位置信息以及
周围网络信息并上传到服务器,还需要将接收到的数据显示在终端,并与用户进行良好互动。
服务器端
本平台的服务器采用 Apache+php+mysql形式。对于原始测试数据,需要拆分出 3张单独的105
- 5 -
中国科技论文在线
数据表:Wi-Fi 表、基站 Cell 表以及基站测试点的表;Wi-Fi 表结构如下表 3,主要包括其
地理位置信息,以及根据测试点算出的评分信息;基站表与Wi-Fi表类似,在这里略去。基
站测试点的表指的是用户在进行移动网络测试时,测试点聚合形成的表,这些聚合点表示某
一网络覆盖地区的服务质量,其数据表结构中多出一个聚合点数和聚合半径。
表 3 Wi-Fi数据表 110
字段名称 数据类型 说明
ID 自动编号 自增长 id
GPS_LAT Varchar(20) 纬度信息
GPSLON Varchar(20) 经度信息
SCORE INT 分数信息
表 4 移动蜂窝网测试点表
字段名称 数据类型 说明
ID 自动编号 自增长 id
GPS_LAT Varchar(20) 纬度信息
GPSLON Varchar(20) 经度信息
SCORE INT 分数信息
GROUPNUM INT 聚合点数
COVERAGE INT 聚合半径
经纬度算法
在上述三张表中都有分别存储有地理位置信息。地理位置信息主要有两个用途:1.用于115
数据筛选,在服务器与手机应用交互过程中,服务器需要根据用户地理位置信息进行相关联
的信息过滤,将用户周围或者附近的网络信息传输给应用;2.用于地图显示,手机应用程序
需要在地图上显示周围的网络,需要知道其经纬度。
Wi-Fi 热点地理位置信息由于 Wi-Fi 覆盖面较小,且主要在室内地区,针对同一 Wi-Fi
热点的测试点经纬度进行平均,具体为:1.对某一个Wi-Fi热点的所有测试点进行过滤,去120
除经纬度奇异点(地理位置信息出错的点);2.剩余点进行平均。
基站测试聚合点地理位置信息取测试分数最高的前三个点,进行经纬度平均。
基站地理位置信息基站地理位置信息可以通过 Google开放的 API进行查询,需要注意
的是为了在手机地图上无偏移显示,需要进行经纬度转码[5],见图 4。
125
图 4 基站经纬度查询
- 6 -
中国科技论文在线
测试点聚类算法
对于某个基站,在相近范围类的测试点可能很多,为了能大致反映这一范围内的网络接
入情况,需要针对基站测试点进行聚合。 130
被处理过的点标记为 true;每次只处理未被标记的点
A.选择其中一个基站
B.遍历针对这个基站进行网络测试的点,将距离基站 m 的点聚合到基站,并将他们标
记为 true;
C.遍历剩余的点,选出速率最大的点,将其存储为接入点 x 135
D.遍历剩余的点,将距离 C中选出的 x点距离 m的点聚合到 x中
E.重复 C、D直到针对某基站的所有点都被标记为 true
F.重复 A-E的过程,直到所有基站都被遍历。
其中的距离 m可以根据测试密度进行设置。
网络评分 140
对于Wi-Fi和聚合点需要计算其网络质量评分,这个评分主要是根据之前测试结果参数
进行加权计算出来的[6]。一种想法如图 5,将某次测试点的网速、时延以及网速方差进行加
权,参数分别为 P1,P2,…, Pn,权值分别设为W1,W2,…,Wn。
145
图 5 评分算法
考虑到算法复杂度和实际效果,我们使用如下计算方法(1)~(5):
- 7 -
中国科技论文在线
n
k=1
n
k=1
n
k=1
n
k=1
1Average_upload_speed= thr(k) (1)
n
1Max_upload_speed= thr(k) (2)
n
1Average_dload_speed= thr(k) (3)
n
1Max_dload_speed= thr(k) (4
n
∑
∑
∑
∑
1 dl
dl
2 ul
ul
1 2
)
1NW Index=W ( )min(Average_dload_speed,Threshold )
Threshold
1+W ( )min(Average_upload_speed,Threshold )
Threshold
(W =, and W =) (5)
服务器与客户端交互
对于手机应用程序的请求,服务器根据请求中的参数[经纬度 GPS][请求距离 D][请求类150
型 T]进行反馈。其含义如下:手机应用程序请求与经纬度为 GPS的某点距离为 D,类型为
T的数据信息。T分为三种类型:Wi-Fi,基站和测试聚合点;
服务器筛选得到的信息,将被 PHP使用 json_encode打包成 json格式进行传输。
地球上经纬度分别为(lat1,lng1),(lat2,lng2)两点之间大概距离计算公式如下:
functionGetDistance($lat1, $lng1, $lat2, $lng2) 155
{
$EARTH_RADIUS = ;
$radLat1 = rad($lat1);
$radLat2 = rad($lat2);
$a = $radLat1 - $radLat2; 160
$b = rad($lng1) - rad($lng2);
$s = 2 * asin(sqrt(pow(sin($a/2),2) +
cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)));
$s = $s *$EARTH_RADIUS;
$s = round($s * 10000) /10; 165
return $s;////返回的单位是米
}
其中
function rad($d){
return $d * / ; 170
}
手机端
手机端应用程序主要包括两个界面,一个是本地Wi-Fi网络列表,提供网络评分、排名
和连接等功能;另外一个是周围网络覆盖和服务评分,以百度地图形式展示。
手机地图界面 175
在本平台中,手机端地图采用百度地图 Android SDK[7]。百度地图初始化应用程序工程
- 8 -
中国科技论文在线
中需要导入 和 等相关百度地图库文件[8]。在
AndroidManifest中设置相关权限就可以使用百度地图了。我们的地图实例继承自
MapActivity,并需要注册位置监听 LocationListener,当手机位置发生改变时,能及时获得
手机地理位置信息,并作出反应。 180
百度地图的位置搜索和路径查询是通过 ()和
()实现的,利用这两个接口函数,可以方便的进行兴趣点搜索和路
线规划。
图层基站、Wi-Fi和测试聚合点都是通过图层形式在地图上叠加显示的。当前位置图层
用MyLocationOverlay来进行实例化,规划路径信息使用 RouteOverlay进行实例化。对于重185
复出现的大量相似类型点,使用 ItemizedOverlay<OverlayItem>可以进行简化操作。同时对
于每个图层,可以添加 onTap()等响应。
数据通信
由于客户端请求数据较大,在很多时候应用程序向服务器请求数据时不能立即进行返
回,需要等候一段时间。为了解决异步问题,在客户端 UI与后台请求线程之间,我们采用190
异步 AsyncTask的方式,具体代码为 new
DoDataRequest(,flag).execute(Lat,Lon,requestDistance);其中 execute为执行
函数。
手机终端获得服务器数据之后,使用 JSONArray对数据进行格式化,并逐个数组进行
jsonObject解析,将解析获得的数据以 List<MapData>存储,其中MapData为之前定义的数195
据存储类。
5 功能效果
利用我们的平台,能够对之前接入过的Wi-Fi网络进行评分,以及对比;同时,也能对
周围网络覆盖情况给出展示。
如图 6所示,手机应用程序能够显示用户当前可供连接的无线Wi-Fi网络,并给出热点200
的评分。选择多个网络还能进行详细历史数据对比,比如平均上下行网络速度。这些数据是
服务器根据手机请求下发过来的。
图 6 Wi-Fi评分对比
205
- 9 -
中国科技论文在线
在图 7中,地图上展示了北邮地区各种网络分布,利用不同图标表示不同的网络、测试
点。图标的大小能表示评分多少。在图右部分展示了地图搜索、定位功能。
图 7 北京邮电大学地区网络测试点情况
6 结论 210
本文主要基于历史数据对手机周围网络进行分析、分类、聚合、评分以及推荐,通过百
度地图 SDK对网络状况进行直接显示,具有直观实用等特点。
本平台搭建简单方便,使用常见的 XAMPP作为服务器,客户端采用流行的开源操作系
统进行实现,能符合移动互联网用户的需要。在后面的工作中,还可以研究实现Wi-Fi自动
登录、验证等功能,并使用手机网络质量测试平台的全国数据进行尝试 215
致谢
非常感谢实验室导师和同学在平台搭建和测试中的帮助。特别是实验室袁业涛和胥刚同
学,在数据采集和测试过程中付出了很多努力,在这里再次表示感谢!
[参考文献] (References)220
[1] 中国互联网信息中心. 第 32次中国互联网络发展状况统计报告[R]. 中国:国家互联网络信息中心,2013.
[2] 百度. 百度移动互联网发展趋势报告 2013Q2[R]. 中国北京:百度公司,2013
[3] ZHANG Lin, WANG Yumei. UNOTest: an Efficient Traffic Performance Test Platform in Heterogeneous
Networks[J]. Wireless Personal Multimedia Communications (WPMC), 2013,16(1):1-5.
[4] 李治军,姜守旭,李晓义. 采用排名反馈的 P2P名誉评价模型[J]. 软件学报,2011,22(4): 745-760. 225
[5] HU Wenjiang,ZHAO Fuxin, Research of data mashup based on Google Map and top-k ranking[J]. Software
Engineering and Service Science (ICSESS), 2012, 22(6): 387 - 390
[6] 维基百科. WGS84[OL].[2013-3-12].
[7] 百度 LBS开发平台. BD09[OL].[2013-8-12].
[8] 百度. 百度地图 API[OL].[2013-4-12]. 230