Android WIFI 操作
代码 package com.wifitest; import java.util.List; import android.content.Context;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.WifiLock; public class WifiManageClass {
private WifiManager wifiManager;// 声明管理对象 private WifiInfo wifiInfo;// Wifi信息 private List<ScanResult> scanResultList; // 扫描出来的网络连接列表 private List<WifiConfiguration> wifiConfigList;// 网络配置列表 private WifiLock wifiLock;// Wifi锁 public WifiManageClass(Context context) {
this.wifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);// 获取Wifi服务 // 得到Wifi信息
this.wifiInfo = wifiManager.getConnectionInfo();// 得到连接信息 } public boolean getWifiStatus()
{
return wifiManager.isWifiEnabled();
} // 打开/关闭 wifi
public boolean openWifi() {
if (!wifiManager.isWifiEnabled()) {
return wifiManager.setWifiEnabled(true);
} else {
return false;
} } public boolean closeWifi() {
if (!wifiManager.isWifiEnabled()) {
return true;
} else {
return wifiManager.setWifiEnabled(false);
}
} // 锁定/解锁wifi
// 其实锁定WiFI就是判断wifi是否建立成功,在这里使用的是held,握手的意思acquire 得到!
public void lockWifi() { wifiLock.acquire(); } public void unLockWifi() {
if (!wifiLock.isHeld()) {
wifiLock.release(); // 释放资源
}
} // 我本来是写在构造函数中了,但是考虑到不是每次都会使用Wifi锁,所以干脆自己建立一个方法!需要时调用,建立就OK
public void createWifiLock() {
wifiLock = wifiManager.createWifiLock("flyfly"); // 创建一个锁的标志
} // 扫描网络 public void startScan() {
wifiManager.startScan(); scanResultList = wifiManager.getScanResults(); // 扫描返回结果列表 wifiConfigList = wifiManager.getConfiguredNetworks(); // 扫描配置列表
} public List<ScanResult> getWifiList() {
return scanResultList;
} public List<WifiConfiguration> getWifiConfigList() {
return wifiConfigList;
} // 获取扫描列表
public StringBuilder lookUpscan() {
StringBuilder scanBuilder = new StringBuilder(); for (int i = 0; i < scanResultList.size(); i++) {
scanBuilder.append("编号:" + (i + 1));
scanBuilder.append(scanResultList.get(i).toString()); //所有信息
scanBuilder.append("\n");
} return scanBuilder;
}
//获取指定信号的强度
public int getLevel(int NetId)
{
return scanResultList.get(NetId).level;
} // 获取本机Mac地址
public String getMac() {
return (wifiInfo == null) ? "" : wifiInfo.getMacAddress();
} public String getBSSID() {
return (wifiInfo == null) ? null : wifiInfo.getBSSID();
} public String getSSID() {
return (wifiInfo == null) ? null : wifiInfo.getSSID();
} // 返回当前连接的网络的ID
public int getCurrentNetId() {
return (wifiInfo == null) ? null : wifiInfo.getNetworkId();
} // 返回所有信息
public String getwifiInfo() {
return (wifiInfo == null) ? null : wifiInfo.toString();
} // 获取IP地址
public int getIP() {
return (wifiInfo == null) ? null : wifiInfo.getIpAddress();
} // 添加一个连接
public boolean addNetWordLink(WifiConfiguration config) {
int NetId = wifiManager.addNetwork(config);
return wifiManager.enableNetwork(NetId, true);
} // 禁用一个链接
public boolean disableNetWordLick(int NetId) {
wifiManager.disableNetwork(NetId);
return wifiManager.disconnect();
} // 移除一个链接
public boolean removeNetworkLink(int NetId) {
return wifiManager.removeNetwork(NetId);
}
//不显示SSID
public void hiddenSSID(int NetId)
{
wifiConfigList.get(NetId).hiddenSSID=true;
}
//显示SSID
public void displaySSID(int NetId)
{
wifiConfigList.get(NetId).hiddenSSID=false;
} }
Android WIFI 操作的更多相关文章
- Android WIFI 启动流程(TIP^^)
前几天因为解决一堆Bug,没时间写.我不会每天都写,就是为了存档一些资料. 内容来源:工作中接触到的+高手博客+文档(Books)=自己理解 仅限参考^^ 此博客是上一个<<Android ...
- Android Wi-Fi基本操作
从用户角度看,Android Wi-Fi模块自下向上可以看为5层:硬件驱动程序,wpa_suppplicant,JNI,WiFi API,WifiSettings应用程序. 1.wpa_supplic ...
- android——wifi系统架构
1. 系统架构 Android WiFi系统引入了wpa_supplicant,它的整个WiFi系统以wpa_supplicant为核心来定义上层用户接口和下层驱动接口.整个WiFi系统架构如下图所示 ...
- Android Wi-Fi Display(Miracast)介绍
地址:http://blog.csdn.net/innost/article/details/8474683 Android Wi-Fi Display(Miracast)介绍 2012年11月中旬, ...
- android -------- WIFI 详解
今天简单的来聊一下安卓开发中的Wifi,一些常用的基础,主要分为两部分: 1:WiFi的信息 2:WiFi的搜索和连接 现在app大多都需要从网络上获得数据.所以访问网络是在所难免.但是在访问网络之前 ...
- Android WiFi开发
概述 介绍Android WiFi的扫描.连接.信息.以及WiFi热点等等的实现,并用代码实现. 详细 代码下载:http://www.demodashi.com/demo/10660.html 一. ...
- Android WiFi直连 双向通信
代码地址如下:http://www.demodashi.com/demo/13965.html 原文地址:https://blog.csdn.net/VNanyesheshou/article/det ...
- Android权限操作之uses-permission详解
本文实例讲述了Android权限操作之uses-permission.分享给大家供大家参考,具体如下: 我们在安装Android软件的时候,系统会提示该软件所需要的权限,相对于其他系统,android ...
- android wifi框架
---恢复内容开始--- frameworks/base/services/java/com/android/server/wifi 中的ReadMe文件 WifiService: Implement ...
随机推荐
- 新手自学ABAP(1)--数据类型
一.DATA语句 1.TYPE type ex: 可以利用冒号声明多个变量. DATA : gv_num1 TYPE I, gv_num2 TYPE I. 2.LIKE num (num可以 ...
- Azure Websites Migration Assistant
这是一个IIS+Database的迁移工具, 可以参考 http://channel9.msdn.com/Shows/Azure-Friday/Azure-Websites-Migration-Ass ...
- 2016 Multi-University Training Contest 1 Chess 组合游戏+状压(预处理)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5724 题意:一个n*20的棋盘,n <= 1000;棋盘上有一些棋子,每颗棋子只能移动到右边的第一个 ...
- cadence 机械孔的制作
在平时画PCB的时候,会用到安装孔,好多人就是找个过孔,在原理图中连接GND,这样使用也可以,下面介绍一种正经机械孔的制作方法(自己摸索的),制作一个孔径为3mm的安装孔. 1 打开pad desig ...
- 【nodejs】jade模板入门
使用jetbrians webstom创建空项目 1.创建package.json 引用依赖配置 { "name": "demojade", "des ...
- ios系统 处理内存警告
iPhone下每个app可用的内存是被限制的,如果一个app使用的内存超过20M,则系统会向该app发送Memory Warning消息.收到此消息后,app必须正确处理,否则可能出错或者出现内存泄露 ...
- iPad横屏模式研究
在iPad应用开发时如何让设备只支持横屏(landscape)模式,我做了多次尝试,并没有发现比较简捷的设置方法.我尝试了大概大概3种方式. 1.通过XCode设置“iPad Deployment i ...
- 编译时和运行时、OC中对象的动态编译机制
编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.(当然只是一般意义上这么说,实际上可能只是翻译成某个中间状态的语言.比如Java只有JVM识别的字 ...
- linux xampp常见问题
一.常见问题 1.安装xampp4linux后,只能本机(http://localhost)访问,局域网内其他机器无法访问 解答:在/opt/lampp/etc中修改httpd.conf,将Liste ...
- asp.net中json格式化及在js中解析json
类: public class UploadDocumentItem { public UploadDocumentItem() { } public string DocMuid { get; se ...