導航:首頁 > 操作系統 > android監控wifi狀態

android監控wifi狀態

發布時間:2023-01-15 06:04:07

『壹』 安卓怎麼編程實現wifi安全檢測

android中對Wifi操作,android本身提供了一些有用的包,在android.net.wifi包下面。主要包括以下幾個類和介面: 1.ScanResult 主要用來描述已經檢測出的接入點,包括接入點的地址,接入點的名稱,身份認證,頻率,信號強度等信息。 2.WifiConfiguration Wifi網路的配置,包括安全設置等。 3.WifiInfo wifi無線連接的描述,包括接入點,網路連接狀態,隱藏的接入點,IP地址,連接速度,MAC地址,網路ID,信號強度等信息。這里簡單介紹一下這里的方法: getBSSID() 獲取BSSID getDetailedStateOf() 獲取客戶端的連通性 getHiddenSSID() 獲得SSID 是否被隱藏 getIpAddress() 獲取IP 地址 getLinkSpeed() 獲得連接的速度 getMacAddress() 獲得Mac 地址 getRssi() 獲得802.11n 網路的信號 getSSID() 獲得SSID getSupplicanState() 返回具體客戶端狀態的信息 4.WifiManager 這個不用說,就是用來管理我們的wifi 連接,這里已經定義好了一些類,可以供我們使用。 獲取WIFI網卡的狀態 WIFI網卡的狀態是由一系列的整形常量來表示的。 1.WIFI_STATE_DISABLED : WIFI網卡不可用(1) 2.WIFI_STATE_DISABLING : WIFI網卡正在關閉(0) 3.WIFI_STATE_ENABLED : WIFI網卡可用(3) 4.WIFI_STATE_ENABLING : WIFI網正在打開(2) (WIFI啟動需要一段時間) 5.WIFI_STATE_UNKNOWN : 未知網卡狀態 最重要的一個就是 你要設置許可權 最重要的一個就是 你要設置許可權 希望幫助到你

『貳』 在android上查看wifi狀態,代碼如下:

不知道你的程序報的是什麼錯,給你一個例子吧,不過方法和你的有點差別:
public class WifiAdmin {
/**WiFi Manager**/
private WifiManager wifimanager;
/**WiFi Information**/
private WifiInfo wifiinfo;
/**Activity NetWork List**/
private List<ScanResult> netlist;
/**Configured NetWork List**/
private List<WifiConfiguration> connectedlist;
/**WiFi Lock**/
private WifiLock wifilock;

public WifiAdmin(Context context) {
wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
}

/**
* WiFi Operate
* */
/**Open WiFi**/
public void openWifi() {
if (!wifimanager.isWifiEnabled()) {
wifimanager.setWifiEnabled(true);
}
}
/**Close WiFi**/
public void closeWifi() {
if (wifimanager.isWifiEnabled()) {
wifimanager.setWifiEnabled(false);
}
}
/**WiFi State**/
public int checkState() {
return wifimanager.getWifiState();
}

/**
* WiFiLock Operate
* */
/**Create WiFiLock**/
public void creatWifiLock() {
wifilock = wifimanager.createWifiLock("Test");
}
/**Lock WiFi**/
public void acquireWifiLock() {
wifilock.acquire();
}
/**Clear WiFiLock**/
public void releaseWifiLock() {
if (wifilock.isHeld()) {
wifilock.release();
}
}
/**
* WiFiInfo Operate
* */
/**Get WiFiInfo**/
public WifiInfo getWifiInfo(){
wifiinfo = wifimanager.getConnectionInfo();
return wifiinfo;
}

/**
* NetWork Operate
* */
/**Scan**/
public void startScan() {
wifimanager.startScan();
netlist = wifimanager.getScanResults();
connectedlist = wifimanager.getConfiguredNetworks();
}
/**Get Configured NetWork**/
public List<WifiConfiguration> getConfiguration() {
return connectedlist;
}
/**Get Activity NetWork**/
public List<ScanResult> getWifiList() {
return netlist;
}
/**Connect a NetWork**/
public void connectConfiguration(int index) {
if (index < 0 || index > connectedlist.size()) {
return;
}
wifimanager.enableNetwork(connectedlist.get(index).networkId,true);
}
/**Add a NetWork**/
public void addNetwork(WifiConfiguration wcg) {
int wcgID = wifimanager.addNetwork(wcg);
wifimanager.enableNetwork(wcgID, true);
}
/**DisConnect a NetWork**/
public void disconnectWifi(int netId) {
wifimanager.disableNetwork(netId);
wifimanager.disconnect();
}
}

