public class WifiManager
extends Object
java.lang.Object | |
↳ | android.net.wifi.WifiManager |
该课程提供了用于管理Wi-Fi连接的各个方面的主要API。 通过调用Context.getSystemService(Context.WIFI_SERVICE)
获取此类的实例。 它涉及几类物品:
ConnectivityManager
.
Nested classes |
|
---|---|
class |
WifiManager.MulticastLock 允许应用程序接收Wifi多播数据包。 |
class |
WifiManager.WifiLock 允许应用程序保持Wi-Fi无线电唤醒。 |
class |
WifiManager.WpsCallback 开始WPS动作的回调调用接口 |
Public methods |
|
---|---|
int |
addNetwork(WifiConfiguration config) 将新的网络描述添加到配置的网络组。 |
static int |
calculateSignalLevel(int rssi, int numLevels) 计算信号的电平。 |
void |
cancelWps(WifiManager.WpsCallback listener) 取消任何正在进行的Wi-Fi保护设置 |
static int |
compareSignalLevel(int rssiA, int rssiB) 比较两个信号强度。 |
WifiManager.MulticastLock |
createMulticastLock(String tag) 创建一个新的MulticastLock |
WifiManager.WifiLock |
createWifiLock(String tag) 创建一个新的WifiLock。 |
WifiManager.WifiLock |
createWifiLock(int lockType, String tag) 创建一个新的WifiLock。 |
boolean |
disableNetwork(int netId) 禁用配置的网络。 |
boolean |
disconnect() 从当前活动的接入点解除关联。 |
boolean |
enableNetwork(int netId, boolean disableOthers) 允许先前配置的网络与之关联。 |
List<WifiConfiguration> |
getConfiguredNetworks() 返回请求者中配置的所有网络的列表。 |
WifiInfo |
getConnectionInfo() 返回有关当前Wi-Fi连接的动态信息(如果有的话)。 |
DhcpInfo |
getDhcpInfo() 如果有的话,从上次成功的DHCP请求中返回DHCP分配的地址。 |
List<ScanResult> |
getScanResults() 返回最新的接入点扫描结果。 |
int |
getWifiState() 获取启用Wi-Fi的状态。 |
boolean |
is5GHzBandSupported() |
boolean |
isDeviceToApRttSupported() |
boolean |
isEnhancedPowerReportingSupported() |
boolean |
isP2pSupported() |
boolean |
isPreferredNetworkOffloadSupported() |
boolean |
isScanAlwaysAvailable() 检查扫描是否始终可用。 |
boolean |
isTdlsSupported() |
boolean |
isWifiEnabled() 返回Wi-Fi是启用还是禁用。 |
boolean |
pingSupplicant() 检查请求者守护进程是否响应请求。 |
boolean |
reassociate() 重新连接到当前活动的接入点,即使我们已经连接。 |
boolean |
reconnect() 如果我们当前断开连接,请重新连接到当前活动的接入点。 |
boolean |
removeNetwork(int netId) 从配置的网络列表中删除指定的网络。 |
boolean |
saveConfiguration() 告诉请求者坚持当前配置的网络列表。 |
void |
setTdlsEnabled(InetAddress remoteIPAddress, boolean enable) 在特定的本地路由上启用/禁用TDLS。 |
void |
setTdlsEnabledWithMacAddress(String remoteMacAddress, boolean enable) 类似于 |
boolean |
setWifiEnabled(boolean enabled) 启用或禁用Wi-Fi。 |
boolean |
startScan() 请求扫描访问点。 |
void |
startWps(WpsInfo config, WifiManager.WpsCallback listener) 启动Wi-Fi保护设置 |
int |
updateNetwork(WifiConfiguration config) 更新现有配置网络的网络描述。 |
Protected methods |
|
---|---|
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
String ACTION_PICK_WIFI_NETWORK
活动操作:选择要连接的Wi-Fi网络。
输入:没有。
输出:没有。
常量值:“android.net.wifi.PICK_WIFI_NETWORK”
String ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE
活动操作:显示允许用户启用扫描即使关闭Wi-Fi时也可用的系统活动。
使用onActivityResult(int, int, Intent)
回调函数发布此活动结果的通知。 如果扫描始终模式已打开,则RESULT_CANCELED
如果用户拒绝了请求或发生了错误,则resultCode
将为RESULT_OK
。
常量值:“android.net.wifi.action.REQUEST_SCAN_ALWAYS_AVAILABLE”
String EXTRA_BSSID
给出我们连接的接入点的BSSID的字符串的查找键。 只有在新状态为“连接”时才存在。 检索getStringExtra(String)
。
常数值:“bssid”
String EXTRA_NETWORK_INFO
与Wi-Fi网络关联的NetworkInfo
对象的查找键。 用getParcelableExtra(String)
检索。
常量值:“networkInfo”
String EXTRA_NEW_STATE
为查找关键 SupplicantState
描述新状态检索与 getParcelableExtra(String)
。
常量值:“newState”
String EXTRA_PREVIOUS_WIFI_STATE
以前的Wi-Fi状态。
也可以看看:
常量值:“previous_wifi_state”
String EXTRA_RESULTS_UPDATED
boolean
查找键代表先前的 startScan()
操作的结果,报告为 SCAN_RESULTS_AVAILABLE_ACTION
。
常量值:“resultsUpdated”
String EXTRA_SUPPLICANT_CONNECTED
布尔值的查找键,指示与请求者守护程序的连接是否已获取或丢失。 true
表示现在存在连接。 用getBooleanExtra(String, boolean)
检索。
常数值:“连接”
String EXTRA_SUPPLICANT_ERROR
SupplicantState
的查找密钥,描述请求方错误代码(如果有 getIntExtra(String, int)
。
也可以看看:
常量值:“supplicantError”
String EXTRA_WIFI_INFO
WifiInfo
对象的查找关键字,提供关于我们所连接的接入点的信息。 只有在新状态为“连接”时才存在。 用getParcelableExtra(String)
检索。
常数值:“wifiInfo”
String EXTRA_WIFI_STATE
int的查找键,指示Wi-Fi是启用,禁用,启用,禁用还是未知。 用getIntExtra(String, int)
检索它。
也可以看看:
常数值:“wifi_state”
String NETWORK_IDS_CHANGED_ACTION
配置的网络的网络ID可能已更改。
常量值:“android.net.wifi.NETWORK_IDS_CHANGED”
String NETWORK_STATE_CHANGED_ACTION
广播意图操作指示Wi-Fi连接状态已更改。 一个额外的东西以NetworkInfo
对象的形式提供新的状态。 如果新状态为“连接”,则额外的额外资源可以提供接入点的BSSID和WifiInfo。 作为String
。
常量值:“android.net.wifi.STATE_CHANGE”
String RSSI_CHANGED_ACTION
RSSI(信号强度)已经改变。
也可以看看:
常量值:“android.net.wifi.RSSI_CHANGED”
String SCAN_RESULTS_AVAILABLE_ACTION
接入点扫描已完成,结果可从请求方获得。 拨打getScanResults()
即可获得结果。 EXTRA_RESULTS_UPDATED
指示扫描是否成功完成。
常量值:“android.net.wifi.SCAN_RESULTS”
String SUPPLICANT_CONNECTION_CHANGE_ACTION
广播意图操作表示与请求方的连接已建立(现在可以执行Wi-Fi操作)或与请求方的连接已丢失。 一个额外的提供了连接状态作为布尔值,其中true
表示CONNECTED。
也可以看看:
常量值:“android.net.wifi.supplicant.CONNECTION_CHANGE”
String SUPPLICANT_STATE_CHANGED_ACTION
广播意图动作表明建立到接入点的连接状态已SupplicantState
。一个额外提供新的SupplicantState
。 请注意,请求者状态是Wi-Fi特定的,如果您只是对整体连接状态感兴趣,通常不是最有用的东西。
常量值:“android.net.wifi.supplicant.STATE_CHANGE”
int WIFI_MODE_FULL
在这种Wi-Fi锁定模式下,Wi-Fi将保持活动状态,并且将正常运行,即它将尝试自动建立到范围内的记忆接入点的连接,并且如果有记忆,将执行定期扫描接入点,但没有一个在范围内。
常数值:1(0x00000001)
int WIFI_MODE_FULL_HIGH_PERF
在此Wi-Fi锁定模式下,即使在设备屏幕关闭的情况下,Wi-Fi也将保持活动状态,如WIFI_MODE_FULL
模式,但其性能良好,数据包丢失最少,数据包延迟时间WIFI_MODE_FULL
。 这种模式会消耗更多的功率,因此只有在需要这种活动连接时才能使用。
一个示例用例是,即使设备屏幕熄灭,语音连接也需要保持活动状态。 保持常规WIFI_MODE_FULL
锁定将保持wifi连接处于活动状态,但连接可能有损。 在语音通话期间持有WIFI_MODE_FULL_HIGH_PERF
锁定将提高通话质量。
当没有硬件支持时,此锁定模式将具有与 WIFI_MODE_FULL
相同的行为
常量值:3(0x00000003)
int WIFI_MODE_SCAN_ONLY
在此Wi-Fi锁定模式下,Wi-Fi将保持活动状态,但唯一支持的操作是启动扫描以及随后报告扫描结果。 不会尝试自动连接到记忆的接入点,也不会自动执行定期扫描以寻找记忆的接入点。 在此模式下,应用程序必须明确请求扫描。
常量值:2(0x00000002)
String WIFI_STATE_CHANGED_ACTION
广播意图操作表明Wi-Fi已启用,禁用,启用,禁用或未知。 一个额外的提供了这个状态作为一个int。 如果可用,另一个额外提供以前的状态。
常量值:“android.net.wifi.WIFI_STATE_CHANGED”
int WIFI_STATE_DISABLING
Wi-Fi目前正被禁用。 如果成功完成,状态将更改为WIFI_STATE_DISABLED
。
常量值:0(0x00000000)
int WIFI_STATE_ENABLING
Wi-Fi目前正在启用。 如果成功完成,状态将更改为WIFI_STATE_ENABLED
。
常量值:2(0x00000002)
int WIFI_STATE_UNKNOWN
Wi-Fi处于未知状态。 当启用或禁用时发生错误时会发生此状态。
常量值:4(0x00000004)
int WPS_TKIP_ONLY_PROHIBITED
TKIP只禁止
常量值:5(0x00000005)
int addNetwork (WifiConfiguration config)
将新的网络描述添加到配置的网络组。 提供的配置对象的networkId
字段被忽略。
enableNetwork(int, boolean)
.
Parameters | |
---|---|
config |
WifiConfiguration : the set of variables that describe the configuration, contained in a WifiConfiguration object. |
Returns | |
---|---|
int |
the ID of the newly created network description. This is used in other operations to specified the network to be acted upon. Returns -1 on failure. |
int calculateSignalLevel (int rssi, int numLevels)
计算信号的电平。 任何时候显示信号都应该使用这个。
Parameters | |
---|---|
rssi |
int : The power of the signal measured in RSSI. |
numLevels |
int : The number of levels to consider in the calculated level. |
Returns | |
---|---|
int |
A level of the signal, given in the range of 0 to numLevels-1 (both inclusive). |
void cancelWps (WifiManager.WpsCallback listener)
取消任何正在进行的Wi-Fi保护设置
Parameters | |
---|---|
listener |
WifiManager.WpsCallback : for callbacks on success or failure. Can be null. |
Throws | |
---|---|
IllegalStateException |
if the WifiManager instance needs to be initialized again |
int compareSignalLevel (int rssiA, int rssiB)
比较两个信号强度。
Parameters | |
---|---|
rssiA |
int : The power of the first signal measured in RSSI. |
rssiB |
int : The power of the second signal measured in RSSI. |
Returns | |
---|---|
int |
Returns <0 if the first signal is weaker than the second signal, 0 if the two signals have the same strength, and >0 if the first signal is stronger than the second signal. |
WifiManager.MulticastLock createMulticastLock (String tag)
创建一个新的MulticastLock
Parameters | |
---|---|
tag |
String : a tag for the MulticastLock to identify it in debugging messages. This string is never shown to the user under normal conditions, but should be descriptive enough to identify your application and the specific MulticastLock within it, if it holds multiple MulticastLocks. |
Returns | |
---|---|
WifiManager.MulticastLock |
a new, unacquired MulticastLock with the given tag. |
也可以看看:
WifiManager.WifiLock createWifiLock (String tag)
创建一个新的WifiLock。
Parameters | |
---|---|
tag |
String : a tag for the WifiLock to identify it in debugging messages. This string is never shown to the user under normal conditions, but should be descriptive enough to identify your application and the specific WifiLock within it, if it holds multiple WifiLocks. |
Returns | |
---|---|
WifiManager.WifiLock |
a new, unacquired WifiLock with the given tag. |
也可以看看:
WifiManager.WifiLock createWifiLock (int lockType, String tag)
创建一个新的WifiLock。
Parameters | |
---|---|
lockType |
int : the type of lock to create. See WIFI_MODE_FULL , WIFI_MODE_FULL_HIGH_PERF and WIFI_MODE_SCAN_ONLY for descriptions of the types of Wi-Fi locks. |
tag |
String : a tag for the WifiLock to identify it in debugging messages. This string is never shown to the user under normal conditions, but should be descriptive enough to identify your application and the specific WifiLock within it, if it holds multiple WifiLocks. |
Returns | |
---|---|
WifiManager.WifiLock |
a new, unacquired WifiLock with the given tag. |
也可以看看:
boolean disableNetwork (int netId)
禁用配置的网络。 指定的网络不会成为关联的候选人。 这可能会导致状态更改事件的异步传递。
Parameters | |
---|---|
netId |
int : the ID of the network as returned by addNetwork(WifiConfiguration) . |
Returns | |
---|---|
boolean |
true if the operation succeeded |
boolean disconnect ()
从当前活动的接入点解除关联。 这可能会导致状态更改事件的异步传递。
Returns | |
---|---|
boolean |
true if the operation succeeded |
boolean enableNetwork (int netId, boolean disableOthers)
允许先前配置的网络与之关联。 如果disableOthers
为真,则所有其他配置的网络都将被禁用,并尝试连接到所选网络。 这可能会导致状态更改事件的异步传递。
注意:如果应用程序的目标SDK版本是LOLLIPOP
或更新版本,即使Wi-Fi已连接,网络通信也可能不会使用Wi-Fi; 流量可能会通过其他网络发送,例如蜂窝数据,蓝牙共享或以太网。 例如,如果提供互联网访问的另一网络(例如蜂窝数据)可用,则流量永远不会使用不提供互联网访问的Wi-Fi网络(例如无线打印机)。 需要确保他们的网络流量使用Wi-Fi应该使用的API,例如应用bindSocket(java.net.Socket)
, openConnection(java.net.URL)
,或bindProcessToNetwork(Network)
这样做。
Parameters | |
---|---|
netId |
int : the ID of the network in the list of configured networks |
disableOthers |
boolean : if true, disable all other networks. The way to select a particular network to connect to is specify true for this parameter. |
Returns | |
---|---|
boolean |
true if the operation succeeded |
List<WifiConfiguration> getConfiguredNetworks ()
返回请求者中配置的所有网络的列表。 并非所有WifiConfiguration字段都会返回。 只填写以下字段:
Returns | |
---|---|
List<WifiConfiguration> |
a list of network configurations in the form of a list of WifiConfiguration objects. Upon failure to fetch or when Wi-Fi is turned off, it can be null. |
WifiInfo getConnectionInfo ()
返回有关当前Wi-Fi连接的动态信息(如果有的话)。
Returns | |
---|---|
WifiInfo |
the Wi-Fi information, contained in WifiInfo . |
DhcpInfo getDhcpInfo ()
如果有的话,从上次成功的DHCP请求中返回DHCP分配的地址。
Returns | |
---|---|
DhcpInfo |
the DHCP information |
List<ScanResult> getScanResults ()
返回最新的接入点扫描结果。
Returns | |
---|---|
List<ScanResult> |
the list of access points found in the most recent scan. An app must hold ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission in order to get valid results. If there is a remote exception (e.g., either a communication problem with the system service or an exception within the framework) an empty list will be returned. |
int getWifiState ()
获取启用Wi-Fi的状态。
Returns | |
---|---|
int |
One of WIFI_STATE_DISABLED , WIFI_STATE_DISABLING , WIFI_STATE_ENABLED , WIFI_STATE_ENABLING , WIFI_STATE_UNKNOWN |
也可以看看:
boolean is5GHzBandSupported ()
Returns | |
---|---|
boolean |
true if this adapter supports 5 GHz band |
boolean isDeviceToApRttSupported ()
Returns | |
---|---|
boolean |
true if this adapter supports Device-to-AP RTT |
boolean isEnhancedPowerReportingSupported ()
Returns | |
---|---|
boolean |
true if this adapter supports advanced power/performance counters |
boolean isP2pSupported ()
Returns | |
---|---|
boolean |
true if this adapter supports WifiP2pManager (Wi-Fi Direct) |
boolean isPreferredNetworkOffloadSupported ()
Returns | |
---|---|
boolean |
true if this adapter supports offloaded connectivity scan |
boolean isScanAlwaysAvailable ()
检查扫描是否始终可用。 如果返回true
,应用程序即使在关闭Wi-Fi时也可以发出startScan()
并获取扫描结果。 要更改此设置,请参阅ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE
。
Returns | |
---|---|
boolean |
boolean isTdlsSupported ()
Returns | |
---|---|
boolean |
true if this adapter supports Tunnel Directed Link Setup |
boolean isWifiEnabled ()
返回Wi-Fi是启用还是禁用。
Returns | |
---|---|
boolean |
true if Wi-Fi is enabled |
也可以看看:
boolean pingSupplicant ()
检查请求者守护进程是否响应请求。
Returns | |
---|---|
boolean |
true if we were able to communicate with the supplicant and it returned the expected response to the PING message. |
boolean reassociate ()
重新连接到当前活动的接入点,即使我们已经连接。 这可能会导致状态更改事件的异步传递。
Returns | |
---|---|
boolean |
true if the operation succeeded |
boolean reconnect ()
如果我们当前断开连接,请重新连接到当前活动的接入点。 这可能会导致状态更改事件的异步传递。
Returns | |
---|---|
boolean |
true if the operation succeeded |
boolean removeNetwork (int netId)
从配置的网络列表中删除指定的网络。 这可能会导致状态更改事件的异步传递。
Parameters | |
---|---|
netId |
int : the integer that identifies the network configuration to the supplicant |
Returns | |
---|---|
boolean |
true if the operation succeeded |
boolean saveConfiguration ()
告诉请求者坚持当前配置的网络列表。
注意:此方法可以更改现有网络的网络ID。 调用此方法后,您应该假设网络ID可能不同。
Returns | |
---|---|
boolean |
true if the operation succeeded |
void setTdlsEnabled (InetAddress remoteIPAddress, boolean enable)
在特定的本地路由上启用/禁用TDLS。
TDLS使两个无线端点能够直接对话,而无需通过管理本地网络的接入点。 它节省了带宽并提高了链路的质量。
此API启用/禁用使用TDLS的选项。 如果启用,底层硬件可以自由使用TDLS或通过接入点的跳频。 如果禁用,现有的TDLS会话将被拆除,硬件被限制使用接入点传输无线数据包。 所有路由的默认值都是'禁用'的,意思是限制使用接入点传输数据包。
Parameters | |
---|---|
remoteIPAddress |
InetAddress : IP address of the endpoint to setup TDLS with |
enable |
boolean : true = setup and false = tear down TDLS |
void setTdlsEnabledWithMacAddress (String remoteMacAddress, boolean enable)
类似于 setTdlsEnabled(InetAddress, boolean)
,除此版本允许您指定具有MAC地址的远程端点。
Parameters | |
---|---|
remoteMacAddress |
String : MAC address of the remote endpoint such as 00:00:0c:9f:f2:ab |
enable |
boolean : true = setup and false = tear down TDLS |
boolean setWifiEnabled (boolean enabled)
启用或禁用Wi-Fi。
Parameters | |
---|---|
enabled |
boolean : true to enable, false to disable. |
Returns | |
---|---|
boolean |
true if the operation succeeds (or if the existing state is the same as the requested state). |
boolean startScan ()
请求扫描访问点。 立即返回。 结果的可用性稍后将通过在完成扫描时发送的异步事件而被发现。
Returns | |
---|---|
boolean |
true if the operation succeeded, i.e., the scan was initiated |
void startWps (WpsInfo config, WifiManager.WpsCallback listener)
启动Wi-Fi保护设置
Parameters | |
---|---|
config |
WpsInfo : WPS configuration (does not support LABEL ) |
listener |
WifiManager.WpsCallback : for callbacks on success or failure. Can be null. |
Throws | |
---|---|
IllegalStateException |
if the WifiManager instance needs to be initialized again |
int updateNetwork (WifiConfiguration config)
更新现有配置网络的网络描述。
Parameters | |
---|---|
config |
WifiConfiguration : the set of variables that describe the configuration, contained in a WifiConfiguration object. It may be sparse, so that only the items that are being changed are non-null . The networkId field must be set to the ID of the existing network being updated. |
Returns | |
---|---|
int |
Returns the networkId of the supplied WifiConfiguration on success. Returns -1 on failure, including when the networkId field of the WifiConfiguration does not refer to an existing network. |
void finalize ()
当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize
方法以处置系统资源或执行其他清理。
的常规协定finalize
是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 finalize
方法可以采取任何行动,包括使该对象再次可用于其他线程; 但是, finalize
的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。
类Object
的finalize
方法Object
执行特殊操作; 它只是正常返回。 Object
子类可能会覆盖此定义。
Java编程语言不保证哪个线程将为任何给定对象调用finalize
方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。
在对对象调用 finalize
方法之后,在Java虚拟机再次确定不再有任何方法可以通过尚未死亡的任何线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。
对于任何给定对象,Java虚拟机不会多次调用 finalize
方法。
由 finalize
方法抛出的任何异常 finalize
导致此对象的终止被暂停,但在其他情况下会被忽略。
Throws | |
---|---|
Throwable |