wifi编程实例(创世纪篇)

开发WiFi程序,可以使用vc++,也可以使用Android语言开发。

这里以Android开发环境为例;

one,WIFI网卡的状态
WIFI网卡的状态信息都以整型变量的形式存放在 android.net.wifi.WifiManager 类中,有以下状态:
WIFI_STATE_DISABLED
WIFI网卡不可用
WIFI_STATE_DISABLING
WIFI网卡正在关闭
WIFI_STATE_ENABLED
WIFI网卡可用
WIFI_STATE_ENABLING
WIFI网卡正在打开
WIFI_STATE_UNKNOWN
WIFI网卡状态未知
two、 操作WIFI 网卡所需的权限
CHANGE_NETWORK_STATE
允许应用程序改变网络连接状态
CHANGE_WIFI_STATE
允许应用程序改变WIFI 连接状态
ACCESS_NETWORK_STATE
允许应用程序获取网络的状态信息
ACCESS_WIFI_STATE
允许应用程序获得WIFI 的状态信息

three、 改变WIFI 网卡的状态
对WIFI 网卡进行操作需要通过对 WifiManager 对象来进行,获取该对象的方法如下:

敲击源代码;

WifiManager wifiManager=(WifiManager) Context.getSystemService(Service.WIFI_SERVICE);

打开WIFI 网卡:

代码如下:

wifiManager.setWifiEnabled(true);

关闭WIFI 网卡

代码如下:

wifiManager.setWifiEnabled(false);

获取网卡的当前状态:

代码如下:

wifiManager.getWifiState();

示例代码:由于Android模拟器不支持wifi操作,所以例子需要在实体手机上运行
AndroidManifest.xml

代码如下:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="me.bym" 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-sdk android:minSdkVersion="4" />

<!-- 以下是使用wifi访问网络所需要的权限 -->

<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>

</manifest>

Activity

代码如下:

package me.bym;

import android.app.Activity;

import android.content.Context;

import android.net.wifi.WifiManager;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;

public class WifiActivity extends Activity {

private Button startWifiButton = null;

private Button shutdownWifiButton = null;

private Button checkStateButton = null;

private WifiManager wifiManager = null;

private String res = ""; // 用来存放操作结果信息的字符串

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

startWifiButton = (Button) findViewById(R.id.StartWifiButton);

shutdownWifiButton = (Button) findViewById(R.id.ShutdownWifiButton);

checkStateButton = (Button) findViewById(R.id.CheckStateButton);

startWifiButton.setOnClickListener(new StartWifiListener());

shutdownWifiButton.setOnClickListener(new ShutdownWifiListener());

checkStateButton.setOnClickListener(new CheckStateListener());

}

class StartWifiListener implements OnClickListener {

@Override

public void onClick(View v) {

wifiManager = (WifiManager) WifiActivity.this

.getSystemService(Context.WIFI_SERVICE);

if (wifiManager.setWifiEnabled(true)) {

res = "启动wifi服务成功";

} else {

res = "启动wifi服务失败";

}

Toast.makeText(WifiActivity.this, res, Toast.LENGTH_SHORT).show();

}

}

class ShutdownWifiListener implements OnClickListener {

@Override

public void onClick(View v) {

wifiManager = (WifiManager) WifiActivity.this

.getSystemService(Context.WIFI_SERVICE);

if (wifiManager.setWifiEnabled(false)) {

res = "关闭wifi服务成功";

} else {

res = "关闭wifi服务失败";

}

Toast.makeText(WifiActivity.this, res, Toast.LENGTH_SHORT).show();

}

}

class CheckStateListener implements OnClickListener {

@Override

public void onClick(View v) {

wifiManager = (WifiManager) WifiActivity.this

.getSystemService(Context.WIFI_SERVICE);

switch (wifiManager.getWifiState()) {

case WifiManager.WIFI_STATE_DISABLED:

res = "WIFI已关闭";

break;

case WifiManager.WIFI_STATE_DISABLING:

res = "WIFI正在关闭中";

break;

case WifiManager.WIFI_STATE_ENABLED:

res = "WIFI已启用";

break;

case WifiManager.WIFI_STATE_ENABLING:

res = "WIFI正在启动中";

break;

case WifiManager.WIFI_STATE_UNKNOWN:

res = "未知WIFI状态";

break;

}

Toast.makeText(WifiActivity.this, res, Toast.LENGTH_SHORT).show();

}

}

}

wifi程序开发成功

end。

时间: 2024-08-24 11:44:50

wifi编程实例(创世纪篇)的相关文章

vc+如何实现模拟键盘输入,自动输入文字(创世纪篇)

键盘对于每个操作电脑的人员来说是最熟悉不过的了.键盘上的按键可分为两类: 按下后会在电脑的输入窗口上出现对应字符的按键,如字母键和数字键等,我们称之为字符键:按下后虽然看不到字符但会产生控制作用的按键,如回车键.光标键等,我们称之为控制键. 对于vc+程序员来说,键盘上的每个按键都一样,无非是不同按键产生的键盘扫描码不同.在不同的操作系统下,键盘扫描码常常被转换为不同的编码以方便应用程序调用,比如在Windows系统下的ASCII码,在Windows系统下的虚拟键盘码等等. 有时我们希望能以程序

