aaarticlea/png;base64,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" alt="" />

WifiActivity

package com.yarin.android.Examples_08_08;

import java.util.List;

import android.app.Activity;
import android.net.wifi.ScanResult;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast; public class WifiActivity extends Activity {
/** Called when the activity is first created. */
private TextView allNetWork;
private Button scan;
private Button start;
private Button stop;
private Button check;
private WifiAdmin mWifiAdmin;
// 扫描结果列表
private List<ScanResult> list;
private ScanResult mScanResult;
private StringBuffer sb=new StringBuffer();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWifiAdmin = new WifiAdmin(WifiActivity.this);
init();
}
public void init(){
allNetWork = (TextView) findViewById(R.id.allNetWork);
scan = (Button) findViewById(R.id.scan);
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
check = (Button) findViewById(R.id.check);
scan.setOnClickListener(new MyListener());
start.setOnClickListener(new MyListener());
stop.setOnClickListener(new MyListener());
check.setOnClickListener(new MyListener());
}
private class MyListener implements OnClickListener{ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.scan://扫描网络
getAllNetWorkList();
break;
case R.id.start://打开Wifi
mWifiAdmin.openWifi();
Toast.makeText(WifiActivity.this, "当前wifi状态为:"+mWifiAdmin.checkState(), 1).show();
break;
case R.id.stop://关闭Wifi
mWifiAdmin.closeWifi();
Toast.makeText(WifiActivity.this, "当前wifi状态为:"+mWifiAdmin.checkState(), 1).show();
break;
case R.id.check://Wifi状态
Toast.makeText(WifiActivity.this, "当前wifi状态为:"+mWifiAdmin.checkState(), 1).show();
break;
default:
break;
}
} }
public void getAllNetWorkList(){
// 每次点击扫描之前清空上一次的扫描结果
if(sb!=null){
sb=new StringBuffer();
}
//开始扫描网络
mWifiAdmin.startScan();
list=mWifiAdmin.getWifiList();
if(list!=null){
for(int i=0;i<list.size();i++){
//得到扫描结果
mScanResult=list.get(i);
sb=sb.append(mScanResult.BSSID+" ").append(mScanResult.SSID+" ")
.append(mScanResult.capabilities+" ").append(mScanResult.frequency+" ")
.append(mScanResult.level+"\n\n");
}
allNetWork.setText("扫描到的wifi网络:\n"+sb.toString());
}
}
}

WifiAdmin

package com.yarin.android.Examples_08_08;

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; public class WifiAdmin {
//定义一个WifiManager对象
private WifiManager mWifiManager;
//定义一个WifiInfo对象
private WifiInfo mWifiInfo;
//扫描出的网络连接列表
private List<ScanResult> mWifiList;
//网络连接列表
private List<WifiConfiguration> mWifiConfigurations;
WifiLock mWifiLock;
public WifiAdmin(Context context){
//取得WifiManager对象
mWifiManager=(WifiManager) context.getSystemService(Context.WIFI_SERVICE);
//取得WifiInfo对象
mWifiInfo=mWifiManager.getConnectionInfo();
}
//打开wifi
public void openWifi(){
if(!mWifiManager.isWifiEnabled()){
mWifiManager.setWifiEnabled(true);
}
}
//关闭wifi
public void closeWifi(){
if(mWifiManager.isWifiEnabled()){
mWifiManager.setWifiEnabled(false);
}
}
// 检查当前wifi状态
public int checkState() {
return mWifiManager.getWifiState();
}
//锁定wifiLock
public void acquireWifiLock(){
mWifiLock.acquire();
}
//解锁wifiLock
public void releaseWifiLock(){
//判断是否锁定
if(mWifiLock.isHeld()){
mWifiLock.acquire();
}
}
//创建一个wifiLock
public void createWifiLock(){
mWifiLock=mWifiManager.createWifiLock("test");
}
//得到配置好的网络
public List<WifiConfiguration> getConfiguration(){
return mWifiConfigurations;
}
//指定配置好的网络进行连接
public void connetionConfiguration(int index){
if(index>mWifiConfigurations.size()){
return ;
}
//连接配置好指定ID的网络
mWifiManager.enableNetwork(mWifiConfigurations.get(index).networkId, true);
}
public void startScan(){
mWifiManager.startScan();
//得到扫描结果
mWifiList=mWifiManager.getScanResults();
//得到配置好的网络连接
mWifiConfigurations=mWifiManager.getConfiguredNetworks();
}
//得到网络列表
public List<ScanResult> getWifiList(){
return mWifiList;
}
//查看扫描结果
public StringBuffer lookUpScan(){
StringBuffer sb=new StringBuffer();
for(int i=0;i<mWifiList.size();i++){
sb.append("Index_" + new Integer(i + 1).toString() + ":");
// 将ScanResult信息转换成一个字符串包
// 其中把包括:BSSID、SSID、capabilities、frequency、level
sb.append((mWifiList.get(i)).toString()).append("\n");
}
return sb;
}
public String getMacAddress(){
return (mWifiInfo==null)?"NULL":mWifiInfo.getMacAddress();
}
public String getBSSID(){
return (mWifiInfo==null)?"NULL":mWifiInfo.getBSSID();
}
public int getIpAddress(){
return (mWifiInfo==null)?0:mWifiInfo.getIpAddress();
}
//得到连接的ID
public int getNetWordId(){
return (mWifiInfo==null)?0:mWifiInfo.getNetworkId();
}
//得到wifiInfo的所有信息
public String getWifiInfo(){
return (mWifiInfo==null)?"NULL":mWifiInfo.toString();
}
//添加一个网络并连接
public void addNetWork(WifiConfiguration configuration){
int wcgId=mWifiManager.addNetwork(configuration);
mWifiManager.enableNetwork(wcgId, true);
}
//断开指定ID的网络
public void disConnectionWifi(int netId){
mWifiManager.disableNetwork(netId);
mWifiManager.disconnect();
}
}

