导航:首页 > 操作系统 > androidapiwifi

androidapiwifi

发布时间:2022-08-02 09:09:33

① 有关android内核的wifi驱动api

通过程序来实现wifi的自动连接。

这两天对android的wifi功能研究了一下。下面共享出自己封装的WifiConnect类。(这里参考了ZXing开源项目中wifi模块)

首先,要了解android关于wifi的API.

如果喜欢看English API,这是android关于wifi的API地址:

http://developer.android.com/reference/android/net/wifi/package-summary.html(配置Wifi,还需要设定权限,android中关于wifi的API文档中说明了要添加什么权限)

如果一看英语就头疼,这里有关于wifi的api的中文解释

http://note.sdo.com/u/1500295617/n/prb71~jGAHfpnM0l000bgN

切入正题,这里贴出一个封装了的类(WifiConnect),在实例化WifiConnect对象时,需要传入一个WifiManager对象。WifiConnect类向外部提供一个Connect方法,参数是无线的SSID,password,还有加密类型。

[java] view plainprint?
  1. <spanstyle="font-size:18px;">packagecom.example.aptest;
  2. importjava.util.List;
  3. importandroid.net.wifi.WifiConfiguration;
  4. importandroid.net.wifi.WifiManager;
  5. publicclassWifiConnect{
  6. WifiManagerwifiManager;
  7. //定义几种加密方式,一种是WEP,一种是WPA,还有没有密码的情况
  8. publicenumWifiCipherType
  9. {
  10. WIFICIPHER_WEP,WIFICIPHER_WPA,WIFICIPHER_NOPASS,WIFICIPHER_INVALID
  11. }
  12. //构造函数
  13. publicWifiConnect(WifiManagerwifiManager)
  14. {
  15. this.wifiManager=wifiManager;
  16. }
  17. //打开wifi功能
  18. privatebooleanopenWifi()
  19. {
  20. booleanbRet=true;
  21. if(!wifiManager.isWifiEnabled())
  22. {
  23. bRet=wifiManager.setWifiEnabled(true);
  24. }
  25. returnbRet;
  26. }
  27. //提供一个外部接口,传入要连接的无线网
  28. publicbooleanconnect(StringSSID,StringPassword,WifiCipherTypeType)
  29. {
  30. if(!this.openWifi())
  31. {
  32. returnfalse;
  33. }
  34. //开启wifi功能需要一段时间(我在手机上测试一般需要1-3秒左右),所以要等到wifi
  35. //状态变成WIFI_STATE_ENABLED的时候才能执行下面的语句
  36. //WifiManager.WIFI_STATE_ENABLING2
  37. //WifiManager.WIFI_STATE_ENABLED3
  38. System.out.println("wifiManager.getWifiState()"+wifiManager.getWifiState());
  39. while(wifiManager.getWifiState()==WifiManager.WIFI_STATE_ENABLING)
  40. {
  41. System.out.println("wifiManager.getWifiState"+wifiManager.getWifiState());
  42. try{
  43. //为了避免程序一直while循环,让它睡个100毫秒在检测……
  44. Thread.currentThread();
  45. Thread.sleep(100);
  46. }
  47. catch(InterruptedExceptionie){
  48. }
  49. }
  50. WifiConfigurationwifiConfig=this.createWifiInfo(SSID,Password,Type);
  51. //
  52. if(wifiConfig==null)
  53. {
  54. returnfalse;
  55. }
  56. WifiConfigurationtempConfig=this.isExsits(SSID);
  57. if(tempConfig!=null)
  58. {
  59. wifiManager.removeNetwork(tempConfig.networkId);
  60. }
  61. intnetID=wifiManager.addNetwork(wifiConfig);
  62. booleanbRet=wifiManager.enableNetwork(netID,false);
  63. returnbRet;
  64. }
  65. //查看以前是否也配置过这个网络
  66. (StringSSID)
  67. {
  68. List<WifiConfiguration>existingConfigs=wifiManager.getConfiguredNetworks();
  69. for(:existingConfigs)
  70. {
  71. if(existingConfig.SSID.equals("""+SSID+"""))
  72. {
  73. returnexistingConfig;
  74. }
  75. }
  76. returnnull;
  77. }
  78. (StringSSID,StringPassword,WifiCipherTypeType)
  79. {
  80. WifiConfigurationconfig=newWifiConfiguration();
  81. config.allowedAuthAlgorithms.clear();
  82. config.allowedGroupCiphers.clear();
  83. config.allowedKeyManagement.clear();
  84. config.allowedPairwiseCiphers.clear();
  85. config.allowedProtocols.clear();
  86. config.SSID="""+SSID+""";
  87. if(Type==WifiCipherType.WIFICIPHER_NOPASS)
  88. {
  89. config.wepKeys[0]="""+""";;
  90. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
  91. config.wepTxKeyIndex=0;
  92. //或者下面两段代码也可以
  93. //config.hiddenSSID=true;
  94. //config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
  95. }
  96. elseif(Type==WifiCipherType.WIFICIPHER_WEP)
  97. {
  98. config.wepKeys[0]="""+Password+""";
  99. config.hiddenSSID=true;
  100. config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
  101. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
  102. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
  103. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
  104. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
  105. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
  106. config.wepTxKeyIndex=0;
  107. }
  108. elseif(Type==WifiCipherType.WIFICIPHER_WPA)
  109. {
  110. config.preSharedKey="""+Password+""";
  111. config.hiddenSSID=true;
  112. config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
  113. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
  114. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
  115. config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
  116. //config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);//这句好像不行
  117. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
  118. config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
  119. config.status=WifiConfiguration.Status.ENABLED;
  120. }
  121. else
  122. {
  123. returnnull;
  124. }
  125. returnconfig;
  126. }
  127. }
  128. </span>

