Wi-Fi 原先是无线保真的缩写,Wi-Fi 的英文全称为wireless fidelity,读音为waifai(拼音读法,均为一声),英文音标/ˈwaɪfaɪ/,
wireless [英] [ˈwaɪəlɪs] fidelity[英] [fiˈdeliti]。在无线局域网的范畴是指“无线相容性认证”,
实质上是一种商业认证,同时也是一种无线联网的技术,以前通过网线连接电脑,而现在则是通过无线电波来连网;常见的就是一个无线路由器,
那么在这个无线路由器的电波覆盖的有效范围都可以采用WIFI连接方式进行联网,如果无线路由器连接了一条ADSL线路或者别的上网线路,则又被称为“热点”。
判断网络连接状态:(适用所有的网络)
private void checkNetworkInfo(){ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();Log.d("network", mobile.toString());//得到2/3G网络连接状态
State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();Log.d("network", wifi.toString());// 得到wifi连接状态
    }根据Android的安全机制,在使用ConnectivityManager时,必须在AndroidManifest.xml中添加<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
联网权限:
<uses-permission android:name="android.permission.INTERNET">进入无线网络配置页面:startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));//进入无线网络配置界面startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //进入手机中的wifi网络设置界面

适用wifi:
WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true);
关闭WIFI网卡
wifiManager.setWifiEnabled(false);
获取网卡当前状态
wifiManager.getWifiState();List<ScanResult> list = wm.getScanResults();
list = list == null? new ArrayList<ScanResult>(): list;
for(ScanResult sr :list)
{Log.d("wifi state" ,"sr : "+sr.toString());
}WifiInfo wi = wm.getConnectionInfo();
if(wi != null)
{Log.d("wifi state" ,"wi : "+wi.toString());Log.d("wifi state" ,"ip : "+wi.getIpAddress());Log.d("wifi state" ,"net id : "+wi.getNetworkId());
}wifi搜索:在我们进行wifi 搜索的时候,一般会搜到这些信息,首先是接入点名字、接入点信息的强弱、还有接入点使用的安全模式,是WPA、WPE。  BSSID 接入点的地址,这里主要是指小范围几个无线设备相连接所获取的地址,比如说两台笔记本通过无线网卡进行连接,双方的无线网卡分配的地址。SSID 网络的名字,当我们搜索一个网络时,就是靠这个来区分每个不同的网络接入点。Capabilities 网络接入的性能,这里主要是来判断网络的加密方式等。Frequency 频率,每一个频道交互的MHz 数。Level 等级,主要来判断网络连接的优先数。这里只提供了一个方法,就是将获得信息编程字符串toString()。WifiInfo 在我们的wifi 已经连通了以后,可以通过这个类获得一些已经连通的wifi 连接的信息获取当前链接的信息,这里信息就比较简单了,这里简单介绍一下这里的方法:getBSSID() 获取BSSID                                 这个可以在ScanResult里得到,不需要连接上getDetailedStateOf() 获取客户端的连通性getHiddenSSID() 获得SSID 是否被隐藏getIpAddress() 获取IP 地址getLinkSpeed() 获得连接的速度getMacAddress() 获得Mac 地址getRssi() 获得802.11n 网络的信号getSSID() 获得SSID                                   这个可以在ScanResult里得到,不需要连接上getSupplicanState() 返回具体客户端状态的信息

1.获取网络接入点ConnectivityManager conManager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = conManager.getActiveNetworkInfo(); String apn = ni.getExtraInfo();//获取网络接入点,这里一般为cmwap和cmnet

获取接入点方式,需要权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>2.如何更改APN接入点呢?public int updateCurrentAPN(ContentResolver resolver, String newAPN) { Cursor cursor = null; try { //get new apn id from list cursor = resolver.query(APN_LIST_URI, null, " apn = ? and current = 1", new String[]{newAPN.toLowerCase()}, null); String apnId = null; if (cursor != null && cursor.moveToFirst()) { apnId = cursor.getString(cursor.getColumnIndex("_id")); } cursor.close(); //set new apn id as chosen one if (apnId != null) { ContentValues values = new ContentValues(); values.put("apn_id", apnId); resolver.update(CURRENT_APN_URI, values, null, null); //通知apn已经更改IntentFilter upIntentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(new NetworkChangeReceiver (), upIntentFilter);  } else { //apn id not found, return 0. return 0; } } catch (SQLException e) { } finally { if (cursor != null) { cursor.close(); } } //update success return 1;
} 具体执行的方法为:
updateCurrentAPN(getContentResolver(),"cmnet");更改接入点需要的权限为:
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission>

转载于:https://www.cnblogs.com/lipeil/archive/2012/08/22/2651670.html

Wifi 与 2G/3G相关推荐

  1. iOS开发 - 检测网络状态(WIFI、2G/3G/4G)

    检测网络状态 在网络应用中,需要对用户设备的网络状态进行实时监控,目的是 让用户了解自己的网络状态,防止一些误会(比如怪应用无能) 根据用户的网络状态进行智能处理,节省用户流量,提高用户体验 WIFI ...

  2. Android.网络连接状态(联网,2g,3g,wifi等)

    net与wap什么意思 WAP上网所谓WAP(Wireless Application Protocol)即无线应用协议,是一项全球性的网络通信协议.WAP使移动Internet 有了一个通行的标准, ...

  3. Swift获取当前网络状态Wifi/5G/4G/3G/2G

    通过Swift获取当前网络状态 通过第三方库Alamofire获取网络状态只能获取到ethernetOrWiFi.cellular.notReachable.unknown这几种网络状态,不能准确的获 ...

  4. 3G? 2G? 2.5G? 4G? 与 WIFI, GPRS,CDMA 3G无线上网

    首先说说无线上网有哪几种形式? WIFI, GPRS, CDMA 3G无线上网 1>wifi全称wireless fidelity,是当今使用最广的一种无线网络传输技术.实际上就是把有线网络信号 ...

  5. Android强制使用3G,Android 强制2G/3G或WIFI 优先上网

    Android开发中有时候需要设定程序连接网络优先 2G/3G 或 WIFI,下面片段代码给出设置方法: public void setPreferredNetwork(int networkType ...

  6. Android通过tcpdump抓包(wifi, 2g, 3g都可以)

    http://blog.csdn.net/deng529828/article/details/20646197 1. 手机要有root权限 2. 下载tcpdump   http://www.str ...

  7. 获取iPhone/iPad设备网络类型(2G,3G,4G,5G,WIFI)

    目前我们获取手机网络类型主要还是用的 AFNetwork 但是AFNetwork有个问题就是类型不够充分,只能四种类型 typedef NS_ENUM(NSInteger, AFNetworkReac ...

  8. (转)Android 判断用户2G/3G/4G移动数据网络

    在做 Android App 的时候,为了给用户省流量,为了不激起用户的愤怒,为了更好的用户体验,是需(要根据用户当前网络情况来做一些调整的,也可以在 App 的设置模块里,让用户自己选择,在 2G ...

  9. Android 判断用户2G/3G/4G移动数据网络

    2019独角兽企业重金招聘Python工程师标准>>> Android 判断用户2G/3G/4G移动数据网络 在做 Android App 的时候,为了给用户省流量,为了不激起用户的 ...

  10. 为什么2G/3G和AI擦不出火花?他们用这篇论文告诉你答案

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 都说5G ...

最新文章

  1. CxImage的编译及简单使用举例
  2. 程序员期末试卷_第三部分复习提纲.doc下载
  3. CAS (3) —— Mac下配置CAS客户端经代理访问Tomcat CAS
  4. ASP.NET中App_Code,App_Data等文件夹的作用
  5. spring boot创建应用 端口冲突8080
  6. 水涨船高!造车新势力平均月薪15367元,自动驾驶算法岗年薪可达百万
  7. 实战HTML:模拟Mac界面静态实现
  8. 对应的ctrl_定位神技Ctrl+G,12种常用操作技巧,你都知道吗
  9. JdbcTemplate查询数据 三种callback之间的区别(ResultSetExtractor,RowMapperRowCallbackHandler)
  10. 一款支持mqtt协议的数据网关
  11. [Can‘t update] xxx in xxx has no tracked branch解决办法
  12. android录制视频设置分辨率,Android录制视频的全面屏适配
  13. floyd算法----牛栏
  14. 如何把图片的文字转换成word
  15. leetcode 803.打砖块(C/C++/Java/python)
  16. 在阿里云CentOS 7.4下安装WSTMart开源商城系统
  17. Android传感器(四):距离传感器
  18. fh admin mysql版本_在用mysql-front的时候遇到显示:程序注册时间到期程序将被限制模式下运行。...
  19. 将sql数据导入mysql数据库_将sql导入mysql数据库
  20. 2019年,免费微信多开软件哪个好?5款多开软件评测

热门文章

  1. eclipse不格式化注释
  2. MPICH2在WINDOWS下的安装配置
  3. 易语言-数据类型及其长度
  4. Xcode 12 to build a single binary with both 32-bit and 64-bit support
  5. Mac/Windows Android Studio / Visual Studio Code/Eclipse /Xcode 操作 快捷键 :代码多行选中等 (开发利器)多
  6. 英文写作的25个黄金加分句型
  7. Win32 网络编程基本函数
  8. win2003实现单用户远程登录
  9. 使用C#创建ActiveX控件(译文)
  10. Python学习之表的数据类型