`

WiFi的使用Demo

阅读更多
先发代码放上来:
package cn.com;

import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;

public class WiFiTest extends Activity
{
  private TextView mTextView01;
  private CheckBox mCheckBox01;

  /* 创建WiFiManager对象 */
  private WifiManager mWiFiManager01;

  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mTextView01 = (TextView) findViewById(R.id.myTextView1);
    mCheckBox01 = (CheckBox) findViewById(R.id.myCheckBox1);

    /* 以getSystemService取得WIFI_SERVICE */
    mWiFiManager01 = (WifiManager)   
    this.getSystemService(Context.WIFI_SERVICE);

    checkWiFiStatus();
    addCheckboxListener();

  }

  public void addCheckboxListener()
  {
    /* 捕捉CheckBox的点击事件 */
    mCheckBox01.setOnClickListener(new CheckBox.OnClickListener()
    {
      public void onClick(View v)
      {
        /* 当选取项为取消选取状态 */
        if (mCheckBox01.isChecked() == false)
        {
          closeWiFiServices();
        } else if (mCheckBox01.isChecked() == true)
        {
          openWiFiServices();
        }
      }
    });
  }

  public void checkWiFiStatus()
  {
    if (mWiFiManager01.isWifiEnabled())
     // 判断手机是否已启用了WiFi功能
    {
      /* 判断WiFi状态是否“已打开” */
      if (mWiFiManager01.getWifiState() ==  
          WifiManager.WIFI_STATE_ENABLED)
      {
        /* 若WiFi已打开,将选取项打勾 */
        mCheckBox01.setChecked(true);
        /* 更改选取项文字为关闭WiFi */
        mCheckBox01.setText(R.string.str_uncheck);
      } else
      {
        /* 若WiFi未打开,将选取项勾选择消 */
        mCheckBox01.setChecked(false);
        /* 更改选取项文字为打开WiFi */
        mCheckBox01.setText(R.string.str_checked);
      }
    } else
    {
      mCheckBox01.setChecked(false);
      mCheckBox01.setText(R.string.str_checked);
    }
  }

  public void mMakeTextToast(String str, boolean isLong)
  {
    if (isLong == true)
    {
      Toast.makeText(EX05_17.this, str, Toast.LENGTH_LONG).show();
    } else
    {
      Toast.makeText(EX05_17.this, str, Toast.LENGTH_SHORT).show();
    }
  }

  public void closeWiFiServices()
  {
    try
    {
      if (mWiFiManager01.isWifiEnabled())
      // 判断WiFi状态是否为已打开
      {
        if (mWiFiManager01.setWifiEnabled(false))// 关闭WiFi
        {
          mTextView01.setText(R.string.str_stop_wifi_done);
        } else
        {
          mTextView01.setText(R.string.str_stop_wifi_failed);
        }
      } else
      {
        switch (mWiFiManager01.getWifiState())
        // WiFi状态不为已打开状态时
        {
          case WifiManager.WIFI_STATE_ENABLING:
          // WiFi正在打开过程中,导致无法关闭...
            mTextView01.setText(getResources().getText(
                R.string.str_stop_wifi_failed)
                + ":" + 
            getResources().getText(R.string.str_wifi_enabling));
            break;
          case WifiManager.WIFI_STATE_DISABLING:
          // WiFi正在关闭过程中,导致无法关闭...
            mTextView01.setText(getResources().getText(
                R.string.str_stop_wifi_failed)
                + ":" + 
            getResources().getText(R.string.str_wifi_disabling));
            break;
          case WifiManager.WIFI_STATE_DISABLED:
           // WiFi已经关闭
            mTextView01.setText(getResources().getText(
                R.string.str_stop_wifi_failed)
                + ":" +  
            getResources().getText(R.string.str_wifi_disabled));
            break;
          case WifiManager.WIFI_STATE_UNKNOWN:
          // 无法取得或辨识WiFi状态
          default:
            mTextView01.setText(getResources().getText(
                R.string.str_stop_wifi_failed)
                + ":" + 
            getResources().getText(R.string.str_wifi_unknow));
            break;
        }
        mCheckBox01.setText(R.string.str_checked);
      }
    } catch (Exception e)
    {
      Log.i("HIPPO", e.toString());
      e.printStackTrace();
    }
  }

  public void openWiFiServices()
  {
    if (!mWiFiManager01.isWifiEnabled()
    // 确认WiFi服务是关闭且不在打开过程中
        && mWiFiManager01.getWifiState() != 
       WifiManager.WIFI_STATE_ENABLING)
    {
      if (mWiFiManager01.setWifiEnabled(true))
      // 启动WiFi服务
      {
        switch (mWiFiManager01.getWifiState())
        {
          case WifiManager.WIFI_STATE_ENABLING:
           // WiFi正在打开过程中....
            mTextView01.setText(getResources().getText(
                R.string.str_wifi_enabling));
            break;
          case WifiManager.WIFI_STATE_ENABLED:
           // WiFi已经打开
            mTextView01.setText(getResources().getText(
                R.string.str_start_wifi_done));
            break;
          default:
            mTextView01.setText(getResources().getText(
                R.string.str_start_wifi_failed)
           // 其它未知的错误
                + ":" + 
            getResources().getText(R.string.str_wifi_unknow));
            break;
        }
      } else
      {
        mTextView01.setText(R.string.str_start_wifi_failed);
      }
    }
  }

}


还有个最重要的环节就是设置各种权限
<!-- 新增存取WIFI以及網路狀態等相關權限 -->
	<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
	<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
	<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
	<uses-permission android:name="android.permission.INTERNET"/>
	<uses-permission android:name="android.permission.WAKE_LOCK"/>
:
分享到:
评论
1 楼 hezhou_0521 2010-11-15  
如何运用wifi在两个或多个不同设备之间发消息或传数据呢?

相关推荐

    Android Wifi使用Demo

    在`wifidemo`项目中,你可能会看到以下几个关键文件: - `MainActivity.java`: 主活动,包含了Wi-Fi操作的逻辑代码。 - `activity_main.xml`: 布局文件,可能包含用于用户交互的按钮和显示扫描结果的ListView。 - `...

    Android Wifi开发Demo示例

    连接Wi-Fi接入点时,我们需要创建一个`WifiConfiguration`对象,设置其`SSID`和`preSharedKey`(密码),然后使用`WifiManager`的`addNetwork(WifiConfiguration)`方法将其添加到配置列表中。最后,通过`save...

    android wifi 连接Demo.rar

    android wifi 连接Demo.rar

    Android官方Wifi P2P Demo

    **Android官方Wifi P2P Demo详解** Android的Wi-Fi Direct(也称为Wi-Fi Peer-to-Peer或P2P)是一项技术,允许设备之间直接建立高速、低延迟的无线连接,无需通过传统的Wi-Fi接入点。这项功能使得Android设备能够...

    搜索wifi的demo

    "搜索WiFi的Demo"是一个示例程序,它演示了如何在不同的操作系统或平台上实现WiFi搜索和连接功能。这个Demo可能包含了一系列的代码、配置文件和测试用例,帮助开发者理解和实现类似功能。下面我们将深入探讨相关的...

    Android连接指定wifi的Demo

    这个“Android连接指定WiFi的Demo”正是为了满足这一需求而设计的。通过这个Demo,开发者可以学习如何利用Android系统的API来控制WiFi连接,使得应用能够在用户授权的情况下自动连接到特定的WiFi网络。 在Android...

    Android WIFI扫描Demo.zip

    【Android WIFI扫描Demo.zip】是一个压缩包,包含了一个Android应用的源代码示例,这个示例专注于演示如何在Android设备上实现WIFI网络的扫描功能。通过分析这个压缩包的内容,我们可以深入理解Android系统中与WIFI...

    wifi热点demo

    本文将深入探讨如何使用WiFi热点功能,并以一个名为“Wifi热点demo”的项目为例,讲解其中涉及的关键技术与API。这个项目基于Windows 8.1操作系统,并利用Visual Studio 2010进行开发。我们将重点关注WLAN系列API的...

    Wifi开发Demo 示例

    "Wifi开发Demo 示例"提供了一个实战平台,帮助开发者理解和实践如何在Android设备上实现Wi-Fi的搜索、连接以及数据传输功能。这个Demo包含了两个主要部分:`wifi进行数据传输`和`Wifi连接`。 首先,让我们深入探讨...

    Android WIFI扫描Demo.rar

    【Android WIFI扫描Demo】是一个Android开发的示例项目,它主要展示了如何在Android设备上进行Wi-Fi网络的扫描和管理。这个源码资源是为Java开发者准备的学习材料,旨在帮助他们理解和实现Android平台上的Wi-Fi扫描...

    Android代码-WIFI扫描Demo.zip

    本文将深入探讨如何使用Android SDK中的相关API实现这一功能,并结合"Android代码-WIFI扫描Demo.zip"提供的示例代码进行解析。 首先,我们需要了解Android中的WiFiManager服务。这是Android系统提供的一种用于管理...

    WiFi开发的demo

    这个"WiFi开发的demo"是一个实践性的示例,旨在帮助开发者理解和掌握如何在应用程序中实现WiFi的相关功能。下面我们将详细探讨这个demo所涉及的知识点。 首先,我们要理解WiFi的基本原理。WiFi是一种基于IEEE 802....

    android WIFI 扫描 Demo

    在Android平台上,开发一款WIFI扫描的Demo应用是一项常见的任务,可以帮助用户查看并连接周围的无线网络。本Demo的目的是向开发者展示如何利用Android系统的API来实现这一功能。下面将详细介绍这个Demo涉及的关键...

    Android Wifi连接demo

    本文将深入探讨“Android Wi-Fi连接demo”所涉及的关键知识点,包括Wi-Fi模块的使用、接口封装、密码连接验证以及不同加密方式的处理。 1. **Android Wi-Fi API** Android系统提供了`WifiManager`类,它是处理Wi-...

    Android端WifiDirect文件传输Demo

    **Android端WifiDirect文件传输Demo详解** 在移动设备间实现快速、便捷的文件传输,WifiDirect是一种有效的技术。本Demo是基于Google官方的WifiDirect示例进行修改,旨在实现Android设备间的文件共享功能。让我们...

    Wifi p2p 直连官方demo

    通过这个官方demo,开发者不仅可以学习如何使用WiFi Direct API,还可以了解如何在Android应用中正确处理异步操作和事件响应。这个示例项目对于初学者和有经验的开发者来说都是一个宝贵的资源,帮助他们在实际项目中...

    wifi p2p直连,Google官方demo

    这个“WiFi p2p直连,Google官方demo”是一个示例程序,用于展示如何在Android平台上利用Google提供的API实现设备之间的直接通信。下面我们将深入探讨这一技术及其应用。 1. WiFi P2P简介: WiFi P2P旨在简化设备...

    Android WifiDemo

    在Android平台上,开发一个名为`WifiDemo`的应用程序涉及到对WiFi功能的全面理解和利用。这个应用的核心目标是提供用户友好的界面,使用户能够轻松管理设备的WiFi连接,包括开启、关闭WiFi,搜索并连接到可用的WiFi...

    android_wifi_demo

    这个“android_wifi_demo”项目显然旨在演示如何在Android设备上执行这些操作。通过该项目,我们可以学习到如何利用Android的Wi-Fi API进行一系列功能实现,如配置新网络、错误处理以及连接状态的管理。以下是一些...

Global site tag (gtag.js) - Google Analytics