『叄』 android wifi切換路由器怎麼監聽

第一步:手機的設置:下載超級終端Better Terminal。各大市場應該大把大把的,我是在豌豆莢上下載的。下載完後在手機安裝上,點擊進入,其中有個選項是開啟gui還是shell,對於我們android開發者來說當然是選擇比較牛逼的shell了。進入後輸入如下內容:
setprop service.adb.tcp.port 5555
stop adbd
start adbd
這樣你的手機就配置好了tcpip的網路調試埠了。

第二步:電腦的配置:將手機通過usb連接到電腦上,cmd到你的androidsdk的目錄下的platform-tools目錄執行:
adb tcpip 5555
將機器上的adb切換為網路模式,後面5555是埠號,當然你也可以寫其他埠號,只要你的手機的這個埠號沒有被使用就可以了.

第三步:電腦配置:運行cmd,輸入
adb connect <你手機IP>:5555
例如:adb connect 10.7.10.3:5555 ,其中10.7.10.3是我的手機的ip地址你輸入你的手機的ip地址即可。
如果成功的話,會提示 connected to 10.7.10.3:5555
現在你的電腦就可以通過wifi連接電腦調試了,當然你通過eclipse進行調試也是沒問題的。

第四步:當你使用完wifi調試的時候,請連接手機後cmd輸入adb usb,切換回usb調試。

『肆』 android 代碼怎麼實時監控連接當前wifi熱點的設備的連接或斷開事件

請參考以下代碼實現監控:
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobNetInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
// BSToast.showLong(context, "網路不可以用");
// 改變背景或者 處理網路的全局變數
} else {
// 改變背景或者 處理網路的全局變數
}
把上的代碼放到一個廣播裡面。。

『伍』 Android:通過WifiManager監聽Wifi信號強弱

先來了解下Android如何獲取wifi的信息:

WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE);

WifiInfo wifiInfo = wifi_service.getConnectionInfo();

其中WifiManager是管理wifi的最重要的類,詳細請參考

http://developer.android.com/reference/android/net/wifi/WifiManager.html

其中wifiInfo有以下的方法:

wifiinfo.getBSSID();

wifiinfo.getSSID();

wifiinfo.getIpAddress();獲取IP地址。

wifiinfo.getMacAddress();獲取MAC地址。

wifiinfo.getNetworkId();獲取網路ID。

wifiinfo.getLinkSpeed();獲取連接速度,可以讓用戶獲知這一信息。

wifiinfo.getRssi();獲取RSSI,RSSI就是接受信號強度指示。在這可以直 接和華為提供的Wi-Fi信號閾值進行比較來提供給用戶,讓用戶對網路或地理位置做出調整來獲得最好的連接效果。

這里得到信號強度就靠wifiinfo.getRssi();這個方法。得到的值是一個0到-100的區間值,是一個int型數據,其中0到-50表示信號最好,-50到-70表示信號偏差,小於-70表示最差,有可能連接不上或者掉線,一般Wifi已斷則值為-200。

界面很簡單,只有一個ImageView用來顯示圖片,activity_main.xml:

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

    android:layout_width="match_parent"

    android:layout_height="match_parent" >

    <ImageView

        android:id="@+id/wifi_image"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_marginLeft="145dp"

        android:layout_gravity="center" />

</LinearLayout>

用於獲得信號強度並改變圖片的Activity:MainActivity

package com.my.phonesingle;

import java.util.Timer;

import java.util.TimerTask;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.net.wifi.WifiInfo;

import android.net.wifi.WifiManager;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.widget.ImageView;

import android.widget.Toast;