② Android Wifi 如何实现:在程序中把SSID和密码都确定了,点击连接就连接上指定的wifi

点击打开设定,
点击WLAN连接,
点击添加WLAN。

③ android怎么实现开机自动启动wifi热点

1.新建一个Receiver监听系统的BOOT_COMPLETE Broadcast,就可以实现开机的监听 2.启动WiFi热点。这个网上一大堆的代码,大体的思路就是:检测WiFI是否开启,如果开启了,那就不操作。如果没有开启,那就调用API开启它。

④ native.js支持android wifi direct相关API的调用吗

现在,Android的支持Wi -Fi的直接点对点点对点(P2P)Android系统的供电设备和其他类型的设备,没有一个热点或互联网连接之间的连接。Android框架提供了一套Wi - Fi的P2P的API,允许你去发现和连接到其他设备时,每个设备的Wi -Fi的直接支持,然后沟通跨越距离远远长于蓝牙连接迅速连接。
android.net.wifi.p2p,一个新的软件包,包含所有的API执行同行等连接与Wi - Fi。 你需要与主类是WifiP2pManager,您可以调用getSystemService(WIFI_P2P_SERVICE)收购。WifiP2pManager包括API,允许您:
1、您P2P连接的应用程序通过调用initialize
2、探索通过调用附近的设备discoverPeers
开始通过调用P2P连接connect以及一些其他的接口和类是必要的,如:
WifiP2pManager.ActionListener接口,让您能够接收的操作时,如发现同行或连接到他们的成功或失败的回调。
WifiP2pManager.PeerListListener界面,您可以收到有关发现同行的信息。 回调提供了一个WifiP2pDeviceList,您可以从中检索一个WifiP2pDevice范围内的每个设备对象和获取信息,如设备的名称,地址,设备类型,设备支持的WPS配置。
WifiP2pManager.GroupInfoListener界面,您可以收到一个P2P组信息。 回调提供了一个WifiP2pGroup对象,它提供了所有者,网络名称和密码的信息,如组。
WifiP2pManager.ConnectionInfoListener界面,您可以得到当前连接的信息。 回调提供了一个WifiP2pInfo对象,它具有信息,如一个组是否已经形成,谁是该组的所有者。
为了使用的Wi - Fi P2P的API,你的应用程序必须要求以下用户权限:
1、ACCESS_WIFI_STATE
2、CHANGE_WIFI_STATE
3、INTERNET (虽然你的应用程序不技术上连接到互联网,沟通的Wi - Fi标准的Java套接字直接同行需要Internet权限)。
Android系统还广播了几种不同的行动,在特定的Wi - Fi P2P事件:
1、WIFI_P2P_CONNECTION_CHANGED_ACTION :P2P连接状态发生了变化。这与EXTRA_WIFI_P2P_INFOWifiP2pInfo与EXTRA_NETWORK_INFONetworkInfo对象的对象EXTRA_NETWORK_INFOEXTRA_NETWORK_INFOEXTRA_WIFI_P2P_INFO EXTRA_WIFI_P2P_INFO 。
2、WIFI_P2P_STATE_CHANGED_ACTION :P2P的状态已经改变之间的启用和禁用。 它携带EXTRA_WIFI_STATE要么WIFI_P2P_STATE_DISABLED或WIFI_P2P_STATE_ENABLED
WIFI_P2P_PEERS_CHANGED_ACTION等设备的列表已经改变。
3、WIFI_P2P_THIS_DEVICE_CHANGED_ACTION :该设备的细节已经改变。

