之前有一篇文章已经简单的讲过Wifi的基本知识,请见Android之Wifi学习(1)。本文主要在此基础上,进一步完善程序功能,主要功能有打开无线网卡、关闭无线网卡、检查网卡状态、扫描网络、扫描结果、连接Wifi、断开Wifi、Wifi连接状态。
运行效果图如下:
其中连接Wifi是比较让我头疼的。需要在程序中进行连接,这会有两种情况。第一,Wifi没有密码,可以直接连接;第二,Wifi有密码,在程序中给出密码,然后连接。第一种我查阅相关资料好像确实是可以实现的,第二种我没找到,我自己也不知道该怎么去搞。最后想出一个办法,直接让程序跳到系统设置的Wifi的页面,然后让人手动去设置。观察了一下Android版的QQ,也确实是这么做的。不信你瞧:
点击设置网络后跳转到系统设置页面:
所以此处设置网络我也可以这么做,不过还是有点不爽,可能自己对Wifi这块还不是很熟悉,我会继续查阅相关API文档,到时候再跟大家分享,好了,下面贴一下源代码:
主页面:
- package org.sunchao;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.ScrollView;
- import android.widget.TextView;
- public class Main extends Activity implements OnClickListener {
- // 右侧滚动条按钮
- private ScrollView sView;
- private Button openNetCard;
- private Button closeNetCard;
- private Button checkNetCardState;
- private Button scan;
- private Button getScanResult;
- private Button connect;
- private Button disconnect;
- private Button checkNetWorkState;
- private TextView scanResult;
- private String mScanResult;
- private WifiAdmin mWifiAdmin;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mWifiAdmin = new WifiAdmin(Main.this);
- init();
- }
- /**
- * 按钮等控件的初始化
- */
- public void init() {
- sView = (ScrollView) findViewById(R.id.mScrollView);
- openNetCard = (Button) findViewById(R.id.openNetCard);
- closeNetCard = (Button) findViewById(R.id.closeNetCard);
- checkNetCardState = (Button) findViewById(R.id.checkNetCardState);
- scan = (Button) findViewById(R.id.scan);
- getScanResult = (Button) findViewById(R.id.getScanResult);
- scanResult = (TextView) findViewById(R.id.scanResult);
- connect = (Button) findViewById(R.id.connect);
- disconnect = (Button) findViewById(R.id.disconnect);
- checkNetWorkState = (Button) findViewById(R.id.checkNetWorkState);
- openNetCard.setOnClickListener(Main.this);
- closeNetCard.setOnClickListener(Main.this);
- checkNetCardState.setOnClickListener(Main.this);
- scan.setOnClickListener(Main.this);
- getScanResult.setOnClickListener(Main.this);
- connect.setOnClickListener(Main.this);
- disconnect.setOnClickListener(Main.this);
- checkNetWorkState.setOnClickListener(Main.this);
- }
- /**
- * WIFI_STATE_DISABLING 0 WIFI_STATE_DISABLED 1 WIFI_STATE_ENABLING 2
- * WIFI_STATE_ENABLED 3
- */
- public void openNetCard() {
- mWifiAdmin.openNetCard();
- }
- public void closeNetCard() {
- mWifiAdmin.closeNetCard();
- }
- public void checkNetCardState() {
- mWifiAdmin.checkNetCardState();
- }
- public void scan() {
- mWifiAdmin.scan();
- }
- public</