public class MainActivity extends Activity {

private WifiInfo wifiInfo = null; //獲得的Wifi信息

private WifiManager wifiManager = null; //Wifi管理器

private Handler handler;

private ImageView wifi_image; //信號圖片顯示

private int level; //信號強度值

@SuppressLint("HandlerLeak")

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//圖片控制項初始化

wifi_image = (ImageView) findViewById(R.id.wifi_image);

// 獲得WifiManager

wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);

// 使用定時器,每隔5秒獲得一次信號強度值

Timer timer = new Timer();

timer.scheleAtFixedRate(new TimerTask() {

@Override

public void run() {

wifiInfo = wifiManager.getConnectionInfo();

//獲得信號強度值

level = wifiInfo.getRssi();

//根據獲得的信號強度發送信息

if (level <= 0 && level >= -50) {

Message msg = new Message();

msg.what = 1;

handler.sendMessage(msg);

} else if (level < -50 && level >= -70) {

Message msg = new Message();

msg.what = 2;

handler.sendMessage(msg);

} else if (level < -70 && level >= -80) {

Message msg = new Message();

msg.what = 3;

handler.sendMessage(msg);

} else if (level < -80 && level >= -100) {

Message msg = new Message();

msg.what = 4;

handler.sendMessage(msg);

} else {

Message msg = new Message();

msg.what = 5;

handler.sendMessage(msg);

}

}

}, 1000, 5000);

// 使用Handler實現UI線程與Timer線程之間的信息傳遞,每5秒告訴UI線程獲得wifiInto

handler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

// 如果收到正確的消息就獲取WifiInfo,改變圖片並顯示信號強度

case 1:

wifi_image.setImageResource(R.drawable.single4);

Toast.makeText(MainActivity.this,

"信號強度:" + level + " 信號最好", Toast.LENGTH_SHORT)

.show();

break;

case 2:

wifi_image.setImageResource(R.drawable.single3);

Toast.makeText(MainActivity.this,

"信號強度:" + level + " 信號較好", Toast.LENGTH_SHORT)

.show();

break;

case 3:

wifi_image.setImageResource(R.drawable.single2);

Toast.makeText(MainActivity.this,

"信號強度:" + level + " 信號一般", Toast.LENGTH_SHORT)

.show();

break;

case 4:

wifi_image.setImageResource(R.drawable.single1);

Toast.makeText(MainActivity.this,

"信號強度:" + level + " 信號較差", Toast.LENGTH_SHORT)

.show();

break;

case 5:

wifi_image.setImageResource(R.drawable.single0);

Toast.makeText(MainActivity.this,

"信號強度:" + level + " 無信號", Toast.LENGTH_SHORT)

.show();

break;

default:

//以防萬一

wifi_image.setImageResource(R.drawable.single0);

Toast.makeText(MainActivity.this, "無信號",

Toast.LENGTH_SHORT).show();

}

}

};

}

}

然後只需要打開Wifi測試一下,就行啦!

『陸』 android監聽wifi狀態改變的廣播靠譜嗎

1、靠譜,這是android的基本常識!
2、只要wifi的底層驅動和wifi模塊沒有問題,廣播消息不會被其他應用堵塞下,監聽wifi狀態,都會收到wifi狀態改變的消息的!

『柒』 Android的WiFi功能總結

先進行WiFi許可權的聲明

<!-- 獲取WiFi狀態 -->

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<!--  api <= Android29調用setWifiEnabled  -->

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

<!-- 定位許可權(api >= 23 用於 WIFI掃描)-->

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

注意:ACCESS_FINE_LOCATION和ACCESS_COARSE_LOCATION是危險級許可權需要使用中還需要動態申請,申請其中一個即可。

WifiManager mWifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);

if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.R) {

Intent panelIntent =new Intent(Settings.Panel.ACTION_WIFI);

startActivityForResult(panelIntent,null);

}else{ mWifiManager.setWifiEnabled(!isEnable);}

可以通過監聽系統廣播來了解WiFi狀態。

WIFI_STATE_CHANGED_ACTION:WiFi開關狀態;

SCAN_RESULTS_AVAILABLE_ACTION:WiFi列表變化;

RSSI_CHANGED_ACTION:WiFi信號強度變化。

IntentFilter mFilter =new IntentFilter();

mFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);

mFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);

mFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);

