`

Android开发:通过Wifi获取经纬度

阅读更多

第一步:

//获取wifi管理对象 

第二步:这一步比较耗时,最好写在线程中。

ok. 到此就可以获取经纬度了。当然如果你所在的WIFI从来没有通过其他设备定位过,及google数据库中没有该wifi热点的位置信息,那就获取不到经纬度了。

    WifiManager mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    //判断wifi是否开启 
    if (mainWifi.isWifiEnabled()) 
    { 
    //发送接入点的扫描请求,返回true成功。否则失败 
    mainWifi.startScan(); 
    //启动一个线程执行第二步中的代码 
    } 
    public Location setWeather()  
    { 
    BufferedReader br = null; 
    try  
    { 
    //接收请求结果,它会将所有链接wifi热点的链接信息返回 
    List<ScanResult> wifiList = mainWifi.getScanResults(); 
    HttpPost httpRequest = new HttpPost("http://www.google.com/loc/json"); 
    //封装请求的参数 
    JSONObject holder = new JSONObject(); 
    JSONArray array = new JSONArray(); 
    holder.put("version", "1.1.0"); 
    holder.put("host", "maps.google.com"); 
    holder.put("request_address", true); 
    for (int i = 0; i < wifiList.size(); i++)  
    { 
    //只取当前链接信息。通过mac地址进行匹配 
    //mac地址可以用macAddress = mainWifi.getConnectionInfo().getMacAddress();获得 
    if (wifiList.get(i).BSSID.equals(macAddress)) 
    { 
    JSONObject current_data = new JSONObject(); 
    current_data.put("mac_address", wifiList.get(i).BSSID); 
    current_data.put("ssid", wifiList.get(i).SSID); 
    current_data.put("signal_strength", wifiList.get(i).level); 
    array.put(current_data); 
    } 
    } 
    holder.put("wifi_towers", array); 
    StringEntity se = new StringEntity(holder.toString()); 
    httpRequest.setEntity(se); 
    HttpResponse resp = new DefaultHttpClient().execute(httpRequest); 
    if (resp.getStatusLine().getStatusCode() == 200)  
    { 
    HttpEntity entity = resp.getEntity(); 
    br = new BufferedReader(new InputStreamReader(entity.getContent())); 
    StringBuffer sb = new StringBuffer(); 
    String result = br.readLine(); 
    while (result != null)  
    { 
    sb.append(result); 
    result = br.readLine(); 
    } 
    JSONObject location = new JSONObject(sb.toString()); 
    location = (JSONObject) location.get("location"); 
    Location loc = new Location(LocationManager.NETWORK_PROVIDER); 
    loc.setLatitude((Double) location.get("latitude")); 
    loc.setLongitude((Double) location.get("longitude")); 
    return loc; 
    } 
    return null; 
    }  
    catch (JSONException e)  
    { 
    Log.e(e.toString()); 
    }  
    catch (ClientProtocolException e)  
    { 
    Log.e(e.toString()); 
    }  
    catch (IOException e)  
    { 
    Log.e(e.toString()); 
    }  
    catch (Exception e)  
    { 
    Log.e(e.toString()); 
    } 
    finally 
    { 
    if (null != br) 
    { 
    try  
    { 
    br.close(); 
    }  
    catch (IOException e)  
    { 
    Log.e(e.toString()); 
    } 
    } 
    } 
    return null; 
    } 
    } 

所需权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
分享到:
评论
1 楼 dzwillpower 2012-12-03  
location = (JSONObject) location.get("location");  报错 没有这个location key

相关推荐

    获取wifi的相关信息(经纬度)

    很好的关于wifi开发的例子,在android开发中wifi开发很常见,这是你不错的选择!

    android 获取经纬度

    Location 在Android 开发中还是经常用到的,比如 通过经纬度获取天气,根据Location 获取所在地区详细Address (比如Google Map 开发).等。而在Android 中通过LocationManager 来获取Location .通常获取Location 有...

    Android获取当前位置的经纬度数据

    现在有这么一个需求:开启一个Service服务,获取当前...Android手机获取当前位置的方式:GPS定位,WIFI定位,基站定位,当前Demo使用GPS卫星定位,在LocationTool中返回Location、LocationManager两者对象,通过Loca

    Android开发之Location用法实例分析

    本文实例讲述了Android开发中Location用法。分享给大家供大家参考,具体如下: Location 在Android 开发中还是经常用到的,如通过经纬度获取天气,根据Location 获取所在地区详细Address (比如Google Map 开发)等。...

    《Google Android SDK开发范例大全(第3版)》.pdf

     全书共分11章,主要以范例集的方式来讲述android的知识点,详细介绍了开发android的人机交互界面、android常用的开发控件、android手机收发短信等通信服务、开发android手机的自动服务功能和娱乐多媒体功能以及...

    Google Android SDK开发范例大全(第3版) 1/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 4/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 3/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 5/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版)part2

     全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及...

    Android开发资料合集-World版!

    9.40、通过HTTPCLIENT从指定SERVER获取数据 265 9.41、通过FTP传输文件,关闭UI获得返回码 266 9.42、激活JAVASCRIPT打开内部链接 266 9.43、清空手机COOKIES 267 9.44、检查SD卡是否存在并且可以写入 267 9.45、...

    google android sdk开发范例大全 第二版 PDF 光盘代码

    google android sdk开发范例大全 第二版 PDF 和 随书光盘代码 ISBN:9787115229649 目录 第1章 了解、深入、动手做   1.1 红透半边天的Android   1.2 本书目的及范例涵盖范围   1.3 如何阅读本书 ...

    毕业设计,基于安卓uniapp的wifi和GPS开发的双定位学生课程考勤管理系统,内含服务端和小程序客户端,完整源代码

    开发软件:Idea,VScode,Hbuilder,mysql8.0 开发技术:Springboot,react,redux,nodejs,axios,vue,uniapp,高德地图定位,wifi信息获取插件 为了方便管理对学生上课考勤的管理,开发了这个项目包括学生和管理员2个身份...

    Android 开发技巧

    9.37、通过ANDROID 客户端上传数据到服务器 251 9.38、文件下载类 255 9.39、下载文件的进度条提示 263 9.40、通过HTTPCLIENT从指定SERVER获取数据 265 9.41、通过FTP传输文件,关闭UI获得返回码 266 9.42、激活...

    基于安卓uniapp的wifi和GPS双定位学生课程考勤管理系统

    开发技术:Springboot,react,redux,nodejs,axios,vue,uniapp,高德地图定位,wifi信息获取插件 为了方便管理对学生上课考勤的管理,开发了这个项目包括学生和管理员2个身份。学生在安卓app客户端可以注册账号和登录...

    baidu LBS android SDK

    在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便。定位一般分为三种发方案:即GPS定位、Google网络定位以及基站定位 最简单的手机定位方式当然是通过GPS模块(现在大部分...

    信号强度检测和手机定位安卓程序.rar

    程序使用最新Android Studio 开发设计,可以检测4G,3G,2G,WiFi的信号强度和信号速率,可以手机定位,显示经纬度,海拔,速度,详细的地理位置,时间信息。还可以长ping包测试无线网络是否连续。

Global site tag (gtag.js) - Google Analytics