⑤ android开发中,连接wifi需要使用哪个函数

我也正在搞这个,问题也很多,都还没解决,这是我在网上查到的方法:
// 添加一个网络并连接
public void AddNetwork(WifiConfiguration wcg) {
int wcgID = mWifiManager.addNetwork(wcg);
mWifiManager.enableNetwork(wcgID, true);
}

但是我有问题就是,首先:ScanResult中获取的SSID等信息和WifiConfiguration中获取的SSID信息有什么不一样,一个是扫描到的,一个是连接后得到的?这个我不理解。第二:按照上面的连接代码,只需要得到WifiConfiguration对象就可以了,我通过public List<WifiConfiguration> getConfiguredNetworks ()得到的WifiConfiguration对象就可以拿去连接了?既然我通过这个就能连接,那我拿ScanResult中的信息有什么用?还有就是,WifiConfiguration对象是在哪个阶段能获取的?启动Wifi?扫描开始?或者是连接上ap后?我表示很迷茫。第三:怎么通过代码设置一台手机为Ap?我找不到相关的方法。第四:假设两台手机,一台做Ap,一台连接,连接上了,然后数据方面怎么传输?蓝牙有个BuletoothSocket和BuletoothServiceSocket,Wifi呢?直接只用JAVA的Socket?

⑥ android开关wifi为什么都要采用isWifiEnabled()

因为安卓API里只有这方法。

wifi开关代码:
/**
* 是否开启 wifi true:开启 false:关闭
*
* 一定要加入权限: <uses-permission
* android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
* <uses-permission
* android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
*
*
* @param isEnable
*/
public void setWifi(boolean isEnable) {

//
if (mWm == null) {
mWm = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
return;
}

System.out.println("wifi===="+mWm.isWifiEnabled());
if (isEnable) {// 开启wifi

if (!mWm.isWifiEnabled()) {

mWm.setWifiEnabled(true);

}
} else {
// 关闭 wifi
if (mWm.isWifiEnabled()) {
mWm.setWifiEnabled(false);
}
}

}

⑦ 如何用Delphi XE Android实现手机和wifi串行口模块通信

uses System.SysUtils,

Androidapi.Helpers,

Androidapi.JNIBridge,

Androidapi.Jni.Net,

Androidapi.JNI.GraphicsContentViewText,

Androidapi.JNI.JavaTypes,

FMX.Helpers.Android;

function GetWIFIIP:string;

var

WFM:JObject;

WifiManager:JWifiManager;

WifiInfo:JWifiInfo;

IP:Integer;

begin

WFM:=TAndroidHelper.Context.getSystemService(TJContext.JavaClass.WIFI_SERVICE);

WifiManager:=TJWifiManager.Wrap((WFM as ILocalObject).GetObjectID);

WifiInfo:=WifiManager.getConnectionInfo;

IP:=WifiInfo.getIpAddress;

Result:=Format('%d.%d.%d.%d',[Lo(IP),Hi(IP),Lo(IP shr 16),IP shr 24]);

end;

//安卓系统WIFI下获取本机IP

阅读全文

与androidapiwifi相关的资料

热点内容
圣剑勇者安卓怎么操作 浏览:543
如何给好友加密消息 浏览:860
视频加密失败怎么办 浏览:502
中国最好的加密机 浏览:717
什么是工艺压缩机 浏览:598
老盖聊技术dos命令 浏览:525
云服务器租多大的 浏览:883
加密和认证哪个好 浏览:184
好游快爆app如何同步 浏览:622
程序员完美办公环境 浏览:408
有关程序员的魔咒 浏览:16
windows工具菜单包含的命令 浏览:565
python中文词语数 浏览:439
安卓直屏播放源码 浏览:54
吉林高配服务器云空间云主机 浏览:305
51aspx源码打包 浏览:592
我的世界怎么可以抢服务器 浏览:293
Python多线程最大线程限制 浏览:634
python圆形图片 浏览:785
jsp程序设计pdf 浏览:992