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中 WIFI定位相关推荐

  1. Android中wifi认证的实现

    WiFi需要登录的情况(WiFi重定向) 检测wifi是否需要portal验证 公共场所wifi验证 关于wifi portal认证–为浏览器添加wifi认证功能 Android中wifi的扫描机制 ...

  2. Android中Wi-Fi扫描、连接和信息(一)

    1.Wi-Fi介绍 Wi-Fi是一种允许电子设备连接到一个无线局域网(WLAN)的技术,通常使用2.4G UHF或5G SHF ISM 射频频段.连接到无线局域网通常是有密码保护的:但也可是开放的,这 ...

  3. android 网络wifi定位服务器,基于位置指纹算法的Android平台WiFi定位系统

    近年来,随着城域无线基础网络的发展,热点(AP)的覆盖范围已大大增加. 由于对定位服务的需求增加以及WiFi应用的扩展,WiFi定位已成为一种有效的定位方法. GPS卫星定位是最重要的定位方法. 它需 ...

  4. Android中WIFI开发总结(一)

    WIFI就是一种无线联网技术,常见的是使用无线路由器.那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网.如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为&qu ...

  5. 【Android】Android中WIFI开发总结(二)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://smallwoniu.blog.51cto.com/3911954/1338618 ...

  6. 【Android】Android中WIFI开发总结(一)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://smallwoniu.blog.51cto.com/3911954/1334951 ...

  7. android 的wifi定位

    这里列了很多,但是大致可以分为四个主要的类ScanResult wifiConfiguration WifiInfo WifiManager (1)ScanResult,主要是通过wifi 硬件的扫描 ...

  8. android 软件 加密方法,Android中WIFI常见的几种加密方式(详细)

    系统设置中WIFI热点的加密方式,添加新的WIFI和连接WIFI的时候,需要在程序中配置相应的参数,可以打开自己的手机对着看 包:android.net.wifi.WifiConfiguration  ...

  9. Android中WIFI常见的几种加密方式(详细)

    系统设置中WIFI热点的加密方式,添加新的WIFI和连接WIFI的时候,需要在程序中配置相应的参数,可以打开自己的手机对着看 包:android.net.wifi.WifiConfiguration  ...

最新文章

  1. 堆排序算法实现思想个人理解
  2. php 防止刷新重复提交,php防止刷新与重复提交实例代码
  3. 如何学好计算机专业?
  4. Effective Java之请不要在新代码中使用原生态类型(二十三)
  5. BootStrap之前奏响应式布局
  6. 使用java中的String类操作复杂的字符串
  7. MyBatis教程– CRUD操作和映射关系–第2部分
  8. Arch Linux 安装总结
  9. zoj 1586 QSNetwork 最小生成树 Prim Kruskal
  10. 【clickhouse】Clickhouse的MySQL引擎同步数据不准确 Decimal
  11. DB2 一个汉字的Byte数,太操蛋了
  12. java继承与多态 心得体会_继承与多态感想
  13. 【OpenCV学习笔记】【编程实例】四(获取一个或多个感兴趣区域)
  14. 帆软模板中tooltip 提示框的使用
  15. Python数据治理,异常点检测,离群点异常点分析
  16. 【龙讯module小课堂】“光”怪陆离:PWmat计算光学性质(一)
  17. 负载均衡与分布式网络存储技术简介
  18. JVMTM Tool Interface:JVM源码分析之javaagent原理完全解读
  19. 【AI核心技术】课程二十五:机器也可以写诗——中文诗歌生成网络初探
  20. css样式字体文本汇总

热门文章

  1. 工业大数据助力中国制造 帮助企业降本增收
  2. 谷歌中国发展:漫长的亮相
  3. 不受局域网限制的遥控小车(esp8266+l298n+点灯科技平台)
  4. CDH和CloudManager概述
  5. 混响效果的主要参数及工作原理
  6. android7.1.1开发过程中出现部分音乐播放器(酷狗,QQ音乐,酷我音乐)歌词不能长久显示在桌面
  7. 英雄会创业论坛梁宁主持手记-初创业2人,天才少年2人,成功2人
  8. 红旗桌面版本最新运用举措和成绩解答100例-6
  9. shadow使用方法
  10. 运营商分配给专线的多个固定公网IP怎么用