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. mongoDB之用户及权限设置

    之前用MongoDB没有设置用户和权限,一直都是本机应用程序连接MongoDB.在服务器上部署后对外没有开数据库连接端口,本机应用程序连接再开放应用程序端口供外部访问. 我部署的环境是ubuntu 1 ...

  2. light oj 1248 第六周E题(期望)

    E - 期望(经典问题) Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu   Descri ...

  3. Codeforces Round #313 A Currency System in Geraldion

    A  Currency System in Geraldion Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64 ...

  4. JVM笔记-temp

    jvm源码分析之堆外内存完全解读 http://lovestblog.cn/blog/2015/05/12/direct-buffer/

  5. STM8S学习笔记-时钟控制2

    今天把时钟系统的最后部分,时钟安全系统(CSS)和时钟输出功能(CCO),做一个简答的说明. 1.时钟安全系统(以下简称CSS) CSS功能很简单,就是监控HSE是否实效(如果系统使用HSE作为主时钟 ...

  6. Linux前传——今天的学习

    感觉每天早上搞一个C语言的趣味题,很不错,算是比较实际的事情了.而且,好多都不会,主要是算法,也有很多语法不知道,这样补强很有用.嵌入式方面的课题进展有条不紊,感觉相关寄存器和I/O的使用必须通过大量 ...

  7. nutch fetcher.server.delay

    1 配置因素 <property>  <name>fetcher.server.delay</name>  <value>0.0</value&g ...

  8. h.264加权预测

    帧间运动是基于视频亮度(luma)不发生改变的一个假设,而在视频序列中经常能遇到亮度变化的场景,比如淡入淡出.镜头光圈调整.整体或局部光源改变等,在这些场景中,简单帧间运动补偿的效果可想而知(实际编码 ...

  9. h.264 mvp求解过程

    h.264标准中由于分为宏块分割块(8x8),子宏块分割块(4x4),所以各种各样的求解过程比较繁琐 下面整理出标准中mvp的求解过程 8.4.1.3 已知条件有当前块的属性:位置.块类型需要得到当前 ...

  10. 开发者应该避免使用的6个Java功能(转)

    本文作者是一名拥有多年Java开发经验的程序员,他从经验中得出,并不是所有的Java SE功能/API都值得程序员去使用,比如本文列举的这6个,大家在使用前得慎重对待.以下是对原文的摘译. 多年的Ja ...