日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android开发 无线Wifi+WifiUtil工具类,直面秋招

發布時間:2024/8/1 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发 无线Wifi+WifiUtil工具类,直面秋招 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

for(int i = 0;i < wifiList.size(); i++){

ScanResult wifi = wifiList.get(i);

if(wifi.SSID.equals(ssid)){

Log.i(“AddWifiConfig”,“equals”);

WifiConfiguration wifiCong = new WifiConfiguration();

wifiCong.SSID = “”"+wifi.SSID+""";//“轉義字符,代表”

wifiCong.preSharedKey = “”"+pwd+""";//WPA-PSK密碼

wifiCong.hiddenSSID = false;

wifiCong.status = WifiConfiguration.Status.ENABLED;

wifiId = localWifiManager.addNetwork(wifiCong);//將配置好的特

定WIFI密碼信息添加,添加完成后默認是不激活狀態,成功返回ID,否則為-1

if(wifiId != -1){

return wifiId;

}

}

}

return wifiId;

}

7.根據步驟6配置好需要連接的WIFI密碼信息后,下面通過networkId連接指定WIFI。在連接經過步驟6剛添加配置信息的WIFI信息之前需要重新執行下步驟4,得到新的配置好信息的列表

//連接指定Id的WIFI

public boolean ConnectWifi(int wifiId){

for(int i = 0; i < wifiConfigList.size(); i++){

WifiConfiguration wifi = wifiConfigList.get(i);

if(wifi.networkId == wifiId){

while(!(localWifiManager.enableNetwork(wifiId, true))){//激活該Id,建立連接

//status:0–已經連接,1–不可連接,2–可以連接

Log.i(“ConnectWifi”,String.valueOf(wifiConfigList.get(wifiId).status));

}

return true;

}

}

return false;

}

二、Wifi的開發示例程序

這個程序運行后可以掃描周邊的Wifi,并且做連接,還有歷史記錄

程序運行后的界面:

可以點擊對應的按鈕,顯示周邊的wifi信息,和連接的Wifi歷史記錄。點擊某個Wifi條目,就是連接的操作,輸入正確的密碼就可以完成Wifi的連接

(一) 添加權限

(二) 布局代碼

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:orientation=“vertical”>

<Button

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:onClick=“open”

android:text=“打開wifi” />

<Button

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:onClick=“close”

android:text=“關閉wifi” />

<Button

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:onClick=“scan”

android:text=“掃描wifi” />

<Button

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:onClick=“getGood”

android:text=“獲取連接過的wifi配置信息” />

<ListView

android:id="@+id/lv"

android:layout_width=“match_parent”

android:layout_height=“wrap_content” />

**(三) WifiUtil工具

《Android學習筆記總結+最新移動架構視頻+大廠安卓面試真題+項目實戰源碼講義》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整內容開源分享

類**

/**

  • wife使用的工具類

*/

