`
- 浏览:
76694 次
- 性别:
- 来自:
北京
-
第一步:
//获取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>
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在Android开发中,获取WiFi的相关信息,特别是经纬度,对于实现定位功能至关重要。WiFi定位是移动设备定位技术的一种,它利用设备周围的WiFi接入点信号强度来推算设备的大致位置。这种技术通常与GPS结合使用,以提高...
在Android开发中,获取用户当前的经纬度和城市信息是常见的需求,这通常用于实现位置服务,例如导航、天气预报等。本篇文章将详细介绍如何通过Android原生SDK获取这些信息,包括GPS定位和WiFi定位两种方式。 首先,...
在Android开发中,GPS定位是实现许多功能的基础,如地图导航、位置服务和地理围栏等。本篇文章将深入探讨如何在Android系统中利用GPS获取经纬度信息,并提供一个已经完美封装的管理类的概述。 首先,理解Android的...
现在有这么一个需求:开启一个Service服务,获取当前...Android手机获取当前位置的方式:GPS定位,WIFI定位,基站定位,当前Demo使用GPS卫星定位,在LocationTool中返回Location、LocationManager两者对象,通过Loca
在安卓(Android)系统中,定位服务是移动应用开发中的重要组成部分,主要依赖于GPS(全球定位系统)和WIFI基站来获取设备的位置信息。这个压缩包“安卓Android源码——androidGPS及WIFI基站定位坐标源码.zip”提供...
Location 在Android 开发中还是经常用到的,比如 通过经纬度获取天气,根据Location 获取所在地区详细Address (比如Google Map 开发).等。而在Android 中通过LocationManager 来获取Location .通常获取Location 有...
在使用 Android API 获取经纬度坐标时,需要在 AndroidManifest.xml 文件中添加以下权限: ```xml <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> ``` 然后,在MainActivity 中,...
在Android平台上,定位服务是应用程序开发中的重要组成部分,它允许应用获取设备的位置信息,以便提供导航、社交网络更新、地理围栏等功能。本资源“androidgps基站与WIFI定位源码.zip”提供了一套实现GPS、基站和Wi...
在Android开发中,通常会结合这三种定位方式,以提高定位准确性和可用性。一种常见的策略是首先尝试GPS定位,如果不可用,则切换到WIFI或基站定位。这可以通过`LocationProvider`的优先级设定来实现,例如设置`...
在Android应用开发中,GPS(全球定位系统)和WIFI基站定位是常见的定位技术,用于获取设备的地理位置信息。这份毕业设计源码提供了一个深入理解这两种定位方式的实践平台。以下将详细介绍这两种定位方法及其在...
源码中可能会涉及到`WiFiManager`服务的使用,通过`getScanResults()`获取WIFI扫描结果,然后通过网络服务(如Google Play服务)进行反向地理编码,转换为经纬度坐标。 3. 混合定位: 实际应用中,Android通常会...
在Android开发中,位置服务是应用的一个重要组成部分,它允许应用程序获取设备的地理位置信息,如经纬度、海拔等。此压缩包"androidGPS及WIFI基站定位坐标源码.zip"包含了一个示例项目,用于演示如何利用GPS和WiFi...
本文将详细介绍如何使用 Android Map API 来实现地图上的位置定位、弹出泡泡显示信息以及通过经纬度获取地址。 #### 二、地图弹出泡泡的实现 地图上的弹出泡泡(Popup)是一种常见的交互方式,用于在地图上显示...
这份"Android应用源码之androidGPS及WIFI基站定位坐标源码.zip"包含了实现这两种定位方式的源代码,对于理解和开发Android定位应用具有重要的参考价值。 1. GPS定位: GPS定位是通过接收来自至少四颗GPS卫星的信号...
5. 处理位置更新:LocationListener中的`onLocationChanged(Location location)`方法会在位置改变时被调用,从中获取经纬度坐标和其他位置信息。 6. 关闭GPS:不再需要定位时,要记得取消注册监听器,防止浪费资源。...
在Android开发领域,创建一个天气应用是一个常见的项目,它涵盖了多个关键知识点,包括网络请求、数据解析、...通过深入研究和理解这些代码,开发者不仅可以了解到天气应用的工作原理,还能提升自己的Android开发技能。
在Android Studio中开发WiFi定位功能,你需要: 1. **添加权限**:在AndroidManifest.xml中添加访问WiFi状态和改变WiFi状态的权限: ``` <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ...
总之,使用百度地图的locSDK获取经纬度是开发中常用的操作,通过正确集成SDK,监听定位事件,以及合理地展示和处理定位结果,可以为用户提供准确且流畅的定位体验。同时,开发者还需要关注定位服务的性能和用户体验...
在Android开发中,基站定位是一种常见的获取用户地理位置的方法,它主要依赖于移动设备与周围基站之间的信号强度来确定位置。这种技术尤其适用于GPS信号不佳或者无法接收到GPS信号的环境,如室内。在这个名为...