`
- 浏览:
75330 次
- 性别:
- 来自:
北京
-
第一步:
//获取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
相关推荐
很好的关于wifi开发的例子,在android开发中wifi开发很常见,这是你不错的选择!
Location 在Android 开发中还是经常用到的,比如 通过经纬度获取天气,根据Location 获取所在地区详细Address (比如Google Map 开发).等。而在Android 中通过LocationManager 来获取Location .通常获取Location 有...
现在有这么一个需求:开启一个Service服务,获取当前...Android手机获取当前位置的方式:GPS定位,WIFI定位,基站定位,当前Demo使用GPS卫星定位,在LocationTool中返回Location、LocationManager两者对象,通过Loca
本文实例讲述了Android开发中Location用法。分享给大家供大家参考,具体如下: Location 在Android 开发中还是经常用到的,如通过经纬度获取天气,根据Location 获取所在地区详细Address (比如Google Map 开发)等。...
全书共分11章,主要以范例集的方式来讲述android的知识点,详细介绍了开发android的人机交互界面、android常用的开发控件、android手机收发短信等通信服务、开发android手机的自动服务功能和娱乐多媒体功能以及...
余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...
余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...
余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...
余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...
全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及...
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 和 随书光盘代码 ISBN:9787115229649 目录 第1章 了解、深入、动手做 1.1 红透半边天的Android 1.2 本书目的及范例涵盖范围 1.3 如何阅读本书 ...
开发软件:Idea,VScode,Hbuilder,mysql8.0 开发技术:Springboot,react,redux,nodejs,axios,vue,uniapp,高德地图定位,wifi信息获取插件 为了方便管理对学生上课考勤的管理,开发了这个项目包括学生和管理员2个身份...
9.37、通过ANDROID 客户端上传数据到服务器 251 9.38、文件下载类 255 9.39、下载文件的进度条提示 263 9.40、通过HTTPCLIENT从指定SERVER获取数据 265 9.41、通过FTP传输文件,关闭UI获得返回码 266 9.42、激活...
开发技术:Springboot,react,redux,nodejs,axios,vue,uniapp,高德地图定位,wifi信息获取插件 为了方便管理对学生上课考勤的管理,开发了这个项目包括学生和管理员2个身份。学生在安卓app客户端可以注册账号和登录...
在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便。定位一般分为三种发方案:即GPS定位、Google网络定位以及基站定位 最简单的手机定位方式当然是通过GPS模块(现在大部分...
程序使用最新Android Studio 开发设计,可以检测4G,3G,2G,WiFi的信号强度和信号速率,可以手机定位,显示经纬度,海拔,速度,详细的地理位置,时间信息。还可以长ping包测试无线网络是否连续。