Android 控制wifi 相关操作实例_Android

Android 控制WIFI相关操作

WIFI的全称是Wireless Fidelity,又称802.11b标准,是一种高速的无线通信协议,传输速度可以达到11Mb/s。

实际上,对WIFI并不需要过多的控制(当成功连接WIFI后,就可以直接通过IP在WIFI设备之间进行通信了),一般只需要控制打开或关闭WIFI以及获得一些与WIFI相关的信息(例如,MAC地址、IP等)。

如果读者的Android手机有WIFI功能,可以在手机上测试本节的例子。要注意的是,WIFI功能不能在Android模拟器上测试,就算在有WIFI功能的真机上也需要先通过WIFI和计算机或其他WIFI设备连接后,才能获得与WIFI相关的信息。

本节的例子可以关闭和开始WIFI,并获得各种与WIFI相关的信息。首先确认手机通过WIFI与其他WIFI设备成功连接,然后运行

本节的例子,会看到如图所示的输出信息。

本例的完整实现代码如下:

package eoe.demo.wifi; 

import java.net.Inet4Address;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.CompoundButton.OnCheckedChangeListener; 

public class Main extends Activity implements OnCheckedChangeListener {
private WifiManager wifiManager;
private WifiInfo wifiInfo;
private CheckBox chkOpenCloseWifiBox;
private List<WifiConfiguration> wifiConfigurations;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 获得WifiManager对象
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
// 获得连接信息对象
wifiInfo = wifiManager.getConnectionInfo();
chkOpenCloseWifiBox = (CheckBox) findViewById(R.id.chkOpenCloseWifi);
TextView tvWifiConfigurations = (TextView) findViewById(R.id.tvWifiConfigurations);
TextView tvWifiInfo = (TextView) findViewById(R.id.tvWifiInfo); chkOpenCloseWifiBox.setOnCheckedChangeListener(this);
// 根据当前WIFI的状态(是否被打开)设置复选框的选中状态
if (wifiManager.isWifiEnabled()) {
chkOpenCloseWifiBox.setText("Wifi已开启");
chkOpenCloseWifiBox.setChecked(true);
} else {
chkOpenCloseWifiBox.setText("Wifi已关闭");
chkOpenCloseWifiBox.setChecked(false);
}
// 获得WIFI信息
StringBuffer sb = new StringBuffer();
sb.append("Wifi信息\n");
sb.append("MAC地址:" + wifiInfo.getMacAddress() + "\n");
sb.append("接入点的BSSID:" + wifiInfo.getBSSID() + "\n");
sb.append("IP地址(int):" + wifiInfo.getIpAddress() + "\n");
sb.append("IP地址(Hex):" + Integer.toHexString(wifiInfo.getIpAddress()) + "\n"); sb.append("IP地址:" + ipIntToString(wifiInfo.getIpAddress()) + "\n");
sb.append("网络ID:" + wifiInfo.getNetworkId() + "\n");
tvWifiInfo.setText(sb.toString());
// 得到配置好的网络
wifiConfigurations = wifiManager.getConfiguredNetworks();
tvWifiConfigurations.setText("已连接的无线网络\n");
for (WifiConfiguration wifiConfiguration : wifiConfigurations) {
tvWifiConfigurations.setText(tvWifiConfigurations.getText() + wifiConfiguration.SSID + "\n");
}
}
// 将int类型的IP转换成字符串形式的IP
private String ipIntToString(int ip) {
try {
byte[] bytes = new byte[4];
bytes[0] = (byte) (0xff & ip);
bytes[1] = (byte) ((0xff00 & ip) >> 8);
bytes[2] = (byte) ((0xff0000 & ip) >> 16);
bytes[3] = (byte) ((0xff000000 & ip) >> 24);
return Inet4Address.getByAddress(bytes).getHostAddress();
} catch (Exception e) {
return "";
}
} 

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// 当选中复选框时打开WIFI
if (isChecked) {
wifiManager.setWifiEnabled(true);
chkOpenCloseWifiBox.setText("Wifi已开启");
}
// 当取消复选框选中状态时关闭WIFI
else {
wifiManager.setWifiEnabled(false);
chkOpenCloseWifiBox.setText("Wifi已关闭");
}
} 

} 

在AndroidManifest.xml文件中要使用如下的代码打开相应的权限。

XML/HTML代码
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE">
</uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK">
</uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE">
</uses-permission> 

以上就是对Android Wifi 简单实例的源码,在做Android开发Wifi 模块的朋友可以参考下。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, wifi
, 开发
, wifi实例
代码控制wifi
android wifi p2p实例、android文件操作实例、android wifi控制、android wifi操作封装、android 控制系统wifi,以便于您获取更多的相关知识。

