我是靠谱客的博主 缥缈煎饼,最近开发中收集的这篇文章主要介绍Android入门项目(六,进阶学习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


二,功能清单


  • 打开和关闭wifi

  • 扫描附近的wifi,并展示在ListView上

  • ListView下拉刷新

  • 广播动态获取wifi的状态

  • 通过输入密码连接到wifi

  • 直接连接配置过的wifi

  • 断开指定连接

  • 开启和关闭热点


三,认识相关类和概念


三个关键类:

  • WifiManager(wifi统一管理,进行各种wifi操作)

  • WifiInfo(描述当前连接的wifi热点信息)

  • WiFiConfiguration(wifi网络配置信息)

  • ScanResult(描述扫描出的wifi热点信息)

四大关键术语:

  • [ SSID(描述wifi热点的名称)

  • BSSID(热点的MAC地址)

  • NetworkID(数字型的id)

  • RSSI(描述wifi信号强弱的值,官方叫做level)


四,注册广播接收者



五,广播接收者


/**

  • 广播接收者

*/

public static class NetworkBroadcastReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

//获得WifiManager的实例对象

WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);

switch (intent.getAction()) {

//WIFI状态发生变化

case WifiManager.WIFI_STATE_CHANGED_ACTION:

switch (intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN)) {

case WifiManager.WIFI_STATE_ENABLING:

Log.i(TAG, “onReceive: 正在打开 WIFI…”);

break;

case WifiManager.WIFI_STATE_ENABLED:

Log.i(TAG, “onReceive: WIFI 已打开”);

mCallBackHandler.sendEmptyMessage(WIFI_STATE_ENABLED);

break;

case WifiManager.WIFI_STATE_DISABLING:

Log.i(TAG, “onReceive: 正在关闭 WIFI…”);

break;

case WifiManager.WIFI_STATE_DISABLED:

Log.i(TAG, “onReceive: WIFI 已关闭”);

mCallBackHandler.sendEmptyMessage(WIFI_STATE_DISABLED);

break;

case WifiManager.WIFI_STATE_UNKNOWN:

default:

Log.i(TAG, “onReceive: WIFI 状态未知!”);

break;

}

break;

// WIFI扫描完成

case WifiManager.SCAN_RESULTS_AVAILABLE_ACTION:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {

boolean isUpdated = intent.getBooleanExtra(WifiManager.EXTRA_RESULTS_UPDATED, false);

Log.i(TAG, "onReceive: WIFI扫描 " + (isUpdated ? “完成” : “未完成”));

} else {

Log.i(TAG, “onReceive: WIFI扫描完成”);

}

Message scanResultsMessage = Message.obtain();

scanResultsMessage.what = SCAN_RESULTS_UPDATED;

scanResultsMessage.obj = wifiManager.getScanResults();

mCallBackHandler.sendMessage(scanResultsMessage);

break;

//WIFI网络状态变化通知

case WifiManager.NETWORK_STATE_CHANGED_ACTION:

WifiInfo wifiInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);

if (null != wifiInfo && wifiInfo.getSupplicantState() == SupplicantState.COMPLETED) {

String ssid = wifiInfo.getSSID();

Log.i(TAG, "onReceive: 网络连接成功 ssid = " + ssid);

}

break;

//WIFI连接状态变化的时候

case WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION:

boolean isConnected = intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false);

Log.i(TAG, "onReceive: SUPPLICANT_CONNECTION_CHANGE_ACTION isConnected = " + isConnected);

break;

//wifi连接结果通知 WIFI连接请求状态发生改变

case WifiManager.SUPPLICANT_STATE_CHANGED_ACTION:

// 获取连接状态

SupplicantState supplicantState = intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE);

Message logMessage = Message.obtain();

logMessage.what = WIFI_CONNECT_LOG;

logMessage.obj = supplicantState.toString();

logMessage.obj = supplicantState.toString();

mCallBackHandler.sendMessage(logMessage);

