`
rayln
  • 浏览: 434410 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Wifi网络连接

阅读更多
package com.wifi;

import java.util.List;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo.State;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.util.Log;

public class NetChoice {

	// String wifiSSID="FORTUNETONE";
	Context context;
	WifiManager wifiManager;

	// WifiReceiver wifiReceiver;
	public NetChoice(Context context) {
		this.context = context;
		wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
		// wifiReceiver=new WifiReceiver();
		// context.registerReceiver(wifiReceiver, new
		// IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
	}

	/**
	 * 判断当前网络连接状态 0、无连接 1、3G 2、WIFI
	 * 
	 * @return
	 * @author 2011-08-16
	 */
	public int checkNetworkInfo() {
		int netType = 0;
		ConnectivityManager conMan = (ConnectivityManager) context
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
				.getState();
		State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
				.getState();
		if (mobile == State.CONNECTED || mobile == State.CONNECTING) {
			netType = 1;
		}

		if (wifi == State.CONNECTED || wifi == State.CONNECTING) {
			netType = 2;
		}
		Log.d("carWifi", wifi + "---wifi--state--mobile--" + mobile
				+ "---type--" + netType);
		return netType;
	}

	/**
	 * WIFI勾选 开关
	 * 
	 * @author 2011-08-16
	 */
	public void openWifi() {
		boolean b = false;
		if (!wifiManager.isWifiEnabled()) {
			b = wifiManager.setWifiEnabled(true);
			Log.d("carWifi", "---------open wifi --" + b);
		} else {
			Log.d("carWifi", "-----wifi was open!!--");
		}
	}

	public void closeWifi() {
		if (wifiManager.isWifiEnabled()) {
			wifiManager.setWifiEnabled(false);
		}
	}

	/**
	 * 添加WIFI信息
	 * 
	 * @param wifiList
	 *            搜索到的wifi集合
	 * @param wifiSSID
	 *            wifi名称
	 * @param pwd
	 *            wifi密码
	 * @return wifiId
	 * @author 2011-08-16
	 */
	public int addWifiConfig(List<ScanResult> wifiList, String wifiSSID,
			String pwd) {
		int wifiId = -1;
		if (wifiList != null) {
			for (int i = 0; i < wifiList.size(); i++) {
				ScanResult sr = wifiList.get(i);
				if (sr.SSID.equals(wifiSSID)) {
					WifiConfiguration wc = new WifiConfiguration();
					wc.SSID = "\"" + wifiSSID + "\"";
					wc.preSharedKey = "\"" + pwd + "\"";
					wifiId = wifiManager.addNetwork(wc);
					if (wifiId != -1) {
						return wifiId;
					}
				}
			}
		}

		return wifiId;
	}

	/**
	 * 连接wifi
	 * 
	 * @param wifiId
	 * @return
	 * @author 2011-08-16
	 */
	public boolean connectWifi(int wifiId) {
		for (int i = 0; i < wifiManager.getConfiguredNetworks().size(); i++) {
			WifiConfiguration wc = wifiManager.getConfiguredNetworks().get(i);
			if (wc.networkId == wifiId) {
				return wifiManager.enableNetwork(wc.networkId, true);
			}
		}

		return false;
	}
	public List<WifiConfiguration> getConnectionWifi(){
		return wifiManager.getConfiguredNetworks();
	}
	
	public boolean addWifiConnection(String wifiSSID,String pwd){
		boolean isConnection = false;
		WifiConfiguration wc = new WifiConfiguration();
		wc.SSID = "\"" + wifiSSID + "\"";
		wc.preSharedKey = "\"" + pwd + "\"";
		int wifiId = wifiManager.addNetwork(wc);
		System.out.println("wifiId:"+wifiId);
		if (wifiId != -1) {
			 isConnection = wifiManager.enableNetwork(wifiId, true);
		}
		return isConnection;
	}

	/**
	 * 扫描wifi热点
	 * 
	 * @return wifiList
	 * @author 2011-08-16
	 */
	public List<ScanResult> scanWifi() {
		// wifiManager.startScan();
		return wifiManager.getScanResults();
	}

	// class WifiReceiver extends BroadcastReceiver{
	//
	// @Override
	// public void onReceive(Context context, Intent intent)
	// {
	// // TODO Auto-generated method stub
	// wifiList=wifiManager.getScanResults();
	// }
	//
	// }
}
分享到:
评论

相关推荐

    浅析android下如何通过jni监控wifi网络连接、dhcpcd执行和power电源控制

    Android 下通过 JNI 监控 WiFi 网络连接、dhcpcd 执行和 Power 电源控制 Android 作为一个开源的移动操作系统,具有广泛的应用前景,而 WiFi 网络连接、dhcpcd 执行和 Power 电源控制是 Android 中的三个重要组件。...

    网络游戏-WiFi网络连接方法及装置.zip

    本文将深入探讨“网络游戏-WiFi网络连接方法及装置”的相关知识点,帮助玩家理解和优化自己的WiFi网络环境。 首先,我们要了解WiFi网络连接的基本原理。WiFi是一种无线局域网(WLAN)技术,它通过无线电波传输数据...

    浅析android下如何通过jni监控wifi网络连接、dhcpcd执行和power

    在深入探讨如何在Android系统中利用JNI(Java Native Interface)技术来监控WiFi网络连接状态、DHCP客户端守护进程(dhcpcd)的执行以及管理电源控制(power),我们首先需要理解基本概念与原理。 ### Android与JNI...

    基于Python实现的wifi网络连接设计源码

    该项目为基于Python的WiFi网络连接设计源码,共计85个文件,涵盖45个Python源文件、29个Python编译文件、5个XML配置文件、2个Markdown文件、1个Git忽略文件、1个IntelliJ IDEA项目配置文件、1个JPEG图像文件、1个...

    WIFI连接状态监听

    在Android开发中,"WIFI连接状态监听"是一项常见的需求,它涉及到对用户设备上的WIFI网络连接状态的实时监控,包括开启、关闭WIFI,扫描可用的WiFi热点,以及获取设备已经连接过的WiFi信息。以下是对这些知识点的...

    androidwifi自动连接

    其中,`ACCESS_FINE_LOCATION`和`ACCESS_WIFI_STATE`权限用于获取WiFi网络信息,`CHANGE_WIFI_STATE`权限则是为了改变WiFi的状态,包括开关WiFi和连接特定的WiFi网络。示例代码如下: ```xml ...

    家用WiFi网络摄像头Android代码

    【家用WiFi网络摄像头Android代码】项目是针对个人家庭环境设计的一款智能硬件与移动应用的集成方案,主要由Arduino数码版作为底层主控设备,而Android部分则是配套的应用程序代码,用于实现通过WiFi网络连接和控制...

    Android studio的WiFi模块连接和搜索

    在这个特定的主题中,我们聚焦于Android Studio中的WiFi模块,包括如何连接到WiFi网络以及如何进行WiFi热点搜索。这些功能涉及到Android系统的网络权限管理,这对于构建具有网络功能的应用至关重要。 1. **WiFi连接...

    wifi连接和断开

    例如,当用户切换WiFi网络或者连接断开再重连时,这些标识符可以帮助系统区分不同的连接历史,确保数据流的正确定向。 4. **文件名称分析**:“WifiDisconnect1”可能是一个与WiFi断开相关的文件,可能是日志、配置...

    Android系统中Wifi连接网络的源代码

    Wifi连接网络,通过程序你将了解到定义WifiManager对象,定义WifiInfo对象,获取网络连接列表,定义一个WifiLock,打开Wifi网卡,关闭Wifi网卡,检查当前Wifi网卡状态,扫描周边网络,每次点击扫描之前清空上一次的...

    WIFI认证之 EAP-PEAP

    在 Connection 方法中,我们可以看到,首先创建了一个新的 WIFI 网络连接信息,然后将其更新到 WIFI 网络中。接着,通过反射机制获取 WifiConfiguration 对象的字段,并设置相关的身份验证信息,例如用户名、密码、...

    以太网(局域网) 和 4Gwifi共存,并可以切换使用4G和wifi网络,另外还可以切换以太网和4gwifi的网络优先级

    2.局域网一直保持畅通, 4G和wifi同时连接时,使用wifi网络;wifi关闭时使用4G网络;4G关闭时,使用wifi网络;可以来回切换. 3.设置--显示中加入了切换以太网和wifi网络优先级开关. 4.persist.sys.ethcontrol 默认值 0 ...

    android7.0 8.0连接wifi后显示wifi已连接但无法访问网络

    android7.0-8.0编译出来的固件,连接wifi后,wifi的状态会显示“已连接但无法访问网络”,这是由于安卓7.0的系统默认去访问google的服务器,因为环境限制,访问不到就会显示无法访问网络的,但是实际上是可以正常...

    android wifi连接与断开

    5. **连接和断开WiFi**:使用`WifiManager`的`connect()`和`disconnect()`方法,传入对应的`WifiConfiguration`对象来连接或断开特定的WiFi网络。`WifiConfiguration`需要包含SSID和密码等信息。 6. **创建和删除...

    易语言WiFi密码连接

    在这个上下文中,`Checkfocus`可能用于检测当前是否有网络连接操作正在进行,或者判断用户是否已经将焦点转移到了WiFi连接的相关界面。这在实现自动连接WiFi的过程中非常关键,因为它能确保在适当的时候进行连接操作...

    wince下wifi连接

    Windows CE是微软为小型设备设计的一种实时操作系统,它提供了丰富的API和工具,允许开发者实现各种功能,包括网络连接。本篇文章将详细探讨如何在WinCE系统上实现WiFi连接,主要针对标题和描述中提及的问题。 首先...

    wifi.rar_WiFi Application_wifi

    - 通过注册`BroadcastReceiver`监听`SCAN_RESULTS_AVAILABLE_ACTION`广播,当扫描结果可用时接收回调,获取`WifiManager`的`scanResults`属性,从中解析出所有可连接的WiFi网络信息。 4. 显示WiFi列表 在UI层面,...

    电信设备-WiFi连接方法、装置和移动终端.zip

    网桥则能将两个WiFi网络连接起来,形成一个更大的网络。 3. **移动终端**:移动终端如智能手机、平板电脑、智能电视、笔记本电脑等,它们内置了WiFi模块,可以方便地连接到WiFi网络。这些设备通常支持多种无线标准...

    串口wifi资料(vc代码)

    串口WiFi技术是一种将计算机或其他设备通过串行接口与WiFi网络连接的技术,广泛应用于物联网、自动化设备、远程控制等领域。本资料包针对串口WiFi的开发,提供了VC++6.0编程代码、PCB原理图以及相关的WiFi说明资料,...

    自动连接指定wifi(无密码方式错误解决办法).docx

    综上所述,这个文档解决的问题可能是针对Android设备上无密码WiFi网络连接失败的情况,通过创建`WifiConfiguration`对象,添加到`WifiManager`,并利用`WifiLock`保持连接稳定性,从而实现自动连接。此外,还提供了...

Global site tag (gtag.js) - Google Analytics