Android wifi开发

本文详细介绍了一个基本的Android WiFi开发流程,包括配置权限、获取WiFi服务、注册监听器、连接WiFi及获取本地IP地址等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里给出一篇基本的wifi开发流程,希望对涉及到利用wifi进行网络传输的应用有一定帮助

1 AndroidManifest.xml中配置

    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" >
    </uses-permission>
    <uses-permission android:name="android.permission.INTERNET" >
    </uses-permission>

2 获取wifi服务,并开启wifi

if (wifiManager == null)
    wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (!wifiManager.isWifiEnabled()) {
    wifiManager.setWifiEnabled(true);
}

3 注册wifi扫描监听器,并开始扫描

wifiNames = new ArrayList<String>();
wifiDevices = new ArrayList<WifiConfiguration>();
registerReceiver(wifiReceiver, new IntentFilter(
		WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
wifiManager.startScan();

4 wifi扫描监听器

private final BroadcastReceiver wifiReceiver = new BroadcastReceiver() {
	@Override
	public void onReceive(Context context, Intent intent) {
		List<WifiConfiguration> wcList = wifiManager
					.getConfiguredNetworks();
		WifiConfiguration wc = null;
		wifiNames.clear();
		wifiDevices.clear();
		for (int i = 0, len = wcList.size(); i < len; i++) {
			wc = wcList.get(i);
			if (!wifiNames.contains(wc.SSID)) {
				wifiNames.add(wc.SSID);
				wifiDevices.add(wc);
			}
		}
	};

5 获取到周围wifi列表后,让手机连上该wifi。(对wifi的连接我没有做具体的测试,希望对这段代码有问题的朋友可以给出评论)

WifiConfiguration wc = wifiDevices.get(index);
int resId = wifiManager.addNetwork(wc);
boolean isSucc = wifiManager.enableNetwork(resId, true);
isSucc = wifiManager.reassociate();

6 获取本机的IP地址,通过网上提供的一个方法获取,不过似乎不是十分的准确

public String getLocalIpAddress() {
		try {
			for (Enumeration<NetworkInterface> en = NetworkInterface
					.getNetworkInterfaces(); en.hasMoreElements();) {
				NetworkInterface intf = en.nextElement();
				for (Enumeration<InetAddress> enumIpAddr = intf
						.getInetAddresses(); enumIpAddr.hasMoreElements();) {
					InetAddress inetAddress = enumIpAddr.nextElement();
					if (!inetAddress.isLoopbackAddress()) {
						return inetAddress.getHostAddress().toString();
					}
				}
			}
		} catch (SocketException ex) {
			Log.e(TAG, ex.toString());
		}
		return null;
	}

7 连接到wifi后,通过本机IP地址便可以进行相关网络开发




 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值