/Examples_08_08/res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
> <LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/scan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="扫描网络"
/>
<Button
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="打开Wifi"
/>
<Button
android:id="@+id/stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="关闭Wifi"
/>
<Button
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Wifi状态"
/>
<TextView
android:id="@+id/allNetWork"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="当前没有扫描到Wifi网络"
/>
</LinearLayout>
</ScrollView>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yarin.android.Examples_08_08"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".WifiActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES"></uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"></uses-permission>
<uses-sdk android:minSdkVersion="5" />
</manifest>

现在发现关闭wifi无效,是因为没有权限,还是其他什么原因?

Examples_08_08的更多相关文章

  1. Android WiFi系统架构【转】

    本文转载自:http://blog.csdn.net/liuhaomatou/article/details/40398753 在了解WIFI模块的系统架构之前.我心中就有一个疑问,那么Android ...

随机推荐

  1. js中的 window.location、document.location、document.URL 对像的区别(转载)

    原文:http://www.cr173.com/html/18417_1.html 当我们需要对html网页进行转向的时候或是读取当前网页的时候可以用到下面三个对像: window.location. ...

  2. Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0

    如果遇到这个问题,首先考虑以下原因: 你是否在setText()方法中设置了一个int型变量,比如setText(10). 这样Android系统就会主动去资源文件当中寻找, 但是它不是一个资源文件I ...

  3. "Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list.xml,reason: Connection

    "Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list.xml,reason: Conne ...

  4. 使用dom4j 读取XML文件

    第一次接触dom4j的时候,感觉这个东西很神秘,因为之前虽然知道XML文件吧,但从来没有用过,一直感觉XML肯定不好操作.当得知,dom4j可以很容易的操作读取XML文件时,不免有些好奇,那么,用do ...

  5. Spark RDD Union

    示例   Spark多个RDD(数据格式相同)“组合”为一个RDD   代码   from pyspark import SparkConf, SparkContext conf = SparkCon ...

  6. Yarn应用程序运行流程剖析

    Yarn(Yet Another Resource Negotiator)是一个Hadoop集群资源管理系统,Hadoop2时被引入,旨在提高MapReduce的性能,但YARN已足够通用,使得它可以 ...

  7. Bloom Filter(布隆过滤器)

    布隆过滤器用于测试某一元素是否存在于给定的集合中,是一种空间利用率很高的随机数据结构(probabilistic data structure),存在一定的误识别率(false positive),即 ...

  8. linux中的cd ..和cd -命令有什么区别?

    cd ..是返回上一层目录, cd -是返回到上一次的工作目录,如果当前目录是/执行cd /usr/local再执行cd ..就是到 /usr而执行cd -就是到/

  9. 谈谈托管代码、IL、CLR、ISAPI?

    什么是托管代码?       托管代码是可以使用20多种支持Microsoft .NET Framework的高级语言编写的代码,这些语言包括:C#, J#, Microsoft Visual Bas ...

  10. Flask+Mysql搭建网站之其他笔记

    写在前面 之前用过python的另外一个框架,Django.感觉Django比Flask的资料要多.做这个网站的时候,遇到一些棘手的问题,怎么百度也就只能找到翻来覆去的官方文档以及miguelgrin ...