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

Android Wifi定位

 2010-08-23 01:31:00 来源:WEB开发网   
核心提示:LOG(("NetworkLocationRequest::Run() : HttpPost request was cancelled."));20 return;21 }22 if (listener_) {23 Position position;24 std::string response
LOG(("NetworkLocationRequest::Run() : HttpPost request was cancelled. "));20 return;21 }22 if (listener_) {23 Position position;24 std::string response_body;25 if (result) {26 // If HttpPost succeeded, payload_data is guaranteed to be non-NULL.27 assert(payload_data.get());28 if (!payload_data->Length() ||29 !BlobToString(payload_data.get(), &response_body)) {30 LOG(("NetworkLocationRequest::Run() : Failed to get response body. "));31 }32 }

解析出位置信息

1 std::string16 access_token;2 GetLocationFromResponse(result, payload.status_code, response_body,3 timestamp_, url_, is_reverse_geocode_,4 &position, &access_token);

通知位置信息的监听者

1 bool server_error =2 !result || (payload.status_code >= 500 && payload.status_code < 600);3 listener_->LocationResponseAvailable(position, server_error, access_token);4 }5 }

有人会问,请求是发哪个服务器的?当然是google了,缺省的URL是:

1 static const char16 *kDefaultLocationProviderUrl =2 STRING16(L"https://www.google.com/loc/json");

回过头来,我们再总结一下:

1.WIFI和基站定位过程如下:

2.NetworkLocationProvider和 NetworkLocationRequest各有一个线程来异步处理请求。

3. 这里的NetworkLocationProvider与android中的 NetworkLocationProvider并不是同一个东西,这里是给gears用的,要在android的google map中使用,还得包装成android中的NetworkLocationProvider的接口。

4.WIFI和基站定位与平台无关,只要你能拿到WIFI扫描结果或基站信息,而且能访问google的定位服务器,不管你是Android平台,Windows Mobile平台还是传统的feature phone,你都可以实现WIFI和基站定位。

附: WIFI和基站定位原理

无论是WIFI的接入点,还是移动网络的基站设备,它们的位置基本上都是固定的。设备端(如手机)可以找到它们的ID,现在的问题就是如何通过这些ID找到对应的位置。网上的流行的说法是开车把所有每个位置都跑一遍,把这些设备的位置与 GPS测试的位置关联起来。

上一页  2 3 4 5 6 7 

Tags:Android Wifi 定位

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