Android 上层wifi简单介绍及代码演示

闲来无事,研究一下Android的wifi模块。

涉及到的类:

    *1.WifiManager:管理wifi连接的service,可由getSystemService(Context.WIFI_SERVICE)获取* 
    *2.ScanResult:包含wifi的SSID、BSSID、level等信息*


写了一个比较简单的查看wifi信息的apk,源码如下:

Activity源代码


package com.jaden.mywifi;

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.net.wifi.ScanResult;
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.TextView;
import android.widget.Toast;


public class MyWifi extends Activity implements OnClickListener{

    private Button btn1;
    private Button btn2;
    private Button btn3;
    private Button btn4;
    private TextView tv1;
    private StringBuffer sb = new StringBuffer();

    private List<ScanResult> srList;
    private WifiManager mWifiManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_wifi);
        btn1 = (Button) findViewById(R.id.btn1);
        btn2 = (Button) findViewById(R.id.btn2);
        btn3 = (Button) findViewById(R.id.btn3);
        btn4 = (Button) findViewById(R.id.btn4);
        tv1 = (TextView) findViewById(R.id.tv1);

        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
        btn3.setOnClickListener(this);
        btn4.setOnClickListener(this);

        initService(MyWifi.this); 
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        //扫描附近wifi
        case R.id.btn1:
            scanWifi();
            showList();
            break;
        //打开wifi
        case R.id.btn2:
            openWifi();
            break;
        //关闭wifi
        case R.id.btn3:
            closeWifi();
            break;
        //显示当前wifi状态
        case R.id.btn4:
            Toast.makeText(this, checkWifi() , Toast.LENGTH_LONG).show();
            break;
        default:
            break;
        }
    }

    //获得wifiManager的service实例
    private void initService(Context context){
        mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    }

    //扫描可用wifi,返回一个scanResult的List
    private void scanWifi(){
        mWifiManager.startScan();
        if(mWifiManager.isWifiEnabled()){
            srList = mWifiManager.getScanResults();
        }
    }

    //如果wifi没有打开,打开wifi
    private void openWifi(){
        if(!mWifiManager.isWifiEnabled()){
            mWifiManager.setWifiEnabled(true);
        }
    }

    //如果wifi打开,关闭wifi
    private void closeWifi(){
        if(mWifiManager.isWifiEnabled()){
            mWifiManager.setWifiEnabled(false);
        }
    }

    //获得wifi状态,返回String字符串
    private String checkWifi(){
        String state = "";
        switch (mWifiManager.getWifiState()) {
        case 1:
            state = "。。。未连接。。。";
            break;
        case 2:
            state = "正在断开连接。。。";
            break;
        case 3:
            state = "。。。已连接。。。";
            break;
        case 4:
            state = "正在连接。。。。。";
            break;
        case 5:
            state = "。。未知连接。。。";
            break;

        default:
            break;
        } 

        return state;
    }

    //把扫描到的可用wifi显示在TestView
    private void showList(){
        if(sb != null){
            sb = new StringBuffer();
        }
        sb.append(" 可连接的wifi:\n");
        for (int i = 0; i < srList.size(); i++) {
            ScanResult sr = srList.get(i);
            sb.append("     ").append(sr.SSID).append("\n");
        }   
        tv1.setText(sb);
    }

}

xml布局代码

<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent">

<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="扫描wifi"
        android:id="@+id/btn1" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="打开wifi"
        android:id="@+id/btn2" />

   <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="关闭wifi"
        android:id="@+id/btn3" />

   <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="网络状态"
        android:id="@+id/btn4" />

   <TextView
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:text=""
       android:id="@+id/tv1"/>

</LinearLayout>

</ScrollView>

一定要记得在AndroidManifest加入权限

 <!-- 以下是使用wifi访问网络所需的权限,本例只有wifi权限 -->    
    <!--uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission-->  
    <!--uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission-->    
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>      
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

效果图如下:

扫描的wifi获得的附近wifi热点
查看网络状态显示已连接

以上是wifi在Android上层的简单代码演示。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值