WIFI定位其实和基站定位都差不多,只需要把WIFI的MAC地址取到传给google就行了,下面是具体实现!
- 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();
- }
- }
- }
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服务器,代码如下:
- 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;
- }
- }