switch (supplicantState) {

case INTERFACE_DISABLED: // 接口禁用

Log.i(TAG, “onReceive: INTERFACE_DISABLED 接口禁用”);

break;

case DISCONNECTED:// 断开连接

// Log.i(TAG, “onReceive: DISCONNECTED:// 断开连接”);

// break;

case INACTIVE: // 不活跃的

WifiInfo connectFailureInfo = wifiManager.getConnectionInfo();

Log.i(TAG, "onReceive: INACTIVE 不活跃的 connectFailureInfo = " + connectFailureInfo);

if (null != connectFailureInfo) {

Message wifiConnectFailureMessage = Message.obtain();

wifiConnectFailureMessage.what = WIFI_CONNECT_FAILURE;

wifiConnectFailureMessage.obj = connectFailureInfo.getSSID();

mCallBackHandler.sendMessage(wifiConnectFailureMessage);

// 断开连接

int networkId = connectFailureInfo.getNetworkId();

boolean isDisable = wifiManager.disableNetwork(networkId);

boolean isDisconnect = wifiManager.disconnect();

Log.i(TAG, "onReceive: 断开连接 = " + (isDisable && isDisconnect));

}

break;

case SCANNING: // 正在扫描

Log.i(TAG, “onReceive: SCANNING 正在扫描”);

break;

case AUTHENTICATING: // 正在验证

Log.i(TAG, “onReceive: AUTHENTICATING: // 正在验证”);

break;

case ASSOCIATING: // 正在关联

Log.i(TAG, “onReceive: ASSOCIATING: // 正在关联”);

break;

case ASSOCIATED: // 已经关联

Log.i(TAG, “onReceive: ASSOCIATED: // 已经关联”);

break;

case FOUR_WAY_HANDSHAKE: // 四次握手

Log.i(TAG, “onReceive: FOUR_WAY_HANDSHAKE:”);

break;

case GROUP_HANDSHAKE: // 组握手

Log.i(TAG, “onReceive: GROUP_HANDSHAKE:”);

break;

case COMPLETED: // 完成

Log.i(TAG, “onReceive: WIFI_CONNECT_SUCCESS: // 完成”);

WifiInfo connectSuccessInfo = wifiManager.getConnectionInfo();

if (null != connectSuccessInfo) {

Message wifiConnectSuccessMessage = Message.obtain();

wifiConnectSuccessMessage.what = WIFI_CONNECT_SUCCESS;

wifiConnectSuccessMessage.obj = connectSuccessInfo.getSSID();

mCallBackHandler.sendMessage(wifiConnectSuccessMessage);

}

break;

case DORMANT: // 休眠

Log.i(TAG, “onReceive: DORMANT:”);

break;

case UNINITIALIZED: // 未初始化

Log.i(TAG, “onReceive: UNINITIALIZED: // 未初始化”);

break;

case INVALID: // 无效的

Log.i(TAG, “onReceive: INVALID: // 无效的”);

break;

default:

break;

}

break;

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

default:

break;

}

}

}

相关API请参阅:官网WifiManagerAPI


六,权限



七,打开WIFI


/**

  • 打开Wifi

*/

public void openWiFi() {

if (!isWifiEnabled() && null != mWifiManager) {

mWifiManager.setWifiEnabled(true);

}

}


八,关闭WIFI


/**

  • 关闭Wifi

*/

public void closeWiFi() {

if (isWifiEnabled() && null != mWifiManager) {

mWifiManager.setWifiEnabled(false);

}

}


九,扫描附近的WIFI


/**

  • 扫描附近的WIFI

*/

public void startScan() {

if (null != mWifiManager) {

mWifiManager.startScan();

}

}


十,获取WIFI列表


/**

  • 获取最近扫描的WIFI热点

  • @return WIFI热点列表

*/

public List getScanResults() {

// 得到扫描结果

if (null != mWifiManager) {

return mWifiManager.getScanResults();

}

return null;

}


十一,通过密码连接到WIFI


/**

  • 连接到开放网络

  • @param ssid 热点名

  • @return 配置是否成功

*/

public boolean connectOpenNetwork(@NonNull String ssid) {

// 获取networkId

int networkId = setOpenNetwork(ssid);

if (-1 != networkId) {

// 保存配置

boolean isSave = saveConfiguration();

// 连接网络

boolean isEnable = enableNetwork(networkId);

return isSave && isEnable;

}

return false;

最后

以上就是缥缈煎饼为你收集整理的Android入门项目(六,进阶学习的全部内容,希望文章能够帮你解决Android入门项目(六,进阶学习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(664)

评论列表共有 0 条评论

立即
投稿
返回
顶部