Android wifi开发
来源:互联网 发布:手机淘宝卖家开通花呗 编辑:程序博客网 时间:2024/05/22 11:46
http://blog.csdn.net/einarzhang/article/details/6963192
这里给出一篇基本的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地址便可以进行相关网络开发
- Android开发--WIFI开发
- Android wifi开发
- android wifi驱动开发
- Android开发 --- Wifi 管理
- android WIFI连接开发
- android WIFI连接开发
- Android WIFI开发
- android之wifi开发
- android WIFI连接开发
- android wifi开发介绍
- Android WIFI开发
- android wifi开发
- Android wifi开发
- android之wifi开发
- android之wifi开发
- android之wifi开发
- android WIFI连接开发
- Android wifi开发
- strftime操作时间详解
- Mybatis源码赏析
- 有意思的快速排序
- oracle union intersect minus
- 基于platform简单驱动,probe函数中实现file_operations
- Android wifi开发
- 扼住有线电视咽喉:解码自制剧
- [LeetCode]Scramble String
- VIM搭建IDE环境
- C++内部数据类型和非内部数据类型
- sql 查单列重复
- C/C++中的extern关键字详解
- Hibernate 配置详解(12) 其实我也不想用这么土的名字
- 用户指南 64位win7安装驱动具体过程【乡巴佬】