android中 WIFI定位
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定位相关推荐
- Android中wifi认证的实现
WiFi需要登录的情况(WiFi重定向) 检测wifi是否需要portal验证 公共场所wifi验证 关于wifi portal认证–为浏览器添加wifi认证功能 Android中wifi的扫描机制 ...
- Android中Wi-Fi扫描、连接和信息(一)
1.Wi-Fi介绍 Wi-Fi是一种允许电子设备连接到一个无线局域网(WLAN)的技术,通常使用2.4G UHF或5G SHF ISM 射频频段.连接到无线局域网通常是有密码保护的:但也可是开放的,这 ...
- android 网络wifi定位服务器,基于位置指纹算法的Android平台WiFi定位系统
近年来,随着城域无线基础网络的发展,热点(AP)的覆盖范围已大大增加. 由于对定位服务的需求增加以及WiFi应用的扩展,WiFi定位已成为一种有效的定位方法. GPS卫星定位是最重要的定位方法. 它需 ...
- Android中WIFI开发总结(一)
WIFI就是一种无线联网技术,常见的是使用无线路由器.那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网.如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为&qu ...
- 【Android】Android中WIFI开发总结(二)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://smallwoniu.blog.51cto.com/3911954/1338618 ...
- 【Android】Android中WIFI开发总结(一)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://smallwoniu.blog.51cto.com/3911954/1334951 ...
- android 的wifi定位
这里列了很多,但是大致可以分为四个主要的类ScanResult wifiConfiguration WifiInfo WifiManager (1)ScanResult,主要是通过wifi 硬件的扫描 ...
- android 软件 加密方法,Android中WIFI常见的几种加密方式(详细)
系统设置中WIFI热点的加密方式,添加新的WIFI和连接WIFI的时候,需要在程序中配置相应的参数,可以打开自己的手机对着看 包:android.net.wifi.WifiConfiguration ...
- Android中WIFI常见的几种加密方式(详细)
系统设置中WIFI热点的加密方式,添加新的WIFI和连接WIFI的时候,需要在程序中配置相应的参数,可以打开自己的手机对着看 包:android.net.wifi.WifiConfiguration ...
最新文章
- 堆排序算法实现思想个人理解
- php 防止刷新重复提交,php防止刷新与重复提交实例代码
- 如何学好计算机专业?
- Effective Java之请不要在新代码中使用原生态类型(二十三)
- BootStrap之前奏响应式布局
- 使用java中的String类操作复杂的字符串
- MyBatis教程– CRUD操作和映射关系–第2部分
- Arch Linux 安装总结
- zoj 1586 QSNetwork 最小生成树 Prim Kruskal
- 【clickhouse】Clickhouse的MySQL引擎同步数据不准确 Decimal
- DB2 一个汉字的Byte数,太操蛋了
- java继承与多态 心得体会_继承与多态感想
- 【OpenCV学习笔记】【编程实例】四(获取一个或多个感兴趣区域)
- 帆软模板中tooltip 提示框的使用
- Python数据治理,异常点检测,离群点异常点分析
- 【龙讯module小课堂】“光”怪陆离:PWmat计算光学性质(一)
- 负载均衡与分布式网络存储技术简介
- JVMTM Tool Interface:JVM源码分析之javaagent原理完全解读
- 【AI核心技术】课程二十五:机器也可以写诗——中文诗歌生成网络初探
- css样式字体文本汇总