写一个Android wifi开发程序,包括wifi扫描、连接、断开
时间: 2023-05-28 19:02:16 浏览: 210
安卓开发 wifi应用
4星 · 用户满意度95%
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()方法。
阅读全文