使用c#开发的第一款APP的Android浏览器(创世纪篇)

闲来无事,利用c#编程语言开发Android浏览器. 首先,安装 VS2010.安装 Android SDK.配置 AVD(android) 模拟器. 调试的时候打开 ADV(android 模拟器) 在里面你自己添加一个机器的型号,设置好分辨率,内存大小,SD卡,启动之后,就可以调试了! 调试生成的代码是不能发布到真实的机器上的,因为 android 实际程序在真实机器中运行的时候会进行验证,这个在 netbeans 或 eclipse 里面叫 key.store 所以发布的时候,要用 net

使用zendstudio创建第一个PHP项目(创世纪篇)

平时用Dreamweaver,eclipse开发PHP项目,今天安装了zendstudio,使用它开发PHP项目. 实践如下: 1.打开zend studio,在左侧的空白区域右键--new--project,在弹出的窗口中选择local php project---next,填写自己的项目名称,选择工作空间,我这里使用默认的,项目类型:基本的还有zend framework框架型项目,然后选择php版本,next: 2.选择Launch URL,选择host,可以使用默认的localhost,

编程哲学之C#篇:02——学习思维

<代码大全>的第二章:介绍隐喻(类比)的思维方式, <经济学原理>的第二章:介绍怎么像经济学家一样思考, <计算机的心智操作系统之哲学原理>的第一章:介绍学习操作系统的思维, 所以我也尽早地介绍我写本系列中会经常运用的学习思维. 类比 你知道什么是驱动程序吗,你会怎么向一个小学三年级的学生解释什么是驱动程序呢? 我会跟这个小学生说,现在假设你要准备一个宣传活动,为了这个宣传活动, 你请了一位来自奥地利的音乐家,他能演奏各式各样的音乐,他的名字叫声卡,他是说德语的. 你请

编程珠玑番外篇

1.Plan 9 的八卦 在 Windows 下喜欢用 FTP 的同学抱怨 Linux 下面没有如 LeapFTP 那样的方便的工具. 在苹果下面用惯了 Cyberduck 的同学可能也会抱怨 Linux 下面使用 FTP 和 SFTP 是一件麻烦的事情. 其实一点都不麻烦, 因为在 LINUX 系统上压根就不需要用 FTP. 为什么呢? 因为一行简单的配置之后, 你就可以像使用本机文件一样使用远程的任何文件. 无论是想编辑, 查看还是删除重命名, 都和本机文件一样的用. 这么神奇的功能到底如何

java多线程编程实例

[转]这篇文章主要介绍了java多线程编程实例,分享了几则多线程的实例代码,具有一定参考价值,加深多线程编程的理解还是很有帮助的,需要的朋友可以参考下. 1.三个售票窗口同时出售20张票程序分析:    (1)票数要使用同一个静态值    (2)为保证不会出现卖出同一个票数,要java多线程同步锁.设计思路:    (1)创建一个站台类Station,继承Thread,重写run方法,在run方法里面执行售票操作!售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖完!    (2)创

编程珠玑番外篇之番外篇-O 中间语言和虚拟机漫谈(ZZ)

http://blog.youxu.info/2014/05/11/language-and-vm/ 导言 编程语言的发展历史,总的来说,是一个从抽象机器操作逐步进化为抽象人的思维的过程.机器操作和人的思维如一枚硬币的两面,而语言编译器就像是个双面胶,将这两面粘在一起,保证编程语言源程序和机器代码在行为上等价.当然,人本身并不是一个完美的编译器,不能无错的将思维表达为高级语言程序,这种偏差,即Bug.因为编译器的帮助,我们可以脱离机器细节,只关心表达思维和程序行为这一面. 编程语言的发展日新月异

The MySQL C API 编程实例

在网上找了一些MYSQL C API编程的文章,看了后认为还是写的不够充分,依据自己经验写了这篇<The MySQL C API 编程实例>,希望对须要调用到MYSQL的C的API的朋友有所帮助,附例中的环境为RedHat 在这篇文章里,我们将学会怎么使用MySQL 的C APIs(Application Programming Interfaces 编程接口).为了非常好地了解这篇文章,您须要具备下面前提知识: C语言变量 C语言函数 C语言指针 简单介绍 C APIs包括在mysqlcli

PHP多进程编程实例

这篇文章主要介绍了PHP多进程编程实例,本文讲解的是在Linux下实现PHP多进程编程,需要的朋友可以参考下 羡慕火影忍者里鸣人的影分身么?没错,PHP程序是可以开动影分身的!想完成任务,又觉得一个进程太慢,那么,试试用多进程来搞吧.这篇文章将会介绍一下PHP多进程的基本需求,如何创建多进程以及基本的信号控制,暂时不会告诉你如何进行进程间通信和信息共享. 1. 准备 在动手之前,请确定你用的不是M$ Windows平台(因为我没有Windows).Linux / BSD / Unix应该都是没问