Android开发周围wifi热点和属性的获取

android开发 控制wifi和热点的开启(适配到 9.1) 献上代码 控制热点: public class WifiApUtils { private static final String TAG = "WifiApUtils"; public static void openWifiAP(){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {//判断an... 阅读详情

Android开发中WiFi热点和WiFi属性的获取会经常被用到,下面就来记录下WiFi的名称、状态等属性以及获取周围WiFi热点的方法。

一、获取wifi属性

要获得Android系统相关的属性,通常需要获得相关的系统服务。在Android中最常用的是通过Manager来获得对对象的操作服务。WiFi相关的操作中需要用到两个Manager:WifiManager和ConnectivityManage:

public WifiManager wifiManager;				//管理wifi
public ConnectivityManager connectManager;              //管理网络连接
wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);        //获得系统wifi服务
connectManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);

获得服务后,即可得到对象进而获得相关属性:

public NetworkInfo netInfo;					//网络连接
public WifiInfo wifiInfo;					//wifi
public DhcpInfo dhcpInfo;<span style="white-space:pre">					//动态主机配置协议信息的对象,获得IP等网关信息
网络信息的获取:

<pre name="code" class="java">netInfo = connectManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
dhcpInfo = wifiManager.getDhcpInfo();
wifiInfo = wifiManager.getConnectionInfo();


要获得wifi相关的网络信息,必须设定网络类型参数:ConnectivityManager.TYPE_WIFI.下面就可以获得需要的信息,例如当前连接wifi的名称等等属性,即SSID:

wifiInfo.getSSID();
还要获得当前连接wifi网络的ip、mask、netgate、dns等信息,则需要如下实现:

String wifiProperty = "当前连接Wifi信息如下:"+wifiInfo.getSSID()+'\n'+
				"ip:"     +     FormatString(dhcpInfo.ipAddress)   +'\n'+
				"mask:"   +     FormatString(dhcpInfo.netmask)     +'\n'+
				"netgate:"+     FormatString(dhcpInfo.gateway)     +'\n'+
				"dns:"    +     FormatString(dhcpInfo.dns1)  ;
其中dhcpInfo属性的值为int型,要转换成通常见到的32位地址则需要转换方法:

public String FormatString(int value){
        String strValue="";
        byte[] ary = intToByteArray(value);
        for(int i=ary.length-1;i>=0;i--){
                strValue += (ary[i] & 0xFF);
                if(i>0){
                        strValue+=".";
                }
        }
        return strValue;
    }
public  byte[] intToByteArray(int value){
        byte[] b = new byte[4];
         for (int i = 0; i < 4; i++){
                int offset = (b.length - 1 - i) * 8;
                 b[i] = (byte) ((value >>> offset) & 0xFF);
          }
          return b;
    }
上述方法即可获得wifi网络相关的信息,根据需要来选择方法。

二、获取周围WiFi热点

wifiManager提供了一个方法getScanResults()来获得周围的wifi信息,其返回的是一组ScanResult对象,存放在list当中,每个ScanResult对象封装了一个wifi热点相关信息,通过ScanResult对象的属性即可获取到,最常用的两个属性为wifi名称(SSID)和信号强度(level):

ArrayList<ScanResult> list;					//存放周围wifi热点对象的列表
list = (ArrayList<ScanResult>) wifiManager.getScanResults();
通常我们会根据所搜索到的wifi信号的强度level从强到弱进行排序并显示在列表上:

//将搜索到的wifi根据信号强度从强到弱进行排序
private void sortByLevel(ArrayList<ScanResult> list) {
		for(int i=0;i<list.size();i++)
			for(int j=1;j<list.size();j++)
			{
				if(list.get(i).level<list.get(j).level)    //level属性即为强度
				{
					ScanResult temp = null;
					temp = list.get(i);
					list.set(i, list.get(j));
					list.set(j, temp);
				}
			}
	}
ScanResult的信号强度属性level是负值,因为它是以分贝数来计算的。然后根据你自己的需求创建相应的Adapter将其显示在ListView上。上述方法搜索到的wifi很多,你还可以加上动态更新、wifi过滤等功能进行显示。

如果要对wifi状态,网络连接状态进行判断等操作,不要忘了很重要的一点,就是在AndroidManifest.xml里添加权限:

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












Android WiFi开发 (二)Wifi热点 接着上一篇wifi的扫描连接等,这一篇主要说一下手机开启Wifi热点。 demo的下载地址会在最下面贴出来。 图片: 经测试开启wifi热点(无秘密,wpa安全类型,wpa2安全类型)都可以正常开启并使用。 主要用到的代码如下所示: package com.vn.wifitest.utils; import java.lang.reflect.InvocationTar 阅读详情

相关推荐

Android/安卓开发之WIFI的基本应用

本文没有涉及到连接WIFI之后进行通讯,若有这方面的想法(例如两个客户端连接至同一WIFI后进行通讯),请关注后续文章一起讨论。 其实关于WIFI的开发的文章也非常的多,但是大部分只是简单的例子,不够全面,我这里是想写一个比较完整的WIFI应用,主要功能: 1.能够打开/关闭WIFI 2.能够扫面wifi并获取扫描结果 3.能够连接wifi,无论是什么加密方式 4.能够监听连接状态,如正...

天才小汪汪 7684

Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息、热点信息)

