WiFiAdmin(WiFi管理工具類)
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 java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.List;
/**
* WIFI管理類
* @author ZHF
*
*/
public class WifiAdmin {
private static WifiAdmin wifiAdmin = null;
private List<WifiConfiguration> mWifiConfiguration; //無線網路配置資訊類集合(網路連線列表)
private List<ScanResult> mWifiList; //檢測到接入點資訊類 集合
//描述任何Wifi連線狀態
private WifiInfo mWifiInfo;
WifiManager.WifiLock mWifilock; //能夠阻止wifi進入睡眠狀態,使wifi一直處於活躍狀態
public WifiManager mWifiManager;
/**
* 獲取該類的例項(懶漢)
* @param context
* @return
*/
public static WifiAdmin getInstance(Context context) {
if(wifiAdmin == null) {
wifiAdmin = new WifiAdmin(context);
}
return wifiAdmin;
}
private WifiAdmin(Context context) {
//獲取系統Wifi服務 WIFI_SERVICE
this.mWifiManager = (WifiManager) context.getSystemService("wifi");
//獲取連線資訊
this.mWifiInfo = this.mWifiManager.getConnectionInfo();
}
/**
* 是否存在網路資訊
* @param str 熱點名稱
* @return
*/
private WifiConfiguration isExsits(String str) {
Iterator localIterator = this.mWifiManager.getConfiguredNetworks().iterator();
WifiConfiguration localWifiConfiguration;
do {
if(!localIterator.hasNext()) return null;
localWifiConfiguration = (WifiConfiguration) localIterator.next();
}while(!localWifiConfiguration.SSID.equals("\"" + str + "\""));
return localWifiConfiguration;
}
/**鎖定WifiLock,當下載大檔案時需要鎖定 **/
public void AcquireWifiLock() {
this.mWifilock.acquire();
}
/**建立一個WifiLock**/
public void CreateWifiLock() {
this.mWifilock = this.mWifiManager.createWifiLock("Test");
}
/**解鎖WifiLock**/
public void ReleaseWifilock() {
if(mWifilock.isHeld()) { //判斷時候鎖定
mWifilock.acquire();
}
}
/**開啟Wifi**/
public void OpenWifi() {
if(!this.mWifiManager.isWifiEnabled()){ //當前wifi不可用
this.mWifiManager.setWifiEnabled(true);
}
}
/**關閉Wifi**/
public void closeWifi() {
if(mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(false);
}
}
/**埠指定id的wifi**/
public void disconnectWifi(int paramInt) {
this.mWifiManager.disableNetwork(paramInt);
}
/**新增指定網路**/
public void addNetwork(WifiConfiguration paramWifiConfiguration) {
int i = mWifiManager.addNetwork(paramWifiConfiguration);
mWifiManager.enableNetwork(i, true);
}
/**
* 連線指定配置好的網路
* @param index 配置好網路的ID
*/
public void connectConfiguration(int index) {
// 索引大於配置好的網路索引返回
if (index > mWifiConfiguration.size()) {
return;
}
//連線配置好的指定ID的網路
mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId, true);
}
/**
* 根據wifi資訊建立或關閉一個熱點
* @param paramWifiConfiguration
* @param paramBoolean 關閉標誌
*/
public void createWifiAP(WifiConfiguration paramWifiConfiguration,boolean paramBoolean) {
try {
Class localClass = this.mWifiManager.getClass();
Class[] arrayOfClass = new Class[2];
arrayOfClass[0] = WifiConfiguration.class;
arrayOfClass[1] = Boolean.TYPE;
Method localMethod = localClass.getMethod("setWifiApEnabled",arrayOfClass);
WifiManager localWifiManager = this.mWifiManager;
Object[] arrayOfObject = new Object[2];
arrayOfObject[0] = paramWifiConfiguration;
arrayOfObject[1] = Boolean.valueOf(paramBoolean);
localMethod.invoke(localWifiManager, arrayOfObject);
return;
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 建立一個wifi資訊
* @param ssid 名稱
* @param passawrd 密碼
* @param paramInt 有3個引數,1是無密碼,2是簡單密碼,3是wap加密
* @param type 是"ap"還是"wifi"
* @return
*/
public WifiConfiguration createWifiInfo(String ssid, String passawrd,int paramInt, String type) {
//配置網路資訊類
WifiConfiguration localWifiConfiguration1 = new WifiConfiguration();
//設定配置網路屬性
localWifiConfiguration1.allowedAuthAlgorithms.clear();
localWifiConfiguration1.allowedGroupCiphers.clear();
localWifiConfiguration1.allowedKeyManagement.clear();
localWifiConfiguration1.allowedPairwiseCiphers.clear();
localWifiConfiguration1.allowedProtocols.clear();
if(type.equals("wt")) { //wifi連線
localWifiConfiguration1.SSID = ("\"" + ssid + "\"");
WifiConfiguration localWifiConfiguration2 = isExsits(ssid);
if(localWifiConfiguration2 != null) {
mWifiManager.removeNetwork(localWifiConfiguration2.networkId); //從列表中刪除指定的網路配置網路
}
if(paramInt == 1) { //沒有密碼
localWifiConfiguration1.wepKeys[0] = "";
localWifiConfiguration1.allowedKeyManagement.set(0);
localWifiConfiguration1.wepTxKeyIndex = 0;
} else if(paramInt == 2) { //簡單密碼
localWifiConfiguration1.hiddenSSID = true;
localWifiConfiguration1.wepKeys[0] = ("\"" + passawrd + "\"");
} else { //wap加密
localWifiConfiguration1.preSharedKey = ("\"" + passawrd + "\"");
localWifiConfiguration1.hiddenSSID = true;
localWifiConfiguration1.allowedAuthAlgorithms.set(0);
localWifiConfiguration1.allowedGroupCiphers.set(2);
localWifiConfiguration1.allowedKeyManagement.set(1);
localWifiConfiguration1.allowedPairwiseCiphers.set(1);
localWifiConfiguration1.allowedGroupCiphers.set(3);
localWifiConfiguration1.allowedPairwiseCiphers.set(2);
}
}else {//"ap" wifi熱點
localWifiConfiguration1.SSID = ssid;
localWifiConfiguration1.allowedAuthAlgorithms.set(1);
localWifiConfiguration1.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
localWifiConfiguration1.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
localWifiConfiguration1.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
localWifiConfiguration1.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
localWifiConfiguration1.allowedKeyManagement.set(0);
localWifiConfiguration1.wepTxKeyIndex = 0;
if (paramInt == 1) { //沒有密碼
localWifiConfiguration1.wepKeys[0] = "";
localWifiConfiguration1.allowedKeyManagement.set(0);
localWifiConfiguration1.wepTxKeyIndex = 0;
} else if (paramInt == 2) { //簡單密碼
localWifiConfiguration1.hiddenSSID = true;//網路上不廣播ssid
localWifiConfiguration1.wepKeys[0] = passawrd;
} else if (paramInt == 3) {//wap加密
localWifiConfiguration1.preSharedKey = passawrd;
localWifiConfiguration1.allowedAuthAlgorithms.set(0);
localWifiConfiguration1.allowedProtocols.set(1);
localWifiConfiguration1.allowedProtocols.set(0);
localWifiConfiguration1.allowedKeyManagement.set(1);
localWifiConfiguration1.allowedPairwiseCiphers.set(2);
localWifiConfiguration1.allowedPairwiseCiphers.set(1);
}
}
return localWifiConfiguration1;
}
/**獲取熱點名**/
public String getApSSID() {
try {
Method localMethod = this.mWifiManager.getClass().getDeclaredMethod("getWifiApConfiguration", new Class[0]);
if (localMethod == null) return null;
Object localObject1 = localMethod.invoke(this.mWifiManager,new Object[0]);
if (localObject1 == null) return null;
WifiConfiguration localWifiConfiguration = (WifiConfiguration) localObject1;
if (localWifiConfiguration.SSID != null) return localWifiConfiguration.SSID;
Field localField1 = WifiConfiguration.class .getDeclaredField("mWifiApProfile");
if (localField1 == null) return null;
localField1.setAccessible(true);
Object localObject2 = localField1.get(localWifiConfiguration);
localField1.setAccessible(false);
if (localObject2 == null) return null;
Field localField2 = localObject2.getClass().getDeclaredField("SSID");
localField2.setAccessible(true);
Object localObject3 = localField2.get(localObject2);
if (localObject3 == null) return null;
localField2.setAccessible(false);
String str = (String) localObject3;
return str;
} catch (Exception localException) {
}
return null;
}
/**獲取wifi名**/
public String getBSSID() {
if (this.mWifiInfo == null)
return "NULL";
return this.mWifiInfo.getBSSID();
}
/**得到配置好的網路 **/
public List<WifiConfiguration> getConfiguration() {
return this.mWifiConfiguration;
}
/**獲取ip地址**/
public int getIPAddress() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
}
/**獲取實體地址(Mac)**/
public String getMacAddress() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
}
/**獲取網路id**/
public int getNetworkId() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
}
/**獲取熱點建立狀態**/
public int getWifiApState() {
try {
int i = ((Integer) this.mWifiManager.getClass()
.getMethod("getWifiApState", new Class[0])
.invoke(this.mWifiManager, new Object[0])).intValue();
return i;
} catch (Exception localException) {
}
return 4; //未知wifi網絡卡狀態
}
/**獲取wifi連線資訊**/
public WifiInfo getWifiInfo() {
return this.mWifiManager.getConnectionInfo();
}
/** 得到網路列表**/
public List<ScanResult> getWifiList() {
return this.mWifiList;
}
/**檢視掃描結果**/
public StringBuilder lookUpScan() {
StringBuilder localStringBuilder = new StringBuilder();
for (int i = 0; i < mWifiList.size(); i++)
{
localStringBuilder.append("Index_"+new Integer(i + 1).toString() + ":");
//將ScanResult資訊轉換成一個字串包
//其中把包括:BSSID、SSID、capabilities、frequency、level
localStringBuilder.append((mWifiList.get(i)).toString());
localStringBuilder.append("\n");
}
return localStringBuilder;
}
/** 設定wifi搜尋結果 **/
public void setWifiList() {
this.mWifiList = this.mWifiManager.getScanResults();
}
/**開始搜尋wifi**/
public void startScan() {
this.mWifiManager.startScan();
}
/**得到接入點的BSSID**/
public String GetBSSID() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
}
}
相關推薦
WiFiAdmin(WiFi管理工具類)
import android.content.Context; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.w
Hive----JDBC工具類的建立使用(包括HIVEsql工具類)---IDEA開發
Hive-----JDBC---util package com.www.hive.util;import java.sql.*;import java.util.Date;import java.util.*;import java.util.Lis
上傳檔案動態生成目錄(自定義工具類)
public class UploadUtils { // 方式一:使用用 目錄層級 分離 public static String getPath(String uuidFileName){ // 使用唯一檔名.hashCode();
(工具類)Linux筆記之終端日誌記錄工具script
工具類 article 空間 post 令行 有時 可能 關於 edit 在學習Linux時,有時候終端的打印消息對於我們很重要,可是終端顯示也是有一定的緩沖空間的。當信息打印許多時,前面的信息就會被覆蓋掉。所以這裏網上搜索了一下這方面的介紹。現總結例如以下:
JavaWeb響應下載(包含工具類)
文件的 瀏覽器下載 後綴 寫文件 部分 https res 文件路徑 form 紙上得來終覺淺,絕知此事要躬行!今天博主分享是關於javaweb的響應(response)下載 以下是我的Demo: 頁面我就粘主要部分的代碼 <a href = "${pageCont
高級軟件測試技術(測試管理工具實踐day3)
由於 其他 將他 一個 png 安裝 模塊 了解 com 昨天在晚上由於安裝bugzilla中有一些小問題,並且需要手工安裝很多perl模塊 ppm install XXX(模塊名稱)。一直到過了十二點就沒有繼續更博了。所以由今天更。 繼昨天的安裝問題之後終於安裝
高級軟件測試技術(測試管理工具實踐day4)
所有 作業 指導 基本使用 管理 完成 視頻 bugzilla 軟件測試技術 今天是截止日期,有胡俊輝的指導下小組成員都了解使用了Bugzilla的基本使用。大家都在晚上之前把各自的文檔匯總給汪鴻,由他撰寫了操作手冊。並且在下午楊瑞豐完成了視頻的錄制工作。但
Java學習筆記—多線程(並發工具類,java.util.concurrent.atomic包)
配對 初始 訪問 接收 iter nco .get 執行 string 在JDK的並發包裏提供了幾個非常有用的並發工具類。CountDownLatch、CyclicBarrier和Semaphore工具類提供了一種並發流程控制的手段,Exchanger工具類則提供了在線程間
Redis 設定 Key/value 的規則定義和注意事項(附工具類)
對於redis的儲存key/value鍵值對,經過多次踩坑之後,我們總結了一套規則;這篇文章主要講解定義key/value鍵值對時的定義規則和注意事項。 前面一篇文章講了如何定義Redis的客戶端和Dubbo整合儲存器;當我們真正開始開發的時候,就會突然發現,有點不知道如何去定義Redis的K
Redis設定Key/value的規則定義和注意事項(附工具類)
對於redis的儲存key/value鍵值對,經過多次踩坑之後,我們總結了一套規則;這篇文章主要講解定義key/value鍵值對時的定義規則和注意事項。 前面一篇文章講了如何定義Redis的客戶端和Dubbo整合儲存器;當我們真正開始開發的時候,就會突然發現,有點不知道如何去定義Redis的K
網路請求資料(Uitl工具類)
封裝工具類 package com.example.pullshuaixn; import android.annotation.SuppressLint; import android.os.AsyncTask; import com.google.gson.Gson;
關於精度問題(BigDecimalUtil工具類)
關於精度問題 這樣寫會丟失精度 Java在java.math包中提供的API類BigDecimal,用來對超過16位有效位的數進行精確的運算。雙精度浮點型變數double可以處理16位有效數。 對比可知,test2仍然會出現精度問題,而在建立Bi
easypoi Excel匯入匯出 (工具類)
1.用到的jar 紅色的必須的。 下面那些是執行起來,缺哪個就導哪個。 如果報錯提示沒有這個方法的話,重啟Tomcat,還不好使就是jar包版本不對,找個高點的版本。 easypoi-annotation-3.1.0.jar easypoi-base-3.1.0.j
檔案上傳(工具類)
一、 import java.io.File; import java.io.IOException; import javax.servlet.http.HttpServletRequest; i
Android okHttp檔案下載並帶進度條的demo(簡單工具類)
根據okHttp簡單的封裝了一個根據url下載檔案並更新進度的工具類,在此記錄下,以後要使用可以進行參考 先來看看效果圖: 接下來看看具體的程式碼實現 首先在:app中新增專案對於Okhttp的依賴: //okhttp compile 'com.squareup.okh
Android 常用開發工具類之 SPUtils (SharedPreference 工具類)
開發過程中難免會遇到如持久儲存使用者資訊等需求,而由於資料量很少感覺使用 Sql 有些殺雞用牛刀的感覺也有些累贅。所以善於使用 SharedPreference 可以幫助我們在本地儲存一些資料量少,又使用很頻繁的東西。 SPUtils 一個可以幫助我們很簡潔的使用 Sha
利用java生成UUID(工具類)
package test.demo1; import java.util.UUID; public class UUIDUtil { public static String creatU
Android應用開發------------Json工具類(fastJson和Gson的兩種工具類)
json一般是Android中比較常用的與伺服器互動的資料形式。我們常用的架包來解析json字串有fastjson和gson 分別寫了兩個工具類: fastJson import java.util.ArrayList; import java.util.List;
JAVA中MD5加密(MD5工具類)
工具類如下:import java.security.MessageDigest; /** * @Author:Starry * @Description: * @Date:Created in 9
下載檔案(工具類)
一、 import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection;