Wi-Fi查询之SkyHook接口
SkyHook是一家专注于Wi-Fi定位技术的公司,也是iphone的合作伙伴。iPhone/iPod touch 1.1.3版本Google Maps中提供的定位技术部分就来自于这家公司。
SkyHook提供了SDK供程序开发者调用,通过SkyHook的接口可以很容易的在多平台下(Windows,Linux,Mac OS,Android,Symbian)实现Wi-Fi定位。
SkyHook SDK封装了底层的操作,开发者并不能接触到Wi-Fi查询的具体细节,SkyHook网站上也没有查询接口的公开文档。
这里简单介绍一下skyhook的wi-fi查询接口。
skyhook查询接口为:https://api.skyhookwireless.com/wps2/location 。
查询时,向 https://api.skyhookwireless.com/wps2/location 提交wi-fi热点的mac地址,提交数据为XML格式,例如下面这样的:
<?xml version='1.0'?><LocationRQ xmlns='http://skyhookwireless.com/wps/2005' version='2.7' street-address-lookup='none'><authentication version='2.0'><simple><username>skyhookwireless.com</username><realm>js.loki.com</realm></simple></authentication><access-point><mac>xxxxxxxxxxxx</mac><signal-strength>-44</signal-strength><age>3407</age></access-point></LocationRQ>
authentication是认证的部分,包含username和realm两个标签,使用默认值即可。
access-point是wifi信息部分,包含mac,signal-strength,age三个标签。
mac地址格式没有连接字符,比如mac地址为12:34:56:78:9a:bc,提交时需要转化为123456789abc。
signal-strength表示信号强度
age:表示检测到该wi-fi热点起到现在经过的时间
经测试signal-strength和age这两个值不会影响查询结果。
提交查询后,skyhook接口查询到对应的记录,返回如下信息

如果没有对应的记录,则返回“unable to determine location”
SkyHook现在主要是面向北美,中国地区的数据还不多。而且他的采集数据方式也比较落后,派采集车每天在美国各个城市跑数据。没有像google这样的数量庞大的客户端,估计以后还得和google合作。

嗯。这样的采集方式是够呛。