Android wifi对象属性及简易Demo 本章介绍Android开发中WiFi热点和WiFi属性的获取,介绍WiFi的名称、状态等属性以及获取周围WiFi热点的方法。 一、怎样获取wifi对象并进行操作 要操作 WIFI 设备,需要先获取 Context.getSystemService(Context.WIFI_SERVICE)获取WifiMana

gao_chun 2万+

【 Android11 WiFi开发 一 】WiFi列表获取与展示

最近在Android11上开发了WiFi相关功能,涉及到WiFi列表的获取、连接有密码的WiFi、连接已保存的WiFi、忘记连接的WiFi、添加其他WiFi。涉及到的知识点较多作以分篇记录,本篇将介绍WiFi列表的获取与展示。

Ho博客 6666

android 获取附近热点,Android开发周围wifi热点和属性的获取

Android开发中WiFi热点和WiFi属性的获取会经常被用到,下面就来记录下WiFi的名称、状态等属性以及获取周围WiFi热点的方法。一、获取wifi属性要获得Android系统相关的属性,通常需要获得相关的系统服务。在Android中最常用的是通过Manager来获得对对象的操作服务。WiFi相关的操作中需要用到两个Manager:WifiManager和ConnectivityManage...

weixin_36410516的博客 737

WifiCountryCode&信道

1. WifiCountryCode概念 2. 设置WifiCountryCode方法 2.1在开机启动 *.rc 中 2.2 在编译使用*.mk中 3.WifiCountryCode 工作机制

无线互联&网络介绍 2042

推荐系统召回总结(持续更新)

推荐系统架构 候选池:可供推荐的物料候选池,对于图文、短视频、新闻等来说通常是最近N天的新物料组成的集合,定期进行物料更新。 召回:从候选池中选出和用户相关的物料,交给后面的排序模块进行打分。召回面对的候选集通常是数十万或者百万甚至千万的量级,检索过程必须轻量快速。通常由多路召回组成,保证不遗漏且相关性、多样性尽量好,可以分为非个性化召回和个性化召回。 粗排:对召回选择的几千或者几百候选物料进行排序,快速打分选出topN,减少精排的压力,兼顾精准与效率。 精排:对粗排的结果进行精准排序,这个环节需要特征尽可

whgyxy的博客 2515

Android P - WiFi 国家码设置流程

在调试Android P WiFi功能时,尝试测试国家码时,却总是找不到正确的设置指令,尝试执行的指令有: 1、wpa_cli -i wlan0 set country CN 查看日志,发现supplicant中确实执行了该流程,但最终却没有下发到driver中,怀疑在kernel中就断掉了。原因未深入去梳理。 2、service call wifi 26 s16 CN 本指令也是进入supplicant,但没有正确下发到driver中。 最终采用修改当前产品prop的方式实现开机时自动设置国家码

xihu_wy的博客 2893

[uboot] (第一章)uboot流程——概述

[uboot] uboot流程系列: [project X] tiny210(s5pv210)上电启动流程(BL0-BL2)建议先看《[project X] tiny210(s5pv210)上电启动流程(BL0-BL2)》,根据例子了解一下上电之后的BL0\BL1\BL2阶段,以及各个阶段的运行位置,功能。==============================================

ooonebook的博客 1万+

MTK无线驱动开发调试参考手册

  本文主要以MTK无线芯片MT7603为例,记录MTK无线驱动开发过程中常用命令以及常规无线问题的排查手段。

良知犹存的博客 9048

Mac微信聊天记录备份终极指南:用软链接轻松迁移到外接硬盘(附重签名教程)

本文详细介绍了如何通过软链接技术将Mac微信聊天记录备份迁移到外接硬盘,解决内置存储空间不足的问题。教程包括备份文件定位、软链接创建及微信重签名步骤,帮助用户高效管理微信数据,释放Mac存储空间。

uuu88的博客 1166

S4HANA Rebate Management(条件合同) -Single Step

S4HANA 条件合同管理(Condition Contract Management), 包括如何创建条件合同,场景应用

m0_50200150的博客 2308

android 读取wifi信息吗,Androidwifi属性简介及wifi信息获取(wifi列表、配置信息、热点信息),androidwifi...

Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息、热点信息),androidwifiAndroid wifi对象属性及简易Demo本章介绍Android开发中WiFi热点和WiFi属性的获取,介绍WiFi的名称、状态等属性以及获取周围WiFi热点的方法。一、怎样获取wifi对象并进行操作要操作 WIFI 设备,需要先获取Context.getSystemService...

weixin_39566578的博客 422

wflow模型hbv

