经常有人问到关于Android下WIFI管理的问题,询问个中归于wifi的操作,下面我就写写如何在Android下实现类似Android系统自带wifi管理功能的步骤,通过这个的学习,相信关于android下wifi的操作,我们基本都能掌握了:

第一、说说界面布局

界面很简单:

顶部一个刷新按钮和一个WIFI开关

下部一个listview,每一行就是一个扫描到的wifi信息,显示它的SSID、加密类型,信号强度,是否已经连接

第二、关于列表的获取

如何获取wifi扫描列表呢?wifiManager类的getScanResult()方法就直接可以获取,只不过不建议大家在代码开始的时候直接通过getScanResult()获取,比较科学的流程是:

1、注册wifi扫描结果变化广播,监听wifi列表改变情况

2、调用wifiManager的startScan()方法请求重新扫描附近的wifi热点信息

3、在广播接收器中处理调用getScanResult()方法,获取wifi扫描结果,在listview山显示,这里需要注意的是,好多场所为了无缝覆盖,会布设多个SSID相同的无线热点,在我们获得的ScanResult中,会每个都存在,但是我们观察系统的wifi管理,同名的列表会被合并,所以我们也需要合并,同名的,只显示信号最强的那个就ok

关键代码段如下:

private void regWifiReceiver() {

IntentFilter labelIntentFilter = new IntentFilter();

labelIntentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);

labelIntentFilter.setPriority(1000); // 设置优先级,最高为1000

context.registerReceiver(wifiResultChange, labelIntentFilter);

}

// 剔除ssid中的重复项,只保留相同ssid中信号最强的哪一个

List wifiList = wifiManager.getScanResults();

List newWifList = new ArrayList();

boolean isAdd = true;

if (wifiList != null) {

for (int i = 0; i < wifiList.size(); i++) {

isAdd = true;

for (int j = 0; j < newWifList.size(); j++) {

if (newWifList.get(j).SSID.equals(wifiList.get(i).SSID)) {

isAdd = false;

if (newWifList.get(j).level < wifiList.get(i).level) {

// ssid相同且新的信号更强

newWifList.remove(j);

newWifList.add(wifiList.get(i));

break;

}

}

}

if (isAdd)

newWifList.add(wifiList.get(i));

}

}

第三、关于连接

既然我们已经获取了列表,那么,如何连接呢?

我们遵循以下逻辑,若用户点击了某一行,我们按下面的逻辑处理:

1、如果刚好目前我们连接到此热点上,则显示一个对话框,提示用户“忘记”或者“断开”(分别是wifiManager的removeNetwork()方法和disconnect()方法),结束流程

2、如果此热点信息本机之前配置过,则显示一个对话框,提示用户“忘记”或者“连接”(分别是wifiManager的removeNetwork()方法和enableNetwork()方法),结束流程

3、如果此热点是有密码的热点,弹出密码输入框,提示用户输入密码,输入密码后,连接之

4、如果此热点无密码,弹出提示框,提示无密码,可能不安全,让用户选择是否连接

第四、如何连接一个本机已配置的热点

对于本机已配置的热点,我们需要获取其netid,然后enableNetwork(netid),但是,直接这样的话,你会发现经常无法连接成功,系统会经常自动连接到目前已连接的热点上,而不是我们指定的热点,问题就在于热点的配置文件(WifiConfiguration类)中有一个优先级(priority)属性,系统会自动连接priority最高的热点,所以问题来了,我们需要在enableNetwork(netid)之前,将netid对应的热点在系统中的配置信息的priority调整为最大

好了,有了上述的思路及步骤,完成类似系统wifi管理的功能就很easy了!

欢迎交流QQ:568626884

需要完整demo的朋友,可以到我的资源中去下载

实现android wifi语音通话功能吗,Android下自写类似系统wifi管理功能的实现相关推荐

  1. Android 平台语音通话及回音消除、噪音消除研究

    一 Android平台语音通讯 正因为Android平台优越的性能.美观的界面,越来越多人使用Android手机,从而在Android平台上的 语音通话越来越多.语音通话大概流程如下:我认为一个语音通 ...

  2. Android 平台语音通话及回音消除、噪音消除研究(转)

    一 Android操作系统由来 Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平 板电脑,由Google公司和开放手机联盟领导及开发.尚未有统一中文名 ...

  3. 【转】Android 平台语音通话及回音消除、噪音消除研究

    本文转自博客:https://www.cnblogs.com/jianglijs/p/8583603.html -------------------------------------------- ...

  4. Android P2P语音通话实现 【转】http://macleo.iteye.com/blog/1707455

    Android P2P语音通话实现(思路探讨) 博客分类: android android备忘录 1.http://www.cnblogs.com/milospooner/archive/2012/0 ...

  5. 呼叫中心系统通讯管理功能

    很多不了解呼叫中心系统的朋友都认为,呼叫中心系统就是用来打电话的,实际上系统中还有很多核心的通讯管理功能需要去了解.下面我们就来了解一下,专业的呼叫中心系统通讯管理功能有哪些? 1.话务员的基本功能: ...

  6. 数商云B2B电商系统商品管理功能剖析,助力家用电器企业业务提效

    如今,传统家用电器企业的发展空间不断受到电商渠道的积压,由于许多家电企业缺乏数字化的管理工具,导致管理低效,还很容易产生存货积压.供不应求等问题.随着家用电器市场需求疲软.竞争日趋白热化,家用电器企业 ...

  7. android去掉语音通话功能的方法(只保留上网功能)

    需要在frameworks\base\core\res\res\values\config.xml新增下列2行,即可关闭语音通话功能<!-- This device is not "v ...

  8. Android P2P语音通话实现(思路探讨)

    最近在在研究语音通话的实现,现在把我的实现思路记录在这里.不过,由于初次接触语音通话,所以这是一个简单的思路,也是经过google以及baidu之后的一个学习总结. 我认为一个语音通话系统至少有四个模 ...

  9. Android IMS 语音通话 vs 视频通话 vs 视频彩铃

    背景 以下内容基于Android P code. 主要差异 视频通话比语音通话主要是多了判断是否为视频通话,及视频的显示和传输.如下: video call 视频界面显示控制 界面通过IVideoPr ...

  10. Linux内核有加网速功能吗,Linux下使用有线网络和WiFi能不能叠加网速?网友评论不一...

    有人在Linux操作系统下同时使用有线网络和WiFi,都已经连接上两个不同的网络,看能不能将这两个网络的速度叠加起来?形成一股更快速的网络环境.比如假设一条有线宽带50M,一个WiFi 50M,如果是 ...

最新文章

  1. python基于值得内存_为什么说Python采用的是基于值的内存管理模式
  2. 10.Verilog状态机使用方法
  3. Meanshift解析
  4. 解决 Gradle 进行多模块开发时,模块相互依赖的问题
  5. shell常用命令总结总结
  6. OSPF高级特性——LSA-3(Network Summary LSA)的过滤、路由协议——管理距离的修改、外部路由的metric值的修改
  7. mysql win linux性能对比,不同系统上 MySQL 的性能对比
  8. python中os模块的常用
  9. 中国非制式爆炸物薄膜传感器研究取得进展
  10. LINUX下载编译libopusenc-0.2.1.tar.gz
  11. Blender 精确建模3D打印注意事项
  12. inode客户端连接成功上不了网_iNode智能客户端常见问题及解决办法
  13. 尚学堂马士兵Oracle教程 笔记
  14. 【STM32f401学习之路-02】USART串口通信
  15. 【Elementory OS 6】安装 tweak
  16. 栈evaluate-reverse-polish-notation-leetcode练习题
  17. Spring Cloud 学习笔记(2 3)
  18. 无线CE认证中的DFS测试
  19. 欧姆龙 PLC 程序NJ ST语言EtherCat总线控制24个伺服轴大型程序电池生产线 包括PLC NJ-1400和威纶通触摸屏程序
  20. Java基础 DAY07

热门文章

  1. 湖南大学计算机考研复习资料
  2. 曹鹏 其言其人 2009-06-15 17:44
  3. 无插件使用Eclipse和Resin调试WEB应用(Debug Web App In Ecli...
  4. Android:SQLite数据库学习小结
  5. AVC编码中的规格 :High、Baseline、Main什么意思?还有High@L3.0、High@L4.0、High@L5.1等
  6. 数理统计——AQI预测
  7. 【毕业设计】大数据分析的客户细分 (聚类分析) - python k-means
  8. 华硕(ASUS)路由器AP模式设置教程
  9. Linux字体颜色的意思
  10. 无刷直流电机控制-->霍尔传感器