mReceiver =new BroadcastReceiver() {

@Override

public void onReceive(Context context,Intent intent) {

    handleEvent(intent);

}

};

registerReceiver(mReceiver, mFilter);

private void handleEvent(Intent intent) {

String action = intent.getAction();

if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {

final int wifiState =mWifiManager.getWifiState();

if(wifiState ==WifiManager.WIFI_STATE_ENABLED){

    postDelayed(()->{mRefreshLayout.autoRefresh();},1000);

}

}else if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action)) {

}else if (WifiManager.RSSI_CHANGED_ACTION.equals(action)) {

if(System.currentTimeMillis() -mLastUpateWifiRssiTime <1000){//刷新太快

            return;

}

}

updateWifiChange();

}

切記:wifistate切換到WifiManager.WIFI_STATE_ENABLED,mWifiManager.isWifiEnabled()需要有個等待時間切換。

3的基礎上解析廣播應答

private void updateWifiChange() {

final int wifiState =mWifiManager.getWifiState();

switch (wifiState) {

case WifiManager.WIFI_STATE_ENABLED:

ArrayListresults = (ArrayList)mWifiManager.getScanResults();

updateApListView(results);

mWlanSb.setChecked(mWifiManager.isWifiEnabled() );

break;

case WifiManager.WIFI_STATE_ENABLING:

break;

case WifiManager.WIFI_STATE_DISABLING:

mAdapter.clearData();

mWlanSb.setChecked(mWifiManager.isWifiEnabled() );

break;

case WifiManager.WIFI_STATE_DISABLED:

break;

}

}

『捌』 什麼安卓軟體可以監控wifi流量

LBE安全大師,360安全衛士等防護軟體都可以監控wifi流量
安全軟體分為殺毒軟體,系統工具和反流氓軟體。安全軟體是一種可以對病毒、木馬等一切已知的對計算機有危害的程序代碼進行清除的程序工具。安全軟體也是輔助您管理電腦安全的軟體程序,安全軟體的好壞決定了殺毒的質量,通過VB100以及微軟WINDOWS驗證的殺毒軟體才是安全軟體領域的最好選擇
軟體原理
安全軟體中反病毒軟體原理
反病毒軟體的任務是實時監控和掃描磁碟。部分反病毒軟體通過在系統添加驅動程序的方式,進駐系統,並且隨操作系統啟動。大部分的殺毒軟體還具有防火牆功能。
反病毒軟體的實時監控方式因軟體而異。有的反病毒軟體,是通過在內存里劃分一部分空間,將電腦里流過內存的數據與反病毒軟體自身所帶的病毒庫(包含病毒定義)的特徵碼相比較,以判斷是否為病毒。另一些反病毒軟體則在所劃分到的內存空間裡面,虛擬執行系統或用戶提交的程序,根據其行為或結果作出判斷。
而掃描磁碟的方式,則和上面提到的實時監控的第一種工作方式一樣,只是在這里,反病毒軟體將會將磁碟上所有的文件(或者用戶自定義的掃描范圍內的文件)做一次檢查。

閱讀全文

與android監控wifi狀態相關的資料

熱點內容
奔跑程序員 瀏覽:464
伺服器如何搭建類似github 瀏覽:290
明日之後安卓太卡怎麼辦 瀏覽:502
如何使用命令方塊找到村莊 瀏覽:766
泛函壓縮映像原理 瀏覽:521
win10清除文件夾瀏覽記錄 瀏覽:964
如何查看伺服器域中所有服務 瀏覽:384
學mastercam91編程要多久 瀏覽:999
如何查伺服器地址和埠 瀏覽:911
教學雲平台app怎麼下載 瀏覽:389
單片機510教學視頻 瀏覽:624
陝西信合app怎麼查看自己的存款 瀏覽:663
風冷冰箱有壓縮機 瀏覽:274
android實現wifi連接wifi 瀏覽:669
飛豬app怎麼幫別人值機 瀏覽:924
筆記本開我的世界伺服器地址 瀏覽:546
怎樣隱藏bat命令 瀏覽:127
android開發創意 瀏覽:138
京劇貓為什麼進不去伺服器 瀏覽:784
怎麼自己免費製作一個手機app 瀏覽:582