public class WifiUtil {

// WifiManager.WIFI_STATE_ENABLED WiFi已打開

// WifiManager.WIFI_STATE_ENABLING WiFi打開中

// WifiManager.WIFI_STATE_DISABLING WiFi關閉中

// WifiManager.WIFI_STATE_DISABLED WiFi已關閉

// WifiManager.WIFI_STATE_UNKNOWN 未知的WiFi狀態

// 定義一個WifiManager對象

private WifiManager mWifiManager;

// 定義一個WifiInfo對象

private WifiInfo mWifiInfo;

// 掃描出的網絡連接列表

private List mWifiList;

// 網絡連接列表

private List mWifiConfigurations;

WifiLock mWifiLock;

Context mContext;

//傳入上下文

public WifiUtil(Context context) {

// 取得WifiManager對象

mContext = context;

mWifiManager = (WifiManager) context

.getSystemService(Context.WIFI_SERVICE);

// 取得WifiInfo對象

mWifiInfo = mWifiManager.getConnectionInfo();

}

// 打開wifi

public void openWifi() {

if (!mWifiManager.isWifiEnabled()) {

mWifiManager.setWifiEnabled(true);

}

}

//判斷wife是否是連接狀態

public boolean isConn() {

ConnectivityManager connManager = (ConnectivityManager) mContext

.getSystemService(mContext.CONNECTIVITY_SERVICE);

NetworkInfo mWifi = connManager

.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

return mWifi.isConnected();

}

// 關閉wifi

public void closeWifi() {

if (mWifiManager.isWifiEnabled()) {

mWifiManager.setWifiEnabled(false);

}

}

// 檢查當前wifi狀態

public int checkState() {

return mWifiManager.getWifiState();

}

// 鎖定wifiLock

public void acquireWifiLock() {

mWifiLock.acquire();

}

// 解鎖wifiLock

public void releaseWifiLock() {

// 判斷是否鎖定

if (mWifiLock.isHeld()) {

mWifiLock.acquire();

}

}

// 創建一個wifiLock

public void createWifiLock() {

mWifiLock = mWifiManager.createWifiLock(“test”);

}

// 得到配置好的網絡

public List getConfiguration() {

return mWifiConfigurations;

}

// 指定配置好的網絡進行連接

public boolean connetionConfiguration(int index) {

if (index > mWifiConfigurations.size()) {

return false;

}

// 連接配置好指定ID的網絡

return mWifiManager.enableNetwork(mWifiConfigurations.get(index).networkId, true);

}

public void startScan() {

mWifiManager.startScan();

// 得到掃描結果

mWifiList = mWifiManager.getScanResults();

// 得到配置好的網絡連接

mWifiConfigurations = mWifiManager.getConfiguredNetworks();

}

// 得到網絡列表

public List getWifiList() {

return mWifiList;

}

// 查看掃描結果

public StringBuffer lookUpScan() {

StringBuffer sb = new StringBuffer();

for (int i = 0; i < mWifiList.size(); i++) {

sb.append(“Index_” + new Integer(i + 1).toString() + “:”);

// 將ScanResult信息轉換成一個字符串包

// 其中把包括:BSSID、SSID、capabilities、frequency、level

sb.append((mWifiList.get(i)).toString()).append("\n");

}

return sb;

}

public String getMacAddress() {

return (mWifiInfo == null) ? “NULL” : mWifiInfo.getMacAddress();

}

public String getBSSID() {

return (mWifiInfo == null) ? “NULL” : mWifiInfo.getBSSID();

}

public int getIpAddress() {

return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();

} // 得到連接的ID

public String getSSID() {

return (mWifiInfo == null) ? “” : mWifiInfo.getSSID().replace(""", “”);

} // 得到連接的ID

public int getNetWordId() {

return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();

} // 得到wifiInfo的所有信息

public String getWifiInfo() {

return (mWifiInfo == null) ? “NULL” : mWifiInfo.toString();

}

public String getGateway() {

return mWifiInfo == null ? “NULL”
intToIp(mWifiManager.getDhcpInfo().gateway);

}

private String intToIp(int paramInt) {

return (paramInt & 0xFF) + “.” + (0xFF & paramInt >> 8) + “.”

  • (0xFF & paramInt >> 16) + “.” + (0xFF & paramInt >> 24);

}

// 添加一個網絡并連接

public boolean addNetWork(WifiConfiguration configuration) {

int wcgId = mWifiManager.addNetwork(configuration);

return mWifiManager.enableNetwork(wcgId, true);

}

// 斷開指定ID的網絡

public void disConnectionWifi(int netId) {

mWifiManager.disableNetwork(netId);

mWifiManager.disconnect();

}

public WifiConfiguration createWifiInfo(String SSID, String Password,

int TYPE) {

WifiConfiguration config = new WifiConfiguration();

config.allowedAuthAlgorithms.clear();

config.allowedGroupCiphers.clear();

config.allowedKeyManagement.clear();

config.allowedPairwiseCiphers.clear();

config.allowedProtocols.clear();

config.SSID = “”" + SSID + “”";

WifiConfiguration tempConfig = this.IsExsits(SSID);

if (tempConfig != null) {

mWifiManager.removeNetwork(tempConfig.networkId);

}

if (TYPE == 1) // WIFICIPHER_NOPASS

{

// config.wepKeys[0] = “”;

config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

// config.wepTxKeyIndex = 0;

}

if (TYPE == 2) // WIFICIPHER_WEP

{

config.hiddenSSID = true;

config.wepKeys[0] = “”" + Password + “”";

config.allowedAuthAlgorithms

.set(WifiConfiguration.AuthAlgorithm.SHARED);

config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);

config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);

config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);

config.allowedGroupCiphers

.set(WifiConfiguration.GroupCipher.WEP104);

config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

config.wepTxKeyIndex = 0;

}

if (TYPE == 3) // WIFICIPHER_WPA WPA2

{

config.preSharedKey = “”" + Password + “”";

config.hiddenSSID = true;

config.allowedAuthAlgorithms

.set(WifiConfiguration.AuthAlgorithm.OPEN);

config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);

config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);

config.allowedPairwiseCiphers

.set(WifiConfiguration.PairwiseCipher.TKIP);

// config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);

config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);

config.allowedPairwiseCiphers

.set(WifiConfiguration.PairwiseCipher.CCMP);

config.status = WifiConfiguration.Status.ENABLED;

}

return config;

}

//判斷密碼的類別

public int getType(String capabilities) //[wpa]

{

//[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]

// [WPA2-PSK-CCMP][ESS]

//[ESS]

if (capabilities.contains(“WPA”))

return 3;

else if (capabilities.contains(“WEP”))

return 2;

else

return 1;

}

//根據SSID判斷這個WIFE設置對象是否存在

private WifiConfiguration IsExsits(String SSID) {

List existingConfigs = mWifiManager

.getConfiguredNetworks();

for (WifiConfiguration existingConfig : existingConfigs) {

if (existingConfig.SSID.equals(""" + SSID + “”")) {

return existingConfig;

}

}

return null;

}

}

