`

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的相关信息(经纬度)

    在Android开发中,获取WiFi的相关信息,特别是经纬度,对于实现定位功能至关重要。WiFi定位是移动设备定位技术的一种,它利用设备周围的WiFi接入点信号强度来推算设备的大致位置。这种技术通常与GPS结合使用,以提高...

    Android通过原生方式获取经纬度与城市信息的方法

    在Android开发中,获取用户当前的经纬度和城市信息是常见的需求,这通常用于实现位置服务,例如导航、天气预报等。本篇文章将详细介绍如何通过Android原生SDK获取这些信息,包括GPS定位和WiFi定位两种方式。 首先,...

    Android GPS定位(获取经纬度)

    在Android开发中,GPS定位是实现许多功能的基础,如地图导航、位置服务和地理围栏等。本篇文章将深入探讨如何在Android系统中利用GPS获取经纬度信息,并提供一个已经完美封装的管理类的概述。 首先,理解Android的...

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

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

    安卓Android源码——androidGPS及WIFI基站定位坐标源码.zip

    在安卓(Android)系统中,定位服务是移动应用开发中的重要组成部分,主要依赖于GPS(全球定位系统)和WIFI基站来获取设备的位置信息。这个压缩包“安卓Android源码——androidGPS及WIFI基站定位坐标源码.zip”提供...

    android 获取经纬度

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

    Android GPS获取当前经纬度坐标

    在使用 Android API 获取经纬度坐标时,需要在 AndroidManifest.xml 文件中添加以下权限: ```xml &lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&gt; ``` 然后,在MainActivity 中,...

    androidgps基站与WIFI定位源码.zip

    在Android平台上,定位服务是应用程序开发中的重要组成部分,它允许应用获取设备的位置信息,以便提供导航、社交网络更新、地理围栏等功能。本资源“androidgps基站与WIFI定位源码.zip”提供了一套实现GPS、基站和Wi...

    Android的基站、WIFI、GPS定位集合【源码】.zip

    在Android开发中,通常会结合这三种定位方式,以提高定位准确性和可用性。一种常见的策略是首先尝试GPS定位,如果不可用,则切换到WIFI或基站定位。这可以通过`LocationProvider`的优先级设定来实现,例如设置`...

    Android应用源码之androidGPS及WIFI基站定位坐标源码-IT计算机-毕业设计.zip

    在Android应用开发中,GPS(全球定位系统)和WIFI基站定位是常见的定位技术,用于获取设备的地理位置信息。这份毕业设计源码提供了一个深入理解这两种定位方式的实践平台。以下将详细介绍这两种定位方法及其在...

    androidGPS及WIFI基站定位坐标源码.zip

    源码中可能会涉及到`WiFiManager`服务的使用,通过`getScanResults()`获取WIFI扫描结果,然后通过网络服务(如Google Play服务)进行反向地理编码,转换为经纬度坐标。 3. 混合定位: 实际应用中,Android通常会...

    安卓开发-androidGPS及WIFI基站定位坐标源码.zip

    在Android开发中,位置服务是应用的一个重要组成部分,它允许应用程序获取设备的地理位置信息,如经纬度、海拔等。此压缩包"androidGPS及WIFI基站定位坐标源码.zip"包含了一个示例项目,用于演示如何利用GPS和WiFi...

    Android_Map_Api_使用和开发定位

    本文将详细介绍如何使用 Android Map API 来实现地图上的位置定位、弹出泡泡显示信息以及通过经纬度获取地址。 #### 二、地图弹出泡泡的实现 地图上的弹出泡泡(Popup)是一种常见的交互方式,用于在地图上显示...

    Android应用源码之androidGPS及WIFI基站定位坐标源码.zip

    这份"Android应用源码之androidGPS及WIFI基站定位坐标源码.zip"包含了实现这两种定位方式的源代码,对于理解和开发Android定位应用具有重要的参考价值。 1. GPS定位: GPS定位是通过接收来自至少四颗GPS卫星的信号...

    Android应用源码之androidGPS及WIFI基站定位坐标源码_androidGPS.zip

    5. 处理位置更新:LocationListener中的`onLocationChanged(Location location)`方法会在位置改变时被调用,从中获取经纬度坐标和其他位置信息。 6. 关闭GPS:不再需要定位时,要记得取消注册监听器,防止浪费资源。...

    android开发 天气应用的源代码

    在Android开发领域,创建一个天气应用是一个常见的项目,它涵盖了多个关键知识点,包括网络请求、数据解析、...通过深入研究和理解这些代码,开发者不仅可以了解到天气应用的工作原理,还能提升自己的Android开发技能。

    wifi室内定位demo

    在Android Studio中开发WiFi定位功能,你需要: 1. **添加权限**:在AndroidManifest.xml中添加访问WiFi状态和改变WiFi状态的权限: ``` &lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ...

    使用百度地图的locSDK获取当前经纬度

    总之,使用百度地图的locSDK获取经纬度是开发中常用的操作,通过正确集成SDK,监听定位事件,以及合理地展示和处理定位结果,可以为用户提供准确且流畅的定位体验。同时,开发者还需要关注定位服务的性能和用户体验...

    android 基站定位 返回定位的城市

    在Android开发中,基站定位是一种常见的获取用户地理位置的方法,它主要依赖于移动设备与周围基站之间的信号强度来确定位置。这种技术尤其适用于GPS信号不佳或者无法接收到GPS信号的环境,如室内。在这个名为...

Global site tag (gtag.js) - Google Analytics