Android WiFi开发 (一)扫描、连接、信息

在平常开发中经常会涉及到wifi相关的内容,在此将之前所用到的整理一下,以免忘记。

操作wifi的相关类,主要放在android.net.wifi包下面。使用wifi相关方法需要申请一些权限:

 

ACCESS_WIFI_STATE 获取WiFi状态。

CHANGE_WIFI_STATE     改变WiFi状态。

CHANGE_WIFI_MULTICAST_STATE 改变WiFi多播状态

申请权限方式:在AndroidManifest.xml文件中填写

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

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


wifi相关操作所需要用到的类。


先说一下wifi的基本使用情况。

import java.util.List;
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 android.net.wifi.WifiManager.WifiLock;
import android.widget.Toast;

public class WifiAdmin {
    // 定义WifiManager对象   
    private WifiManager mWifiManager;  
    // 定义WifiInfo对象   
    private WifiInfo mWifiInfo;  
    // 扫描出的网络连接列表   
    private List<ScanResult> mWifiList;  
    // 网络连接列表   
    private List<WifiConfiguration> mWifiConfiguration;  
    // 定义一个WifiLock   
    WifiLock mWifiLock;
 
    // 构造器   
    public WifiAdmin(Context context) {  
        // 取得WifiManager对象   
        mWifiManager = (WifiManager) context  
                .getSystemService(Context.WIFI_SERVICE);  
        // 取得WifiInfo对象   
        mWifiInfo = mWifiManager.getConnectionInfo();  
    }  
  
    // 打开WIFI   
    public void openWifi(Context context) {  
        if (!mWifiManager.isWifiEnabled()) {  
            mWifiManager.setWifiEnabled(true);
        }else if (mWifiManager.getWifiState() == 2) {
    		Toast.makeText(context,"亲,Wifi正在开启,不用再开了", Toast.LENGTH_SHORT).show();
		}else{
        	Toast.makeText(context,"亲,Wifi已经开启,不用再开了", Toast.LENGTH_SHORT).show();
        }
    }  
  
    // 关闭WIFI   
    public void closeWifi(Context context) {  
        if (mWifiManager.isWifiEnabled()) {  
            mWifiManager.setWifiEnabled(false);  
        }else if(mWifiManager.getWifiState() == 1){
        	Toast.makeText(context,"亲,Wifi已经关闭,不用再关了", Toast.LENGTH_SHORT).show();
        }else if (mWifiManager.getWifiState() =&
  • 36
    点赞
  • 164
    收藏
    觉得还不错? 一键收藏
  • 76
    评论
wifi的操作。 要实现这个Android wifi开发程序,我们需要使用以下几个类: 1. WifiManager:用于管理wifi连接。 2. WifiInfo:用于获取当前连接wifi信息。 3. WifiConfiguration:用于设置wifi连接的配置参数。 4. WifiScan:用于扫描周围的wifi。 下面是一个示例代码,展示如何使用这些类来实现wifi扫描连接、断开操作: ``` public class MainActivity extends AppCompatActivity { private WifiManager wifiManager; private WifiScanReceiver wifiScanReceiver; private List<ScanResult> wifiList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); wifiScanReceiver = new WifiScanReceiver(); registerReceiver(wifiScanReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); if(wifiManager.isWifiEnabled()){ wifiManager.startScan(); Log.d("WIFI", "Started Scanning"); }else{ Toast.makeText(getApplicationContext(), "WiFi is disabled.. Please enable it", Toast.LENGTH_LONG).show(); wifiManager.setWifiEnabled(true); } } public void connectToWifi(String ssid, String password){ WifiConfiguration wifiConfig = new WifiConfiguration(); wifiConfig.SSID = String.format("\"%s\"", ssid); wifiConfig.preSharedKey = String.format("\"%s\"", password); WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); int networkId = wifiManager.addNetwork(wifiConfig); wifiManager.disconnect(); wifiManager.enableNetwork(networkId, true); wifiManager.reconnect(); } public void disconnectFromWifi(){ WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); wifiManager.disconnect(); } private class WifiScanReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { wifiList = wifiManager.getScanResults(); Log.d("WIFI", "Scan Result: " + wifiList.toString()); } } } ``` 在这个示例代码中,我们首先获取了WIFI_SERVICE实例,然后注册了一个WifiScanReceiver来接收wifi扫描的结果。 在onCreate()方法中,我们首先检查wifi是否已经启用。如果已经启用,则调用wifiManager.startScan()方法来启动扫描,并在Logcat中输出“Started Scanning”的消息。 如果wifi未启用,则我们会弹出一条Toast消息来提示用户启用wifi,然后调用wifiManager.setWifiEnabled(true)方法来启用wifi。 接下来,我们定义了connectToWifi()方法和disconnectFromWifi()方法来分别连接和断开wifi。 在connectToWifi()方法中,我们首先创建了一个WifiConfiguration对象,并设置其SSID和preSharedKey属性为连接wifi名称和密码。然后,我们调用wifiManager.addNetwork(wifiConfig)方法来添加一个新的wifi连接配置,并获取新添加的连接的networkId。接着,我们调用wifiManager.disconnect()方法来断开当前连接wifi,并调用wifiManager.enableNetwork(networkId, true)方法来激活新添加的连接配置。最后,我们调用wifiManager.reconnect()方法来连接到新添加的wifi网络。 在disconnectFromWifi()方法中,我们只需要调用wifiManager.disconnect()方法即可断开当前连接wifi。 最后,我们通过定义一个WifiScanReceiver类来接收wifi扫描的结果,并在Logcat中输出扫描结果。当扫描结果更新时,系统会自动调用WifiScanReceiver的onReceive()方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 76
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值