毛管水的处理 😄 快速流的处理 K4是为了产生基流的 找到了令人激动的kenematic模块 😄

m0_46268055的博客 779

安卓wifi基础功能

1 2 3 4 5 6 7 8 9 10 11 12 13 2 涉及到的广播通知 WifiManager.WIFI_STATE_CHANGED_ACTION ——wifi开关变化广播 WifiManager.SCAN_RESULTS_AVAILABLE_ACTION——热点扫描结果通知广播 WifiManager.SUPPLICANT_STATE_CHANGED_ACTION——热点连接结果通知广播 WifiManager.NETWOR..

m0_70083119的博客 1385

手把手教你学Simulink--复杂环境适应的四足机器人领域仿真建模实例:构建一个基于Simulink的四足机器人动态平衡保持仿真模型

通过上述步骤,你可以构建一个基本的基于Simulink的四足机器人动态平衡保持仿真模型。此模型不仅有助于理解四足机器人在复杂环境中的动态平衡控制原理,也为进一步优化提供了基础。随着技术的发展,还可以探索更多高级功能,如自适应步态调整、强化学习等,以提高机器人的智能性和适应性。

MHD0815的博客 238

【异常】安装hermes-agent提示Git克隆仓库网络中断 fetch-pack: unexpected disconnect while reading sideband packet

本文分析了Git克隆仓库时出现网络中断错误的常见原因及解决方案。报错表现为连接被远程主机关闭、管道破裂或数据包意外终止,通常由网络不稳定、仓库过大或配置不当引起。提供了5种优先级排序的解决方法:1)使用浅克隆减少数据量;2)优化Git配置参数;3)切换网络或配置代理;4)检查SSH密钥设置;5)改用HTTPS方式克隆。特别推荐先尝试「浅克隆+HTTPS」组合方案快速验证,若问题持续再根据具体报错深入排查。文中包含详细的命令示例和配置说明,适合不同网络环境下的Git用户参考。

奶爸的编程之路,也就一周冷个三天 1419

android WIFI开发

关于安卓的WIFI开发,这里列了四个主要的类ScanResult wifiConfiguration WifiInfo WifiManager (1)ScanResult,主要是通过wifi 硬件的扫描来获取一些周边的wifi 热点的信息。 在我们进行wifi 搜索的时候,一般会搜到这些信息,首先是接入点名字、接入点信息的强弱、还有接入点使用的安全模式,是WPA、WPE。 打开这个类,我们可

Nicky的专栏 571

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

wifi相关(一)wifi的简单分析

这里列了很多,但是大致可以分为四个主要的类ScanResult wifiConfiguration WifiInfo WifiManager   (1)ScanResult,主要是通过wifi 硬件的扫描来获取一些周边的wifi 热点的信息。   在我们进行wifi 搜索的时候,一般会搜到这些信息,首先是接入点名字、接入点信息的强弱、还有接入点使用的安全模式,是WPA、WPE。

lsyAndroid的专栏--解决实际开发中自己遇到的问题 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息、热点信息),安卓面试题及答案

" 信号强度:“+scanResult.level+”/n :"+wifiManager.calculateSignalLevel(scanResult.level,4));只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

2401_84150187的博客 1796

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Android WiFi开发 (三)Wifi热点8.0适配

Android 7.0及以前Wifi热点 Android 7.1、8.0Wifi热点 看之前评论发现Android7.1以上的手机开启Wifi热点后不能正常使用,故研究了一下如何解决次问题。 Android 7.0 开启Wifi热点 在Android7.0及以前的版本开启Wifi热点的方式如下: WifiManager mWifiManager = (WifiManager) ...

奋斗的菜鸟ing 1万+

android开发:安卓13Wifi和热点查看与设置功能

android开发:安卓13Wifi和热点查看与设置功能

编程之道在明明德在亲民在止于至善 4533

Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息、热点信息

四、连接wifi热点 ============== 通过  WifiManager.getConfiguredNetworks()  方法会返回 WifiConfiguration 对象的列表,然后再调用 WifiManager.enableNetwork(); 方法就可以连接上指定的热点。 五、查看已经连接上的wifi信息 ================ WifiInfo 是专门用来表示连接的对象,这个对象可以通过 WifiManager.getConnectionInfo() 来获

m0_63935228的博客 5412

Android WiFi热点

Android WiFi热点 项目中有需要对WiFi热点需要进行某些操作,所以记录下一些有关WiFi热点的知识点 开启或者关闭热点 网上的大部分例子,都是通过反射,调用WifiManager的setWifiApEnabled方法,来开启或者关闭热点,如: Android WiFi开发 (二)Wifi热点 三、Android开启wifi热点 //热点的配置类 WifiConfiguration apConfig = new WifiConfiguration(); //配置热点的名称(可以在名字后面加点随

了凡 8731
上一篇: Java之LinkedList
下一篇: Android悬浮框应用--悬浮笔记
zcdreaming
博客等级 码龄14年 10粉丝 23原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值