(四) 主方法的類代碼:

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener{

WifiUtil wifiUtil;//定義Wife工具類

ListView listView;//顯示Wife的數據列表

ArrayAdapter adapter;//列表的適配器

List wifiSSIDs = new ArrayList<>();//列表的數據

WifiManager wifiManager;//Wife管理器

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

wifiUtil = new WifiUtil(this);

wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);//獲取Wife管理器

listView = (ListView) findViewById(R.id.lv);

//創建適配器,并把適配器設置到ListView中

adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, wifiSSIDs);

listView.setAdapter(adapter);

//給ListView設置點擊事件,點擊后連接Wife

listView.setOnItemClickListener(this);

}

/**

  • 打開Wife

*/

public void open(View view) {

wifiUtil.openWifi();

}

/**

  • 關閉Wife

*/

public void close(View view) {

wifiUtil.closeWifi();

}

/**

  • 掃描Wife

*/

List wifiList = new ArrayList<>();

public void scan(View view) {

isClickHistory = false;//顯示的列表不是歷史記錄

//掃描先清除數據

wifiSSIDs.clear();

wifiList.clear();

wifiUtil.startScan();//掃描Wife

wifiList = wifiUtil.getWifiList();

//獲取列表中的SSID并顯示出來

for (ScanResult scanResult : wifiList) {

wifiSSIDs.add(scanResult.SSID);

}

//刷新適配器

adapter.notifyDataSetChanged();

}

/**

  • 獲取連接過的Wife數據

*/

List configuredNetworks = new ArrayList<>();

public void getGood(View view) {

isClickHistory = true;//顯示的列表是歷史記錄

//掃描先清除數據

wifiSSIDs.clear();

if (configuredNetworks != null) {

configuredNetworks.clear();

//獲取歷史記錄

configuredNetworks = wifiUtil.getConfiguration();

if (configuredNetworks == null)

總結

以上是生活随笔為你收集整理的Android开发 无线Wifi+WifiUtil工具类,直面秋招的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。