时间: 2024-10-29 22:01:45

Android 控制wifi 相关操作实例_Android的相关文章

Android 控制wifi 相关操作实例

Android 控制WIFI相关操作 WIFI的全称是Wireless Fidelity,又称802.11b标准,是一种高速的无线通信协议,传输速度可以达到11Mb/s. 实际上,对WIFI并不需要过多的控制(当成功连接WIFI后,就可以直接通过IP在WIFI设备之间进行通信了),一般只需要控制打开或关闭WIFI以及获得一些与WIFI相关的信息(例如,MAC地址.IP等). 如果读者的Android手机有WIFI功能,可以在手机上测试本节的例子.要注意的是,WIFI功能不能在Android模拟器

Android开发之时间日期操作实例_Android

相信对于手机的时间日期设置大家一定都不陌生吧,今天举一个关于时间日期设置的示例,其中有些许不完善之处,例如如何使设置的时间日期和手机系统同步等.感兴趣的读者可以根据自身经验加以完善. 现来看看具体示例,希望对大家有所帮助. 首先是时间设置: .java文件(MainActivity.java)代码如下: package com.example.activity_time_date; import java.util.Calendar; import android.app.Activity; i

Android自定义TitleView标题开发实例_Android

Android开发过程中,经常遇到一个项目需要重复的定义相同样式的标题栏,Android相继推出了actionBar, toolBar, 相信有用到的朋友也会遇到一些不如意的时候,比如标题栏居中时,需要自定义xml文件给toolBar等,不了解actionBar,toolBar的可以去找相应的文章了解,这里介绍自定义titleBar满足国内主题风格样式的情况. 为了提前看到效果,先上效果图: 前期准备 1.为标题栏titleView预定义id,在values下的ids.xml中 <?xml ve

Android圆形旋转菜单开发实例_Android

最近帮朋友做了一个动画菜单,感觉有一定的实用价值,就在此给大家分享一下,先看看效果: 实现思路: 从图中可以看出,这三个(或更多,需要自己再实现)菜单是围绕着中心点旋转的,旋转分为2层,背景旋转和菜单旋转,背景旋转可以直接用旋转动画来实现:菜单的旋转是在以中心点为圆心的圆环上,所以这里用了根据旋转角度求此点在直角坐标系中的坐标点的函数(x = r * cos(rotation* 3.14 / 180) 和y = r * sin(rotation* 3.14 / 180) ),然后根据获取到的点的

Android ListView ImageView实现单选按钮实例_Android

做Android开发两年的时间,技术稍稍有一些提升,刚好把自己实现的功能写出来,记录一下,如果能帮助到同行的其他人,我也算是做了件好事,哈哈!!废话不多说,先上个图. 先上一段代码: 1 if (lastposition == position){ 2 viewHolder.setImageResource(R.id.iv_yuandian1,R.mipmap.ic_button_checked); 3 } else { 4 viewHolder.setImageResource(R.id.iv

Android开发之完成登陆界面的数据保存回显操作实例_Android

本文实例讲述了Android开发之完成登陆界面的数据保存回显操作.分享给大家供大家参考,具体如下: LoginActivity.java: package com.example.login; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import android.view.Menu; import android.view

Android开发之ViewSwitcher用法实例_Android

本文实例讲述了Android开发之ViewSwitcher用法.分享给大家供大家参考,具体如下: android.widget.ViewSwitcher是ViewAnimator的子类,用于在两个View之间切换,但每次只能显示一个View. ViewSwitcher的addView函数的代码如下: /** * {@inheritDoc} * * @throws IllegalStateException if this switcher already contains two childre

非常实用的小功能 Android应用版本的更新实例_Android

每一个应用都是具备一个功能,那就是版本更新,我记得我之前在面试的时候,面试官让我介绍一下应用版本更新的一些具体操作.我当时因为做过这个功能,所以回答的还是很流畅,现在我把这个分享给大家,需要能够共同进步. 我当时是这么说的: 首先呢,我们是应该在用户登录后,在首页执行检查版本信息的操作,具体是,获取到本地的版本号后,提交给服务器进行判断,然后后台来告诉我们当前版本是否为最新版本,紧接着我们拿到下载地址,执行下载的操作,具体的可以使用输入输出流来对文件进行存储和读取,为了方便下载,我们还可以使用一

Android中SurfaceView用法简单实例_Android

本文实例讲述了Android中SurfaceView用法.分享给大家供大家参考,具体如下: 这里贴上一个小程序代码,主要运用SurfaceView来实现在屏幕上画一个圆,你可以通过按方向键和触摸屏幕来改变圆的位置 代码: Activity: package com.view; import android.app.Activity; import android.os.Bundle; import android.view.Window; import android.view.WindowMa