android_wifi简介
android wifi 点对点传输原理

android wifi 点对点传输原理
Android WiFi点对点传输原理主要基于WLAN(无线局域网)技术。
点对点传输,也称为P2P传输,允许两个设备在没有中间接入点的情况下,通过WLAN进行直接互联。
这种传输模式的特点是用户介入操作少,传输速度快,对设备的要求相对较低。
在点对点传输中,一个设备作为发射端,另一个设备作为接收端。
发射端将数据发送出去,接收端接收数据。
这种传输模式适用于传输距离较远,或者监控点分布较为广泛,无法做到点对多点传输的情况。
在Android系统中,实现WiFi点对点传输需要使用到WifiP2pManager 等组件。
同时,需要获取相应的权限,包括一些运行时权限,需要用户同意后才能使用。
此外,对于中继传输模式,由于发射端与接收端之间存在阻挡物遮挡了微波信号,需要在中间添加中转设备,让微波信号通过中转设备顺利传输到接收端。
这种模式由于需要增加中转设备,会增大设备费用投入,所以一般不必要时都不会采用。
以上内容仅供参考,如需获取更多信息,建议查阅Android开发相关文档或咨询专业开发人员。
android wifi详细

Contents1. Wifi扫盲 (2)2. Android Wifi框架的结构图 (3)3. wpa_supplient (3)4. Netd (5)5. FrameWork层架构 (5)6. 情景分析 (5)6.1. 情景1 (5)6.2. 情景2 (8)6.3. 情景3 (8)7.Ad hoc的支持 (10)8.wifi direct (12)9.Soft ap支持 (12)10.Wifi Tethering支持 (15)b Tethering支持 (15)12.Reverse usb Tethering (16)13.Ethernet Tethering (17)14.需要改动的地方 (17)15.测试 (17)16.调试中遇到的问题 (18)1. Wifi扫盲Access point:也叫hotspot(热点),家里的无线路由就是ap。
SoftAp:软ap,用无线网卡模拟ap的功能。
Wifi网络有两种模式:∙Infrastructure mode, in which wireless clients are connected to an access point. This is generally the default mode for 802.11b cards.∙Ad hoc mode, in which clients are connected to one another without any access point.请参考/contents/wifi/wifimodes.php3我们既可以通过Ad hoc也可以通过SoftAp方式来实现共享网络(例如手机可以通过笔记本访问internet),但是原理不同。
这里只是简单的概括,详细的解释请google或百度。
2. Android Wifi框架的结构图上图只是wifi工作于station模式时的图,当工作于soft ap模式时最基本的不同是不通过wpa_supplicant而是Framework层直接通过netd daemon来控制驱动。
Android -wifi 直连 wifi direct

3、WIFI_P2P_THIS_DEVICE_CHANGED_ACTION :该设备的细节已经改变。
见的WifiP2pManager文档了解更多信息。 也期待在Wi - Fi的直接演示示例应用程序。
/reference/android/net/wifi/p2p/package-summary.html Wi-Fi Direct与ad-hoc模式有哪些不同?
.wifi.p2p ,一个新的软件包,包含所有的API执行同行等连接与Wi - Fi。 你需要与主类是WifiP2pManager ,您可以调用getSystemService(WIFI_P2P_SERVICE)收购。WifiP2pManager包括API,允许您:
1、您P2P连接的应用程序通过调用initialize
ห้องสมุดไป่ตู้
DIGITIMES中文网 原文网址: Wi-Fi Direct 10大问答/tw/dt/n/shwnws.asp?id=0000205310_A224IE390EPO7S191B4CM#ixzz1iDK5ewPn
两者在安全性上有所不同,Wi-Fi Direct采用WPA2(Wi-Fi Protection Access Version 2)加密,在Windows ad-hoc网络下,最高安全支持为WEP。不过Windows 7亦支持WPA2
Android -wifi 直连(wifi direct )2011-12-23 15:02
现在,Android的支持Wi - Fi的直接点对点点对点(P2P)Android系统的供电设备和其他类型的设备,没有一个热点或互联网连接之间的连接。 Android框架提供了一套Wi - Fi的P2P的API,允许你去发现和连接到其他设备时,每个设备的Wi - Fi的直接支持,然后沟通跨越距离远远长于蓝牙连接迅速??连接。
Android开发之wifi

WIFI就是一种无线联网技术,常见的是使用无线路由器。
那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网。
如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为“热点”。
在Android中对Wifi操作,android本身提供了一些有用的包,在.wifi包下面。
主要包括以下几个类和接口:1.ScanResult主要用来描述已经检测出的接入点,包括接入点的地址,接入点的名称,身份认证,频率,信号强度等信息。
2.WifiConfigurationWifi网络的配置,包括安全设置等。
3.WifiInfowifi无线连接的描述,包括接入点,网络连接状态,隐藏的接入点,IP地址,连接速度,MAC地址,网络ID,信号强度等信息。
这里简单介绍一下这里的方法:getBSSID() 获取BSSIDgetDetailedStateOf() 获取客户端的连通性getHiddenSSID() 获得SSID 是否被隐藏getIpAddress() 获取IP 地址getLinkSpeed() 获得连接的速度getMacAddress() 获得Mac 地址getRssi() 获得802.11n 网络的信号getSSID() 获得SSIDgetSupplicanState() 返回具体客户端状态的信息4.WifiManager这个不用说,就是用来管理我们的wifi 连接,这里已经定义好了一些类,可以供我们使用。
获取WIFI网卡的状态WIFI网卡的状态是由一系列的整形常量来表示的。
1.WIFI_STATE_DISABLED : WIFI网卡不可用(1)2.WIFI_STATE_DISABLING : WIFI网卡正在关闭(0)3.WIFI_STATE_ENABLED : WIFI网卡可用(3)4.WIFI_STATE_ENABLING : WIFI网正在打开(2)(WIFI启动需要一段时间)5.WIFI_STATE_UNKNOWN : 未知网卡状态下面先写一个wifi的实例:首先看以下main.xml:[html]view plaincopy1.<?xml version="1.0"encoding="utf-8"?>2.<ScrollView xmlns:android="/apk/res/android"3.android:layout_width="fill_parent"4.android:layout_height="fill_parent"5.>6.7.<LinearLayout8.android:orientation="vertical"9.android:layout_width="fill_parent"10.android:layout_height="fill_parent"11.>12.<Button13.android:id="@+id/scan"14.android:layout_width="wrap_content"15.android:layout_height="wrap_content"16.android:text="扫描网络"17./>18.<Button19.android:id="@+id/start"20.android:layout_width="wrap_content"21.android:layout_height="wrap_content"22.android:text="打开Wifi"23./>24.<Button25.android:id="@+id/stop"26.android:layout_width="wrap_content"27.android:layout_height="wrap_content"28.android:text="关闭Wifi"29./>30.<Button31.android:id="@+id/check"32.android:layout_width="wrap_content"33.android:layout_height="wrap_content"34.android:text="Wifi状态"35./>36.<TextView37.android:id="@+id/allNetWork"38.android:layout_width="fill_parent"39.android:layout_height="wrap_content"40.android:text="当前没有扫描到Wifi网络"41./>42.</LinearLayout>43.</ScrollView>接下来我们吧wifi的相关操作都封装在了一个WifiAdmin类中,以后开启或关闭等相关操作可以直接调用这个类的相关方法:[html]view plaincopy1.import java.util.List;2.3.import android.content.Context;4.import .wifi.ScanResult;5.import .wifi.WifiConfiguration;6.import .wifi.WifiInfo;7.import .wifi.WifiManager;8.import .wifi.WifiManager.WifiLock;9.10.public class WifiAdmin {11. //定义一个WifiManager对象12. private WifiManager mWifiManager;13. //定义一个WifiInfo对象14. private WifiInfo mWifiInfo;15. //扫描出的网络连接列表16. private List<ScanResult> mWifiList;17. //网络连接列表18. private List<WifiConfiguration> mWifiConfigurations;19. WifiLock mWifiLock;20. public WifiAdmin(Context context){21. //取得WifiManager对象22.mWifiManager=(WifiManager) context.getSystemService(Context.WIFI_SERVICE);23. //取得WifiInfo对象24.mWifiInfo=mWifiManager.getConnectionInfo();25. }26. //打开wifi27. public void openWifi(){28. if(!mWifiManager.isWifiEnabled()){29. mWifiManager.setWifiEnabled(true);30. }31. }32. //关闭wifi33. public void closeWifi(){34. if(!mWifiManager.isWifiEnabled()){35. mWifiManager.setWifiEnabled(false);36. }37. }38. // 检查当前wifi状态39. public int checkState() {40. return mWifiManager.getWifiState();41. }42. //锁定wifiLock43. public void acquireWifiLock(){44. mWifiLock.acquire();45. }46. //解锁wifiLock47. public void releaseWifiLock(){48. //判断是否锁定49. if(mWifiLock.isHeld()){50. mWifiLock.acquire();51. }52. }53. //创建一个wifiLock54. public void createWifiLock(){55.mWifiLock=mWifiManager.createWifiLock("test");56. }57. //得到配置好的网络58. public List<WifiConfiguration> getConfiguration(){59. return mWifiConfigurations;60. }61. //指定配置好的网络进行连接62. public void connetionConfiguration(int index){63. if(index>mWifiConfigurations.size()){64. return ;65. }66. //连接配置好指定ID的网络67. mWifiManager.enableNetwork(mWifiConfigurations.get(index).networkId,true);68. }69. public void startScan(){70. mWifiManager.startScan();71. //得到扫描结果72.mWifiList=mWifiManager.getScanResults();73. //得到配置好的网络连接74.mWifiConfigurations=mWifiManager.getConfiguredNetworks();75. }76. //得到网络列表77. public List<ScanResult> getWifiList(){78. return mWifiList;79. }80. //查看扫描结果81. public StringBuffer lookUpScan(){82. StringBuffer sb=new StringBuffer();83. for(int i=0;i<mWifiList.size();i++){84. sb.append("Index_" + new Integer(i + 1).toString() + ":");85. // 将ScanResult信息转换成一个字符串包86. // 其中把包括:BSSID、SSID、capabilities、frequency、level87. sb.append((mWifiList.get(i)).toString()).append("\n");88. }89. return sb;90. }91. public String getMacAddress(){92. return (mWifiInfo==null)?"NULL":mWifiInfo.getMacAddress();93. }94. public String getBSSID(){95. return (mWifiInfo==null)?"NULL":mWifiInfo.getBSSID();96. }97. public int getIpAddress(){98. return (mWifiInfo==null)?0:mWifiInfo.getIpAddress();99. }100. //得到连接的ID101. public int getNetWordId(){102. return (mWifiInfo==null)?0:mWifiInfo.getNetworkId();103. }104. //得到wifiInfo的所有信息105. public String getWifiInfo(){106. return (mWifiInfo==null)?"NULL":mWifiInfo.toString();107. }108. //添加一个网络并连接109. public void addNetWork(WifiConfiguration configuration){ 110. int wcgId=mWifiManager.addNetwork(configuration);111. mWifiManager.enableNetwork(wcgId, true);112. }113. //断开指定ID的网络114. public void disConnectionWifi(int netId){115. mWifiManager.disableNetwork(netId);116. mWifiManager.disconnect();117. }118.}最后看以下WifiActivity类:[html]view plaincopy1.import java.util.List;2.3.import android.app.Activity;4.import .wifi.ScanResult;5.import android.os.Bundle;6.import android.view.View;7.import android.view.View.OnClickListener;8.import android.widget.Button;9.import android.widget.TextView;10.import android.widget.Toast;11.12.public class WifiActivity extends Activity {13. /** Called when the activity is first created. */14. private TextView allNetWork;15. private Button scan;16. private Button start;17. private Button stop;18. private Button check;19. private WifiAdmin mWifiAdmin;20. // 扫描结果列表21. private List<ScanResult> list;22. private ScanResult mScanResult;23. private StringBuffer sb=new StringBuffer();24. @Override25. public void onCreate(Bundle savedInstanceState) {26. super.onCreate(savedInstanceState);27. setContentView(yout.main);28.mWifiAdmin = new WifiAdmin(WifiActivity.this);29. init();30. }31. public void init(){32.allNetWork = (TextView) findViewById(R.id.allNetWork);33.scan = (Button) findViewById(R.id.scan);34.start = (Button) findViewById(R.id.start);35.stop = (Button) findViewById(R.id.stop);36.check = (Button) findViewById(R.id.check);37. scan.setOnClickListener(new MyListener());38. start.setOnClickListener(new MyListener());39. stop.setOnClickListener(new MyListener());40. check.setOnClickListener(new MyListener());41. }42. private class MyListener implements OnClickListener{43.44. @Override45. public void onClick(View v) {46. // TODO Auto-generated method stub47. switch (v.getId()) {48. case R.id.scan://扫描网络49. getAllNetWorkList();50. break;51. case R.id.start://打开Wifi52. mWifiAdmin.openWifi();53. Toast.makeText(WifiActivity.this, "当前wifi状态为:"+mWifiAdmin.checkState(), 1).show();54. break;55. case R.id.stop://关闭Wifi56. mWifiAdmin.closeWifi();57. Toast.makeText(WifiActivity.this, "当前wifi状态为:"+mWifiAdmin.checkState(), 1).show();58. break;59. case R.id.check://Wifi状态60. Toast.makeText(WifiActivity.this, "当前wifi状态为:"+mWifiAdmin.checkState(), 1).show();61. break;62. default:63. break;64. }65. }66.67. }68. public void getAllNetWorkList(){69. // 每次点击扫描之前清空上一次的扫描结果70. if(sb!=null){71.sb=new StringBuffer();72. }73. //开始扫描网络74. mWifiAdmin.startScan();75.list=mWifiAdmin.getWifiList();76. if(list!=null){77. for(int i=0;i<list.size();i++){78. //得到扫描结果79.mScanResult=list.get(i);80.sb=sb.append(mScanResult.BSSID+" ").append(mScanResult.SSID+" ")81. .append(mScanResult.capabilities+" ").append(mScanResult.frequency+" ")82. .append(mScanResult.level+"\n\n");83. }84. allNetWork.setText("扫描到的wifi网络:\n"+sb.toString());85. }86. }87.}不要忘了加入权限:[html]view plaincopy1.<!-- 以下是使用wifi访问网络所需的权限 -->2.<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission>3.<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>4.<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>5.<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>最后看以下演示效果:点击打开wifi:状态为3说明WIFI网卡可用(3)。
Android开发入门_WiFi_代码

Android开发入门——WIFI网络操作一.什么是WIFIWIFI 就是一种无线联网技术,常见的一个就是无线路由器。
那么在这个无线路由器的电波覆盖的有效范围内都可以采用WIFI 连接的方式进行联网。
如果无线路由器连接了一个ADLS线路或者别的联网线路,则又被称为“热点”。
流程:初始化---》使能wifi-→查找ap-→配置ap参数-→连接-→配置ip地址1、wifi网卡有以下几种状态:2、要对wifi进行操作,首先要在AndroidMenifest.xml中取得权限的,如下:<!-- 以下是使用wifi访问网络所需要的权限--><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission> //修改网络状态的权限<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> //修改wifi状态的权限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> //访问网络权限<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> //访问wifi权限3、对wifi网卡进行操作需要通过WifiManger对象来进行,获取该对象的方法如下:WifiManger wifiManger =(WifiManger)Context.getSystemService(Service.WIFI_SERVICE);打开wifi网卡Wifimanger.setWifiEnabled(true);关闭wifi网卡wifiManger.setWifiEnablee(false);获取网卡的当前的状态wifiManger.getWifiState();========================================主要代码如下=============================================JAVA CODE :No Title Code1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 package mars .wifi ;import android.app.Activity ;import android.content.Context ;import .wifi.WifiManager ;import android.os.Bundle ;import android.view.View ;import android.view.View.OnClickListener ;import android.widget.Button ;import android.widget.Toast ;public class WifiActivity extends Activity {/** Called when the activity is first created. */private Button startButton = null ;private Button stopButton = null ;private Button checkButton = null ;private WifiManager wifiManager = null ;@Overridepublic void onCreate (Bundle savedInstanceState ) {super .onCreate (savedInstanceState );setContentView (R .layout .main );startButton = (Button )findViewById (R .id .startWifi );stopButton = (Button )findViewById (R .id .stopWifi );checkButton = (Button )findViewById (R .id .checkWifi );startButton .setOnClickListener (new StartWifiListener ()); stopButton .setOnClickListener (new StopWifiListener ());checkButton .setOnClickListener (new CheckWifiListener ()); }class StartWifiListener implements OnClickListener {@Overridepublic void onClick (View v ) {wifiManager =34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 (WifiManager )WifiActivity .this .getSystemService (Context .WIFI_SERVICE ); wifiManager .setWifiEnabled (true );System .out .println ("wifi state --->" + wifiManager .getWifiState ()); Toast .makeText (WifiActivity .this , "当前Wifi 网卡状态为" +wifiManager .getWifiState (), Toast .LENGTH_SHORT ).show ();}}class StopWifiListener implements OnClickListener {@Overridepublic void onClick (View arg0) {// TODO Auto-generated method stubwifiManager =(WifiManager )WifiActivity .this .getSystemService (Context .WIFI_SERVICE ); wifiManager .setWifiEnabled (false );System .out .println ("wifi state --->" + wifiManager .getWifiState ()); Toast .makeText (WifiActivity .this , "当前Wifi 网卡状态为" +wifiManager .getWifiState (), Toast .LENGTH_SHORT ).show ();}}class CheckWifiListener implements OnClickListener {@Overridepublic void onClick (View v ) {wifiManager =(WifiManager )WifiActivity .this .getSystemService (Context .WIFI_SERVICE ); System .out .println ("wifi state --->" + wifiManager .getWifiState ()); Toast .makeText (WifiActivity .this , "当前Wifi 网卡状态为" +wifiManager .getWifiState (), Toast .LENGTH_SHORT ).show ();}}}1. StringBuffer sb = new StringBuffer();2. sb.append("Wifi 信息\n");3. sb.append("MAC 地址:" + wifiInfo.getMacAddress() + "\n");4. sb.append("接入点的BSSID :" + wifiInfo.getBSSID() + "\n");5. sb.append("IP 地址(int ):" + wifiInfo.getIpAddress() + "\n");6. sb.append("IP 地址(Hex):" + Integer .toHexString(wifiInfo.getIpAddress()) + "\n"); sb.append("IP地址:" + ipIntToString(wifiInfo.getIpAddress()) + "\n");7.sb.append("网络ID:" + wifiInfo.getNetworkId() + "\n");WifiInfo.setText(sb.toString());61.143.168.192。
android—wifi

android—wifi1.什么是wifi?Wifi是一种无线联网的技术,以前通过网线连接电脑,现在通过无线电波来连网,常见的就是一个无限路由器,那么这个无限路由器的电波覆盖的有效范围都可以采用wifi连接方式进行连网,如果无线路由器连接了一条ADSL线路或者别的上网线路,则又被称为热点。
2.获取wifi网卡的状态是由一系列的整形常量来表示的,WIFI_STATE_DISABLED: 网卡不可用 constant value 1WIFI_STATE_DISABLING:WIFI正在关闭 constant value 0WIFI_STATE_ENABLED: WIFI网卡可用 constant value 3 WIFI_STATE_ENABLING : WIFI网卡正在打开 constant value 2WIFI_STATE_UNKNOWN:未知网卡状态3.操作wifi所需要的权限<uses-permissionandroid:name="android.permission.CHANGE_NETWORK_S TATE"></uses-permission><uses-permissionandroid:name="android.permission.CHANGE_WIFI_STAT E"></uses-permission><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_S TATE"></uses-permission><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STAT E"></uses-permission>4.改变wifi网卡的状态改变wifi网卡的状态,对wifi网卡进行操作,需要通过WifiManager对象来进行,获取该对象的方法如下: WifiMangerWifiManger =( WifiManger)Context.getSystemService(Service.WIFI_SERVICE);打开wifi网卡WifiManger.setWifiEnabled(ture);关闭wifi网卡WifiManger.setEnable(false);获取网卡当前的状态:WifiManger.getWifiState();代码如下:View Code1package com.wbk.wifi.activity;23import android.app.Activity;4import android.content.Context;5import .wifi.WifiManager;6import android.os.Bundle;7import android.view.View;8import android.view.View.OnClickListener;9import android.widget.Button;10import android.widget.Toast;1112public class Wifi_wbkActivity extends Activity13 {14private Button startButton = null;15private Button stopButton = null;16private Button checkButton = null;1718private WifiManager wifiManager = null;1920 @Override21public void onCreate(Bundle savedInstanceState)22 {23super.onCreate(savedInstanceState);24 setContentView(yout.main);25 startButton = (Button) findViewById(R.id.startButton);26 stopButton = (Button) findViewById(R.id.stopButton);27 checkButton = (Button) findViewById(R.id.checkButton);28 startButton.setOnClickListener(new startWifiListener());29 stopButton.setOnClickListener(new stopWifiListener());30 checkButton.setOnClickListener(new checkWifiListener());31 }3233// 内部类,需要的是Wifi_wbkActivity的对象,所以Wifi_wbkActivity.this 34class startWifiListener implements OnClickListener35 {3637 @Override38public void onClick(View v)39 {40 wifiManager = (WifiManager) Wifi_wbkActivity.this.getSystem Service(Context.WIFI_SERVICE);41 wifiManager.setWifiEnabled(true);42 System.out.println("wifi start ----->" + wifiManager.getWif iState());43 Toast.makeText(Wifi_wbkActivity.this, "当前wifi网卡状态为", w ifiManager.getWifiState());44 }45 }4647class stopWifiListener implements OnClickListener48 {4950 @Override51public void onClick(View v)52 {53 wifiManager=(WifiManager)Wifi_wbkActivity.this.getSystemSer vice(Context.WIFI_SERVICE);54 wifiManager.setWifiEnabled(false);55 System.out.println("wifi stop --->"+wifiManager.getWifiStat e());56 Toast.makeText(Wifi_wbkActivity.this, "当前的wifi状态为", wi fiManager.getWifiState());5758 }5960 }61class checkWifiListener implements OnClickListener{6263 @Override64public void onClick(View v)65 {66 wifiManager=(WifiManager)Wifi_wbkActivity.this.getSystemSer vice(Context.WIFI_SERVICE);67 System.out.println("wifi state ----->"+wifiManager.getWifiS tate());68 Toast.makeText(Wifi_wbkActivity.this, "当前的wifi状态为", wi fiManager.getWifiState());69 }7071 }7273 }复制代码。
Android网络开发之WIFI

Android网络开发之WIFIWIFI全称Wireless Fidelity, 又称标准。
WIFI联盟成立于1999年,当时的名称叫做Wireless Ethernet Compatibility Alliance(WECA), 2002年10月正式改名Wi-Fi Alliance。
Android 提供包。
wifi api为app和底层无线栈进行交流提供途径。
底层无线栈为wifi 提供接入点。
中常用的类有:1. ScanResult, 主要用来描述已经检测出的接入点,包括接入点的地址、接入点的名称、身份认证、频率、信号强度等。
2. WifiConfiguration, wifi网络配置,包括安全配置等。
3. WifiInfo, Wifi无线连接的描述,包括接入点、网络连接状态、隐藏的接入点、IP地址、连接速度、MAC地址、网络ID、信号强度等。
4. WifiManager, 提供管理wifi连接的大部分API。
5. , 通过WifiLock来锁定wifi网络,使其一直保持连接,直到这个锁定被释放。
如果app需要下载很大的文件,就需要保持wifi锁,来确保app有足够的时间下载完成。
wifi 锁不能超越wifi-enabled设置,也没有飞行模式。
WifiManager的常用方法1. addNetwork2. calculateSignalLevel,3. compareSignalLevel,4. createWifiLock,5. disableNetwork,6. disconnect,7. enableNetwork,8. getConfiguredNetworks,9. getDhcpInfo,10. getScanResults,11. getWifiState,12. isWifiEnabled,13. pingSupplicant,14. reassociate,15. removeNetwork,16. saveConfiguration,17. setWifiEnabled,18. startScan,19. updateNetwork.学习如何控制app中的wifi连接。
android-wifi

Wifi 网卡状态1.WIFI_STATE_DISABLED: WIFI网卡不可用2.WIFI_STATE_DISABLING: WIFI正在关闭3.WIFI_STATE_ENABLED:WIFI网卡可用4.WIFI_STATE_ENABLING:WIFI网卡正在打开5.WIFI_STATE_UNKNOWN:未知网卡状态WIFI 访问网络需要的权限<uses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission>修改网络状态的权限<uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>修改WIFI状态的权限<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>访问网络权限<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"> </uses-permission>访问WIFI权限WIFI 核心模块⏹WifiService由SystemServer启动的时候生成的ConnecttivityService创建,负责启动关闭wpa_supplicant,启动和关闭WifiMonitor线程,把命令下发给wpa_supplicant以及跟新WIFI 的状态⏹WifiMonitor负责从wpa_supplicant接收事件通知⏹Wpa_supplicant1、读取配置文件2、初始化配置参数,驱动函数3、让驱动scan当前所有的bssid4、检查扫描的参数是否和用户设置的想否5、如果相符,通知驱动进行权限认证操作6、连上AP⏹Wifi驱动模块厂商提供的source,主要进行load firmware和kernel的wireless进行通信⏹Wifi电源管理模块主要控制硬件的GPIO和上下电,让CPU和Wifi模组之间通过sdio接口通信Wifi工作步骤⏹Wifi模块初期化⏹Wifi启动⏹查找热点(AP)⏹配置AP⏹配置AP参数⏹Wifi连接⏹IP地址配置Wifi模块代码总结⏹Wifi Application代码packages/apps/Settings/src/com/android/settings/wifi⏹Wifi Frameworkframeworks/base/wifi/java/android/net/wififrameworks/base/services/java/com/android/server⏹Wifi JNIframeworks/base/core/jni/android_net_wifi_Wifi.cpp⏹Wifi Hardwarehardware/libhardware_legacy/wifi/wifi.c⏹Wifi toolexternal/wpa_supplicant⏹Wifi kernelnet/wireless drivers/wlan_sd8688 arch/arm/mach-pxa/wlan_pm.cWifi模块的初始化:在SystemServer 启动的时候,会生成一个ConnectivityService 的实例, ConnectivityService 的构造函数会创建WifiService,WifiStateTracker 会创建WifiMonitor 接收来自底层的事件,WifiService 和WifiMonitor 是整个模块的核心。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
统称作Wi-Fi。从应用层面来说,要使用Wi-Fi,
用户首先要有Wi-Fi 兼容的用户端装置。
操作WIFI网络所需要的权限
基于Android的WiFi相关库函数
所需要用到的wifi相关Android包:.wifi
常见操作主要包括以下及各类和接口: 1、WifiManager
WiFi的相关内容简介
1 2 3 4 5
WiFi的定义
操作WIFI网络所需要的权限
基于Android相关库函数 如何找到WiFi的AP WiFi参数以及含义
WiFi定义
它是一种短程无线传输技术,能够在数百英
尺范围内支持互联网接入的无线电信号。随着技
术的发展,以及IEEE 802.11a 及IEEE 802.11g
} }
相关参数说明
String BSSIDThe address of the access point. EG:00:25:86:4D:88:58 String SSIDThe network name EG:TP_LINK_4D8858 String capabilitiesDescribes the authentication, key management, and encryption schemes supported by the access point. EG:【WPA-PSK-TKIP+CCMP】【 WPA2-PSK-TKIP+CCMP-preauth 】
提供了管理WiFi连接的大部分API,主要包括如下内容:
查看已经配置好的网络清单,而且可以修改个别记录的属性。 可以建立或是关闭WiFi网络连接,并且可以查询有关网络状态的动态信
息。
对接入点的扫描结果包含足够的信息来决定需要与什么接入点建立连接。 同时还定义了许多常量来表示WiFi状态的改变。
常用的方法:getWiFiState , isWifiEnabl
int frequencyThe frequency in MHz of the channel over which the
client is communicating with the access point. EG:2437
int levelThe detected signal level in dBm.
找到周围AP的关键步骤
检测网卡状态,修改网卡状态——开启,进行扫描周围ap,打印结果 class ListWifiListerner implements OnClickListener{ @Override public void onClick(View v) { wifiManager = (WifiManager)WifiActivity.this.getSystemService(Context.WIFI_ SERVICE); wifiManager.startScan(); mWifiList = wifiManager.getScanResults(); for(int i=0;i<mWifiList.size();i++){ sb.append(new Integer(i).toString()+"."); sb.append(mWifiList.get(i).toString()); sb.append("\n"); } mainText.setText(sb); sb.delete(0, sb.capacity());
EG:-77
getScanResults等等
WiFi相关库函数
所需要用到的wifi相关Android包:.wifi 常见操作主要包括以下及各类和接口: 2、WifiConfiguration WiFi网络的配置,包括安全配置等。 3.WifiInfo WiFi无线连接的描述,包括接入点、网络连接状态、隐藏的接入点,ip地址、连 接速度、mac地址、网络id,信号强度等信息。 4.ScanResult 主要用来描述已经检测出的接入点,包括接入点的地址、接入点的名称、身份认 证、频率、信号强度等信息。