展会信息港展会大全

android WIFI定位
来源:互联网   发布日期:2015-09-28 16:12:24   浏览:1407次  

导读: WIFI定位其实和基站定位都差不多,只需要把WIFI的MAC地址取到传给google就行了,下面是具体实现![java]import java.io.Serializable;...

WIFI定位其实和基站定位都差不多,只需要把WIFI的MAC地址取到传给google就行了,下面是具体实现!

[java]

import java.io.Serializable;

import android.content.Context;

import android.net.wifi.WifiManager;

import android.util.Log;

/**

* @author yangzhiqiang

*

*/

public class WiFiInfoManager implements Serializable {

/**

*

*/

private static final long serialVersionUID = -4582739827003032383L;

private Context context;

public WiFiInfoManager(Context context) {

super();

this.context = context;

}

public WifiInfo getWifiInfo() {

WifiManager manager = (WifiManager) context

.getSystemService(Context.WIFI_SERVICE);

WifiInfo info = new WifiInfo();

info.mac = manager.getConnectionInfo().getBSSID();

Log.i("TAG", "WIFI MAC is:" + info.mac);

return info;

}

public class WifiInfo {

public String mac;

public WifiInfo() {

super();

}

}

}

上面是取到WIFI的mac地址的方法,下面是把地址发送给google服务器,代码如下:

[java]

public static Location getWIFILocation(WifiInfo wifi) {

if (wifi == null) {

Log.i("TAG", "wifi is null.");

return null;

}

DefaultHttpClient client = new DefaultHttpClient();

HttpPost post = new HttpPost("http://www.google.com/loc/json");

JSONObject holder = new JSONObject();

try {

holder.put("version", "1.1.0");

holder.put("host", "maps.google.com");

JSONObject data;

JSONArray array = new JSONArray();

if (wifi.mac != null && wifi.mac.trim().length() > 0) {

data = new JSONObject();

data.put("mac_address", wifi.mac);

data.put("signal_strength", 8);

data.put("age", 0);

array.put(data);

}

holder.put("wifi_towers", array);

Log.i("TAG", "request json:" + holder.toString());

StringEntity se = new StringEntity(holder.toString());

post.setEntity(se);

HttpResponse resp = client.execute(post);

int state = resp.getStatusLine().getStatusCode();

if (state == HttpStatus.SC_OK) {

HttpEntity entity = resp.getEntity();

if (entity != null) {

BufferedReader br = new BufferedReader(

new InputStreamReader(entity.getContent()));

StringBuffer sb = new StringBuffer();

String resute = "";

while ((resute = br.readLine()) != null) {

sb.append(resute);

}

br.close();

Log.i("TAG", "response json:" + sb.toString());

data = new JSONObject(sb.toString());

data = (JSONObject) data.get("location");

Location loc = new Location(

android.location.LocationManager.NETWORK_PROVIDER);

loc.setLatitude((Double) data.get("latitude"));

loc.setLongitude((Double) data.get("longitude"));

loc.setAccuracy(Float.parseFloat(data.get("accuracy")

.toString()));

loc.setTime(System.currentTimeMillis());

return loc;

} else {

return null;

}

} else {

Log.v("TAG", state + "");

return null;

}

} catch (Exception e) {

Log.e("TAG", e.getMessage());

return null;

}

}

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港