中国计量学院本科毕业设计(论文)
图 5.1 相关代码截图
图 5.2 相关代码截图
18
中国计量学院本科毕业设计(论文)
图 5.3 基站信息采集的效果图
5.2 Wi-Fi信息采集模块
本模块为当Wi-Fi打开时,搜集Wi-Fi信息所用。搜集到的信息主要用在后面5.5定位辅助模块中。需要搜集的Wi-Fi主要有发送该无线信号设备的BSSID、具体的IP地址。需用到Android API中WifiManager类,用WifiManager类实例化对象取得系统服务中的Wi-Fi服务。如图5.5 为Wi-Fi信息采集效果图。 首先在AndroidManifest.xml中添加权限: android:name=\ android:name=\具体程序实现步骤: 图 5.错误!文档中没有指定样式的文字。.4 相关代码截图 图 5.5 Wi-Fi信息采集效果图 19 中国计量学院本科毕业设计(论文) 5.3 信息传递模块 本模块作用主要是将负责基站信息、Wi-Fi信息采集的Activity中数据传输到负责百度地图标注的Activity上。需要传输的数据有各个基站的LAC、CID、RSSI以及Wi-Fi的BSSID。此处调用了Android API中的Bundle类和Intent类,将要传输的数据用Bundle类以数组的方式进行装载,再用Intent类的putExtras方法发送Bundle中的数据。同时将这个步骤和“去地图标注”的按钮绑定在一起,即按下“去地图标注”按钮就传输数据。在另一个Activity中用Bundle类的getIntent().getExtras()的方法接收数据,用新建的数组进行储存。 图 5.6 相关代码截图 5.4 经纬度获取模块 在基站信息采集模块中已经获得了当前基站和相邻基站的LAC和CID,为了将定位的点和基站的位置在地图上标注出来,所以需要获得当前服务基站和相邻基站的经纬度。基站的经纬度数据只有运营商和相关的数据商有权拥有,故需通过联网到数据商网站进行查询。我选择了聚合数据 [29]作为基站经纬度数据网络服务端。 具体实施步骤如下: (1)在AndroidManifest.xml中添加相关权限: android:name=\ (2)此处涉及的Android API有HttpGet、HttpClient、JSONObject。通过HttpGet生成一个Http客户端对象,将这个对象中嵌入所要查询的CID、LAC数据和在聚合数据 [29]上申请到的KEY。使用HttpClient发送请求对象,向网络服务端请求数据。 20 中国计量学院本科毕业设计(论文) 图 5.7 相关代码截图 (3)从网络服务端返回的数据,先用字符串缓冲类的实例化对象读取,然后再转化为普通的字符串类型。 图 5.8相关代码截图 (4)由于在上一步得到的字符串中含有其他冗余的信息,不能马上得到我们所需要的经纬度数据,而字符串中储存数据的形式是JSON类型的。所以接下来通过JSONObject、 JsonReader类来层层解析字符串的JSON数据,并提出冗余的数据,提取经纬度数据。 21 中国计量学院本科毕业设计(论文) 图 5.9相关代码截图 由于互联网安全问题,国家政策限制,网络上不再开放提供基站经纬度数据,故只能够通过手动采集获得个别基站经纬度数据。 5.5 定位计算模块 本功能模块主要用于根据基站在地图上的坐标用极大似然估计定位算法等计算出手机所在的坐标。由于在进行坐标计算时,必须用平面坐标。而GPS经纬度坐标属于WGS84坐标系,是球面坐标的一种,所以需将经纬度坐标转换为屏幕像素坐标再进行计算。当计算结束时,再将屏幕像素坐标转换为经纬度坐标方便接下来的地图标注。 主要实施步骤如下: (1)将手机信号强度通过经典的信号衰减模型的公式转换为基站与手机实际距离便于利用极大似然估计定位算法进行计算。这里自己写了一个函数getdistance(int r),可以在后续进行调用。 22 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于Android系统的基站定位实现毕业论文(10)在线全文阅读。
相关推荐: