实现android wifi语音通话功能吗,Android下自写类似系统wifi管理功能的实现
经常有人问到关于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管理功能的实现相关推荐
- Android 平台语音通话及回音消除、噪音消除研究
一 Android平台语音通讯 正因为Android平台优越的性能.美观的界面,越来越多人使用Android手机,从而在Android平台上的 语音通话越来越多.语音通话大概流程如下:我认为一个语音通 ...
- Android 平台语音通话及回音消除、噪音消除研究(转)
一 Android操作系统由来 Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平 板电脑,由Google公司和开放手机联盟领导及开发.尚未有统一中文名 ...
- 【转】Android 平台语音通话及回音消除、噪音消除研究
本文转自博客:https://www.cnblogs.com/jianglijs/p/8583603.html -------------------------------------------- ...
- Android P2P语音通话实现 【转】http://macleo.iteye.com/blog/1707455
Android P2P语音通话实现(思路探讨) 博客分类: android android备忘录 1.http://www.cnblogs.com/milospooner/archive/2012/0 ...
- 呼叫中心系统通讯管理功能
很多不了解呼叫中心系统的朋友都认为,呼叫中心系统就是用来打电话的,实际上系统中还有很多核心的通讯管理功能需要去了解.下面我们就来了解一下,专业的呼叫中心系统通讯管理功能有哪些? 1.话务员的基本功能: ...
- 数商云B2B电商系统商品管理功能剖析,助力家用电器企业业务提效
如今,传统家用电器企业的发展空间不断受到电商渠道的积压,由于许多家电企业缺乏数字化的管理工具,导致管理低效,还很容易产生存货积压.供不应求等问题.随着家用电器市场需求疲软.竞争日趋白热化,家用电器企业 ...
- android去掉语音通话功能的方法(只保留上网功能)
需要在frameworks\base\core\res\res\values\config.xml新增下列2行,即可关闭语音通话功能<!-- This device is not "v ...
- Android P2P语音通话实现(思路探讨)
最近在在研究语音通话的实现,现在把我的实现思路记录在这里.不过,由于初次接触语音通话,所以这是一个简单的思路,也是经过google以及baidu之后的一个学习总结. 我认为一个语音通话系统至少有四个模 ...
- Android IMS 语音通话 vs 视频通话 vs 视频彩铃
背景 以下内容基于Android P code. 主要差异 视频通话比语音通话主要是多了判断是否为视频通话,及视频的显示和传输.如下: video call 视频界面显示控制 界面通过IVideoPr ...
- Linux内核有加网速功能吗,Linux下使用有线网络和WiFi能不能叠加网速?网友评论不一...
有人在Linux操作系统下同时使用有线网络和WiFi,都已经连接上两个不同的网络,看能不能将这两个网络的速度叠加起来?形成一股更快速的网络环境.比如假设一条有线宽带50M,一个WiFi 50M,如果是 ...
最新文章
- python基于值得内存_为什么说Python采用的是基于值的内存管理模式
- 10.Verilog状态机使用方法
- Meanshift解析
- 解决 Gradle 进行多模块开发时,模块相互依赖的问题
- shell常用命令总结总结
- OSPF高级特性——LSA-3(Network Summary LSA)的过滤、路由协议——管理距离的修改、外部路由的metric值的修改
- mysql win linux性能对比,不同系统上 MySQL 的性能对比
- python中os模块的常用
- 中国非制式爆炸物薄膜传感器研究取得进展
- LINUX下载编译libopusenc-0.2.1.tar.gz
- Blender 精确建模3D打印注意事项
- inode客户端连接成功上不了网_iNode智能客户端常见问题及解决办法
- 尚学堂马士兵Oracle教程 笔记
- 【STM32f401学习之路-02】USART串口通信
- 【Elementory OS 6】安装 tweak
- 栈evaluate-reverse-polish-notation-leetcode练习题
- Spring Cloud 学习笔记(2 3)
- 无线CE认证中的DFS测试
- 欧姆龙 PLC 程序NJ ST语言EtherCat总线控制24个伺服轴大型程序电池生产线 包括PLC NJ-1400和威纶通触摸屏程序
- Java基础 DAY07
热门文章
- 湖南大学计算机考研复习资料
- 曹鹏 其言其人 2009-06-15 17:44
- 无插件使用Eclipse和Resin调试WEB应用(Debug Web App In Ecli...
- Android:SQLite数据库学习小结
- AVC编码中的规格 :High、Baseline、Main什么意思?还有High@L3.0、High@L4.0、High@L5.1等
- 数理统计——AQI预测
- 【毕业设计】大数据分析的客户细分 (聚类分析) - python k-means
- 华硕(ASUS)路由器AP模式设置教程
- Linux字体颜色的意思
- 无刷直流电机控制-->霍尔传感器